[PATCH RFC] arm64: dts: qcom: mahua-lenovo-thinkpad-t14s-gen7: Describe the HDMI port
From: Abel Vesa
Date: Mon Nov 09 2026 - 04:11:53 EST
The HDMI port is driven by the third DisplayPort controller through the
DP lanes of the third USB/DP combo PHY and a Realtek RTD2171A DP to HDMI
bridge, with the HPD signal on GPIO 126. The USB3 lanes of this PHY are
not connected, the third USB controller only serves the eUSB2 port of
the fingerprint reader.
Describe all of this so the HDMI port works.
Signed-off-by: Abel Vesa <abel.vesa@xxxxxxxxxxxxxxxx>
---
This depends on the LDO voltage fix sent separately, as the combo PHY is
powered from one of the rails it fixes:
https://patch.msgid.link/20261108-t14s-gen7-ldo-voltages-v1-1-e0ad0d528767@xxxxxxxxxxxxxxxx
Tested on a ThinkPad T14s Gen 7 (LCD) with a 1920x1080 monitor: the DP
link to the bridge trains at HBR2 x4 and the monitor shows the desktop.
---
.../qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts | 82 ++++++++++++++++++++++
1 file changed, 82 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts b/arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts
index a9204e99b0fb..da5f603bb4e3 100644
--- a/arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts
+++ b/arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts
@@ -73,6 +73,45 @@ switch-lid {
};
};
+ hdmi-bridge {
+ compatible = "realtek,rtd2171";
+
+ pinctrl-0 = <&hdmi_hpd_default>;
+ pinctrl-names = "default";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ hdmi_bridge_dp_in: endpoint {
+ remote-endpoint = <&usb_2_qmpphy_out_dp>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ hdmi_bridge_tmds_out: endpoint {
+ remote-endpoint = <&hdmi_con>;
+ };
+ };
+ };
+ };
+
+ hdmi-connector {
+ compatible = "hdmi-connector";
+ type = "a";
+
+ port {
+ hdmi_con: endpoint {
+ remote-endpoint = <&hdmi_bridge_tmds_out>;
+ };
+ };
+ };
+
pmic-glink {
compatible = "qcom,glymur-pmic-glink",
"qcom,pmic-glink";
@@ -762,6 +801,14 @@ &mdss_dp1_out {
link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
};
+&mdss_dp2 {
+ status = "okay";
+};
+
+&mdss_dp2_out {
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
&mdss_dp3 {
/delete-property/ #sound-dai-cells;
@@ -1020,6 +1067,12 @@ hall_int_n_default: hall-int-n-state {
bias-disable;
};
+ hdmi_hpd_default: hdmi-hpd-default-state {
+ pins = "gpio126";
+ function = "usb2_dp";
+ bias-disable;
+ };
+
kybd_default: kybd-default-state {
pins = "gpio67";
function = "gpio";
@@ -1270,3 +1323,32 @@ &usb_2_hsphy {
status = "okay";
};
+
+&usb_2_qmpphy {
+ vdda-phy-supply = <&vreg_l4c_e1_0p91>;
+ vdda-pll-supply = <&vreg_l4f_e1_1p2>;
+ refgen-supply = <&vreg_l1c_e1_0p91>;
+
+ /delete-property/ mode-switch;
+ /delete-property/ orientation-switch;
+
+ status = "okay";
+
+ ports {
+ port@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ /delete-node/ endpoint;
+
+ usb_2_qmpphy_out_dp: endpoint@0 {
+ reg = <0>;
+
+ data-lanes = <3 2 1 0>;
+ remote-endpoint = <&hdmi_bridge_dp_in>;
+ };
+
+ /* No USB3 lanes connected */
+ };
+ };
+};
---
base-commit: cae1456a7b596c7d21d86fc17216e6996f26da3d
change-id: 20261109-t14s-gen7-hdmi-port-35e1cd59315c
prerequisite-message-id: 20261108-t14s-gen7-ldo-voltages-v1-1-e0ad0d528767@xxxxxxxxxxxxxxxx
prerequisite-patch-id: 15e089c6ecf7cd782ff552a16cab0913dbb6197d
Best regards,
--
Abel