From mboxrd@z Thu Jan 1 00:00:00 1970 From: linux@roeck-us.net (Guenter Roeck) Date: Thu, 23 Jul 2015 09:10:55 -0700 Subject: [PATCH v2 1/2] watchdog: add wdt suspend/resume support In-Reply-To: <1437630551-39650-2-git-send-email-eddie.huang@mediatek.com> References: <1437630551-39650-1-git-send-email-eddie.huang@mediatek.com> <1437630551-39650-2-git-send-email-eddie.huang@mediatek.com> Message-ID: <55B1120F.7010204@roeck-us.net> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 07/22/2015 10:49 PM, Eddie Huang wrote: > From: Greta Zhang > > add wdt driver suspend/resume support > > Signed-off-by: Greta Zhang > Signed-off-by: Roger Lu > Signed-off-by: Eddie Huang Subject line should identify the driver, ie mtk_wdt. "wdt" doesn't really help. Other than that, Reviewed-by: Guenter Roeck 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, > }, > }; >