RK3588 USB3 DRD support
RK3588 has two USB3 DRD controllers (called TYPEC0 and TYPEC1 in Rock 5B schematics). One of them is specific to RK3588, the other one also exists in RK3588S. Unlike other RK3588 IP it does not follow the RK356x design, but the RK3399 design. The USB controller is based on Synopsys DesignWare Core 3 and handled by the dwc3 kernel driver. The only downstream change is adding quirk-skip-phy-init DT property. To use the controller two PHYs are involved - one for USB2 and USB3 respectively. The USB2 PHY has already been upstreamed. The USB3 PHY is new (drivers/phy/rockchip/phy-rockchip-usbdp.c) and also handles DisplayPort. Testing the Displayport functionality is not part of this issue.
Both, EVB1 and Rock 5B use usbdrd3_0 for their USB-C port and usbdrd3_1 for a USB3 Type A port in host-only mode. In case of Rock 5B it's the lower USB3 port (close to the PCB). The upper USB3 Type A port from Rock 5B is handled by a different IP with yet another PHY and already supported upstream.
Sub-Tasks:
-
Get the USB3 DRD based ports working
- Port and phy-rockchip-usbdp driver
- Investigate quirk-skip-phy-init (it's probably not upstreamable), introducing commmit
- Add DT binding for the PHY and new fallback compatible for the DWC3 (Note: T41616 needs the same)
- Add USB3 DRD nodes (incl. related PHYs) to rk3588s.dtsi and rk3588.dtsi
- Enable USB3 DRD ports in EVB1 DTS
- Enable USB3 DRD ports in Rock 5B DTS
- Enable USB3 DRD port in Rock 5A DTS
- Add new phy driver to arm64 defconfig
- Cleanup PHY driver
-
Send patches upstream
- PHY driver + bindings
- DT patches for RK3588, Rock 5A, Rock 5B, EVB1
- Integrate into our rk3588 integration branch
- Test functionality with the CI Debian image
- Wait for patches to land upstream