lkml.org 
[lkml]   [2022]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] rtc: ds1307: implement suspend/resume function
Date
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
\
 
 \ /
  Last update: 2022-03-07 15:19    [W:0.041 / U:0.284 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site