[PATCH] power: domain: ti: fix ti_pd_get() to return after verifying transition

Siddharth Vadapalli s-vadapalli at ti.com
Fri Nov 14 16:07:20 CET 2025


On 14/11/25 8:23 PM, Siddharth Vadapalli wrote:
> On 14/11/25 5:16 PM, Siddharth Vadapalli wrote:
>> 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
>> before returning from "ti_pd_get()".
>>
>> Fixes: 144464bd2c67 ("power: domain: Introduce driver for raw TI K3 PDs")
>> Signed-off-by: Siddharth Vadapalli <s-vadapalli at ti.com>
>> ---
>>
>> Hello,
>>
>> This patch is based on commit
>> 6c2f2d9aa63 Merge branch 'master' of git://source.denx.de/u-boot-usb
>> of the master branch of Mainline U-Boot.
>>
>> Regards,
>> Siddharth.
>>
>>   drivers/power/domain/ti-power-domain.c | 4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/power/domain/ti-power-domain.c b/drivers/power/ 
>> domain/ti-power-domain.c
>> index c3519307340..8f43d0fed30 100644
>> --- a/drivers/power/domain/ti-power-domain.c
>> +++ b/drivers/power/domain/ti-power-domain.c
>> @@ -227,6 +227,10 @@ static int ti_pd_get(struct ti_pd *pd)
>>       pd_write(pdctl, pd, PSC_PDCTL);
>> +    ret = ti_pd_wait(psc_pd);
>> +    if (ret)
>> +        return ret;
>> +
>>       return 0;
> 
> The above section could be replaced by:
>      return ti_pd_wait(psc_pd);
> 
> I will post the v2 patch implementing this.

I have posted the v2 patch at:
https://lore.kernel.org/u-boot/20251114150243.96429-1-s-vadapalli@ti.com/

Regards,
Siddharth.


More information about the U-Boot mailing list