arm: dts: qcom: db410c: Enable USB OTG support
authorLoic Poulain <loic.poulain@linaro.org>
Wed, 11 Dec 2019 16:50:14 +0000 (17:50 +0100)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Thu, 12 Dec 2019 06:48:37 +0000 (22:48 -0800)
The Dragonboard-410c is able to act either as USB Host or Device.
The role can be determined at runtime via the USB_HS_ID pin which is
derived from the micro-usb port VBUS pin.

In Host role, SoC USB D+/D- are routed to the onboard USB 2.0 HUB.
In Device role, SoC USB D+/D- are routed to the USB 2.0 micro B port.
Routing is selected via USB_SW_SEL_PM gpio.

In device role USB HUB can be held in reset.

chipidea driver expects two extcon device pointers, one for the
EXTCON_USB event and one for the EXTCON_USB_HOST event. Since
the extcon-usb-gpio device is capable of generating both these
events, point two times to this extcon device.

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Link: https://lore.kernel.org/r/1576083014-5842-1-git-send-email-loic.poulain@linaro.org
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi

index ec2f0de..aff218c 100644 (file)
@@ -8,6 +8,15 @@
                pinconf {
                        pins = "gpio3";
                        function = PMIC_GPIO_FUNC_NORMAL;
+                       input-disable;
+                       output-high;
+               };
+       };
+
+       usb_hub_reset_pm_device: usb_hub_reset_pm_device {
+               pinconf {
+                       pins = "gpio3";
+                       function = PMIC_GPIO_FUNC_NORMAL;
                        output-low;
                };
        };
                };
        };
 
+       usb_sw_sel_pm_device: usb_sw_sel_pm_device {
+               pinconf {
+                       pins = "gpio4";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       power-source = <PM8916_GPIO_VPH>;
+                       input-disable;
+                       output-low;
+               };
+       };
+
        pm8916_gpios_leds: pm8916_gpios_leds {
                pinconf {
                        pins = "gpio1", "gpio2";
index e12a36c..037e26b 100644 (file)
                };
 
                usb@78d9000 {
-                       extcon = <&usb_id>;
+                       extcon = <&usb_id>, <&usb_id>;
                        status = "okay";
                        adp-disable;
                        hnp-disable;
                        srp-disable;
-                       dr_mode = "host";
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&usb_sw_sel_pm>;
+                       dr_mode = "otg";
+                       pinctrl-names = "default", "device";
+                       pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>;
+                       pinctrl-1 = <&usb_sw_sel_pm_device &usb_hub_reset_pm_device>;
                        ulpi {
                                phy {
                                        v1p8-supply = <&pm8916_l7>;
 
        usb_id: usb-id {
                compatible = "linux,extcon-usb-gpio";
-               vbus-gpio = <&msmgpio 121 GPIO_ACTIVE_HIGH>;
+               id-gpio = <&msmgpio 121 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "default";
                pinctrl-0 = <&usb_id_default>;
        };