The Type-C PHY is the analog block that sits between the USB-C connector and the digital controllers — DWC3 for USB3 SuperSpeed and the DP transmitter for DisplayPort alt-mode. It also handles the cable orientation flip so the host doesn’t care which way the user plugged the cable in.
Identity
| Property | Value |
|---|---|
| Block | RK3399 Type-C combo PHY |
| MMIO base | 0xff7c0000 |
| Modes | USB3 SuperSpeed, DisplayPort alt-mode |
| DTS compatible | rockchip,rk3399-typec-phy |
| Linux driver | drivers/phy/rockchip/phy-rockchip-typec.c |
Driver
● working USB3 path; DP alt-mode untested.
src/sys/arm64/rockchip/rk_typec_phy.c
— 474 lines. Ported from the Linux Rockchip TCPHY driver; provides
the USB3 PHY mode that DWC3 needs to negotiate SuperSpeed, plus a
usb2-only mode that proved useful while debugging the surrounding
USB stack.
Notable commits:
- USB on PPP working end-to-end — TCPHY contributing to USB2 host
enumeration as a side effect (
f695c16Fix USB on PinePhone Pro: selective CRU filter, PHY init, VBUS power ). usb2-onlymode + reflash automation added during USB debug (223f5b7Add reflash.py automation, debug output, typec_phy usb2-only mode ).
DP alt-mode programming exists in the Linux source we ported but has
never been exercised on this board — there’s no DP-capable display
or hub on the bench, and dr_mode = "peripheral" on DWC3 currently
parks the PHY in USB-device mode. The
Hardware reference lists USB-C DP alt-mode
as compiled-but-untested.
Status
| Question | Answer |
|---|---|
| Probes? | Yes |
| USB3 mode? | Working — DWC3 negotiates SuperSpeed when allowed |
| DP alt-mode? | Untested — no DP sink tried yet |
| Cable orientation flip? | Configured via FUSB302 CC detection |
Open work
- DP alt-mode bring-up — plug in a USB-C → DP hub, configure the
TCPHY for DP four-lane (or two-lane + USB3) mux, verify the DP
transmitter picks up the link. Linux ref:
drivers/gpu/drm/rockchip/cdn-dp-core.c— the CDN DisplayPort sink driver, which we don’t yet have. So DP alt-mode is gated on porting CDN-DP, not on TCPHY work. - Role-switch coupling with DWC3 — when DWC3 starts swapping between host and peripheral via FUSB302, TCPHY must keep up. Today this is locked because DWC3 stays in peripheral mode.
Related
- DWC3 component — the controller TCPHY feeds for USB3.
- USB2 PHY component — the partner PHY for USB2-mode operation.
- Essay 16: FUSB302 USB-PD sink — cable detection and the role-switch wiring.
- USB-C / PD recipe — verification.
- Hardware reference — USB-C PHY row.