.../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts | 491 ++++++++++++++++++++- 1 file changed, 485 insertions(+), 6 deletions(-)
From: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
comparing with CRD and other dts for a more complete support of the 7X
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.
---
.../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts | 491 ++++++++++++++++++++-
1 file changed, 485 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..129ab64c0f915e8f361a9300c2919cf69bbfda29 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
@@ -7,6 +7,8 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include "x1e80100.dtsi"
@@ -72,7 +74,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 +111,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 +148,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 +252,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 +737,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 +956,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 +1070,50 @@ &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_8_gpios {
+ misc_3p3_reg_en: misc-3p3-reg-en-state {
+ pins = "gpio6";
+ function = "normal";
+ bias-disable;
+ input-disable;
+ output-enable;
+ drive-push-pull;
+ power-source = <1>; /* 1.8 V */
+ qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+ };
+};
+
+&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 +1124,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 +1343,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 +1378,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 +1455,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 +1487,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 +1519,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>
On Thu, Apr 17, 2025 at 4:39 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
>
> Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
The two left ports work for me. The right port does not, although
sometimes it at least manages to detect the display and read EDID.
Others on #aarch64-laptops have seen the right side port work. Same
behavior with both an 27" HP (2560x1440, dp) and 27" lenovo
(2560x1440, usb-c) displays.
So, at least the two left ports are:
Tested-by: Rob Clark <robdclark@gmail.com>
> ---
> 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.
> ---
> .../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts | 491 ++++++++++++++++++++-
> 1 file changed, 485 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..129ab64c0f915e8f361a9300c2919cf69bbfda29 100644
> --- a/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
> +++ b/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
> @@ -7,6 +7,8 @@
>
> #include <dt-bindings/gpio/gpio.h>
> #include <dt-bindings/input/gpio-keys.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
> #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
>
> #include "x1e80100.dtsi"
> @@ -72,7 +74,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 +111,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 +148,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 +252,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 +737,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 +956,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 +1070,50 @@ &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_8_gpios {
> + misc_3p3_reg_en: misc-3p3-reg-en-state {
> + pins = "gpio6";
> + function = "normal";
> + bias-disable;
> + input-disable;
> + output-enable;
> + drive-push-pull;
> + power-source = <1>; /* 1.8 V */
> + qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
> + };
> +};
> +
> +&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 +1124,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 +1343,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 +1378,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 +1455,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 +1487,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 +1519,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>
>
>
>
On Thu, Apr 17, 2025 at 9:29 AM Rob Clark <robdclark@gmail.com> wrote:
>
> On Thu, Apr 17, 2025 at 4:39 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
> >
> > Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
>
> The two left ports work for me. The right port does not, although
> sometimes it at least manages to detect the display and read EDID.
> Others on #aarch64-laptops have seen the right side port work. Same
> behavior with both an 27" HP (2560x1440, dp) and 27" lenovo
> (2560x1440, usb-c) displays.
>
> So, at least the two left ports are:
>
> Tested-by: Rob Clark <robdclark@gmail.com>
To follow-up, with the addition of
https://lore.kernel.org/all/20250417021349.148911-1-alex.vinarskis@gmail.com/#r
all three usb-c ports are working (in either orientation)
BR,
-R
> > ---
> > 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.
> > ---
> > .../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts | 491 ++++++++++++++++++++-
> > 1 file changed, 485 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..129ab64c0f915e8f361a9300c2919cf69bbfda29 100644
> > --- a/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
> > +++ b/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
> > @@ -7,6 +7,8 @@
> >
> > #include <dt-bindings/gpio/gpio.h>
> > #include <dt-bindings/input/gpio-keys.h>
> > +#include <dt-bindings/input/input.h>
> > +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
> > #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
> >
> > #include "x1e80100.dtsi"
> > @@ -72,7 +74,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 +111,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 +148,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 +252,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 +737,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 +956,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 +1070,50 @@ &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_8_gpios {
> > + misc_3p3_reg_en: misc-3p3-reg-en-state {
> > + pins = "gpio6";
> > + function = "normal";
> > + bias-disable;
> > + input-disable;
> > + output-enable;
> > + drive-push-pull;
> > + power-source = <1>; /* 1.8 V */
> > + qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
> > + };
> > +};
> > +
> > +&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 +1124,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 +1343,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 +1378,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 +1455,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 +1487,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 +1519,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>
> >
> >
> >
On Thu, Apr 17, 2025 at 01:38:39PM +0200, 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
>
> Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
> #include <dt-bindings/gpio/gpio.h>
> #include <dt-bindings/input/gpio-keys.h>
> +#include <dt-bindings/input/input.h>
Unrelated change.
> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
Not needed with another unrelated change further down dropped.
> #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
>
> #include "x1e80100.dtsi"
> +&pm8550ve_8_gpios {
> + misc_3p3_reg_en: misc-3p3-reg-en-state {
> + pins = "gpio6";
> + function = "normal";
> + bias-disable;
> + input-disable;
> + output-enable;
> + drive-push-pull;
> + power-source = <1>; /* 1.8 V */
> + qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
> + };
> +};
Unrelated change.
Johan
> From: Jens Glathe <jens.glathe@oldschoolsolutions.biz> > > comparing with CRD and other dts for a more complete support of the 7X > > 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. > --- Tested-by: Jos Dehaes <jos.dehaes@gmail.com> Tested on yoga slim 7x with a USB C cable to Iiyama screen@1440p. Was able to extend the screen on GNOME desktop.
© 2016 - 2025 Red Hat, Inc.