lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAF6AEGufHavA7523MfgNmquzso0Em+eNJn7LC9QHWDTb5zZ1Vw@mail.gmail.com>
Date: Thu, 17 Apr 2025 09:29:02 -0700
From: Rob Clark <robdclark@...il.com>
To: jens.glathe@...schoolsolutions.biz
Cc: Bjorn Andersson <andersson@...nel.org>, Konrad Dybcio <konradybcio@...nel.org>, 
	Rob Herring <robh@...nel.org>, Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>, 
	linux-arm-msm@...r.kernel.org, devicetree@...r.kernel.org, 
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add
 retimers, dp altmode support

On Thu, Apr 17, 2025 at 4:39 AM Jens Glathe via B4 Relay
<devnull+jens.glathe.oldschoolsolutions.biz@...nel.org> wrote:
>
> From: Jens Glathe <jens.glathe@...schoolsolutions.biz>
>
> comparing with CRD and other dts for a more complete support of the 7X
>
> Signed-off-by: Jens Glathe <jens.glathe@...schoolsolutions.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@...il.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@...schoolsolutions.biz>
>
>
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