diff options
| author | Siddharth Vadapalli <[email protected]> | 2025-11-18 17:50:52 +0530 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2025-11-27 08:43:51 -0600 |
| commit | e3b7dd93d39e1c0a6bcf95d13b3ac4e8035c5db2 (patch) | |
| tree | a1f8c45829381c625e3dc3879349ecae8e78414d /drivers | |
| parent | 642a9e716e1e4ecfa64e01a81e815b74e9c142bf (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.c | 2 |
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) |
