arm64: dts: qcom: sc8180x-flex5g: Wire up USB Type-C
authorBjorn Andersson <quic_bjorande@quicinc.com>
Mon, 12 Jun 2023 22:14:56 +0000 (15:14 -0700)
committerBjorn Andersson <andersson@kernel.org>
Sat, 22 Jul 2023 04:25:32 +0000 (21:25 -0700)
Following the SC8180X Primus reference design, add pmic_glink and USB
Type-C wiring for battery manager, external display and orientation
switching.

Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Link: https://lore.kernel.org/r/20230612221456.1887533-4-quic_bjorande@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/sc8180x-lenovo-flex-5g.dts

index fca08db..abc6661 100644 (file)
                };
        };
 
+       pmic-glink {
+               compatible = "qcom,sc8180x-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_prim_role_switch>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_con0_ss: endpoint {
+                                               remote-endpoint = <&usb_prim_qmpphy_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_con0_sbu: endpoint {
+                                               remote-endpoint = <&usbprim_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_sec_role_switch>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_con1_ss: endpoint {
+                                               remote-endpoint = <&usb_sec_qmpphy_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_con1_sbu: endpoint {
+                                               remote-endpoint = <&usbsec_sbu_mux>;
+                                       };
+                               };
+                       };
+               };
+       };
+
        reserved-memory {
                rmtfs_mem: rmtfs-region@85500000 {
                        compatible = "qcom,rmtfs-mem";
 
                vin-supply = <&vph_pwr>;
        };
+
+       usbprim-sbu-mux {
+               compatible = "pericom,pi3usb102", "gpio-sbu-mux";
+
+               enable-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
+               select-gpios = <&tlmm 100 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&usbprim_sbu_default>;
+
+               mode-switch;
+               orientation-switch;
+
+               port {
+                       usbprim_sbu_mux: endpoint {
+                               remote-endpoint = <&pmic_glink_con0_sbu>;
+                       };
+               };
+       };
+
+       usbsec-sbu-mux {
+               compatible = "pericom,pi3usb102", "gpio-sbu-mux";
+
+               enable-gpios = <&tlmm 188 GPIO_ACTIVE_LOW>;
+               select-gpios = <&tlmm 187 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&usbsec_sbu_default>;
+
+               mode-switch;
+               orientation-switch;
+
+               port {
+                       usbsec_sbu_mux: endpoint {
+                               remote-endpoint = <&pmic_glink_con1_sbu>;
+                       };
+               };
+       };
 };
 
 &apps_rsc {
        status = "okay";
 };
 
+&mdss_dp0 {
+       status = "okay";
+};
+
+&mdss_dp0_out {
+       data-lanes = <0 1>;
+       remote-endpoint = <&usb_prim_qmpphy_dp_in>;
+};
+
+&mdss_dp1 {
+       status = "okay";
+};
+
+&mdss_dp1_out {
+       data-lanes = <0 1>;
+       remote-endpoint = <&usb_sec_qmpphy_dp_in>;
+};
+
 &mdss_edp {
        data-lanes = <0 1 2 3>;
 
        vdda-phy-supply = <&vreg_l3c_1p2>;
        vdda-pll-supply = <&vreg_l5e_0p88>;
 
+       orientation-switch;
+
        status = "okay";
 };
 
        dr_mode = "host";
 };
 
+&usb_prim_qmpphy_dp_in {
+       remote-endpoint = <&mdss_dp0_out>;
+};
+
+&usb_prim_qmpphy_out {
+       remote-endpoint = <&pmic_glink_con0_ss>;
+};
+
+&usb_prim_role_switch {
+       remote-endpoint = <&pmic_glink_con0_hs>;
+};
+
 &usb_sec_hsphy {
        vdda-pll-supply = <&vreg_l5e_0p88>;
        vdda18-supply = <&vreg_l12a_1p8>;
        vdda-phy-supply = <&vreg_l3c_1p2>;
        vdda-pll-supply = <&vreg_l5e_0p88>;
 
+       orientation-switch;
+
        status = "okay";
 };
 
+&usb_sec_qmpphy_dp_in {
+       remote-endpoint = <&mdss_dp1_out>;
+};
+
+&usb_sec_qmpphy_out {
+       remote-endpoint = <&pmic_glink_con1_ss>;
+};
+
+&usb_sec_role_switch {
+       remote-endpoint = <&pmic_glink_con1_hs>;
+};
+
 &usb_sec {
        status = "okay";
 };
                };
        };
 
+       usbprim_sbu_default: usbprim-sbu-state {
+               oe-n-pins {
+                       pins = "gpio152";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <16>;
+                       output-high;
+               };
+
+               sel-pins {
+                       pins = "gpio100";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <16>;
+               };
+       };
+
+       usbsec_sbu_default: usbsec-sbu-state {
+               oe-n-pins {
+                       pins = "gpio188";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <16>;
+                       output-high;
+               };
+
+               sel-pins {
+                       pins = "gpio187";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <16>;
+               };
+       };
+
        uart13_state: uart13-state {
                cts-pins {
                        pins = "gpio43";