[PATCH] usb: ehci-mx6: replace regulator_set_enable with *_if_allowed
Eugen Hristev
eugen.hristev at collabora.com
Tue May 2 13:18:42 CEST 2023
On 5/2/23 13:53, Marek Vasut wrote:
> On 5/2/23 12:41, Eugen Hristev wrote:
>> On 5/2/23 12:18, Marek Vasut wrote:
>>> On 5/2/23 08:51, Eugen Hristev wrote:
>>>> regulator_set_enable_if_allowed already handles cases when the
>>>> regulator is already enabled, or already disabled, and does not
>>>> treat these as errors.
>>>> With this change, the driver can work correctly even if the regulator
>>>> is already taken or already disabled by another consumer.
>>>
>>> Can that ever happen for Vbus supply (the 5V coming out of USB port) ?
>>> Can you elaborate how ?
>>
>>
>> Hi Marek,
>
> Hi,
>
>> Recently I developed a series of patches to add a reference counter
>> for regulators :
>>
>> https://marc.info/?l=u-boot&m=168191189309879&w=2
>
> Ah yes, this is super cool stuff, thanks !
>
>> But with this series, having a regulator already enabled or already
>> disabled results in an error returned by regulator_set_enable
>>
>> Hence, one option is to replace calls with
>> regulator_set_enable_if_allowed
>>
>> There is a discussion ongoing here:
>>
>> https://marc.info/?l=u-boot&m=168295920316621&w=2
>
> Pardon my ignorance, but uh ... how does Linux deal with regulators
> which are enabled by prior stage, like U-Boot ? Does it set their enable
> refcount to =1 or =0 ?
Please correct me if I am wrong, I did not dig too much into regulators,
but , from my understanding :
Normally software(in this case Linux) reads the state of the regulator
when it's probed, and sets the refcount accordingly. If the state cannot
be read then regulator-boot-on tells Linux that it should have been left
enabled by prior stage
In Uboot I believe that regulators that have 'regulator-boot-on' are
added to a list and set to enable during probe, and the probe is forced
even if Uboot normally uses lazy probing (should have the same behavior
for regulator-always-on property)
So if a regulator is enabled by an initial stage but it's not described
with 'regulator-boot-on' , appears to be a bad hardware description in DT.
More information about the U-Boot
mailing list