Re: [PATCH] ARM64: dts: meson-gxbb-odroidc2: enable USB Host Nodes

From: Neil Armstrong
Date: Thu Mar 09 2017 - 08:25:10 EST


On 03/08/2017 06:22 PM, Anand Moon wrote:
> Hi All,
>
> On 8 March 2017 at 02:06, Anand Moon <linux.amoon@xxxxxxxxx> wrote:
>> From: Anand Moon <linux.amoon@xxxxxxxxx>
>>
>> update the regulator supply nodes for usb host to
>> enable usb host on odroid-c2
>>
>> Signed-off-by: Anand Moon <linux.amoon@xxxxxxxxx>
>> ---
>> root@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(+)
>>
>> diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
>> index c59403a..304b676 100644
>> --- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
>> +++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
>> @@ -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 {
>> --
>> 2.7.4
>>
>
> Please ignore this patch, It not working.
> I will try to submit a new patch.
>
> 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