On Thu, Jun 02, 2016 at 09:26:57AM +0200, Krzysztof Kozlowski wrote: > On 06/01/2016 01:59 PM, Peter Chen wrote: > > On Wed, Jun 01, 2016 at 10:02:21AM +0200, Krzysztof Kozlowski wrote: > >> On Odroid U3 (Exynos4412-based) board if USB was initialized by > >> bootloader (in U-Boot "usb start" before tftpboot), the HUB (usb3503) > >> and LAN (smsc95xx) after after successful probing were not visible in the > >> system ("lsusb"). > >> > >> In such case the devices had to be fully reset before configuring. > >> Reset by GPIO (called RESET_N pin) and by RESET field in STCD register > >> in usb3503 HUB are not sufficient. Instead full reset has to be done by > >> disabling and enabling regulator. > >> > >> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@xxxxxxxxxxx> > >> --- > >> arch/arm/boot/dts/exynos4412-odroidu3.dts | 4 ++++ > >> 1 file changed, 4 insertions(+) > >> > >> diff --git a/arch/arm/boot/dts/exynos4412-odroidu3.dts b/arch/arm/boot/dts/exynos4412-odroidu3.dts > >> index 31cdc036fda4..23e30e4609df 100644 > >> --- a/arch/arm/boot/dts/exynos4412-odroidu3.dts > >> +++ b/arch/arm/boot/dts/exynos4412-odroidu3.dts > >> @@ -99,11 +99,15 @@ > >> clock-names = "refclk"; > >> clocks = <&pmu_system_controller 0>; > >> refclk-frequency = <24000000>; > >> + > >> + power-sequence; > >> + ext-supply = <&buck8_reg>; > >> }; > >> > >> &ehci { > >> port@1 { > >> status = "okay"; > >> + usb-pwrseq = <&usb3503>; > >> }; > >> port@2 { > >> status = "okay"; > >> -- > >> 1.9.1 > >> > > > > The hub is under the port1, you may need to describe it > > under the port@1, see below: > > Documentation/devicetree/bindings/usb/usb-device.txt > > My configuration is a little bit different than yours. > > In my case I have a USB hub (usb3503) which is also a a i2c device > because it has to be configured through I2C. > > I can add the power-sequence properties to the I2C node or as you > pointed under port using the vendor-product-id compatible. In the first > option: not many USB changes are needed. It works for me, at least as a > proof of concept. > > The second solution: currently it does not work because the USB device > does not get enumerated before the power sequence begins. It would be > great if you could implement this on USB side. Well, not matter which solution, the USB device can't be enumerated without power sequence. For the #2 solution, it just handles all gpios under dts before the enumeration at USB code. > > > > > If I get Rob's comments correctly, you may need to consider > > below MMC and USB device tree description together, it seems > > hard for USB to use pwrseq driver, sorry for confusing you. > > > > If rob can accept below USB device description, we have to > > do it under USB. In future, if there is some suitable framework, > > we can move it. > > > > 1. MMC device: > > usdhc3_pwrseq: usdhc3_pwrseq { > > compatible = "mmc-pwrseq-simple"; > > reset-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>, /* WL_REG_ON */ > > <&gpio4 7 GPIO_ACTIVE_LOW>, /* WL_HOSTWAKE */ > > <&gpio3 25 GPIO_ACTIVE_LOW>, /* BT_REG_ON */ > > <&gpio3 27 GPIO_ACTIVE_LOW>, /* BT_HOSTWAKE */ > > <&gpio4 4 GPIO_ACTIVE_LOW>, /* BT_WAKE */ > > <&gpio4 6 GPIO_ACTIVE_LOW>; /* BT_RST_N */ > > }; > > > > &usdhc3 { > > pinctrl-names = "default", "state_100mhz", "state_200mhz"; > > pinctrl-0 = <&pinctrl_usdhc3>; > > pinctrl-1 = <&pinctrl_usdhc3_100mhz>; > > pinctrl-2 = <&pinctrl_usdhc3_200mhz>; > > bus-width = <4>; > > non-removable; > > keep-power-in-suspend; > > wakeup-source; > > mmc-pwrseq = <&usdhc3_pwrseq>; > > status = "okay"; > > }; > > > > 2. USB device > > > > &usbotg1 { > > vbus-supply = <®_usb_otg1_vbus>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_usb_otg1_id>; > > status = "okay"; > > > > #address-cells = <1>; > > #size-cells = <0>; > > hub: genesys@1 { > > compatible = "usb5e3,608"; > > reg = <1>; > > reset-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>; /* hub reset pin */ > > reset-duration-us = <10>; > > clocks = <&clks IMX6SX_CLK_CKO>; > > }; > > Yes, that looks like what Rob wanted... Do you plan to work on it? The > power sequence is needed before device is enumerated. > Ok, I will work on it. -- Best Regards, Peter Chen -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html