cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sdram.S (1938B)


      1/* SPDX-License-Identifier: GPL-2.0
      2 *
      3 * KFR2R09 sdram self/auto-refresh setup code
      4 *
      5 *  Copyright (C) 2009 Magnus Damm
      6 */
      7
      8#include <linux/sys.h>
      9#include <linux/errno.h>
     10#include <linux/linkage.h>
     11#include <asm/asm-offsets.h>
     12#include <asm/suspend.h>
     13#include <asm/romimage-macros.h>
     14
     15/* code to enter and leave self-refresh. must be self-contained.
     16 * this code will be copied to on-chip memory and executed from there.
     17 */
     18	.balign 4
     19ENTRY(kfr2r09_sdram_enter_start)
     20
     21	/* DBSC: put memory in self-refresh mode */
     22
     23	ED 0xFD000010, 0x00000000 /* DBEN */
     24	ED 0xFD000040, 0x00000000 /* DBRFPDN0 */
     25	ED 0xFD000014, 0x00000002 /* DBCMDCNT (PALL) */
     26	ED 0xFD000014, 0x00000004 /* DBCMDCNT (REF) */
     27	ED 0xFD000040, 0x00000001 /* DBRFPDN0 */
     28
     29	rts
     30	 nop
     31
     32ENTRY(kfr2r09_sdram_enter_end)
     33
     34	.balign 4
     35ENTRY(kfr2r09_sdram_leave_start)
     36
     37	/* DBSC: put memory in auto-refresh mode */
     38
     39	mov.l	@(SH_SLEEP_MODE, r5), r0
     40	tst	#SUSP_SH_RSTANDBY, r0
     41	bf	resume_rstandby
     42
     43	ED 0xFD000040, 0x00000000 /* DBRFPDN0 */
     44	WAIT 1
     45	ED 0xFD000014, 0x00000002 /* DBCMDCNT (PALL) */
     46	ED 0xFD000014, 0x00000004 /* DBCMDCNT (REF) */
     47	ED 0xFD000010, 0x00000001 /* DBEN */
     48	ED 0xFD000040, 0x00010000 /* DBRFPDN0 */
     49
     50	rts
     51	 nop
     52
     53resume_rstandby:
     54
     55	/* DBSC: re-initialize and put in auto-refresh */
     56
     57	ED 0xFD000108, 0x40000301 /* DBPDCNT0 */
     58	ED 0xFD000020, 0x011B0002 /* DBCONF */
     59	ED 0xFD000030, 0x03060E02 /* DBTR0 */
     60	ED 0xFD000034, 0x01020102 /* DBTR1 */
     61	ED 0xFD000038, 0x01090406 /* DBTR2 */
     62	ED 0xFD000008, 0x00000004 /* DBKIND */
     63	ED 0xFD000040, 0x00000001 /* DBRFPDN0 */
     64	ED 0xFD000040, 0x00000000 /* DBRFPDN0 */
     65	ED 0xFD000018, 0x00000001 /* DBCKECNT */
     66	WAIT 1
     67	ED 0xFD000010, 0x00000001 /* DBEN */
     68	ED 0xFD000044, 0x000004AF /* DBRFPDN1 */
     69	ED 0xFD000048, 0x20CF0037 /* DBRFPDN2 */
     70	ED 0xFD000014, 0x00000004 /* DBCMDCNT (REF) */
     71	ED 0xFD000108, 0x40000300 /* DBPDCNT0 */
     72	ED 0xFD000040, 0x00010000 /* DBRFPDN0 */
     73
     74	rts
     75	 nop
     76
     77ENTRY(kfr2r09_sdram_leave_end)