Message ID | 1534859756-6955-6-git-send-email-loic.poulain@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | [1/6] usb: chipidea: Add dynamic pinctrl selection | expand |
On 21 August 2018 at 18:09, Rob Herring <robh+dt@kernel.org> wrote: > On Tue, Aug 21, 2018 at 8:56 AM Loic Poulain <loic.poulain@linaro.org> 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. >> >> Signed-off-by: Loic Poulain <loic.poulain@linaro.org> >> --- > >> @@ -512,7 +513,7 @@ >> >> usb_id: usb-id { >> compatible = "linux,extcon-usb-gpio"; >> - vbus-gpio = <&msmgpio 121 GPIO_ACTIVE_HIGH>; >> + id-gpio = <&msmgpio 121 GPIO_ACTIVE_HIGH>; > > The GPIO has magically changed from being connected to Vbus to ID? The > extcon binding is crap anyways... Although the pin is derived from VBUS, it is really used as an ID pin (USB_HS_ID on DB410C schematics [1]), so that DB410C switches to device role when a cable is inserted to the micro B port. > Ideally, it would be nice if this was moved to the usb connector binding. Good suggestion, If you agree, I'll address that in a different patchset. Regards, Loic [1] https://www.96boards.org/documentation/consumer/dragonboard/dragonboard410c/hardware-docs/
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..99787cc 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,16 @@ 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; + input-disable; output-low; }; }; @@ -22,6 +32,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 9ff8487..661a7fd 100644 --- a/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +++ b/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi @@ -371,9 +371,10 @@ 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>; @@ -512,7 +513,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>; };
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. Signed-off-by: Loic Poulain <loic.poulain@linaro.org> --- arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi | 20 ++++++++++++++++++++ arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 9 +++++---- 2 files changed, 25 insertions(+), 4 deletions(-) -- 2.7.4