Re: [PATCH] OPP: ti: Fix ti_opp_supply_probe wrong return values

From: Primoz Fiser
Date: Thu Jun 06 2024 - 05:56:44 EST


Hi Viresh,

On 6. 06. 24 10:59, Viresh Kumar wrote:
> On 06-06-24, 09:01, Primoz Fiser wrote:
>> Function ti_opp_supply_probe() since commit 6baee034cb55 ("OPP: ti:
>> Migrate to dev_pm_opp_set_config_regulators()") returns wrong values
>> when all goes well and hence driver probing eventually fails.
>>
>> Fixes: 6baee034cb55 ("OPP: ti: Migrate to dev_pm_opp_set_config_regulators()")
>> Signed-off-by: Primoz Fiser <primoz.fiser@xxxxxxxxx>
>> ---
>> drivers/opp/ti-opp-supply.c | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/opp/ti-opp-supply.c b/drivers/opp/ti-opp-supply.c
>> index e3b97cd1fbbf..ec0056a4bb13 100644
>> --- a/drivers/opp/ti-opp-supply.c
>> +++ b/drivers/opp/ti-opp-supply.c
>> @@ -393,10 +393,12 @@ static int ti_opp_supply_probe(struct platform_device *pdev)
>> }
>>
>> ret = dev_pm_opp_set_config_regulators(cpu_dev, ti_opp_config_regulators);
>> - if (ret < 0)
>> + if (ret < 0) {
>> _free_optimized_voltages(dev, &opp_data);
>> + return ret;
>> + }
>>
>> - return ret;
>> + return 0;
>> }
>>
>> static struct platform_driver ti_opp_supply_driver = {
>
> Not sure I understand the problem here. Can you please explain with an
> example ?

ti_opp_supply_probe
-> dev_pm_opp_set_config_regulators
-> dev_pm_opp_set_config (returns negative if error, otherwise >= 1)

Lets assume dev_pm_opp_set_config returns 1 (SUCCESS):

so now, without my patch:
ti_opp_supply_probe returns 1 -> FAILURE and hence error:

ti_opp_supply 4a003b20.opp-supply: probe with driver ti_opp_supply
failed with error 1

with my patch:
ti_opp_supply_probe returns 0 -> SUCCESS

BR,
Primoz