Re: [PATCH 1/3] arm64: dts: rockchip: enable otg/drd operation of usb_host0_xhci in rk356x

Michael Riesch
2022-05-02T11:23:36Z

Hello again,

On 4/28/22 15:24, Michael Riesch wrote:
> Hi Nicolas,
>
> On 4/28/22 13:15, Nicolas Frattaroli wrote:
>> On Montag, 25. April 2022 15:35:00 CEST Michael Riesch wrote:
>>> This USB 3.0 controller is capable of OTG/DRD operation. Enable it in the
>>> device tree.
>>>
>>> Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net>
>>> ---
>>> arch/arm64/boot/dts/rockchip/rk356x.dtsi | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/arch/arm64/boot/dts/rockchip/rk356x.dtsi b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
>>> index 55e6dcb948cc..f611aaf2d238 100644
>>> --- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
>>> +++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
>>> @@ -266,7 +266,7 @@ usb_host0_xhci: usb@fcc00000 {
>>> <&cru ACLK_USB3OTG0>;
>>> clock-names = "ref_clk", "suspend_clk",
>>> "bus_clk";
>>> - dr_mode = "host";
>>> + dr_mode = "otg";
>>> phy_type = "utmi_wide";
>>> power-domains = <&power RK3568_PD_PIPE>;
>>> resets = <&cru SRST_USB3OTG0>;
>>>
>>
>> Hi Michael,
>>
>> according to official specs[1], only the RK3568 is capable of using the
>> USB 3.0 controller in OTG mode. For the RK3566, OTG is USB 2.0, if I
>> understand this correctly.
>>
>> So I think this should be an override in rk3568.dtsi.
>
> Thanks for pointing that out -- will change in v2 (I'll wait a bit,
> though, as I hope that patches 2 and 3 will be applied as they are ;-)

I have sent out v2 and got Peter's valuable comment in return that the
v1 patch is actually correct.

> [...]
>> [1]: Compare page 17 of the RK3568 datasheet to page 16 of the RK3566
>> datasheet

These data sheets can be quite confusing, which is why I seem to change
my opinion about how things should be from mail to mail :-) Let's see if
we can figure it out together:

The Multi-PHY Interface section mentions a "USB 3.0 xHCI Host
Controller" for both RK3566 and RK3568. Additionally, on the RK3568 a
"USB 3.0 Dual-Role Device (DRD) Controller" is present. On the RK3566,
on the other hand, a "USB 2.0 OTG" is mentioned (extra item outside of
the Multi-PHY Interface section).

When I read your mail, I mistook the ehci/ohci controllers for the USB
controllers in charge for USB 2.0 OTG and found your comment to be
correct. However, they are related to "USB 2.0 Host" on RK3566 and
RK3568. Also, since it is explicitly stated that "USB 2.0 OTG" is a xHCI
controller, it becomes apparent that usb_host0_xhci corresponds to "USB
2.0 OTG" on RK3566 and to "USB 3.0 Dual-Role Device (DRD) Controller" on
RK3568.

Long story short, I agree with Peter and the patch at hand (v1) is the
correct one. Sorry for the confusion!

Best regards,
Michael