Message ID | 1371494799-11876-3-git-send-email-pekon@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
* Pekon Gupta <pekon@ti.com> [130617 11:52]: > From: avinash philip <avinashphilip@ti.com> > > GPMC is hardware controller for external memory interfaces. > This patch adds suspend/resume support for GPMC driver. > It also preserves GPMC register configurations across device low-power states > in which GPMC hardware can be powered-off. > gpmc_suspend()/gpmc_resume() are called by default by core PM framework as part > of driver's runtime PM callbacks. > > Signed-off-by: Philip Avinash <avinashphilip@ti.com> > Signed-off-by: Pekon Gupta <pekon@ti.com> Thanks applying this into omap-for-v3.11/gpmc, patch 1/3 I already have applied and the MTD change should get merged along with other MTD patches. Regards, Tony > --- > arch/arm/mach-omap2/gpmc.c | 21 +++++++++++++++++++-- > 1 file changed, 19 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c > index 1380cee..9b579d0 100644 > --- a/arch/arm/mach-omap2/gpmc.c > +++ b/arch/arm/mach-omap2/gpmc.c > @@ -1655,6 +1655,24 @@ static int gpmc_remove(struct platform_device *pdev) > return 0; > } > > +#ifdef CONFIG_PM_SLEEP > +static int gpmc_suspend(struct device *dev) > +{ > + omap3_gpmc_save_context(); > + pm_runtime_put_sync(dev); > + return 0; > +} > + > +static int gpmc_resume(struct device *dev) > +{ > + pm_runtime_get_sync(dev); > + omap3_gpmc_restore_context(); > + return 0; > +} > +#endif > + > +static SIMPLE_DEV_PM_OPS(gpmc_pm_ops, gpmc_suspend, gpmc_resume); > + > static struct platform_driver gpmc_driver = { > .probe = gpmc_probe, > .remove = gpmc_remove, > @@ -1662,6 +1680,7 @@ static struct platform_driver gpmc_driver = { > .name = DEVICE_NAME, > .owner = THIS_MODULE, > .of_match_table = of_match_ptr(gpmc_dt_ids), > + .pm = &gpmc_pm_ops, > }, > }; > > @@ -1724,7 +1743,6 @@ static irqreturn_t gpmc_handle_irq(int irq, void *dev) > return IRQ_HANDLED; > } > > -#ifdef CONFIG_ARCH_OMAP3 > static struct omap3_gpmc_regs gpmc_context; > > void omap3_gpmc_save_context(void) > @@ -1789,4 +1807,3 @@ void omap3_gpmc_restore_context(void) > } > } > } > -#endif /* CONFIG_ARCH_OMAP3 */ > -- > 1.8.1 > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index 1380cee..9b579d0 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c @@ -1655,6 +1655,24 @@ static int gpmc_remove(struct platform_device *pdev) return 0; } +#ifdef CONFIG_PM_SLEEP +static int gpmc_suspend(struct device *dev) +{ + omap3_gpmc_save_context(); + pm_runtime_put_sync(dev); + return 0; +} + +static int gpmc_resume(struct device *dev) +{ + pm_runtime_get_sync(dev); + omap3_gpmc_restore_context(); + return 0; +} +#endif + +static SIMPLE_DEV_PM_OPS(gpmc_pm_ops, gpmc_suspend, gpmc_resume); + static struct platform_driver gpmc_driver = { .probe = gpmc_probe, .remove = gpmc_remove, @@ -1662,6 +1680,7 @@ static struct platform_driver gpmc_driver = { .name = DEVICE_NAME, .owner = THIS_MODULE, .of_match_table = of_match_ptr(gpmc_dt_ids), + .pm = &gpmc_pm_ops, }, }; @@ -1724,7 +1743,6 @@ static irqreturn_t gpmc_handle_irq(int irq, void *dev) return IRQ_HANDLED; } -#ifdef CONFIG_ARCH_OMAP3 static struct omap3_gpmc_regs gpmc_context; void omap3_gpmc_save_context(void) @@ -1789,4 +1807,3 @@ void omap3_gpmc_restore_context(void) } } } -#endif /* CONFIG_ARCH_OMAP3 */