Linux-ARM-Kernel Archive on lore.kernel.org
 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: Sai Prakash Ranjan, Rajendra Nayak, Stephen Boyd, linux-arm-msm,
	Doug Anderson, linux-kernel, Sibi Sankar, Vivek Gautam,
	linux-arm-kernel

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


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ 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