summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSiddharth Vadapalli <[email protected]>2025-11-18 17:50:52 +0530
committerTom Rini <[email protected]>2025-11-27 08:43:51 -0600
commite3b7dd93d39e1c0a6bcf95d13b3ac4e8035c5db2 (patch)
treea1f8c45829381c625e3dc3879349ecae8e78414d /drivers
parent642a9e716e1e4ecfa64e01a81e815b74e9c142bf (diff)
power: domain: ti: fix ti_pd_get() to return after verifying transition
The helper function "ti_pd_get()" is responsible for powering on a domain if it is powered off. In the current implementation, if a power domain is determined to be powered off - no prior users and the PDCTL register indicates that the user desired state is OFF, then powering on the domain constitutes setting 'PDCTL_STATE_ON' field of the PDCTL register. While the current implementation indeed requests the power domain to be transition to the ON state, the helper function "ti_pd_get()" doesn't verify that the power domain has 'transitioned' to the ON state before returning to its caller. As a result, it is possible that the device(s) belonging to the power domain may be accessed before it is truly powered on, leading to a bus abort. Fix this by waiting for the power domain to transition to the ON state by using "ti_pd_wait()" before returning from "ti_pd_get()". Fixes: 144464bd2c67 ("power: domain: Introduce driver for raw TI K3 PDs") Signed-off-by: Siddharth Vadapalli <[email protected]> Tested-by: Hrushikesh Salunke <[email protected]>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/power/domain/ti-power-domain.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/power/domain/ti-power-domain.c b/drivers/power/domain/ti-power-domain.c
index c3519307340..a554e659392 100644
--- a/drivers/power/domain/ti-power-domain.c
+++ b/drivers/power/domain/ti-power-domain.c
@@ -227,7 +227,7 @@ static int ti_pd_get(struct ti_pd *pd)
pd_write(pdctl, pd, PSC_PDCTL);
- return 0;
+ return ti_pd_wait(pd);
}
static int ti_pd_put(struct ti_pd *pd)