Linux Watchdog driver development
 help / color / mirror / Atom feed
* [PATCHv2] watchdog: qcom: Add suspend/resume support
@ 2019-01-17 15:19 Sai Prakash Ranjan
  2019-01-17 15:26 ` Sai Prakash Ranjan
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Sai Prakash Ranjan @ 2019-01-17 15:19 UTC (permalink / raw)
  To: Guenter Roeck, Wim Van Sebroeck, linux-watchdog, Guenter Roeck
  Cc: Rajendra Nayak, Vivek Gautam, Sibi Sankar, Stephen Boyd,
	Doug Anderson, linux-arm-kernel, linux-kernel, linux-arm-msm,
	Sai Prakash Ranjan

This adds the support for qcom watchdog suspend and resume
when entering and exiting deep sleep states. Otherwise
having watchdog active after suspend would result in unwanted
crashes/resets if resume happens after a long time.

Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>

---

v2:
 * Use __maybe_unused instead of #ifdef as suggested by
   Brian and Guenter
---
 drivers/watchdog/qcom-wdt.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/drivers/watchdog/qcom-wdt.c b/drivers/watchdog/qcom-wdt.c
index 780971318810..5dfd604477a4 100644
--- a/drivers/watchdog/qcom-wdt.c
+++ b/drivers/watchdog/qcom-wdt.c
@@ -245,6 +245,28 @@ static int qcom_wdt_remove(struct platform_device *pdev)
 	return 0;
 }
 
+static int __maybe_unused qcom_wdt_suspend(struct device *dev)
+{
+	struct qcom_wdt *wdt = dev_get_drvdata(dev);
+
+	if (watchdog_active(&wdt->wdd))
+		qcom_wdt_stop(&wdt->wdd);
+
+	return 0;
+}
+
+static int __maybe_unused qcom_wdt_resume(struct device *dev)
+{
+	struct qcom_wdt *wdt = dev_get_drvdata(dev);
+
+	if (watchdog_active(&wdt->wdd))
+		qcom_wdt_start(&wdt->wdd);
+
+	return 0;
+}
+
+static SIMPLE_DEV_PM_OPS(qcom_wdt_pm_ops, qcom_wdt_suspend, qcom_wdt_resume);
+
 static const struct of_device_id qcom_wdt_of_table[] = {
 	{ .compatible = "qcom,kpss-timer", .data = reg_offset_data_apcs_tmr },
 	{ .compatible = "qcom,scss-timer", .data = reg_offset_data_apcs_tmr },
@@ -259,6 +281,7 @@ static struct platform_driver qcom_watchdog_driver = {
 	.driver	= {
 		.name		= KBUILD_MODNAME,
 		.of_match_table	= qcom_wdt_of_table,
+		.pm		= &qcom_wdt_pm_ops,
 	},
 };
 module_platform_driver(qcom_watchdog_driver);
-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2019-01-18  4:25 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-17 15:19 [PATCHv2] watchdog: qcom: Add suspend/resume support Sai Prakash Ranjan
2019-01-17 15:26 ` Sai Prakash Ranjan
2019-01-17 18:16 ` Guenter Roeck
2019-01-18  2:58   ` Sai Prakash Ranjan
2019-01-18  3:53     ` Guenter Roeck
2019-01-18  4:25       ` Sai Prakash Ranjan
2019-01-17 18:37 ` Stephen Boyd
2019-01-17 19:09   ` Guenter Roeck
2019-01-17 21:14     ` Jerry Hoemann
2019-01-17 21:16       ` Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox