Message ID | 1437630551-39650-2-git-send-email-eddie.huang@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 07/22/2015 10:49 PM, Eddie Huang wrote: > From: Greta Zhang <greta.zhang@mediatek.com> > > add wdt driver suspend/resume support > > Signed-off-by: Greta Zhang <greta.zhang@mediatek.com> > Signed-off-by: Roger Lu <roger.lu@mediatek.com> > Signed-off-by: Eddie Huang <eddie.huang@mediatek.com> Subject line should identify the driver, ie mtk_wdt. "wdt" doesn't really help. Other than that, Reviewed-by: Guenter Roeck <linux@roeck-us.net> Guenter > --- > drivers/watchdog/mtk_wdt.c | 30 ++++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > > diff --git a/drivers/watchdog/mtk_wdt.c b/drivers/watchdog/mtk_wdt.c > index 938b987..056412c 100644 > --- a/drivers/watchdog/mtk_wdt.c > +++ b/drivers/watchdog/mtk_wdt.c > @@ -221,17 +221,47 @@ static int mtk_wdt_remove(struct platform_device *pdev) > return 0; > } > > +#ifdef CONFIG_PM_SLEEP > +static int mtk_wdt_suspend(struct device *dev) > +{ > + struct mtk_wdt_dev *mtk_wdt = dev_get_drvdata(dev); > + > + if (watchdog_active(&mtk_wdt->wdt_dev)) > + mtk_wdt_stop(&mtk_wdt->wdt_dev); > + > + return 0; > +} > + > +static int mtk_wdt_resume(struct device *dev) > +{ > + struct mtk_wdt_dev *mtk_wdt = dev_get_drvdata(dev); > + > + if (watchdog_active(&mtk_wdt->wdt_dev)) { > + mtk_wdt_start(&mtk_wdt->wdt_dev); > + mtk_wdt_ping(&mtk_wdt->wdt_dev); > + } > + > + return 0; > +} > +#endif > + > static const struct of_device_id mtk_wdt_dt_ids[] = { > { .compatible = "mediatek,mt6589-wdt" }, > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, mtk_wdt_dt_ids); > > +static const struct dev_pm_ops mtk_wdt_pm_ops = { > + SET_SYSTEM_SLEEP_PM_OPS(mtk_wdt_suspend, > + mtk_wdt_resume) > +}; > + > static struct platform_driver mtk_wdt_driver = { > .probe = mtk_wdt_probe, > .remove = mtk_wdt_remove, > .driver = { > .name = DRV_NAME, > + .pm = &mtk_wdt_pm_ops, > .of_match_table = mtk_wdt_dt_ids, > }, > }; >
On Thursday, July 23, 2015 01:49:10 PM Eddie Huang wrote: > From: Greta Zhang <greta.zhang@mediatek.com> > > add wdt driver suspend/resume support > > Signed-off-by: Greta Zhang <greta.zhang@mediatek.com> > Signed-off-by: Roger Lu <roger.lu@mediatek.com> > Signed-off-by: Eddie Huang <eddie.huang@mediatek.com> > --- > drivers/watchdog/mtk_wdt.c | 30 ++++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > Acked-by: Matthias Brugger <matthias.bgg@gmail.com>
diff --git a/drivers/watchdog/mtk_wdt.c b/drivers/watchdog/mtk_wdt.c index 938b987..056412c 100644 --- a/drivers/watchdog/mtk_wdt.c +++ b/drivers/watchdog/mtk_wdt.c @@ -221,17 +221,47 @@ static int mtk_wdt_remove(struct platform_device *pdev) return 0; } +#ifdef CONFIG_PM_SLEEP +static int mtk_wdt_suspend(struct device *dev) +{ + struct mtk_wdt_dev *mtk_wdt = dev_get_drvdata(dev); + + if (watchdog_active(&mtk_wdt->wdt_dev)) + mtk_wdt_stop(&mtk_wdt->wdt_dev); + + return 0; +} + +static int mtk_wdt_resume(struct device *dev) +{ + struct mtk_wdt_dev *mtk_wdt = dev_get_drvdata(dev); + + if (watchdog_active(&mtk_wdt->wdt_dev)) { + mtk_wdt_start(&mtk_wdt->wdt_dev); + mtk_wdt_ping(&mtk_wdt->wdt_dev); + } + + return 0; +} +#endif + static const struct of_device_id mtk_wdt_dt_ids[] = { { .compatible = "mediatek,mt6589-wdt" }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, mtk_wdt_dt_ids); +static const struct dev_pm_ops mtk_wdt_pm_ops = { + SET_SYSTEM_SLEEP_PM_OPS(mtk_wdt_suspend, + mtk_wdt_resume) +}; + static struct platform_driver mtk_wdt_driver = { .probe = mtk_wdt_probe, .remove = mtk_wdt_remove, .driver = { .name = DRV_NAME, + .pm = &mtk_wdt_pm_ops, .of_match_table = mtk_wdt_dt_ids, }, };