Re: [PATCH] rtc: ti-k3: Add support to resume from IO DDR low power mode

From: Akashdeep Kaur

Date: Fri Mar 13 2026 - 07:21:53 EST


Hi Vignesh,

On 13/03/26 13:53, Vignesh Raghavendra wrote:


On 11/03/26 12:32, Akashdeep Kaur wrote:
During IO DDR low power mode, the RTC IP is reset and loses its
register configuration.

The DDR memory still preserves all driver states
(reference counts, software context).

That's the definition of Suspend to RAM

System clocks are saved and restored
by Device Manager (DM) firmware during the resume sequence.

Not relevant for this patch in particular.

Add support to reconfigure the RTC IP registers in resume handler only if
resume hook is called during IO DDR low power mode resume.


Above all is probably bit too verbose. Below text is all thats needed:

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.

Updated the commit message as suggested.

Regards,
Akashdeep Kaur

Signed-off-by: Akashdeep Kaur <a-kaur@xxxxxx>
---

Tested deep sleep with rtcwake after IO DDR resume on AM62P-SK.

---
drivers/rtc/rtc-ti-k3.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/rtc/rtc-ti-k3.c b/drivers/rtc/rtc-ti-k3.c
index ec759d8f7023..e801f5b9d757 100644
--- a/drivers/rtc/rtc-ti-k3.c
+++ b/drivers/rtc/rtc-ti-k3.c
@@ -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);