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.armstrong@linaro.org>
---
.../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++
1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644
--- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
@@ -62,6 +62,20 @@ switch-lid {
};
};
+
+ hdmi-connector {
+ compatible = "hdmi-connector";
+ type = "a";
+ pinctrl-0 = <&hdmi_hpd_default>;
+ pinctrl-names = "default";
+
+ port {
+ hdmi_con: endpoint {
+ remote-endpoint = <&usb_1_ss2_qmpphy_out>;
+ };
+ };
+ };
+
pmic-glink {
compatible = "qcom,x1e80100-pmic-glink",
"qcom,sm8550-pmic-glink",
@@ -1007,6 +1021,14 @@ &mdss_dp1_out {
link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
};
+&mdss_dp2 {
+ status = "okay";
+};
+
+&mdss_dp2_out {
+ data-lanes = <0 1 2 3>;
+};
+
&mdss_dp3 {
/delete-property/ #sound-dai-cells;
@@ -1263,6 +1285,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";
@@ -1486,6 +1514,22 @@ &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>;
+
+ qcom,combo-initial-mode = "dp";
+
+ /delete-property/ mode-switch;
+ /delete-property/ orientation-switch;
+
+ status = "okay";
+};
+
+&usb_1_ss2_qmpphy_out {
+ remote-endpoint = <&hdmi_con>;
+};
+
&usb_1_ss1_hsphy {
vdd-supply = <&vreg_l3j_0p8>;
vdda12-supply = <&vreg_l2j_1p2>;
--
2.34.1
On 21.08.25 15:53, Neil Armstrong wrote: > The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver > connected to the third QMP Combo PHY 4 lanes. > [...] > .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ > 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 > --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi [...] > +&mdss_dp2 { > + status = "okay"; > +}; > + > +&mdss_dp2_out { > + data-lanes = <0 1 2 3>; > +}; > + Hi Neil, shouldn't mdss_dp2_out also have the link-frequencies property? + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; Or is it something the bridge already negotiates? with best regards Jens
On 06/09/2025 10:41, Jens Glathe wrote: > On 21.08.25 15:53, Neil Armstrong wrote: >> The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver >> connected to the third QMP Combo PHY 4 lanes. >> > [...] >> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ >> 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 >> --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi >> +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > [...] >> +&mdss_dp2 { >> + status = "okay"; >> +}; >> + >> +&mdss_dp2_out { >> + data-lanes = <0 1 2 3>; >> +}; >> + > > Hi Neil, > > shouldn't mdss_dp2_out also have the link-frequencies property? > > + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; > > Or is it something the bridge already negotiates? No, indeed I'll add it, it will fall back to HBR2 anyway (as actually) if the link quality is low. Neil > > with best regards > > Jens >
On 9/6/25 10:41 AM, Jens Glathe wrote: > On 21.08.25 15:53, Neil Armstrong wrote: >> The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver >> connected to the third QMP Combo PHY 4 lanes. >> > [...] >> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ >> 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 >> --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi >> +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > [...] >> +&mdss_dp2 { >> + status = "okay"; >> +}; >> + >> +&mdss_dp2_out { >> + data-lanes = <0 1 2 3>; >> +}; >> + > > Hi Neil, > > shouldn't mdss_dp2_out also have the link-frequencies property? > > + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; > > Or is it something the bridge already negotiates? No, it seems like our driver falls back to HBR2 (54xx) ever since the driver has been made aware of this property: commit 381518a1677c49742a85f51e8f0e89f4b9b7d297 Author: Kuogee Hsieh <quic_khsieh@quicinc.com> Date: Tue Dec 27 09:45:02 2022 -0800 drm/msm/dp: Add capability to parser and retrieve max DP link supported rate from link-frequencies property of dp_out endpoint Dmitry, is there any reason not to allow HBR3 by default? Is our dp controller/driver not smart enough not to advertise rates it can't support, during negotiation? Konrad
On Mon, Sep 08, 2025 at 09:16:29AM +0200, Konrad Dybcio wrote: > On 9/6/25 10:41 AM, Jens Glathe wrote: > > On 21.08.25 15:53, Neil Armstrong wrote: > >> The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver > >> connected to the third QMP Combo PHY 4 lanes. > >> > > [...] > >> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ > >> 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 > >> --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > >> +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > > [...] > >> +&mdss_dp2 { > >> + status = "okay"; > >> +}; > >> + > >> +&mdss_dp2_out { > >> + data-lanes = <0 1 2 3>; > >> +}; > >> + > > > > Hi Neil, > > > > shouldn't mdss_dp2_out also have the link-frequencies property? > > > > + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; > > > > Or is it something the bridge already negotiates? > > No, it seems like our driver falls back to HBR2 (54xx) ever since the > driver has been made aware of this property: > > commit 381518a1677c49742a85f51e8f0e89f4b9b7d297 > Author: Kuogee Hsieh <quic_khsieh@quicinc.com> > Date: Tue Dec 27 09:45:02 2022 -0800 > > drm/msm/dp: Add capability to parser and retrieve max DP link supported rate from link-frequencies property of dp_out endpoint > > Dmitry, is there any reason not to allow HBR3 by default? Is our dp > controller/driver not smart enough not to advertise rates it can't > support, during negotiation? I don't remember the exact details. If I remmber correctly, there were cases where using HBR3 resulted in a less stable signal than falling back to HBR2. -- With best wishes Dmitry
On 9/8/25 11:39 AM, Dmitry Baryshkov wrote: > On Mon, Sep 08, 2025 at 09:16:29AM +0200, Konrad Dybcio wrote: >> On 9/6/25 10:41 AM, Jens Glathe wrote: >>> On 21.08.25 15:53, Neil Armstrong wrote: >>>> The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver >>>> connected to the third QMP Combo PHY 4 lanes. >>>> >>> [...] >>>> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ >>>> 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 >>>> --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi >>>> +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi >>> [...] >>>> +&mdss_dp2 { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&mdss_dp2_out { >>>> + data-lanes = <0 1 2 3>; >>>> +}; >>>> + >>> >>> Hi Neil, >>> >>> shouldn't mdss_dp2_out also have the link-frequencies property? >>> >>> + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; >>> >>> Or is it something the bridge already negotiates? >> >> No, it seems like our driver falls back to HBR2 (54xx) ever since the >> driver has been made aware of this property: >> >> commit 381518a1677c49742a85f51e8f0e89f4b9b7d297 >> Author: Kuogee Hsieh <quic_khsieh@quicinc.com> >> Date: Tue Dec 27 09:45:02 2022 -0800 >> >> drm/msm/dp: Add capability to parser and retrieve max DP link supported rate from link-frequencies property of dp_out endpoint >> >> Dmitry, is there any reason not to allow HBR3 by default? Is our dp >> controller/driver not smart enough not to advertise rates it can't >> support, during negotiation? > > I don't remember the exact details. If I remmber correctly, there were > cases where using HBR3 resulted in a less stable signal than falling > back to HBR2. A very early revision of that series has a commit message that reads: """ Since it is not every platform supports HBR3 link rate, this patch limit the DP link rate at max link rate if it is specified at DTS file. Otherwise, the max dp link rate will be limited at HBR2 as before. """ Konrad
On Mon, Sep 08, 2025 at 01:40:06PM +0200, Konrad Dybcio wrote: > On 9/8/25 11:39 AM, Dmitry Baryshkov wrote: > > On Mon, Sep 08, 2025 at 09:16:29AM +0200, Konrad Dybcio wrote: > >> On 9/6/25 10:41 AM, Jens Glathe wrote: > >>> On 21.08.25 15:53, Neil Armstrong wrote: > >>>> The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver > >>>> connected to the third QMP Combo PHY 4 lanes. > >>>> > >>> [...] > >>>> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ > >>>> 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 > >>>> --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > >>>> +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > >>> [...] > >>>> +&mdss_dp2 { > >>>> + status = "okay"; > >>>> +}; > >>>> + > >>>> +&mdss_dp2_out { > >>>> + data-lanes = <0 1 2 3>; > >>>> +}; > >>>> + > >>> > >>> Hi Neil, > >>> > >>> shouldn't mdss_dp2_out also have the link-frequencies property? > >>> > >>> + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; > >>> > >>> Or is it something the bridge already negotiates? > >> > >> No, it seems like our driver falls back to HBR2 (54xx) ever since the > >> driver has been made aware of this property: > >> > >> commit 381518a1677c49742a85f51e8f0e89f4b9b7d297 > >> Author: Kuogee Hsieh <quic_khsieh@quicinc.com> > >> Date: Tue Dec 27 09:45:02 2022 -0800 > >> > >> drm/msm/dp: Add capability to parser and retrieve max DP link supported rate from link-frequencies property of dp_out endpoint > >> > >> Dmitry, is there any reason not to allow HBR3 by default? Is our dp > >> controller/driver not smart enough not to advertise rates it can't > >> support, during negotiation? > > > > I don't remember the exact details. If I remmber correctly, there were > > cases where using HBR3 resulted in a less stable signal than falling > > back to HBR2. > > A very early revision of that series has a commit message that reads: > > """ > Since it is not every platform supports HBR3 link rate, this patch > limit the DP link rate at max link rate if it is specified at DTS file. > Otherwise, the max dp link rate will be limited at HBR2 as before. Yep. And the platform here means the whole device, not just the SoC / SKU. > """ > > Konrad -- With best wishes Dmitry
On 9/8/25 9:16 AM, Konrad Dybcio wrote: > On 9/6/25 10:41 AM, Jens Glathe wrote: >> On 21.08.25 15:53, Neil Armstrong wrote: >>> The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver >>> connected to the third QMP Combo PHY 4 lanes. >>> >> [...] >>> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ >>> 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 >>> --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi >>> +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi >> [...] >>> +&mdss_dp2 { >>> + status = "okay"; >>> +}; >>> + >>> +&mdss_dp2_out { >>> + data-lanes = <0 1 2 3>; >>> +}; >>> + >> >> Hi Neil, >> >> shouldn't mdss_dp2_out also have the link-frequencies property? >> >> + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; >> >> Or is it something the bridge already negotiates? > > No, it seems like our driver falls back to HBR2 (54xx) ever since the > driver has been made aware of this property: > > commit 381518a1677c49742a85f51e8f0e89f4b9b7d297 > Author: Kuogee Hsieh <quic_khsieh@quicinc.com> > Date: Tue Dec 27 09:45:02 2022 -0800 > > drm/msm/dp: Add capability to parser and retrieve max DP link supported rate from link-frequencies property of dp_out endpoint > > Dmitry, is there any reason not to allow HBR3 by default? Is our dp > controller/driver not smart enough not to advertise rates it can't > support, during negotiation? I suppose if I want an answer from Dmitry, it would be fair to add him to the recipient list.. fixing that Konrad
On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote: > 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.armstrong@linaro.org> > --- > .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ > 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 > --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > @@ -62,6 +62,20 @@ switch-lid { > }; > }; > > + > + hdmi-connector { > + compatible = "hdmi-connector"; > + type = "a"; > + pinctrl-0 = <&hdmi_hpd_default>; > + pinctrl-names = "default"; If this is a DP HPD signal, it should be a part of the DP device. > + > + port { > + hdmi_con: endpoint { > + remote-endpoint = <&usb_1_ss2_qmpphy_out>; Please describe the transparent bridge too. It can be covered by the simple-bridge.yaml / simple-bridge.c > + }; > + }; > + }; > + > pmic-glink { > compatible = "qcom,x1e80100-pmic-glink", > "qcom,sm8550-pmic-glink", > @@ -1007,6 +1021,14 @@ &mdss_dp1_out { > link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; > }; > > +&mdss_dp2 { > + status = "okay"; > +}; > + > +&mdss_dp2_out { > + data-lanes = <0 1 2 3>; > +}; > + > &mdss_dp3 { > /delete-property/ #sound-dai-cells; > > @@ -1263,6 +1285,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"; > @@ -1486,6 +1514,22 @@ &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>; > + > + qcom,combo-initial-mode = "dp"; > + > + /delete-property/ mode-switch; > + /delete-property/ orientation-switch; > + > + status = "okay"; > +}; > + > +&usb_1_ss2_qmpphy_out { > + remote-endpoint = <&hdmi_con>; > +}; > + > &usb_1_ss1_hsphy { > vdd-supply = <&vreg_l3j_0p8>; > vdda12-supply = <&vreg_l2j_1p2>; > > -- > 2.34.1 > -- With best wishes Dmitry
On Fri, Aug 22, 2025 at 02:01:30PM +0300, Dmitry Baryshkov wrote: > On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote: > > 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.armstrong@linaro.org> > > --- > > .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ > > 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 > > --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > > +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > > @@ -62,6 +62,20 @@ switch-lid { > > }; > > }; > > > > + > > + hdmi-connector { > > + compatible = "hdmi-connector"; > > + type = "a"; > > + pinctrl-0 = <&hdmi_hpd_default>; > > + pinctrl-names = "default"; > [...] > > + > > + port { > > + hdmi_con: endpoint { > > + remote-endpoint = <&usb_1_ss2_qmpphy_out>; > > Please describe the transparent bridge too. It can be covered by the > simple-bridge.yaml / simple-bridge.c > I think this isn't the case here(?), but how are we going to handle devices where we don't know which bridge chip is used? I've seen at least 3 or 4 different chips already across all X1E laptops and we don't have schematics for most of them. Thanks, Stephan
On Fri, Aug 22, 2025 at 01:45:38PM +0200, Stephan Gerhold wrote: > On Fri, Aug 22, 2025 at 02:01:30PM +0300, Dmitry Baryshkov wrote: > > On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote: > > > 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.armstrong@linaro.org> > > > --- > > > .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ > > > 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 > > > --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > > > +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > > > @@ -62,6 +62,20 @@ switch-lid { > > > }; > > > }; > > > > > > + > > > + hdmi-connector { > > > + compatible = "hdmi-connector"; > > > + type = "a"; > > > + pinctrl-0 = <&hdmi_hpd_default>; > > > + pinctrl-names = "default"; > > [...] > > > + > > > + port { > > > + hdmi_con: endpoint { > > > + remote-endpoint = <&usb_1_ss2_qmpphy_out>; > > > > Please describe the transparent bridge too. It can be covered by the > > simple-bridge.yaml / simple-bridge.c > > > > I think this isn't the case here(?), but how are we going to handle > devices where we don't know which bridge chip is used? I've seen at > least 3 or 4 different chips already across all X1E laptops and we don't > have schematics for most of them. Open the case, inspect the board, identify the chip. Everything is as usual. -- With best wishes Dmitry
On Fri, Aug 22, 2025 at 02:57:24PM +0300, Dmitry Baryshkov wrote: > On Fri, Aug 22, 2025 at 01:45:38PM +0200, Stephan Gerhold wrote: > > On Fri, Aug 22, 2025 at 02:01:30PM +0300, Dmitry Baryshkov wrote: > > > On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote: > > > > 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.armstrong@linaro.org> > > > > --- > > > > .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ > > > > 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 > > > > --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > > > > +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > > > > @@ -62,6 +62,20 @@ switch-lid { > > > > }; > > > > }; > > > > > > > > + > > > > + hdmi-connector { > > > > + compatible = "hdmi-connector"; > > > > + type = "a"; > > > > + pinctrl-0 = <&hdmi_hpd_default>; > > > > + pinctrl-names = "default"; > > > [...] > > > > + > > > > + port { > > > > + hdmi_con: endpoint { > > > > + remote-endpoint = <&usb_1_ss2_qmpphy_out>; > > > > > > Please describe the transparent bridge too. It can be covered by the > > > simple-bridge.yaml / simple-bridge.c > > > > > > > I think this isn't the case here(?), but how are we going to handle > > devices where we don't know which bridge chip is used? I've seen at > > least 3 or 4 different chips already across all X1E laptops and we don't > > have schematics for most of them. > > Open the case, inspect the board, identify the chip. Everything is as > usual. > The chip might not have any visible identifier. :-) But I guess there is no point theorizing about such potential issues now. We'll see. I agree it would be cleaner to have the bridges modelled. Thanks, Stephan
On 22/08/2025 13:01, Dmitry Baryshkov wrote: > On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote: >> 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.armstrong@linaro.org> >> --- >> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ >> 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 >> --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi >> +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi >> @@ -62,6 +62,20 @@ switch-lid { >> }; >> }; >> >> + >> + hdmi-connector { >> + compatible = "hdmi-connector"; >> + type = "a"; >> + pinctrl-0 = <&hdmi_hpd_default>; >> + pinctrl-names = "default"; > > If this is a DP HPD signal, it should be a part of the DP device. > >> + >> + port { >> + hdmi_con: endpoint { >> + remote-endpoint = <&usb_1_ss2_qmpphy_out>; > > Please describe the transparent bridge too. It can be covered by the > simple-bridge.yaml / simple-bridge.c Ack, indeed it could take the pinctrl thing. Neil > > >> + }; >> + }; >> + }; >> + >> pmic-glink { >> compatible = "qcom,x1e80100-pmic-glink", >> "qcom,sm8550-pmic-glink", >> @@ -1007,6 +1021,14 @@ &mdss_dp1_out { >> link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; >> }; >> >> +&mdss_dp2 { >> + status = "okay"; >> +}; >> + >> +&mdss_dp2_out { >> + data-lanes = <0 1 2 3>; >> +}; >> + >> &mdss_dp3 { >> /delete-property/ #sound-dai-cells; >> >> @@ -1263,6 +1285,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"; >> @@ -1486,6 +1514,22 @@ &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>; >> + >> + qcom,combo-initial-mode = "dp"; >> + >> + /delete-property/ mode-switch; >> + /delete-property/ orientation-switch; >> + >> + status = "okay"; >> +}; >> + >> +&usb_1_ss2_qmpphy_out { >> + remote-endpoint = <&hdmi_con>; >> +}; >> + >> &usb_1_ss1_hsphy { >> vdd-supply = <&vreg_l3j_0p8>; >> vdda12-supply = <&vreg_l2j_1p2>; >> >> -- >> 2.34.1 >> >
On Fri, Aug 22, 2025 at 01:02:56PM +0200, Neil Armstrong wrote: > On 22/08/2025 13:01, Dmitry Baryshkov wrote: > > On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote: > > > 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.armstrong@linaro.org> > > > --- > > > .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++ > > > 1 file changed, 44 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 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644 > > > --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > > > +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi > > > @@ -62,6 +62,20 @@ switch-lid { > > > }; > > > }; > > > + > > > + hdmi-connector { > > > + compatible = "hdmi-connector"; > > > + type = "a"; > > > + pinctrl-0 = <&hdmi_hpd_default>; > > > + pinctrl-names = "default"; > > > > If this is a DP HPD signal, it should be a part of the DP device. > > > > > + > > > + port { > > > + hdmi_con: endpoint { > > > + remote-endpoint = <&usb_1_ss2_qmpphy_out>; > > > > Please describe the transparent bridge too. It can be covered by the > > simple-bridge.yaml / simple-bridge.c > > Ack, indeed it could take the pinctrl thing. Pinctrl, enables, etc. But from my POV the HPD pin should be a part of the DP controller itself. > > Neil > > > > > > > > + }; > > > + }; > > > + }; > > > + > > > pmic-glink { > > > compatible = "qcom,x1e80100-pmic-glink", > > > "qcom,sm8550-pmic-glink", > > > @@ -1007,6 +1021,14 @@ &mdss_dp1_out { > > > link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; > > > }; > > > +&mdss_dp2 { > > > + status = "okay"; > > > +}; > > > + > > > +&mdss_dp2_out { > > > + data-lanes = <0 1 2 3>; > > > +}; > > > + > > > &mdss_dp3 { > > > /delete-property/ #sound-dai-cells; > > > @@ -1263,6 +1285,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"; > > > @@ -1486,6 +1514,22 @@ &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>; > > > + > > > + qcom,combo-initial-mode = "dp"; > > > + > > > + /delete-property/ mode-switch; > > > + /delete-property/ orientation-switch; > > > + > > > + status = "okay"; > > > +}; > > > + > > > +&usb_1_ss2_qmpphy_out { > > > + remote-endpoint = <&hdmi_con>; > > > +}; > > > + > > > &usb_1_ss1_hsphy { > > > vdd-supply = <&vreg_l3j_0p8>; > > > vdda12-supply = <&vreg_l2j_1p2>; > > > > > > -- > > > 2.34.1 > > > > > > -- With best wishes Dmitry
© 2016 - 2025 Red Hat, Inc.