devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support
@ 2025-04-17 16:35 Jens Glathe via B4 Relay
  2025-04-25 19:45 ` Konrad Dybcio
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Jens Glathe via B4 Relay @ 2025-04-17 16:35 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel, Rob Clark, Jos Dehaes,
	Jens Glathe

From: Jens Glathe <jens.glathe@oldschoolsolutions.biz>

comparing with CRD and other dts for a more complete support of the 7X
only retimers, gpios, regulators, dp outputs

Tested-by: Rob Clark <robdclark@gmail.com>
Tested-by: Jos Dehaes <jos.dehaes@gmail.com>
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
---
This patch adds the required nodes to support DP Altmode on all three type-c
ports. The definition is derived from the CRD. Since they are all marked 40Gbps,
I assume there are 3 PS8830 retimers. 
This modification is now for ~8 weeks in my tree with little to no complaints. I 
don't have access to a Yoga Slim 7X, however many people on #aarch64-laptops do 
and some are using this patch.
---
Changes in v2:
- removed changes not relevant to retimers and dp altmode (thanks Johan)
- Link to v1: https://lore.kernel.org/r/20250417-slim7x-retimer-v1-1-5813a7835903@oldschoolsolutions.biz
---
 .../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts  | 476 ++++++++++++++++++++-
 1 file changed, 470 insertions(+), 6 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts b/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
index 445d97d67d325853b7dcd2060523e7469ed4e6ea..6f1a9eec0c48bdffb6cf60ff270dffa6bf64b710 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
@@ -72,7 +72,15 @@ port@1 {
 					reg = <1>;
 
 					pmic_glink_ss0_ss_in: endpoint {
-						remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+						remote-endpoint = <&retimer_ss0_ss_out>;
+					};
+				};
+
+				port@2 {
+					reg = <2>;
+
+					pmic_glink_ss0_con_sbu_in: endpoint {
+						remote-endpoint = <&retimer_ss0_con_sbu_out>;
 					};
 				};
 			};
@@ -101,7 +109,15 @@ port@1 {
 					reg = <1>;
 
 					pmic_glink_ss1_ss_in: endpoint {
-						remote-endpoint = <&usb_1_ss1_qmpphy_out>;
+						remote-endpoint = <&retimer_ss1_ss_out>;
+					};
+				};
+
+				port@2 {
+					reg = <2>;
+
+					pmic_glink_ss1_con_sbu_in: endpoint {
+						remote-endpoint = <&retimer_ss1_con_sbu_out>;
 					};
 				};
 			};
@@ -130,7 +146,15 @@ port@1 {
 					reg = <1>;
 
 					pmic_glink_ss2_ss_in: endpoint {
-						remote-endpoint = <&usb_1_ss2_qmpphy_out>;
+						remote-endpoint = <&retimer_ss2_ss_out>;
+					};
+				};
+
+				port@2 {
+					reg = <2>;
+
+					pmic_glink_ss2_con_sbu_in: endpoint {
+						remote-endpoint = <&retimer_ss2_con_sbu_out>;
 					};
 				};
 			};
@@ -226,6 +250,150 @@ vreg_nvme: regulator-nvme {
 		regulator-boot-on;
 	};
 
+	vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "VREG_RTMR0_1P15";
+		regulator-min-microvolt = <1150000>;
+		regulator-max-microvolt = <1150000>;
+
+		gpio = <&pmc8380_5_gpios 8 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		pinctrl-0 = <&usb0_pwr_1p15_reg_en>;
+		pinctrl-names = "default";
+
+		regulator-boot-on;
+	};
+
+	vreg_rtmr0_1p8: regulator-rtmr0-1p8 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "VREG_RTMR0_1P8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+
+		gpio = <&pm8550ve_9_gpios 8 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		pinctrl-0 = <&usb0_1p8_reg_en>;
+		pinctrl-names = "default";
+
+		regulator-boot-on;
+	};
+
+	vreg_rtmr0_3p3: regulator-rtmr0-3p3 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "VREG_RTMR0_3P3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+
+		gpio = <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		pinctrl-0 = <&usb0_3p3_reg_en>;
+		pinctrl-names = "default";
+
+		regulator-boot-on;
+	};
+
+	vreg_rtmr1_1p15: regulator-rtmr1-1p15 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "VREG_RTMR1_1P15";
+		regulator-min-microvolt = <1150000>;
+		regulator-max-microvolt = <1150000>;
+
+		gpio = <&tlmm 188 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		pinctrl-0 = <&usb1_pwr_1p15_reg_en>;
+		pinctrl-names = "default";
+
+		regulator-boot-on;
+	};
+
+	vreg_rtmr1_1p8: regulator-rtmr1-1p8 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "VREG_RTMR1_1P8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+
+		gpio = <&tlmm 175 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		pinctrl-0 = <&usb1_pwr_1p8_reg_en>;
+		pinctrl-names = "default";
+
+		regulator-boot-on;
+	};
+
+	vreg_rtmr1_3p3: regulator-rtmr1-3p3 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "VREG_RTMR1_3P3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+
+		gpio = <&tlmm 186 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		pinctrl-0 = <&usb1_pwr_3p3_reg_en>;
+		pinctrl-names = "default";
+
+		regulator-boot-on;
+	};
+
+	vreg_rtmr2_1p15: regulator-rtmr2-1p15 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "VREG_RTMR2_1P15";
+		regulator-min-microvolt = <1150000>;
+		regulator-max-microvolt = <1150000>;
+
+		gpio = <&tlmm 189 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		pinctrl-0 = <&usb2_pwr_1p15_reg_en>;
+		pinctrl-names = "default";
+
+		regulator-boot-on;
+	};
+
+	vreg_rtmr2_1p8: regulator-rtmr2-1p8 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "VREG_RTMR2_1P8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+
+		gpio = <&tlmm 126 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		pinctrl-0 = <&usb2_pwr_1p8_reg_en>;
+		pinctrl-names = "default";
+
+		regulator-boot-on;
+	};
+
+	vreg_rtmr2_3p3: regulator-rtmr2-3p3 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "VREG_RTMR2_3P3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+
+		gpio = <&tlmm 187 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		pinctrl-0 = <&usb2_pwr_3p3_reg_en>;
+		pinctrl-names = "default";
+
+		regulator-boot-on;
+	};
+
 	vph_pwr: regulator-vph-pwr {
 		compatible = "regulator-fixed";
 
@@ -567,6 +735,178 @@ keyboard@3a {
 	};
 };
 
+&i2c1 {
+	clock-frequency = <400000>;
+
+	status = "okay";
+
+	typec-mux@8 {
+		compatible = "parade,ps8830";
+		reg = <0x08>;
+
+		clocks = <&rpmhcc RPMH_RF_CLK5>;
+
+		vdd-supply = <&vreg_rtmr2_1p15>;
+		vdd33-supply = <&vreg_rtmr2_3p3>;
+		vdd33-cap-supply = <&vreg_rtmr2_3p3>;
+		vddar-supply = <&vreg_rtmr2_1p15>;
+		vddat-supply = <&vreg_rtmr2_1p15>;
+		vddio-supply = <&vreg_rtmr2_1p8>;
+
+		reset-gpios = <&tlmm 185 GPIO_ACTIVE_LOW>;
+
+		pinctrl-0 = <&rtmr2_default>;
+		pinctrl-names = "default";
+
+		orientation-switch;
+		retimer-switch;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
+
+				retimer_ss2_ss_out: endpoint {
+					remote-endpoint = <&pmic_glink_ss2_ss_in>;
+				};
+			};
+
+			port@1 {
+				reg = <1>;
+
+				retimer_ss2_ss_in: endpoint {
+					remote-endpoint = <&usb_1_ss2_qmpphy_out>;
+				};
+			};
+
+			port@2 {
+				reg = <2>;
+
+				retimer_ss2_con_sbu_out: endpoint {
+					remote-endpoint = <&pmic_glink_ss2_con_sbu_in>;
+				};
+			};
+		};
+	};
+};
+
+&i2c3 {
+	clock-frequency = <400000>;
+
+	status = "okay";
+
+	typec-mux@8 {
+		compatible = "parade,ps8830";
+		reg = <0x08>;
+
+		clocks = <&rpmhcc RPMH_RF_CLK3>;
+
+		vdd-supply = <&vreg_rtmr0_1p15>;
+		vdd33-supply = <&vreg_rtmr0_3p3>;
+		vdd33-cap-supply = <&vreg_rtmr0_3p3>;
+		vddar-supply = <&vreg_rtmr0_1p15>;
+		vddat-supply = <&vreg_rtmr0_1p15>;
+		vddio-supply = <&vreg_rtmr0_1p8>;
+
+		reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_LOW>;
+
+		pinctrl-0 = <&rtmr0_default>;
+		pinctrl-names = "default";
+
+		retimer-switch;
+		orientation-switch;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
+
+				retimer_ss0_ss_out: endpoint {
+					remote-endpoint = <&pmic_glink_ss0_ss_in>;
+				};
+			};
+
+			port@1 {
+				reg = <1>;
+
+				retimer_ss0_ss_in: endpoint {
+					remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+				};
+			};
+
+			port@2 {
+				reg = <2>;
+
+				retimer_ss0_con_sbu_out: endpoint {
+					remote-endpoint = <&pmic_glink_ss0_con_sbu_in>;
+				};
+			};
+		};
+	};
+};
+
+&i2c7 {
+	clock-frequency = <400000>;
+
+	status = "okay";
+
+	typec-mux@8 {
+		compatible = "parade,ps8830";
+		reg = <0x8>;
+
+		clocks = <&rpmhcc RPMH_RF_CLK4>;
+
+		vdd-supply = <&vreg_rtmr1_1p15>;
+		vdd33-supply = <&vreg_rtmr1_3p3>;
+		vdd33-cap-supply = <&vreg_rtmr1_3p3>;
+		vddar-supply = <&vreg_rtmr1_1p15>;
+		vddat-supply = <&vreg_rtmr1_1p15>;
+		vddio-supply = <&vreg_rtmr1_1p8>;
+
+		reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
+
+		pinctrl-0 = <&rtmr1_default>;
+		pinctrl-names = "default";
+
+		retimer-switch;
+		orientation-switch;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
+
+				retimer_ss1_ss_out: endpoint {
+					remote-endpoint = <&pmic_glink_ss1_ss_in>;
+				};
+			};
+
+			port@1 {
+				reg = <1>;
+
+				retimer_ss1_ss_in: endpoint {
+					remote-endpoint = <&usb_1_ss1_qmpphy_out>;
+				};
+			};
+
+			port@2 {
+				reg = <2>;
+
+				retimer_ss1_con_sbu_out: endpoint {
+					remote-endpoint = <&pmic_glink_ss1_con_sbu_in>;
+				};
+			};
+
+		};
+	};
+};
+
 &i2c8 {
 	clock-frequency = <400000>;
 
@@ -614,6 +954,33 @@ &mdss {
 	status = "okay";
 };
 
+&mdss_dp0 {
+	status = "okay";
+};
+
+&mdss_dp0_out {
+	data-lanes = <0 1>;
+	link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp1 {
+	status = "okay";
+};
+
+&mdss_dp1_out {
+	data-lanes = <0 1>;
+	link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp2 {
+	status = "okay";
+};
+
+&mdss_dp2_out {
+	data-lanes = <0 1>;
+	link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
 &mdss_dp3 {
 	compatible = "qcom,x1e80100-dp";
 	/delete-property/ #sound-dai-cells;
@@ -701,6 +1068,37 @@ &pcie6a_phy {
 	status = "okay";
 };
 
+&pm8550_gpios {
+	rtmr0_default: rtmr0-reset-n-active-state {
+		pins = "gpio10";
+		function = "normal";
+		power-source = <1>; /* 1.8V */
+		bias-disable;
+		input-disable;
+		output-enable;
+	};
+
+	usb0_3p3_reg_en: usb0-3p3-reg-en-state {
+		pins = "gpio11";
+		function = "normal";
+		power-source = <1>; /* 1.8V */
+		bias-disable;
+		input-disable;
+		output-enable;
+	};
+};
+
+&pm8550ve_9_gpios {
+	usb0_1p8_reg_en: usb0-1p8-reg-en-state {
+		pins = "gpio8";
+		function = "normal";
+		power-source = <1>; /* 1.8V */
+		bias-disable;
+		input-disable;
+		output-enable;
+	};
+};
+
 &pmc8380_3_gpios {
 	edp_bl_en: edp-bl-en-state {
 		pins = "gpio4";
@@ -711,6 +1109,17 @@ edp_bl_en: edp-bl-en-state {
 	};
 };
 
+&pmc8380_5_gpios {
+	usb0_pwr_1p15_reg_en: usb0-pwr-1p15-reg-en-state {
+		pins = "gpio8";
+		function = "normal";
+		power-source = <1>; /* 1.8V */
+		bias-disable;
+		input-disable;
+		output-enable;
+	};
+};
+
 &qupv3_0 {
 	status = "okay";
 };
@@ -919,6 +1328,20 @@ wake-n-pins {
 		};
 	};
 
+	rtmr1_default: rtmr1-reset-n-active-state {
+		pins = "gpio176";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
+	rtmr2_default: rtmr2-reset-n-active-state {
+		pins = "gpio185";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
 	tpad_default: tpad-default-state {
 		pins = "gpio3";
 		function = "gpio";
@@ -940,6 +1363,47 @@ reset-n-pins {
 		};
 	};
 
+	usb1_pwr_1p15_reg_en: usb1-pwr-1p15-reg-en-state {
+		pins = "gpio188";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
+	usb1_pwr_1p8_reg_en: usb1-pwr-1p8-reg-en-state {
+		pins = "gpio175";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
+	usb1_pwr_3p3_reg_en: usb1-pwr-3p3-reg-en-state {
+		pins = "gpio186";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
+	usb2_pwr_1p15_reg_en: usb2-pwr-1p15-reg-en-state {
+		pins = "gpio189";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
+	usb2_pwr_1p8_reg_en: usb2-pwr-1p8-reg-en-state {
+		pins = "gpio126";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
+	usb2_pwr_3p3_reg_en: usb2-pwr-3p3-reg-en-state {
+		pins = "gpio187";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
 };
 
 &uart21 {
@@ -976,7 +1440,7 @@ &usb_1_ss0_dwc3_hs {
 };
 
 &usb_1_ss0_qmpphy_out {
-	remote-endpoint = <&pmic_glink_ss0_ss_in>;
+	remote-endpoint = <&retimer_ss0_ss_in>;
 };
 
 &usb_1_ss1_hsphy {
@@ -1008,7 +1472,7 @@ &usb_1_ss1_dwc3_hs {
 };
 
 &usb_1_ss1_qmpphy_out {
-	remote-endpoint = <&pmic_glink_ss1_ss_in>;
+	remote-endpoint = <&retimer_ss1_ss_in>;
 };
 
 &usb_1_ss2_hsphy {
@@ -1040,5 +1504,5 @@ &usb_1_ss2_dwc3_hs {
 };
 
 &usb_1_ss2_qmpphy_out {
-	remote-endpoint = <&pmic_glink_ss2_ss_in>;
+	remote-endpoint = <&retimer_ss2_ss_in>;
 };

---
base-commit: f660850bc246fef15ba78c81f686860324396628
change-id: 20250416-slim7x-retimer-70b1e67b1d42

Best regards,
-- 
Jens Glathe <jens.glathe@oldschoolsolutions.biz>



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support
  2025-04-17 16:35 [PATCH v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support Jens Glathe via B4 Relay
@ 2025-04-25 19:45 ` Konrad Dybcio
  2025-05-20  2:14 ` Bjorn Andersson
  2025-12-25  3:29 ` Shawn Guo
  2 siblings, 0 replies; 7+ messages in thread
