[PATCH] usb: onboard-hub: Don't disable regulator in remove() callback
Marek Vasut
marex at denx.de
Tue Apr 18 13:28:01 CEST 2023
On 4/18/23 11:14, Patrice CHOTARD wrote:
> Hi Marek
Hello Patrice,
> On 4/18/23 10:25, Marek Vasut wrote:
>> On 4/18/23 09:21, Patrice CHOTARD wrote:
>>> Hi Marek
>>
>> Hello Patrice,
>>
>>> On 4/17/23 19:00, Marek Vasut wrote:
>>>> On 4/17/23 18:56, Patrice Chotard wrote:
>>>>> In case USB hub regulator is shared, unexpected behavior occurs.
>>>>> On stm32mp135f-dk, stm32mp157c-ev1 and stm32mp157x-dkx, regulator
>>>>> v3v3 is shared between several IP/devices (USB, panel, ethernet phy,
>>>>> camera, ...).
>>>>> Running command "usb stop", v3v3 regulator is switched off and
>>>>> the splashscreen content disappear.
>>>>>
>>>>> v3v3 shouldn't be disabled on usb_onboard_hub_remove() callback.
>>>>
>>>> Isn't the regulator enable/disable refcounted ?
>>>
>>> There is no refcount on regulator that's why we let regulator enable.
>>
>> Can we add that, instead of hacking around the missing refcount in every driver ?
>
> I agree, it should a nice solution but, there is a but ;-)
> _ it's the same situation for clocks and resets, there is no ref counter.
Those should indeed be fixed too. Hayashi-san from Socionext ran into
the same problem recently IIRC.
> _ what about side effects by adding ref counter where some platforms does
> several enable on the same regulator (or even clock or reset) and only one
> disable on it thinking that it's off ? or introduce new regulator_shared_xxx() API
> to avoid side-effect with existing code.
Such platforms should be fixed if they misuse the regulators.
> _ unfortunately, currently, i didn't get enough bandwidth to address these points :-(.
I also don't want to perpetuate these workarounds, can you find someone
to add the refcounting ? It shouldn't be that hard, probably a new
regulator struct member and ++/-- in enable/disable , maybe with some
underflow check here and there.
More information about the U-Boot
mailing list