arm64: dts: qcom: sc8280xp-x13s: Enable external display
authorBjorn Andersson <quic_bjorande@quicinc.com>
Mon, 13 Feb 2023 21:56:18 +0000 (13:56 -0800)
committerBjorn Andersson <andersson@kernel.org>
Mon, 13 Feb 2023 22:14:38 +0000 (14:14 -0800)
Like on the CRD, add the necessary nodes to enable USB Type-C
altmode-based external display on the Lenovo ThinkPad X13s.

Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230213215619.1362566-4-quic_bjorande@quicinc.com
arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts

index 654b6b3..98e71b9 100644 (file)
                };
        };
 
+       pmic-glink {
+               compatible = "qcom,sc8280xp-pmic-glink", "qcom,pmic-glink";
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               connector@0 {
+                       compatible = "usb-c-connector";
+                       reg = <0>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_con0_hs: endpoint {
+                                               remote-endpoint = <&usb_0_role_switch>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_con0_ss: endpoint {
+                                               remote-endpoint = <&mdss0_dp0_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_con0_sbu: endpoint {
+                                               remote-endpoint = <&usb0_sbu_mux>;
+                                       };
+                               };
+                       };
+               };
+
+               connector@1 {
+                       compatible = "usb-c-connector";
+                       reg = <1>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_con1_hs: endpoint {
+                                               remote-endpoint = <&usb_1_role_switch>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_con1_ss: endpoint {
+                                               remote-endpoint = <&mdss0_dp1_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_con1_sbu: endpoint {
+                                               remote-endpoint = <&usb1_sbu_mux>;
+                                       };
+                               };
+                       };
+               };
+       };
+
        vreg_edp_3p3: regulator-edp-3p3 {
                compatible = "regulator-fixed";
 
                        };
                };
        };
+
+       usb0-sbu-mux {
+               compatible = "pericom,pi3usb102", "gpio-sbu-mux";
+
+               enable-gpios = <&tlmm 101 GPIO_ACTIVE_LOW>;
+               select-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb0_sbu_default>;
+
+               mode-switch;
+               orientation-switch;
+               svid = /bits/ 16 <0xff01>;
+
+               port {
+                       usb0_sbu_mux: endpoint {
+                               remote-endpoint = <&pmic_glink_con0_sbu>;
+                       };
+               };
+       };
+
+       usb1-sbu-mux {
+               compatible = "pericom,pi3usb102", "gpio-sbu-mux";
+
+               enable-gpios = <&tlmm 48 GPIO_ACTIVE_LOW>;
+               select-gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb1_sbu_default>;
+
+               mode-switch;
+               orientation-switch;
+               svid = /bits/ 16 <0xff01>;
+
+               port {
+                       usb1_sbu_mux: endpoint {
+                               remote-endpoint = <&pmic_glink_con1_sbu>;
+                       };
+               };
+       };
 };
 
 &apps_rsc {
        status = "okay";
 };
 
+&mdss0_dp0 {
+       status = "okay";
+};
+
+&mdss0_dp0_out {
+       data-lanes = <0 1>;
+       remote-endpoint = <&pmic_glink_con0_ss>;
+};
+
+&mdss0_dp1 {
+       status = "okay";
+};
+
+&mdss0_dp1_out {
+       data-lanes = <0 1>;
+       remote-endpoint = <&pmic_glink_con1_ss>;
+};
+
 &mdss0_dp3 {
        compatible = "qcom,sc8280xp-edp";
 
 };
 
 &usb_0_dwc3 {
-       /* TODO: Define USB-C connector properly */
        dr_mode = "host";
 };
 
        status = "okay";
 };
 
+&usb_0_role_switch {
+       remote-endpoint = <&pmic_glink_con0_hs>;
+};
+
 &usb_1 {
        status = "okay";
 };
 
 &usb_1_dwc3 {
-       /* TODO: Define USB-C connector properly */
        dr_mode = "host";
 };
 
        status = "okay";
 };
 
+&usb_1_role_switch {
+       remote-endpoint = <&pmic_glink_con1_hs>;
+};
+
 &vamacro {
        pinctrl-0 = <&dmic01_default>, <&dmic02_default>;
        pinctrl-names = "default";
                };
        };
 
+       usb0_sbu_default: usb0-sbu-state {
+               oe-n-pins {
+                       pins = "gpio101";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strengh = <16>;
+                       output-high;
+               };
+
+               sel-pins {
+                       pins = "gpio164";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <16>;
+               };
+       };
+
+       usb1_sbu_default: usb1-sbu-state {
+               oe-n-pins {
+                       pins = "gpio48";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strengh = <16>;
+                       output-high;
+               };
+
+               sel-pins {
+                       pins = "gpio47";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <16>;
+               };
+       };
+
        wcd_default: wcd-default-state {
                reset-pins {
                        pins = "gpio106";