[PATCH] ARM: dts: imx6qdl-dhcom: Add USB overcurrent pin on SoM layer

Marek Vasut marex at denx.de
Thu Dec 9 14:26:25 PST 2021


On 12/9/21 10:54, Christoph Niedermaier wrote:
> From: Marek Vasut
> Sent: Thursday, December 9, 2021 1:23 AM
>>
>> On 12/8/21 16:15, Christoph Niedermaier wrote:
>>> Add USB overcurrent pin muxing on SoM layer, but disable it
>>> by default. If a board has connected this pin like the
>>> picoITX, this property should be removed in the board file.
>>>
>>> Signed-off-by: Christoph Niedermaier <cniedermaier at dh-electronics.com>
>>> Cc: Shawn Guo <shawnguo at kernel.org>
>>> Cc: Fabio Estevam <festevam at gmail.com>
>>> Cc: Marek Vasut <marex at denx.de>
>>> Cc: NXP Linux Team <linux-imx at nxp.com>
>>> Cc: kernel at dh-electronics.com
>>> To: linux-arm-kernel at lists.infradead.org
>>> ---
>>>    arch/arm/boot/dts/imx6qdl-dhcom-picoitx.dtsi | 4 ++++
>>>    arch/arm/boot/dts/imx6qdl-dhcom-som.dtsi     | 2 ++
>>>    2 files changed, 6 insertions(+)
>>>
>>> diff --git a/arch/arm/boot/dts/imx6qdl-dhcom-picoitx.dtsi b/arch/arm/boot/dts/imx6qdl-dhcom-picoitx.dtsi
>>> index 4cd4cb9543c8..a67682bfe7bd 100644
>>> --- a/arch/arm/boot/dts/imx6qdl-dhcom-picoitx.dtsi
>>> +++ b/arch/arm/boot/dts/imx6qdl-dhcom-picoitx.dtsi
>>> @@ -48,6 +48,10 @@
>>>                "", "", "", "", "", "", "", "";
>>>    };
>>>
>>> +&usbh1 { /* USB overcurrent pin is connected */
>>> +     /delete-property/ disable-over-current;
>>> +};
>>> +
>>>    &iomuxc {
>>>        pinctrl-0 = <
>>>                        /*
>>> diff --git a/arch/arm/boot/dts/imx6qdl-dhcom-som.dtsi b/arch/arm/boot/dts/imx6qdl-dhcom-som.dtsi
>>> index 5d10c40313cb..e4fdce016c34 100644
>>> --- a/arch/arm/boot/dts/imx6qdl-dhcom-som.dtsi
>>> +++ b/arch/arm/boot/dts/imx6qdl-dhcom-som.dtsi
>>> @@ -385,6 +385,7 @@
>>>    };
>>>
>>>    &usbh1 {
>>> +     disable-over-current;
>>>        dr_mode = "host";
>>>        pinctrl-0 = <&pinctrl_usbh1>;
>>>        pinctrl-names = "default";
>>> @@ -728,6 +729,7 @@
>>>        pinctrl_usbh1: usbh1-grp {
>>>                fsl,pins = <
>>>                        MX6QDL_PAD_EIM_D31__GPIO3_IO31          0x120b0
>>> +                     MX6QDL_PAD_EIM_D30__USB_H1_OC           0x1b0b1
>>>                >;
>>>        };
>>
>> Shouldn't this be the other way around -- boards with unused USB
>> overcurrent detection should disable it ? In this case, PDK2 and DRC02
>> should add the 'disable-over-current' DT property and pinmux, while
>> picoitx should add the USB OC pinmux .
> 
> This pin is defined by the DHCOM standard, therefore no other function
> can be used on this pin. That is why it should be configured in the SoM
> file.

Then the pinmux in the SoM dtsi is OK.

> The first internal version was the other way around, but then we had a
> discussion about accidentally enabling the overcurrent detection, because
> it is enabled by default. Since most customers do not use overcurrent
> detection, we have decided to disable it by default. So if a customer
> uses that pin, he has to actively remove the DT property as for example
> shown in the PicoITX board file. In this way, the source of issues should
> be reduced.

It seems to me that if the SoM has a dedicated pin for USB OC, then the 
SoM dtsi should keep the default configuration of USB OC (i.e. enabled). 
If a board does not use the USB OC (e.g. because there is a USB hub on 
it), then the board should add the 'disable-over-current' property, 
because this is clearly a board property, not a SoM property.

Besides, on systems without a USB hub, you likely want to make sure the 
OC detection is not accidentally forgotten disabled, as that might lead 
to damage to the port.

So I would say, keep the pinmux settings in the SoM dtsi, and add 
disable-over-current property on board level dts.



More information about the linux-arm-kernel mailing list