On Wed 11 Dec 08:50 PST 2019, Loic Poulain wrote: > 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@xxxxxxxxxx> Applied Thanks, Bjorn > --- > arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi | 19 +++++++++++++++++++ > arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 11 ++++++----- > 2 files changed, 25 insertions(+), 5 deletions(-) > > diff --git a/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi b/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi > index ec2f0de..aff218c 100644 > --- a/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi > +++ b/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi > @@ -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; > }; > }; > @@ -22,6 +31,16 @@ > }; > }; > > + 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"; > diff --git a/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi b/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi > index e12a36c..037e26b 100644 > --- a/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi > +++ b/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi > @@ -358,14 +358,15 @@ > }; > > 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>; > @@ -504,7 +505,7 @@ > > 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>; > }; > -- > 2.7.4 >