Thread (14 messages) read the whole thread 14 messages, 4 authors, 2022-07-05

Re: [PATCH v4 0/2] ARM: sun8i-r40: Enable usb otg support

From: Samuel Holland <samuel@sholland.org>
Date: 2022-07-05 04:05:39
Also in: linux-devicetree, linux-sunxi, lkml

Hi Evgeny, Qianfan,

On 5/21/22 6:10 AM, Evgeny Boger wrote:
my point is not that your patch is good enough.

My point is that it would be very difficult to maintain backward compatibility
with this device tree once proper driver support is implemented.
Any solution to the problems below will have to maintain backward compatibility
with the current bindings anyway, for all of the other SoCs that are affected.
It is no more difficult to apply that same solution to R40. So I do not see a
benefit to delaying this series.
On 5/21/22 07:26, qianfan wrote:
quoted

在 2022/5/20 4:54, Evgeny Boger 写道:
quoted
Hi qianfan,

As Allwinner A40i user, let me first thank you for your effort for making
better upstream support for R40!

However, I would strongly suggest *not* to add USB support to one more
Allwinner SoC in this particular way.
The problem is, this approach consists of a number of carefully crafted hacks
in device tree to make current drivers work on Allwinner hardware without
modification to the drivers.

a few examples:

1) please notice how ohci0 and ehci0 nodes do not contain reference to usb
phy. It is done intentionally, otherwise EHCI will reset musb mode.
Of course omitting phy reference here is also completely breaking power
cycling in case of usb error and otherwise messes with a power management.

2) one must always enable ohci, ehci and usb_otg nodes at the same time. If
one forgets to enable ohci/ehci nodes while enabling usb_otg node, the system
will silently fail to work as USB host.

3) For host-only mode we still have to enable usb_otg node despite no role
switching is needed. That's because phy reference is missing in ehci/ohci, so
the ehci/ohci driver won't enable the PHY.
Also I might be wrong, but I think phy won't be routed to ehci/ohci
controllers is this case.

4) musb host controller is initialized and present to hardware though never
actually used

To summarize, not only the resulting device tree is not describing the
hardware properly, it is creating device tree configuration which will be
very hard to support in future, once proper driver support is in place.
All of these issues can be fixed either with no DT changes, or with only
backward-compatible changes like adding PHY references.
quoted
PHY setting is did in MUSB driver, so we need enable MUSB regardless of host
mode.

I know your's point, OHCI/EHCI need do more works to init USBPHY, it shoule be
able to work
in dependently, but I don't have the ability to deal with these things right
now, I need
learn more things about OHCI/EHCI, that's a long-term goal.

So now I need to make the whole usb work and do some tests as much as possible,
hoping to merge this patch into master. Some other optimizations can be made
later.
I am fine with merging this series, with the existing binding, and without
increasing the scope of the changes. It is still an improvement over the current
situation.

Regards,
Samuel
quoted
Thanks for yours guide.
quoted

At Wiren Board kernel tree we tried to untangle this issue [1-6].
Unfortunately I didn't have time to prepare it for kernel submission yet, but
I think I better submit it as RFC to get a feedback from you and others.


[1]
https://github.com/wirenboard/linux/commit/359abbbd86ddff4d3c61179c882c286de32bb089

[2]
https://github.com/wirenboard/linux/commit/6327f9d7972c21b229fb83457fdde643b31553f9

[3]
https://github.com/wirenboard/linux/commit/f01f4c66758bde460a4d8c5b54ecee3b585c0232

[4]
https://github.com/wirenboard/linux/commit/c27598ad601e5a46f624b73412a531d6f1f63d37

[5]
https://github.com/wirenboard/linux/commit/5796d6eebb86b32a3751b2038b63af46f94954b3

[6]
https://github.com/wirenboard/linux/commit/0928a675d875f9c2849fd3a9888f718bbb673bda


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help