[PATCH 2/2] arm64: dts: rockchip: add USB-C DP altmode support to LubanCat 4
Pufan Jin
cyan2254650260 at gmail.com
Tue Nov 10 11:30:28 PST 2026
The Type-C port on the EmbedFire LubanCat 4 supports DisplayPort
alternate mode through the RK3588 usbdp combo PHY (usbdp_phy0).
The sideband use (SBU1/SBU2) AUX signals are routed through two DC
switches controlled by GPIO4_B3 and GPIO4_B4.
Add the DisplayPort alternate mode entry (SVID 0xff01) to the USB-C
connector and connect connector port at 2 (SBU) to usbdp_phy0 port at 3.
Configure usbdp_phy0 with mode-switch and sbu{1,2}-dc-gpios. Enable
dp0 and connect dp0_out to usbdp_phy0 port at 2, with dp0_in fed from
VOP2 VP1.
Tested driver stack registration on LubanCat 4 hardware:
- dw_dp bounds successfully to display-subsystem;
- DRM DP connector card2-DP-1 is registered and reports disconnected;
- typec_displayport registers the DisplayPort altmode driver;
- usbdp_phy0 registers the phy-switch and phy-mux.
Physical DisplayPort link training and monitor video output are pending
verification with a physical USB-C to DP sink/cable.
Signed-off-by: Pufan Jin <cyan2254650260 at gmail.com>
---
.../boot/dts/rockchip/rk3588s-lubancat-4.dts | 57 +++++++++++++++++++
1 file changed, 57 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts b/arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts
index a94aaddb2..6c5a942df 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts
@@ -323,6 +323,13 @@ usb_con: connector {
source-pdos =
<PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>;
+ altmodes {
+ displayport {
+ svid = /bits/ 16 <0xff01>;
+ vdo = <0xffffffff>;
+ };
+ };
+
ports {
#address-cells = <1>;
#size-cells = <0>;
@@ -342,6 +349,14 @@ usbc0_ss: endpoint {
remote-endpoint = <&usbdp_phy0_ss_out>;
};
};
+
+ port at 2 {
+ reg = <2>;
+
+ usbc0_sbu: endpoint {
+ remote-endpoint = <&usbdp_phy0_dp_out>;
+ };
+ };
};
};
};
@@ -857,6 +872,9 @@ &usb_host2_xhci {
&usbdp_phy0 {
orientation-switch;
+ mode-switch;
+ sbu1-dc-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_HIGH>;
+ sbu2-dc-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
status = "okay";
ports {
@@ -878,6 +896,22 @@ usbdp_phy0_ss_in: endpoint {
remote-endpoint = <&usb_host0_xhci_ss>;
};
};
+
+ port at 2 {
+ reg = <2>;
+
+ usbdp_phy0_dp_in: endpoint {
+ remote-endpoint = <&dp0_out_con>;
+ };
+ };
+
+ port at 3 {
+ reg = <3>;
+
+ usbdp_phy0_dp_out: endpoint {
+ remote-endpoint = <&usbc0_sbu>;
+ };
+ };
};
};
@@ -895,3 +929,26 @@ vp0_out_hdmi0: endpoint at ROCKCHIP_VOP2_EP_HDMI0 {
remote-endpoint = <&hdmi0_in_vp0>;
};
};
+
+&dp0 {
+ status = "okay";
+};
+
+&dp0_in {
+ dp0_in_vp1: endpoint {
+ remote-endpoint = <&vp1_out_dp0>;
+ };
+};
+
+&dp0_out {
+ dp0_out_con: endpoint {
+ remote-endpoint = <&usbdp_phy0_dp_in>;
+ };
+};
+
+&vp1 {
+ vp1_out_dp0: endpoint at a {
+ reg = <ROCKCHIP_VOP2_EP_DP0>;
+ remote-endpoint = <&dp0_in_vp1>;
+ };
+};
--
2.56.0
More information about the Linux-rockchip
mailing list