提交 b536dd41 编写于 作者: A avinash philip 提交者: Tony Lindgren

ARM: OMAP2+: gpmc: Low power transition support

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: NPhilip Avinash <avinashphilip@ti.com>
Signed-off-by: NPekon Gupta <pekon@ti.com>
Signed-off-by: NTony Lindgren <tony@atomide.com>
上级 b3f5525c
...@@ -1669,6 +1669,24 @@ static int gpmc_remove(struct platform_device *pdev) ...@@ -1669,6 +1669,24 @@ static int gpmc_remove(struct platform_device *pdev)
return 0; 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 = { static struct platform_driver gpmc_driver = {
.probe = gpmc_probe, .probe = gpmc_probe,
.remove = gpmc_remove, .remove = gpmc_remove,
...@@ -1676,6 +1694,7 @@ static struct platform_driver gpmc_driver = { ...@@ -1676,6 +1694,7 @@ static struct platform_driver gpmc_driver = {
.name = DEVICE_NAME, .name = DEVICE_NAME,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = of_match_ptr(gpmc_dt_ids), .of_match_table = of_match_ptr(gpmc_dt_ids),
.pm = &gpmc_pm_ops,
}, },
}; };
...@@ -1738,7 +1757,6 @@ static irqreturn_t gpmc_handle_irq(int irq, void *dev) ...@@ -1738,7 +1757,6 @@ static irqreturn_t gpmc_handle_irq(int irq, void *dev)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
#ifdef CONFIG_ARCH_OMAP3
static struct omap3_gpmc_regs gpmc_context; static struct omap3_gpmc_regs gpmc_context;
void omap3_gpmc_save_context(void) void omap3_gpmc_save_context(void)
...@@ -1803,4 +1821,3 @@ void omap3_gpmc_restore_context(void) ...@@ -1803,4 +1821,3 @@ void omap3_gpmc_restore_context(void)
} }
} }
} }
#endif /* CONFIG_ARCH_OMAP3 */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册