Hello, On Friday, May 06, 2011 7:03 AM Kukjin Kim wrote: > Mark Brown wrote: > > > > From: Ben Dooks <ben-linux@xxxxxxxxx> > > > > Add a callback so that per-arch can do pre-sleep and post-resume > > gpio configuration so that for the S3C64XX, the GPIO configuration > > is restored before the sleep mode is cleared. > > > > For the S3C64XX case, it means that the GPIOs get set back to normal > > operation after the restore code puts the original configurations > > back in after the > > > > Signed-off-by: Ben Dooks <ben-linux@xxxxxxxxx> > > Signed-off-by: Mark Brown <broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx> > > --- > > arch/arm/mach-s3c2410/include/mach/pm-core.h | 3 +++ > > arch/arm/mach-s3c64xx/include/mach/pm-core.h | 17 +++++++++++++++++ > > arch/arm/mach-s5pv210/include/mach/pm-core.h | 3 +++ > > arch/arm/plat-samsung/pm.c | 2 ++ > > 4 files changed, 25 insertions(+), 0 deletions(-) > > > > diff --git a/arch/arm/mach-s3c2410/include/mach/pm-core.h > b/arch/arm/mach- > > s3c2410/include/mach/pm-core.h > > index 70a83b2..45eea52 100644 > > --- a/arch/arm/mach-s3c2410/include/mach/pm-core.h > > +++ b/arch/arm/mach-s3c2410/include/mach/pm-core.h > > @@ -62,3 +62,6 @@ static inline void s3c_pm_arch_update_uart(void __iomem > > *regs, > > struct pm_uart_save *save) > > { > > } > > + > > +static inline void s3c_pm_restored_gpios(void) { } > > +static inline void s3c_pm_saved_gpios(void) { } > > diff --git a/arch/arm/mach-s3c64xx/include/mach/pm-core.h > b/arch/arm/mach- > > s3c64xx/include/mach/pm-core.h > > index 4ed0f58..38659be 100644 > > --- a/arch/arm/mach-s3c64xx/include/mach/pm-core.h > > +++ b/arch/arm/mach-s3c64xx/include/mach/pm-core.h > > @@ -96,3 +96,20 @@ static inline void s3c_pm_arch_update_uart(void > __iomem > > *regs, > > save->ucon = new_ucon; > > } > > } > > + > > +static inline void s3c_pm_restored_gpios(void) > > +{ > > + /* ensure sleep mode has been cleared from the system */ > > + > > + __raw_writel(0, S3C64XX_SLPEN); > > +} > > + > > +static inline void s3c_pm_saved_gpios(void) > > +{ > > + /* turn on the sleep mode and keep it there, as it seems that during > > + * suspend the xCON registers get re-set and thus you can end up > with > > + * problems between going to sleep and resuming. > > + */ > > + > > + __raw_writel(S3C64XX_SLPEN_USE_xSLP, S3C64XX_SLPEN); > > +} > > diff --git a/arch/arm/mach-s5pv210/include/mach/pm-core.h > b/arch/arm/mach- > > s5pv210/include/mach/pm-core.h > > index e8d394f..3e22109 100644 > > --- a/arch/arm/mach-s5pv210/include/mach/pm-core.h > > +++ b/arch/arm/mach-s5pv210/include/mach/pm-core.h > > @@ -41,3 +41,6 @@ static inline void s3c_pm_arch_update_uart(void __iomem > > *regs, > > { > > /* nothing here yet */ > > } > > + > > +static inline void s3c_pm_restored_gpios(void) { } > > +static inline void s3c_pm_saved_gpios(void) { } > > diff --git a/arch/arm/plat-samsung/pm.c b/arch/arm/plat-samsung/pm.c > > index 5c0a440..4f9a951 100644 > > --- a/arch/arm/plat-samsung/pm.c > > +++ b/arch/arm/plat-samsung/pm.c > > @@ -268,6 +268,7 @@ static int s3c_pm_enter(suspend_state_t state) > > /* save all necessary core registers not covered by the drivers */ > > > > s3c_pm_save_gpios(); > > + s3c_pm_saved_gpios(); > > s3c_pm_save_uarts(); > > s3c_pm_save_core(); > > > > @@ -309,6 +310,7 @@ static int s3c_pm_enter(suspend_state_t state) > > s3c_pm_restore_core(); > > s3c_pm_restore_uarts(); > > s3c_pm_restore_gpios(); > > + s3c_pm_restored_gpios(); > > > > s3c_pm_debug_init(); > > > > -- > > 1.7.4.1 > > Ok, will apply. This patch lacks stubs for s5p64x0, s5pc100 and exynos4. I will send a quick fix soon. Best regards -- Marek Szyprowski Samsung Poland R&D Center -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html