Re: [PATCH RESEND] phy: ingenic: fix unbalanced regulator_disable() warning
From: H. Nikolaus Schaller
Date: Wed Feb 26 2025 - 15:59:05 EST
Hi,
I just wonder if anyone is picking this up?
There seems to be no MAINTAINER specific for drivers/phy/ingenic.
BR,
Nikolaus
> Am 02.01.2025 um 13:53 schrieb Paul Cercueil <paul@xxxxxxxxxxxxxxx>:
>
> Hi Nikolaus,
>
> Le dimanche 29 décembre 2024 à 15:22 +0100, H. Nikolaus Schaller a
> écrit :
>> if ingenic_usb_phy_exit is called the regulator is already disabled
>> through ingenic_usb_phy_power_off() leading to
>>
>> [ 5.367301] WARNING: CPU: 0 PID: 20 at
>> drivers/regulator/core.c:2953 _regulator_disable+0x200/0x230
>> [ 5.368209] unbalanced disables for regulator-dummy
>> [ 5.370364] Modules linked in: phy_ingenic_usb
>> ...
>> [ 5.373441] [<8054601c>] regulator_disable+0x40/0x80
>> [ 5.372952] [<c02450f8>] ingenic_usb_phy_exit+0x48/0x60
>> [phy_ingenic_usb]
>> [ 5.374283] [<8050839c>] phy_exit+0xd8/0x104
>> [ 5.373104] [<80657a24>] __dwc2_lowlevel_hw_disable+0xe0/0xe8
>> [ 5.373393] [<80658ad4>] dwc2_driver_probe+0x818/0x834
>> ...
>>
>> Signed-off-by: H. Nikolaus Schaller <hns@xxxxxxxxxxxxx>
>
> Looks good to me. The regulator is not enabled in
> ingenic_usb_phy_init(), so it should not be disabled in
> ingenic_usb_phy_exit().
>
> Reviewed-by: Paul Cercueil <paul@xxxxxxxxxxxxxxx>
>
> Cheers,
> -Paul
>
>
>> ---
>>
>> Notes:
>> Resent because linux-mips@xxxxxxxxxxxxxxx was not automatically
>> added by
>> get_maintainer.pl (drivers/phy/ingenic missing in MAINTAINERS
>> record?)
>>
>> drivers/phy/ingenic/phy-ingenic-usb.c | 1 -
>> 1 file changed, 1 deletion(-)
>>
>> diff --git a/drivers/phy/ingenic/phy-ingenic-usb.c
>> b/drivers/phy/ingenic/phy-ingenic-usb.c
>> index eb2721f72a4c1..35984dd8a1bd7 100644
>> --- a/drivers/phy/ingenic/phy-ingenic-usb.c
>> +++ b/drivers/phy/ingenic/phy-ingenic-usb.c
>> @@ -124,7 +124,6 @@ static int ingenic_usb_phy_exit(struct phy *phy)
>> struct ingenic_usb_phy *priv = phy_get_drvdata(phy);
>>
>> clk_disable_unprepare(priv->clk);
>> - regulator_disable(priv->vcc_supply);
>>
>> return 0;
>> }