sh: Add KFR2R09 specific memory pre/post R-standby code
authorMagnus Damm <damm@opensource.se>
Fri, 30 Oct 2009 04:24:48 +0000 (04:24 +0000)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 30 Oct 2009 05:38:49 +0000 (14:38 +0900)
Add R-standby support to the KFR2R09 sdram code.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/boards/mach-kfr2r09/sdram.S
arch/sh/boards/mach-kfr2r09/setup.c

index 4ce78fc..0c9f55b 100644 (file)
@@ -39,6 +39,10 @@ ENTRY(kfr2r09_sdram_leave_start)
 
        /* DBSC: put memory in auto-refresh mode */
 
+       mov.l   @(SH_SLEEP_MODE, r5), r0
+       tst     #SUSP_SH_RSTANDBY, r0
+       bf      resume_rstandby
+
        ED 0xFD000040, 0x00000000 /* DBRFPDN0 */
        WAIT 1
        ED 0xFD000014, 0x00000002 /* DBCMDCNT (PALL) */
@@ -49,4 +53,28 @@ ENTRY(kfr2r09_sdram_leave_start)
        rts
         nop
 
+resume_rstandby:
+
+       /* DBSC: re-initialize and put in auto-refresh */
+
+       ED 0xFD000108, 0x40000301 /* DBPDCNT0 */
+       ED 0xFD000020, 0x011B0002 /* DBCONF */
+       ED 0xFD000030, 0x03060E02 /* DBTR0 */
+       ED 0xFD000034, 0x01020102 /* DBTR1 */
+       ED 0xFD000038, 0x01090406 /* DBTR2 */
+       ED 0xFD000008, 0x00000004 /* DBKIND */
+       ED 0xFD000040, 0x00000001 /* DBRFPDN0 */
+       ED 0xFD000040, 0x00000000 /* DBRFPDN0 */
+       ED 0xFD000018, 0x00000001 /* DBCKECNT */
+       WAIT 1
+       ED 0xFD000010, 0x00000001 /* DBEN */
+       ED 0xFD000044, 0x000004AF /* DBRFPDN1 */
+       ED 0xFD000048, 0x20CF0037 /* DBRFPDN2 */
+       ED 0xFD000014, 0x00000004 /* DBCMDCNT (REF) */
+       ED 0xFD000108, 0x40000300 /* DBPDCNT0 */
+       ED 0xFD000040, 0x00010000 /* DBRFPDN0 */
+
+       rts
+        nop
+
 ENTRY(kfr2r09_sdram_leave_end)
index 5dae632..fe80ad0 100644 (file)
@@ -453,7 +453,8 @@ extern char kfr2r09_sdram_leave_end;
 static int __init kfr2r09_devices_setup(void)
 {
        /* register board specific self-refresh code */
-       sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF,
+       sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF |
+                                       SUSP_SH_RSTANDBY,
                                        &kfr2r09_sdram_enter_start,
                                        &kfr2r09_sdram_enter_end,
                                        &kfr2r09_sdram_leave_start,