Message ID | 20250417-slim7x-retimer-v1-1-5813a7835903@oldschoolsolutions.biz |
---|---|
State | New |
Headers | show |
Series | arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support | expand |
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> > > > > > >
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>; };