All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] rtc: ds1307: implement suspend/resume function
@ 2022-03-07 14:17 Alifer Moraes
  0 siblings, 0 replies; only message in thread
From: Alifer Moraes @ 2022-03-07 14:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: a.zummo, eran.m, linux-rtc, pierluigi.p, Felix Radensky, Alifer Moraes

From: Felix Radensky <felix.r@variscite.com>

Implement the suspend/resume function in rtc-ds1307's driver
to control irq_wake flag and handle as wakeup source.

Signed-off-by: Felix Radensky <felix.r@variscite.com>
Signed-off-by: Alifer Moraes <alifer.m@variscite.com>
---
 drivers/rtc/rtc-ds1307.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
index 336cb9aa5e33..fab6e2ba345c 100644
--- a/drivers/rtc/rtc-ds1307.c
+++ b/drivers/rtc/rtc-ds1307.c
@@ -2006,9 +2006,36 @@ static int ds1307_probe(struct i2c_client *client,
 	return err;
 }
 
+#ifdef CONFIG_PM_SLEEP
+static int ds1307_suspend(struct device *dev)
+{
+	struct i2c_client *client = to_i2c_client(dev);
+
+	if (client->irq && device_may_wakeup(dev))
+		return enable_irq_wake(client->irq);
+
+	return 0;
+}
+
+static int ds1307_resume(struct device *dev)
+{
+	struct i2c_client *client = to_i2c_client(dev);
+
+	if (client->irq && device_may_wakeup(dev))
+		return disable_irq_wake(client->irq);
+
+	return 0;
+}
+
+static SIMPLE_DEV_PM_OPS(ds1307_pm_ops, ds1307_suspend, ds1307_resume);
+#endif
+
 static struct i2c_driver ds1307_driver = {
 	.driver = {
 		.name	= "rtc-ds1307",
+#ifdef CONFIG_PM_SLEEP
+		.pm     = &ds1307_pm_ops,
+#endif
 		.of_match_table = ds1307_of_match,
 	},
 	.probe		= ds1307_probe,
-- 
2.25.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2022-03-07 14:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-07 14:17 [PATCH] rtc: ds1307: implement suspend/resume function Alifer Moraes

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.