]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
rtc: ti-k3: Add support to resume from IO DDR low power mode
authorAkashdeep Kaur <a-kaur@ti.com>
Fri, 13 Mar 2026 11:17:40 +0000 (16:47 +0530)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Sun, 12 Apr 2026 20:51:31 +0000 (22:51 +0200)
Restore the RTC HW context which may be lost when system enters
certain low power mode (IO+DDR mode).
Check if the RTC registers are locked which would indicate loss of
context (reset) and restore the context as needed.

Signed-off-by: Akashdeep Kaur <a-kaur@ti.com>
Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>
Link: https://patch.msgid.link/20260313111740.1492519-1-a-kaur@ti.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-ti-k3.c

index ec759d8f7023c62a3996ff6ff03a4bb53c2291c2..e801f5b9d7574da9bc4a9451bc538e0f3fbb0ac0 100644 (file)
@@ -640,10 +640,18 @@ static int __maybe_unused ti_k3_rtc_suspend(struct device *dev)
 static int __maybe_unused ti_k3_rtc_resume(struct device *dev)
 {
        struct ti_k3_rtc *priv = dev_get_drvdata(dev);
+       int ret = 0;
+
+       if (k3rtc_check_unlocked(priv)) {
+               /* RTC locked implies low power mode exit where RTC loses context */
+               ret = k3rtc_configure(dev);
+               if (ret)
+                       return ret;
+       }
 
        if (device_may_wakeup(dev))
                disable_irq_wake(priv->irq);
-       return 0;
+       return ret;
 }
 
 static SIMPLE_DEV_PM_OPS(ti_k3_rtc_pm_ops, ti_k3_rtc_suspend, ti_k3_rtc_resume);