Re: [PATCH 4/8] arm64: dts: imx8mm-kontron: Fix reg_rst_eth2 and reg_vdd_5v regulators

From: Frieder Schrempf
Date: Fri Oct 15 2021 - 07:32:58 EST


On 15.10.21 06:09, Shawn Guo wrote:
> On Tue, Oct 05, 2021 at 07:06:57PM +0200, Frieder Schrempf wrote:
>> On 05.10.21 09:09, Shawn Guo wrote:
>>> On Thu, Sep 30, 2021 at 05:56:27PM +0200, Frieder Schrempf wrote:
>>>> From: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx>
>>>>
>>>> The regulator reg_vdd_5v represents the fixed 5V supply on the board which
>>>> can't be switched off. Mark it as always-on.
>>>>
>>>> The regulator reg_rst_eth2 should keep the reset signal of the USB ethernet
>>>> adapter deassertet anytime. Fix the polarity and mark it as always-on.
>>>
>>> It seems to be wrong from the beginning that the reset is modelled by a
>>> regulator.
>>
>> Right, but at least at the time when I upstreamed this, there was no way
>> to pass the reset GPIO to a USB device driver and using a regulator
>> seems to be an accepted workaround as far as I understand.
>
> Do we have the solution in usb driver now? If so, we should probably
> switch to that, instead of patching the workaround?

I had a look, but couldn't find anything. I remember there have been
efforts in the past to provide a generic way for usb devices to manage
resources like reset GPIOs and clocks (e.g. [1]), but it seems like
nothing of this ever got merged.

So for the moment I'd like to fix the existing solution, but I totally
agree that this should be solved properly in the future.

[1] https://lkml.org/lkml/2017/6/21/90

>
>>
>>>
>>>>
>>>> Fixes: 21c4f45b335f ("arm64: dts: Add the Kontron i.MX8M Mini SoMs and baseboards")
>>>> Cc: stable@xxxxxxxxxxxxxxx
>>>> Signed-off-by: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx>
>>>> ---
>>>> arch/arm64/boot/dts/freescale/imx8mm-kontron-n801x-s.dts | 5 ++++-
>>>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/arch/arm64/boot/dts/freescale/imx8mm-kontron-n801x-s.dts b/arch/arm64/boot/dts/freescale/imx8mm-kontron-n801x-s.dts
>>>> index 62ba3bd08a0c..f2c8ccefd1bf 100644
>>>> --- a/arch/arm64/boot/dts/freescale/imx8mm-kontron-n801x-s.dts
>>>> +++ b/arch/arm64/boot/dts/freescale/imx8mm-kontron-n801x-s.dts
>>>> @@ -70,7 +70,9 @@ reg_rst_eth2: regulator-rst-eth2 {
>>>> regulator-name = "rst-usb-eth2";
>>>> pinctrl-names = "default";
>>>> pinctrl-0 = <&pinctrl_usb_eth2>;
>>>> - gpio = <&gpio3 2 GPIO_ACTIVE_LOW>;
>>>> + gpio = <&gpio3 2 GPIO_ACTIVE_HIGH>;
>>>> + enable-active-high;
>>>> + regulator-always-on;
>>>> };
>>>>
>>>> reg_vdd_5v: regulator-5v {
>>>> @@ -78,6 +80,7 @@ reg_vdd_5v: regulator-5v {
>>>> regulator-name = "vdd-5v";
>>>> regulator-min-microvolt = <5000000>;
>>>> regulator-max-microvolt = <5000000>;
>>>> + regulator-always-on;
>>>
>>> You do not have any on/off control over the regulator. So how does this
>>> always-on property make any difference?
>>
>> Right, this doesn't make a difference and is definitely not a fix, I
>> will drop it. Anyway, this regulator is just there for completeness of
>> the hardware description.
>>
>>>
>>>> };
>>>> };
>>>>
>>>> --
>>>> 2.33.0
>>>>