|
@@ -70,13 +70,31 @@ static inline void at91sam9g45_standby(void)
|
|
|
at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1);
|
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_SOC_AT91SAM9263
|
|
|
-/*
|
|
|
- * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use;
|
|
|
- * handle those cases both here and in the Suspend-To-RAM support.
|
|
|
+/* We manage both DDRAM/SDRAM controllers, we need more than one value to
|
|
|
+ * remember.
|
|
|
*/
|
|
|
-#warning Assuming EB1 SDRAM controller is *NOT* used
|
|
|
-#endif
|
|
|
+static inline void at91sam9263_standby(void)
|
|
|
+{
|
|
|
+ u32 lpr0, lpr1;
|
|
|
+ u32 saved_lpr0, saved_lpr1;
|
|
|
+
|
|
|
+ saved_lpr1 = at91_ramc_read(1, AT91_SDRAMC_LPR);
|
|
|
+ lpr1 = saved_lpr1 & ~AT91_SDRAMC_LPCB;
|
|
|
+ lpr1 |= AT91_SDRAMC_LPCB_SELF_REFRESH;
|
|
|
+
|
|
|
+ saved_lpr0 = at91_ramc_read(0, AT91_SDRAMC_LPR);
|
|
|
+ lpr0 = saved_lpr0 & ~AT91_SDRAMC_LPCB;
|
|
|
+ lpr0 |= AT91_SDRAMC_LPCB_SELF_REFRESH;
|
|
|
+
|
|
|
+ /* self-refresh mode now */
|
|
|
+ at91_ramc_write(0, AT91_SDRAMC_LPR, lpr0);
|
|
|
+ at91_ramc_write(1, AT91_SDRAMC_LPR, lpr1);
|
|
|
+
|
|
|
+ cpu_do_idle();
|
|
|
+
|
|
|
+ at91_ramc_write(0, AT91_SDRAMC_LPR, saved_lpr0);
|
|
|
+ at91_ramc_write(1, AT91_SDRAMC_LPR, saved_lpr1);
|
|
|
+}
|
|
|
|
|
|
static inline void at91sam9_standby(void)
|
|
|
{
|