The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver
connected to the third QMP Combo PHY 4 lanes.

Add all the data routing, disable mode switching and specify the
QMP Combo PHY should be in DP-Only mode to route the 4 lanes to
the underlying DP phy.

Signed-off-by: Neil Armstrong <neil.armstr...@linaro.org>
---
 .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi    | 82 ++++++++++++++++++++++
 1 file changed, 82 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi 
b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
index 
23213b0d9582822e9503e4acf18c62d5c8c7867d..077aa71e79b548cb1f7c76d297a6afae717f7663
 100644
--- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
@@ -9,6 +9,7 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/gpio-keys.h>
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/phy/phy.h>
 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 
@@ -62,6 +63,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_1_ss2_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,x1e80100-pmic-glink",
                             "qcom,sm8550-pmic-glink",
@@ -1005,6 +1045,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;
 
@@ -1264,6 +1312,12 @@ &tlmm {
                               <72 2>, /* Secure EC I2C connection (?) */
                               <238 1>; /* UFS Reset */
 
+       hdmi_hpd_default: hdmi-hpd-default-state {
+               pins = "gpio126";
+               function = "usb2_dp";
+               bias-disable;
+       };
+
        eusb3_reset_n: eusb3-reset-n-state {
                pins = "gpio6";
                function = "gpio";
@@ -1487,6 +1541,34 @@ &usb_1_ss0_qmpphy_out {
        remote-endpoint = <&retimer_ss0_ss_in>;
 };
 
+&usb_1_ss2_qmpphy {
+       vdda-phy-supply = <&vreg_l2j_1p2>;
+       vdda-pll-supply = <&vreg_l2d_0p9>;
+
+       /delete-property/ mode-switch;
+       /delete-property/ orientation-switch;
+
+       status = "okay";
+
+       ports {
+               port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       /delete-node/ endpoint;
+
+                       usb_1_ss2_qmpphy_out_dp: endpoint@0 {
+                               reg = <0>;
+
+                               data-lanes = <0 1 2 3>;
+                               remote-endpoint = <&hdmi_bridge_dp_in>;
+                       };
+
+                       /* No USB3 lanes connected */
+               };
+       };
+};
+
 &usb_1_ss1_hsphy {
        vdd-supply = <&vreg_l3j_0p8>;
        vdda12-supply = <&vreg_l2j_1p2>;

-- 
2.34.1

Reply via email to