forked from luck/tmp_suning_uos_patched
watchdog: pm8916_wdt: Add system sleep callbacks
Add suspend and resume pm operations. Tested on dragonboard-410c. Signed-off-by: Loic Poulain <loic.poulain@linaro.org> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/1581435483-6796-1-git-send-email-loic.poulain@linaro.org Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
This commit is contained in:
parent
000de54171
commit
b1413e6edc
|
@ -192,6 +192,7 @@ static int pm8916_wdt_probe(struct platform_device *pdev)
|
|||
wdt->wdev.timeout = PM8916_WDT_DEFAULT_TIMEOUT;
|
||||
wdt->wdev.pretimeout = 0;
|
||||
watchdog_set_drvdata(&wdt->wdev, wdt);
|
||||
platform_set_drvdata(pdev, wdt);
|
||||
|
||||
watchdog_init_timeout(&wdt->wdev, 0, dev);
|
||||
pm8916_wdt_configure_timers(&wdt->wdev);
|
||||
|
@ -199,6 +200,29 @@ static int pm8916_wdt_probe(struct platform_device *pdev)
|
|||
return devm_watchdog_register_device(dev, &wdt->wdev);
|
||||
}
|
||||
|
||||
static int __maybe_unused pm8916_wdt_suspend(struct device *dev)
|
||||
{
|
||||
struct pm8916_wdt *wdt = dev_get_drvdata(dev);
|
||||
|
||||
if (watchdog_active(&wdt->wdev))
|
||||
return pm8916_wdt_stop(&wdt->wdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __maybe_unused pm8916_wdt_resume(struct device *dev)
|
||||
{
|
||||
struct pm8916_wdt *wdt = dev_get_drvdata(dev);
|
||||
|
||||
if (watchdog_active(&wdt->wdev))
|
||||
return pm8916_wdt_start(&wdt->wdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static SIMPLE_DEV_PM_OPS(pm8916_wdt_pm_ops, pm8916_wdt_suspend,
|
||||
pm8916_wdt_resume);
|
||||
|
||||
static const struct of_device_id pm8916_wdt_id_table[] = {
|
||||
{ .compatible = "qcom,pm8916-wdt" },
|
||||
{ }
|
||||
|
@ -210,6 +234,7 @@ static struct platform_driver pm8916_wdt_driver = {
|
|||
.driver = {
|
||||
.name = "pm8916-wdt",
|
||||
.of_match_table = of_match_ptr(pm8916_wdt_id_table),
|
||||
.pm = &pm8916_wdt_pm_ops,
|
||||
},
|
||||
};
|
||||
module_platform_driver(pm8916_wdt_driver);
|
||||
|
|
Loading…
Reference in New Issue
Block a user