Re: [Patch V2 01/18] dt-bindings: phy: tegra-xusb: Add usb-role-switch

Nagarjuna Kristam
2020-01-13T04:35:14Z

On 10-01-2020 16:46, Thierry Reding wrote:
> On Fri, Dec 20, 2019 at 04:08:30PM +0800, JC Kuo wrote:
>> On 12/19/19 9:05 PM, Thierry Reding wrote:
>>> On Wed, Dec 18, 2019 at 02:46:14PM +0530, Nagarjuna Kristam wrote:
>>>> Add usb-role-switch property for Tegra210 and Tegra186 platforms. This
>>>> entry is used by XUSB pad controller driver to register for role changes
>>>> for OTG/Peripheral capable USB 2 ports.
>>>>
>>>> Signed-off-by: Nagarjuna Kristam<nkristam@nvidia.com>
>>>> ---
>>>> V2:
>>>> - Moved usb-role-switch to seperate Required section as suggested by Thierry.
>>>> - Added reference to usb/usb-conn-gpio.txt for connector subnode.
>>>> ---
>>>> .../devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt | 6 ++++++
>>>> 1 file changed, 6 insertions(+)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt b/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt
>>>> index 9fb682e..23bf354 100644
>>>> --- a/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt
>>>> +++ b/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt
>>>> @@ -174,6 +174,12 @@ Required properties:
>>>> - "device": for USB device mode
>>>> - "otg": for USB OTG mode
>>>>
>>>> +Required properties for OTG/Peripheral capable USB2 ports:
>>>> +- usb-role-switch: Boolean property to indicate that the port support OTG or
>>> "supports", and also, why if it supports OTG*or* peripheral? Doesn't
>>> OTG imply peripheral? OTG means it can be either peripheral or host,
>>> right? So I think the end of that sentence can be just:
>>>
>>> "... the port supports OTG."
>> An USB OTG port is capable of both USB host and peripheral operations. An USB
>> peripheral port can only act as an USB peripheral.
>>
>> The micro USB ports found on Jetson TX1/TX2 platforms are micro-AB ports which
>> should implement both host and peripheral capabilities. We say such ports
>> support OTG. The micro USB port found on Jetson Nano is a micro-B port which
>> should implement peripheral capability only. We say such ports support
>> peripheral, rather than OTG.
> I the port supports only peripheral mode, why do we need to have a
> usb-role-switch property? Shouldn't we in that case have a mode property
> with value "device"?
>
> usb-mode-switch is only needed if mode = "otg", isn't it? In all other
> cases the functionality is fixed (either host or peripheral) and the
> mode cannot be switched.
>
> Thierry

usb-role-switch is needed when mode == "otg" or "peripheral".

Device mode is detected via vbus GPIO irrespective of mode being
peripheral only or OTG.
Host mode is detected via id-gpio, in OTG case.

When mode is peripheral, role changes happens between USB_ROLE_DEVICE
and USB_ROLE_NONE, which are generally based on Vbus GPIO(hot plug)
detection.

When mode is otg, role changes happens between USB_ROLE_HOST,
USB_ROLE_DEVICE and USB_ROLE_NONE, which are detected via id-gpio,
vbus-gpio and no detection respectively.

-Nagarjuna