diff mbox series

arm: dts: qcom: db410c: Enable USB OTG support

Message ID 1576083014-5842-1-git-send-email-loic.poulain@linaro.org
State Accepted
Commit 4868f573a754f992a06f30f5f860bb57e3739ffb
Headers show
Series arm: dts: qcom: db410c: Enable USB OTG support | expand

Commit Message

Loic Poulain Dec. 11, 2019, 4:50 p.m. UTC
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>

---
 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(-)

-- 
2.7.4

Comments

Bjorn Andersson Dec. 12, 2019, 6:49 a.m. UTC | #1
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@linaro.org>


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

>
diff mbox series

Patch

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>;
 	};