diff mbox series

[v2,1/2] rtc: tps65910: Support wakeup-source property

Message ID 20210120211603.18555-1-digetx@gmail.com
State Accepted
Headers show
Series [v2,1/2] rtc: tps65910: Support wakeup-source property | expand

Commit Message

Dmitry Osipenko Jan. 20, 2021, 9:16 p.m. UTC
TPS65910 is a PMIC MFD device and RTC is one of its functions. The
wakeup-source DT property is specified for the parent MFD device and we
need to use this property for the RTC in order to allow to use RTC alarm
for waking up system from suspend by default, instead of requiring user
to enable wakeup manually via sysfs.

Tested-by: Peter Geis <pgwipeout@gmail.com>
Tested-by: Matt Merhar <mattmerhar@protonmail.com>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---

Changelog:

v2: - Rebased on a recent linux-next, fixed merge conflict.

 drivers/rtc/rtc-tps65910.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

Comments

Alexandre Belloni Jan. 25, 2021, 11:21 p.m. UTC | #1
On Thu, 21 Jan 2021 00:16:02 +0300, Dmitry Osipenko wrote:
> TPS65910 is a PMIC MFD device and RTC is one of its functions. The
> wakeup-source DT property is specified for the parent MFD device and we
> need to use this property for the RTC in order to allow to use RTC alarm
> for waking up system from suspend by default, instead of requiring user
> to enable wakeup manually via sysfs.

Applied, thanks!

[1/2] rtc: tps65910: Support wakeup-source property
      commit: 454ba154a62c8806e82a3581c5233a5176cd7dd7

Best regards,
diff mbox series

Patch

diff --git a/drivers/rtc/rtc-tps65910.c b/drivers/rtc/rtc-tps65910.c
index e1415a49f4ee..288abb1abdb8 100644
--- a/drivers/rtc/rtc-tps65910.c
+++ b/drivers/rtc/rtc-tps65910.c
@@ -418,10 +418,14 @@  static int tps65910_rtc_probe(struct platform_device *pdev)
 		irq = -1;
 
 	tps_rtc->irq = irq;
-	if (irq != -1)
-		device_set_wakeup_capable(&pdev->dev, 1);
-	else
+	if (irq != -1) {
+		if (device_property_present(tps65910->dev, "wakeup-source"))
+			device_init_wakeup(&pdev->dev, 1);
+		else
+			device_set_wakeup_capable(&pdev->dev, 1);
+	} else {
 		clear_bit(RTC_FEATURE_ALARM, tps_rtc->rtc->features);
+	}
 
 	tps_rtc->rtc->ops = &tps65910_rtc_ops;
 	tps_rtc->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;