Skip to contentSkip to conversation

ARM64: dts: meson-gxbb-odroidc2: enable USB Host Nodes

PATCH In review Anand Moon 3 participants 6 messages Mar 7, 2017 – Mar 11, 2017

Subsystems (2)
lore
Share & tools
lore

Anand Moon

author
#0 lore raw

PATCH 1/1 ARM64: dts: meson-gxbb-odroidc2: enable USB Host Nodes

From: Anand Moon <[email protected]>

update the regulator supply nodes for usb host to
enable usb host on odroid-c2

---
root at odroid64:/usr/src/odroidxu3-4.y-devel# lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 1: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M |__ Port 4: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M

---
 arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 13 +++++++++++++
 1 file changed, 13 insertions(+)
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +13 -0
index c59403a..304b676 100644
@@ -64,6 +64,18 @@
 		reg = <0x0 0x0 0x0 0x80000000>;
 	};
 
+	usb_host_pwr: regulator-usb-pwrs {
+		compatible = "regulator-fixed";
+
+		regulator-name = "USB_HOST_PWR";
+
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+
+		gpio = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
 	usb_otg_pwr: regulator-usb-pwrs {
 		compatible = "regulator-fixed";
 
@@ -184,6 +196,7 @@
 
 &usb1_phy {
 	status = "okay";
+	phy-supply = <&usb_host_pwr>;
 };
 
 &usb0 {
Signature · 1 line
2.7.4
author
#1 lore raw

Hi All,

Quoted 50 lines · Anand Moon

From: Anand Moon <[email protected]>

update the regulator supply nodes for usb host to
enable usb host on odroid-c2

---
root at odroid64:/usr/src/odroidxu3-4.y-devel# lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 1: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M |__ Port 4: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M

---
 arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 13 +++++++++++++
 1 file changed, 13 insertions(+)
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +13 -1
index c59403a..304b676 100644
@@ -64,6 +64,18 @@
                reg = <0x0 0x0 0x0 0x80000000>;
        };
 
+       usb_host_pwr: regulator-usb-pwrs {
+               compatible = "regulator-fixed";
+
+               regulator-name = "USB_HOST_PWR";
+
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+
+               gpio = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        usb_otg_pwr: regulator-usb-pwrs {
                compatible = "regulator-fixed";
 
@@ -184,6 +196,7 @@
 
 &usb1_phy {
        status = "okay";
+       phy-supply = <&usb_host_pwr>;
 };
 
 &usb0 {
--
Quoted 2 lines

2.7.4

Please ignore this patch, It not working.
I will try to submit a new patch.

Best Regards
-Anand Moon

#2 lore raw
Quoted 59 lines · Anand Moon

Hi All,

Quoted 50 lines · Anand Moon

From: Anand Moon <[email protected]>

update the regulator supply nodes for usb host to
enable usb host on odroid-c2

---
root at odroid64:/usr/src/odroidxu3-4.y-devel# lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 1: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M |__ Port 4: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M

---
 arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 13 +++++++++++++
 1 file changed, 13 insertions(+)
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +13 -1
index c59403a..304b676 100644
@@ -64,6 +64,18 @@
                reg = <0x0 0x0 0x0 0x80000000>;
        };
 
+       usb_host_pwr: regulator-usb-pwrs {
+               compatible = "regulator-fixed";
+
+               regulator-name = "USB_HOST_PWR";
+
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+
+               gpio = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        usb_otg_pwr: regulator-usb-pwrs {
                compatible = "regulator-fixed";
 
@@ -184,6 +196,7 @@
 
 &usb1_phy {
        status = "okay";
+       phy-supply = <&usb_host_pwr>;
 };
 
 &usb0 {
--
Quoted 2 lines

2.7.4

Please ignore this patch, It not working.
I will try to submit a new patch.

Quoted 3 lines

Best Regards
-Anand Moon

Hi Anand,

For this specific use case, the only way to manage this is to use the Work-In-Progress Power Sequence Library proposer by Peter Chen at :
https://lkml.org/lkml/2016/11/13/315

Since this is the USB Hub reset link and has no direct link with either the USB controller or the USB PHY, and the USB Hus cannot be modeled (yet ?) in the DT.

One intermediate, but crappy, solution would be to add a GPIO hog until the power sequence code has been merged, with a proper big fat warning in the dts file.

You can find doc about the gpio-hog in :
Documentation/devicetree/bindings/gpio/gpio.txt

It should look like :

usb-hub {
	gpio-hog;
	gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>;
	output-high;
	line-name = "usb-hub-reset";
};

in the gpio_ao controller node.

Neil

author
#3 lore raw

Hi Neil,

Quoted 88 lines · Neil Armstrong
Quoted 59 lines · Anand Moon

Hi All,

Quoted 50 lines · Anand Moon

From: Anand Moon <[email protected]>

update the regulator supply nodes for usb host to
enable usb host on odroid-c2

---
root at odroid64:/usr/src/odroidxu3-4.y-devel# lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 1: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M |__ Port 4: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M

---
 arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 13 +++++++++++++
 1 file changed, 13 insertions(+)
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +13 -1
index c59403a..304b676 100644
@@ -64,6 +64,18 @@
                reg = <0x0 0x0 0x0 0x80000000>;
        };
 
+       usb_host_pwr: regulator-usb-pwrs {
+               compatible = "regulator-fixed";
+
+               regulator-name = "USB_HOST_PWR";
+
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+
+               gpio = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        usb_otg_pwr: regulator-usb-pwrs {
                compatible = "regulator-fixed";
 
@@ -184,6 +196,7 @@
 
 &usb1_phy {
        status = "okay";
+       phy-supply = <&usb_host_pwr>;
 };
 
 &usb0 {
--
Quoted 2 lines

2.7.4

Please ignore this patch, It not working.
I will try to submit a new patch.

Quoted 3 lines

Best Regards
-Anand Moon

Hi Anand,

For this specific use case, the only way to manage this is to use the Work-In-Progress Power Sequence Library proposer by Peter Chen at :
https://lkml.org/lkml/2016/11/13/315

Since this is the USB Hub reset link and has no direct link with either the USB controller or the USB PHY, and the USB Hus cannot be modeled (yet ?) in the DT.

One intermediate, but crappy, solution would be to add a GPIO hog until the power sequence code has been merged, with a proper big fat warning in the dts file.

You can find doc about the gpio-hog in :
Documentation/devicetree/bindings/gpio/gpio.txt

It should look like :

usb-hub {
        gpio-hog;
        gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>;
        output-high;
        line-name = "usb-hub-reset";
};
Quoted 3 lines

in the gpio_ao controller node.

Neil

Thanks for this input.

I will check this series of patches, and work on this new approach.

-Best Regards
Anand Moon

#4 lore raw

Hi Anand,

Quoted 24 lines · Anand Moon
Quoted 24 lines

Hi Anand,

For this specific use case, the only way to manage this is to use the Work-In-Progress Power Sequence Library proposer by Peter Chen at :
https://lkml.org/lkml/2016/11/13/315

Since this is the USB Hub reset link and has no direct link with either the USB controller or the USB PHY, and the USB Hus cannot be modeled (yet ?) in the DT.

One intermediate, but crappy, solution would be to add a GPIO hog until the power sequence code has been merged, with a proper big fat warning in the dts file.

You can find doc about the gpio-hog in :
Documentation/devicetree/bindings/gpio/gpio.txt

It should look like :

usb-hub {
        gpio-hog;
        gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>;
        output-high;
        line-name = "usb-hub-reset";
};
Quoted 7 lines
Quoted 3 lines

in the gpio_ao controller node.

Neil

Thanks for this input.

I will check this series of patches, and work on this new approach.

you might want to look at the following two patches as well: [0] and [1] I didn't test them as I don't have an Odroid-C2 but they should work with the series that Neil has mentioned. feel free to take my patches and fix them where needed

Regards,
Martin

[0] https://github.com/xdarklight/linux/commit/f0bc8f826b465fbf24279ce78654b65282790dc6
[1] https://github.com/xdarklight/linux/commit/7b5a69bf5bad992249aa39a96360fe90ccde9cd5

author
#5 lore raw

Hi Martin,

Quoted 40 lines · Martin Blumenstingl

Hi Anand,

Quoted 24 lines · Anand Moon
Quoted 24 lines

Hi Anand,

For this specific use case, the only way to manage this is to use the Work-In-Progress Power Sequence Library proposer by Peter Chen at :
https://lkml.org/lkml/2016/11/13/315

Since this is the USB Hub reset link and has no direct link with either the USB controller or the USB PHY, and the USB Hus cannot be modeled (yet ?) in the DT.

One intermediate, but crappy, solution would be to add a GPIO hog until the power sequence code has been merged, with a proper big fat warning in the dts file.

You can find doc about the gpio-hog in :
Documentation/devicetree/bindings/gpio/gpio.txt

It should look like :

usb-hub {
        gpio-hog;
        gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>;
        output-high;
        line-name = "usb-hub-reset";
};
Quoted 7 lines
Quoted 3 lines

in the gpio_ao controller node.

Neil

Thanks for this input.

I will check this series of patches, and work on this new approach.

you might want to look at the following two patches as well: [0] and [1] I didn't test them as I don't have an Odroid-C2 but they should work with the series that Neil has mentioned. feel free to take my patches and fix them where needed

Quoted 5 lines

Regards,
Martin

[0] https://github.com/xdarklight/linux/commit/f0bc8f826b465fbf24279ce78654b65282790dc6
[1] https://github.com/xdarklight/linux/commit/7b5a69bf5bad992249aa39a96360fe90ccde9cd5

As pointed by Neil

For this specific use case, the only way to manage this is to use the Work-In-Progress
Power Sequence Library proposer by Peter Chen at :
https://lkml.org/lkml/2017/1/5/33 (updated v11)

Using above series I was able to get the usb nodes to work correctly on Odroid C2.
Although the series of patches did not clean apply completely.

I manage to get this working with your above patches. I will submit the patches soon.

root at odroid64:~# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 0, Class=Human Interface Device,
Driver=usbhid, 1.5M
|__ Port 1: Dev 3, If 1, Class=Human Interface Device,
Driver=usbhid, 1.5M
|__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M |__ Port 4: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M root at odroid64:~#

Best Regards
-Anand Moon