mbox series

[0/7] arm64: sunxi: h616: Add USB support

Message ID 20220911235945.6635-1-andre.przywara@arm.com (mailing list archive)
Headers show
Series arm64: sunxi: h616: Add USB support | expand

Message

Andre Przywara Sept. 11, 2022, 11:59 p.m. UTC
The USB IP used in the Allwinner H616 SoC is very similar to the one
used in the H3 chip: it contains four USB 2.0 host controllers and four
PHYs, where the first PHY is shared with a separate USB-OTG controller.

But out of the four ports, only port 2 works out of the box, the other
ports require some resources and registers of port 2 to be enabled as
well.

Implement the required workaround in the Allwinner USB PHY driver, and
key this off the respective compatible string. This core code is
contained in patch 3/7. The first two patches add the respective DT
binding documentation, whereas patch 4/7 encodes all the configuration
options for the H616 USB PHY into the driver.
The last three patches add the respective devicetree nodes, to the H616
.dtsi, but also to the DTs of the two supported boards.

This allows USB to be used on any H616 based machine. This was tested on
the X96 Mate box.

This series is an update on what was included in earlier versions of the
initial H616 support series, but was later dropped to get the basic
support in first more quickly.
It is now based on v6.0-rc4 and is also available here:
https://github.com/apritzel/linux/commits/h616-usb

Please have a look and test on your hardware, especically on all ports
exposed on header pins of the OrangePi Zero2 board.

Cheers,
Andre

Andre Przywara (7):
  dt-bindings: usb: Add H616 compatible string
  dt-bindings: usb: Add special clock for Allwinner H616 PHY
  phy: sun4i-usb: Introduce port2 SIDDQ quirk
  phy: sun4i-usb: Add support for the H616 USB PHY
  arm64: dts: allwinner: h616: Add USB nodes
  arm64: dts: allwinner: h616: OrangePi Zero 2: Add USB nodes
  arm64: dts: allwinner: h616: X96 Mate: Add USB nodes

 .../phy/allwinner,sun8i-h3-usb-phy.yaml       |  19 +++
 .../devicetree/bindings/usb/generic-ehci.yaml |   1 +
 .../devicetree/bindings/usb/generic-ohci.yaml |   1 +
 .../allwinner/sun50i-h616-orangepi-zero2.dts  |  42 +++++
 .../dts/allwinner/sun50i-h616-x96-mate.dts    |  25 +++
 .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 160 ++++++++++++++++++
 drivers/phy/allwinner/phy-sun4i-usb.c         |  71 ++++++++
 7 files changed, 319 insertions(+)

Comments

Karl Kurbjun Sept. 22, 2022, 4:19 a.m. UTC | #1
On 09/12, Andre Przywara wrote:
<snip>
> Please have a look and test on your hardware, especically on all ports
> exposed on header pins of the OrangePi Zero2 board.

I tested this patch set on an OrangePi Zero 2 with each of the USB ports:

Port 0: I tested this with a UART gadget to make sure I could access a console over the port.
Ports 1-3: I tested these with a USB memory stick - I was able to see the device and mount a partition.

As would be expected: for ports 2-3 I had to enable the ohci and ehci entries in the target dts file to test them.

Tested-By: Karl Kurbjun <karl.os@veroson.com>

Karl