From: Konrad Dybcio @ 2025-04-25 19:45 UTC (permalink / raw)
  To: jens.glathe, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel, Rob Clark, Jos Dehaes

On 4/17/25 6:35 PM, Jens Glathe via B4 Relay wrote:
> From: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
> 
> comparing with CRD and other dts for a more complete support of the 7X
> only retimers, gpios, regulators, dp outputs
> 
> Tested-by: Rob Clark <robdclark@gmail.com>
> Tested-by: Jos Dehaes <jos.dehaes@gmail.com>
> Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
> ---

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>

Konrad

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support
  2025-04-17 16:35 [PATCH v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support Jens Glathe via B4 Relay
  2025-04-25 19:45 ` Konrad Dybcio
@ 2025-05-20  2:14 ` Bjorn Andersson
  2025-12-25  3:29 ` Shawn Guo
  2 siblings, 0 replies; 7+ messages in thread
From: Bjorn Andersson @ 2025-05-20  2:14 UTC (permalink / raw)
  To: Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Jens Glathe
  Cc: linux-arm-msm, devicetree, linux-kernel, Rob Clark, Jos Dehaes


On Thu, 17 Apr 2025 18:35:44 +0200, Jens Glathe wrote:
> comparing with CRD and other dts for a more complete support of the 7X
> only retimers, gpios, regulators, dp outputs
> 
> 

Applied, thanks!

[1/1] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support
      commit: 299038d824180f21803282e445459ec5d7397c10

Best regards,
-- 
Bjorn Andersson <andersson@kernel.org>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support
  2025-04-17 16:35 [PATCH v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support Jens Glathe via B4 Relay
  2025-04-25 19:45 ` Konrad Dybcio
  2025-05-20  2:14 ` Bjorn Andersson
@ 2025-12-25  3:29 ` Shawn Guo
  2025-12-25  8:33   ` Krzysztof Kozlowski
  2 siblings, 1 reply; 7+ messages in thread
From: Shawn Guo @ 2025-12-25  3:29 UTC (permalink / raw)
  To: jens.glathe, Abel Vesa
  Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Rob Clark,
	Jos Dehaes

On Fri, Apr 18, 2025 at 12:35 AM Jens Glathe via B4 Relay
<devnull+jens.glathe.oldschoolsolutions.biz@kernel.org> wrote:
>
> From: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
>
> comparing with CRD and other dts for a more complete support of the 7X
> only retimers, gpios, regulators, dp outputs
>
> Tested-by: Rob Clark <robdclark@gmail.com>
> Tested-by: Jos Dehaes <jos.dehaes@gmail.com>
> Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
> ---
> This patch adds the required nodes to support DP Altmode on all three type-c
> ports. The definition is derived from the CRD. Since they are all marked 40Gbps,
> I assume there are 3 PS8830 retimers.
> This modification is now for ~8 weeks in my tree with little to no complaints. I
> don't have access to a Yoga Slim 7X, however many people on #aarch64-laptops do
> and some are using this patch.
> ---
> Changes in v2:
> - removed changes not relevant to retimers and dp altmode (thanks Johan)
> - Link to v1: https://lore.kernel.org/r/20250417-slim7x-retimer-v1-1-5813a7835903@oldschoolsolutions.biz
> ---
>  .../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts  | 476 ++++++++++++++++++++-
>  1 file changed, 470 insertions(+), 6 deletions(-)

Hi,

I'm running a Slim7x China variant (Yoga Air 14s) with Debian 13.
While the Debian stock 6.12 kernel works fine to bring up the display
(AMOLED eDP panel), newer kernels like 6.18 loses display during boot.
I can do either of the following to get the display back to work.

- Enable PS883X driver (Yes, CONFIG_TYPEC_MUX_PS883X is missing from
Debian config [1])

OR

- Revert commit 299038d82418 ("arm64: dts: qcom:
x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support")

My understanding is that a PS883X driver is required only for external
DP support.  Why would the driver missing impact/break the internal
panel support?  Do you guys have any insight on this?  Thanks!

Shawn

[1] https://salsa.debian.org/kernel-team/linux/-/merge_requests/1760

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support
  2025-12-25  3:29 ` Shawn Guo
@ 2025-12-25  8:33   ` Krzysztof Kozlowski
  2025-12-26 13:15     ` Shawn Guo
  0 siblings, 1 reply; 7+ messages in thread
From: Krzysztof Kozlowski @ 2025-12-25  8:33 UTC (permalink / raw)
  To: Shawn Guo, jens.glathe, Abel Vesa
  Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Rob Clark,
	Jos Dehaes

On 25/12/2025 04:29, Shawn Guo wrote:
> On Fri, Apr 18, 2025 at 12:35 AM Jens Glathe via B4 Relay
> <devnull+jens.glathe.oldschoolsolutions.biz@kernel.org> wrote:
>>
>> From: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
>>
>> comparing with CRD and other dts for a more complete support of the 7X
>> only retimers, gpios, regulators, dp outputs
>>
>> Tested-by: Rob Clark <robdclark@gmail.com>
>> Tested-by: Jos Dehaes <jos.dehaes@gmail.com>
>> Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
>> ---
>> This patch adds the required nodes to support DP Altmode on all three type-c
>> ports. The definition is derived from the CRD. Since they are all marked 40Gbps,
>> I assume there are 3 PS8830 retimers.
>> This modification is now for ~8 weeks in my tree with little to no complaints. I
>> don't have access to a Yoga Slim 7X, however many people on #aarch64-laptops do
>> and some are using this patch.
>> ---
>> Changes in v2:
>> - removed changes not relevant to retimers and dp altmode (thanks Johan)
>> - Link to v1: https://lore.kernel.org/r/20250417-slim7x-retimer-v1-1-5813a7835903@oldschoolsolutions.biz
>> ---
>>  .../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts  | 476 ++++++++++++++++++++-
>>  1 file changed, 470 insertions(+), 6 deletions(-)
> 
> Hi,
> 
> I'm running a Slim7x China variant (Yoga Air 14s) with Debian 13.
> While the Debian stock 6.12 kernel works fine to bring up the display
> (AMOLED eDP panel), newer kernels like 6.18 loses display during boot.
> I can do either of the following to get the display back to work.
> 
> - Enable PS883X driver (Yes, CONFIG_TYPEC_MUX_PS883X is missing from
> Debian config [1])

Obviously.

> 
> OR
> 
> - Revert commit 299038d82418 ("arm64: dts: qcom:
> x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support")
> 
> My understanding is that a PS883X driver is required only for external
> DP support.  Why would the driver missing impact/break the internal
> panel support?  Do you guys have any insight on this?  Thanks!
> 

You need all drivers to avoid probe deferrals.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support
  2025-12-25  8:33   ` Krzysztof Kozlowski
@ 2025-12-26 13:15     ` Shawn Guo
  2025-12-26 17:02       ` Dmitry Baryshkov
  0 siblings, 1 reply; 7+ messages in thread
From: Shawn Guo @ 2025-12-26 13:15 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: jens.glathe, Abel Vesa, Bjorn Andersson, Konrad Dybcio,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm,
	devicetree, linux-kernel, Rob Clark, Jos Dehaes

On Thu, Dec 25, 2025 at 09:33:59AM +0100, Krzysztof Kozlowski wrote:
> On 25/12/2025 04:29, Shawn Guo wrote:
> > On Fri, Apr 18, 2025 at 12:35 AM Jens Glathe via B4 Relay
> > <devnull+jens.glathe.oldschoolsolutions.biz@kernel.org> wrote:
> >>
> >> From: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
> >>
> >> comparing with CRD and other dts for a more complete support of the 7X
> >> only retimers, gpios, regulators, dp outputs
> >>
> >> Tested-by: Rob Clark <robdclark@gmail.com>
> >> Tested-by: Jos Dehaes <jos.dehaes@gmail.com>
> >> Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
> >> ---
> >> This patch adds the required nodes to support DP Altmode on all three type-c
> >> ports. The definition is derived from the CRD. Since they are all marked 40Gbps,
> >> I assume there are 3 PS8830 retimers.
> >> This modification is now for ~8 weeks in my tree with little to no complaints. I
> >> don't have access to a Yoga Slim 7X, however many people on #aarch64-laptops do
> >> and some are using this patch.
> >> ---
> >> Changes in v2:
> >> - removed changes not relevant to retimers and dp altmode (thanks Johan)
> >> - Link to v1: https://lore.kernel.org/r/20250417-slim7x-retimer-v1-1-5813a7835903@oldschoolsolutions.biz
> >> ---
> >>  .../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts  | 476 ++++++++++++++++++++-
> >>  1 file changed, 470 insertions(+), 6 deletions(-)
> > 
> > Hi,
> > 
> > I'm running a Slim7x China variant (Yoga Air 14s) with Debian 13.
> > While the Debian stock 6.12 kernel works fine to bring up the display
> > (AMOLED eDP panel), newer kernels like 6.18 loses display during boot.
> > I can do either of the following to get the display back to work.
> > 
> > - Enable PS883X driver (Yes, CONFIG_TYPEC_MUX_PS883X is missing from
> > Debian config [1])
> 
> Obviously.
> 
> > 
> > OR
> > 
> > - Revert commit 299038d82418 ("arm64: dts: qcom:
> > x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support")
> > 
> > My understanding is that a PS883X driver is required only for external
> > DP support.  Why would the driver missing impact/break the internal
> > panel support?  Do you guys have any insight on this?  Thanks!
> > 
> 
> You need all drivers to avoid probe deferrals.

Ah, yes!  The display subsystem/card is wired up with all 4 eDP/DP
ports.  A probe failure on any of the ports will cause the display
card fail out, even though the eDP port has all the dependencies in
place.

Shawn

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support
  2025-12-26 13:15     ` Shawn Guo
@ 2025-12-26 17:02       ` Dmitry Baryshkov
  0 siblings, 0 replies; 7+ messages in thread
From: Dmitry Baryshkov @ 2025-12-26 17:02 UTC (permalink / raw)
  To: Shawn Guo
  Cc: Krzysztof Kozlowski, jens.glathe, Abel Vesa, Bjorn Andersson,
	Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	linux-arm-msm, devicetree, linux-kernel, Rob Clark, Jos Dehaes

On Fri, Dec 26, 2025 at 09:15:23PM +0800, Shawn Guo wrote:
> On Thu, Dec 25, 2025 at 09:33:59AM +0100, Krzysztof Kozlowski wrote:
> > On 25/12/2025 04:29, Shawn Guo wrote:
> > > On Fri, Apr 18, 2025 at 12:35 AM Jens Glathe via B4 Relay
> > > <devnull+jens.glathe.oldschoolsolutions.biz@kernel.org> wrote:
> > >>
> > >> From: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
> > >>
> > >> comparing with CRD and other dts for a more complete support of the 7X
> > >> only retimers, gpios, regulators, dp outputs
> > >>
> > >> Tested-by: Rob Clark <robdclark@gmail.com>
> > >> Tested-by: Jos Dehaes <jos.dehaes@gmail.com>
> > >> Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
> > >> ---
> > >> This patch adds the required nodes to support DP Altmode on all three type-c
> > >> ports. The definition is derived from the CRD. Since they are all marked 40Gbps,
> > >> I assume there are 3 PS8830 retimers.
> > >> This modification is now for ~8 weeks in my tree with little to no complaints. I
> > >> don't have access to a Yoga Slim 7X, however many people on #aarch64-laptops do
> > >> and some are using this patch.
> > >> ---
> > >> Changes in v2:
> > >> - removed changes not relevant to retimers and dp altmode (thanks Johan)
> > >> - Link to v1: https://lore.kernel.org/r/20250417-slim7x-retimer-v1-1-5813a7835903@oldschoolsolutions.biz
> > >> ---
> > >>  .../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts  | 476 ++++++++++++++++++++-
> > >>  1 file changed, 470 insertions(+), 6 deletions(-)
> > > 
> > > Hi,
> > > 
> > > I'm running a Slim7x China variant (Yoga Air 14s) with Debian 13.
> > > While the Debian stock 6.12 kernel works fine to bring up the display
> > > (AMOLED eDP panel), newer kernels like 6.18 loses display during boot.
> > > I can do either of the following to get the display back to work.
> > > 
> > > - Enable PS883X driver (Yes, CONFIG_TYPEC_MUX_PS883X is missing from
> > > Debian config [1])
> > 
> > Obviously.
> > 
> > > 
> > > OR
> > > 
> > > - Revert commit 299038d82418 ("arm64: dts: qcom:
> > > x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support")
> > > 
> > > My understanding is that a PS883X driver is required only for external
> > > DP support.  Why would the driver missing impact/break the internal
> > > panel support?  Do you guys have any insight on this?  Thanks!
> > > 
> > 
> > You need all drivers to avoid probe deferrals.
> 
> Ah, yes!  The display subsystem/card is wired up with all 4 eDP/DP
> ports.  A probe failure on any of the ports will cause the display
> card fail out, even though the eDP port has all the dependencies in
> place.

Unfortunately, that's a requirement for now. It might change in future,
once Luca finishes his hotplug bridges rework, but for now we have to
have all drivers in place.

Please send a patch to Debian kernel build system (ping me if you need
any help or if you'd need to convince Ben that we need it).

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-12-26 17:03 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-17 16:35 [PATCH v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support Jens Glathe via B4 Relay
2025-04-25 19:45 ` Konrad Dybcio
2025-05-20  2:14 ` Bjorn Andersson
2025-12-25  3:29 ` Shawn Guo
2025-12-25  8:33   ` Krzysztof Kozlowski
2025-12-26 13:15     ` Shawn Guo
2025-12-26 17:02       ` Dmitry Baryshkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).