|
@@ -276,7 +276,21 @@ static unsigned char pm_osiris_ctrl0;
|
|
|
|
|
|
static int osiris_pm_suspend(struct sys_device *sd, pm_message_t state)
|
|
|
{
|
|
|
+ unsigned int tmp;
|
|
|
+
|
|
|
pm_osiris_ctrl0 = __raw_readb(OSIRIS_VA_CTRL0);
|
|
|
+ tmp = pm_osiris_ctrl0 & ~OSIRIS_CTRL0_NANDSEL;
|
|
|
+
|
|
|
+ /* ensure correct NAND slot is selected on resume */
|
|
|
+ if ((pm_osiris_ctrl0 & OSIRIS_CTRL0_BOOT_INT) == 0)
|
|
|
+ tmp |= 2;
|
|
|
+
|
|
|
+ __raw_writeb(tmp, OSIRIS_VA_CTRL0);
|
|
|
+
|
|
|
+ /* ensure that an nRESET is not generated on resume. */
|
|
|
+ s3c2410_gpio_setpin(S3C2410_GPA21, 1);
|
|
|
+ s3c2410_gpio_cfgpin(S3C2410_GPA21, S3C2410_GPA21_OUT);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -285,6 +299,10 @@ static int osiris_pm_resume(struct sys_device *sd)
|
|
|
if (pm_osiris_ctrl0 & OSIRIS_CTRL0_FIX8)
|
|
|
__raw_writeb(OSIRIS_CTRL1_FIX8, OSIRIS_VA_CTRL1);
|
|
|
|
|
|
+ __raw_writeb(pm_osiris_ctrl0, OSIRIS_VA_CTRL0);
|
|
|
+
|
|
|
+ s3c2410_gpio_cfgpin(S3C2410_GPA21, S3C2410_GPA21_nRSTOUT);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|