]> git.baikalelectronics.ru Git - uboot.git/commit
phy: sun4i-usb: Fix PHY0 routing and passby configuration for MUSB
authorPaul Kocialkowski <paul.kocialkowski@bootlin.com>
Thu, 14 Mar 2019 10:38:00 +0000 (10:38 +0000)
committerAndre Przywara <andre.przywara@arm.com>
Sat, 10 Jul 2021 00:22:09 +0000 (01:22 +0100)
commitf534b24e4fa892d95afce55d73e2804ed96fc44b
tree027aa05b32cdc56798e2529b94f2b281c7f44f01
parent779e8b0bc3d9671cb3f09392442f65534c05cdaa
phy: sun4i-usb: Fix PHY0 routing and passby configuration for MUSB

Recent Allwinner platforms (starting with the H3) only use the MUSB
controller for peripheral mode and use HCI for host mode. As a result,
extra steps need to be taken to properly route USB signals to one or
the other. More precisely, the following is required:
* Routing the pins to either HCI/MUSB (controlled by PHY);
* Enabling USB PHY passby in HCI mode (controlled by PMU).

The current code will enable passby for each PHY and reroute PHY0 to
MUSB, which is inconsistent and results in broken USB peripheral support.

Passby on PHY0 must only be enabled when we want to use HCI. Since
host/device mode detection is not available from the PHY code and
because U-Boot does not support changing the mode dynamically anyway,
we can just mux the controller to MUSB if it is enabled and mux it to
HCI otherwise.

This fixes USB peripheral support for platforms with PHY0 dual-route,
especially H3/H5 and V3s.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
drivers/phy/allwinner/phy-sun4i-usb.c