dt-bindings: usb: Add the binding example for the Genesys Logic GL3523 hub
Subsystems (3)
PATCH v7 1/2 dt-bindings: usb: Add the binding example for the Genesys Logic GL3523 hub
Add the binding example for the USB3.1 Genesys Logic GL3523 integrates with USB 3.1 Gen 1 Super Speed and USB 2.0 High-Speed hub.
For onboard hub controllers that support USB 3.x and USB 2.0 hubs with shared resets and power supplies, this property is used to identify the hubs with which these are shared.
GL3523 has built-in 5V to 3.3V and 5V to 1.2V regulators, which serves power to the USB HUB, it uses 5V power regulator.
Update the peer-hub description.
---
Now with fresh install image and updated dtschema all the dt_binding_check pass
make DT_CHECKER_FLAGS=-m -j$(nproc) dt_binding_check
V7: dropped the reset-gpios: true:
Rob 'No need for this if schema. The default is they are allowed.'
[7] https://lore.kernel.org/lkml/[email protected]/T/
V6: fix the description of the regulators
Updated the commit message for regulator updates.
add reviewed by Conor Dooley
[1] https://lore.kernel.org/all/[email protected]/
v5: upgrade peer-hub description : Conor Dooley
[0] https://www.genesyslogic.com.tw/en/product_view.php?show=67 [Block Diagram]
v4: Fix the description of peer-hub and update the commit message. Schematics of the Odroid N2+
https://dn.odroid.com/S922X/ODROID-N2/Schematic/odroid-n2_rev0.6_20210121.pdf
V3: fix the dt_binding_check error, added new example for Genesys GL3523
v2: added Genesys GL3523 binding
v1: none
--- .../bindings/usb/genesys,gl850g.yaml | 60 +++++++++++++++++-- 1 file changed, 55 insertions(+), 5 deletions(-)
Documentation/devicetree/bindings/usb/genesys,gl850g.yaml +55 -5
@@ -9,9 +9,6 @@ title: Genesys Logic USB hub controller maintainers: - Icenowy Zheng <[email protected]> -allOf: - - $ref: usb-device.yaml# - properties: compatible: enum:
@@ -27,17 +24,44 @@ properties: vdd-supply: description: - the regulator that provides 3.3V core power to the hub. + The regulator that provides 3.3V or 5.0V core power to the hub. peer-hub: $ref: /schemas/types.yaml#/definitions/phandle description: - phandle to the peer hub on the controller. + For onboard hub controllers that support USB 3.x and USB 2.0 hubs + with shared resets and power supplies, this property is used to identify + the hubs with which these are shared. required: - compatible - reg +allOf: + - $ref: usb-device.yaml# + - if: + properties: + compatible: + contains: + enum: + - usb5e3,608 + then: + properties: + peer-hub: false + vdd-supply: false + + - if: + properties: + compatible: + contains: + enum: + - usb5e3,610 + - usb5e3,620 + then: + properties: + peer-hub: true + vdd-supply: true + additionalProperties: false examples:
@@ -54,3 +78,29 @@ examples: reset-gpios = <&pio 7 2 GPIO_ACTIVE_LOW>; }; }; + + - | + #include <dt-bindings/gpio/gpio.h> + usb { + dr_mode = "host"; + #address-cells = <1>; + #size-cells = <0>; + + /* 2.0 hub on port 1 */ + hub_2_0: hub@1 { + compatible = "usb5e3,610"; + reg = <1>; + peer-hub = <&hub_3_0>; + reset-gpios = <&gpio 20 GPIO_ACTIVE_LOW>; + vdd-supply = <&vcc_5v>; + }; + + /* 3.1 hub on port 4 */ + hub_3_0: hub@2 { + compatible = "usb5e3,620"; + reg = <2>; + peer-hub = <&hub_2_0>; + reset-gpios = <&gpio 20 GPIO_ACTIVE_LOW>; + vdd-supply = <&vcc_5v>; + }; + };
Signature · 1 line
2.44.0
PATCH v7 2/2 arm64: dts: amlogic: Used onboard usb hub reset on odroid n2
On Odroid n2/n2+ previously use gpio-hog to reset the usb hub, switch to used on-board usb hub reset to enable the usb hub and enable power to hub.
---
v7:none
V6:none
V5:none
V4:none
V3:none
V2:none
V1:none
--- .../dts/amlogic/meson-g12b-odroid-n2.dtsi | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-)
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +24 -12
@@ -31,6 +31,30 @@ hub_5v: regulator-hub-5v { enable-active-high; }; + /* USB hub supports both USB 2.0 and USB 3.0 root hub */ + usb-hub { + dr_mode = "host"; + #address-cells = <1>; + #size-cells = <0>; + + /* 2.0 hub on port 1 */ + hub_2_0: hub@1 { + compatible = "usb5e3,610"; + reg = <1>; + peer-hub = <&hub_3_0>; + vdd-supply = <&usb_pwr_en>; + }; + + /* 3.0 hub on port 4 */ + hub_3_0: hub@2 { + compatible = "usb5e3,620"; + reg = <2>; + peer-hub = <&hub_2_0>; + reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>; + vdd-supply = <&vcc_5v>; + }; + }; + sound { compatible = "amlogic,axg-sound-card"; model = "ODROID-N2";
@@ -234,18 +258,6 @@ &gpio { "PIN_3", /* GPIOX_17 */ "PIN_5", /* GPIOX_18 */ "PIN_36"; /* GPIOX_19 */ - /* - * WARNING: The USB Hub on the Odroid-N2 needs a reset signal - * to be turned high in order to be detected by the USB Controller - * This signal should be handled by a USB specific power sequence - * in order to reset the Hub when USB bus is powered down. - */ - usb-hub-hog { - gpio-hog; - gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>; - output-high; - line-name = "usb-hub-reset"; - }; }; &i2c3 {
Signature · 1 line
2.44.0
Neil Armstrong
maintainerRe: [PATCH v7 2/2] arm64: dts: amlogic: Used onboard usb hub reset on odroid n2
Hi,
Quoted 38 lines · Anand Moon
On Odroid n2/n2+ previously use gpio-hog to reset the usb hub, switch to used on-board usb hub reset to enable the usb hub and enable power to hub.
Signed-off-by Anand Moon <[email protected]>---
v7:none
V6:none
V5:none
V4:none
V3:none
V2:none
V1:none--- .../dts/amlogic/meson-g12b-odroid-n2.dtsi | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-)arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +13
-0@@ -31,6 +31,30 @@ hub_5v: regulator-hub-5v { enable-active-high; }; + /* USB hub supports both USB 2.0 and USB 3.0 root hub */ + usb-hub { + dr_mode = "host"; + #address-cells = <1>; + #size-cells = <0>; + + /* 2.0 hub on port 1 */ + hub_2_0: hub@1 { + compatible = "usb5e3,610"; + reg = <1>; + peer-hub = <&hub_3_0>; + vdd-supply = <&usb_pwr_en>; + };
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi hub_5v: regulator-hub-5v { · line 56
Quoted 10 lines
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +10
-0+ + /* 3.0 hub on port 4 */ + hub_3_0: hub@2 { + compatible = "usb5e3,620"; + reg = <2>; + peer-hub = <&hub_2_0>; + reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>; + vdd-supply = <&vcc_5v>; + }; + };
Why is this nodes under / and not the dwc3 node ????
With this current DT, there's no way for the usb controller to find those usb devices subnodes in /usb-hub, and it's clearly not described like this in the bindings.
Neil
Quoted 23 lines
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +1
-12+ sound { compatible = "amlogic,axg-sound-card"; model = "ODROID-N2";@@ -234,18 +258,6 @@ &gpio { "PIN_3", /* GPIOX_17 */ "PIN_5", /* GPIOX_18 */ "PIN_36"; /* GPIOX_19 */ - /* - * WARNING: The USB Hub on the Odroid-N2 needs a reset signal - * to be turned high in order to be detected by the USB Controller - * This signal should be handled by a USB specific power sequence - * in order to reset the Hub when USB bus is powered down. - */ - usb-hub-hog { - gpio-hog; - gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>; - output-high; - line-name = "usb-hub-reset"; - }; }; &i2c3 {
Re: [PATCH v7 2/2] arm64: dts: amlogic: Used onboard usb hub reset on odroid n2
Hi Neil,
Quoted 46 lines · Neil Armstrong
Hi,
Quoted 42 lines · Anand Moon
On Odroid n2/n2+ previously use gpio-hog to reset the usb hub, switch to used on-board usb hub reset to enable the usb hub and enable power to hub.
Signed-off-by Anand Moon <[email protected]>---
v7:none
V6:none
V5:none
V4:none
V3:none
V2:none
V1:none--- .../dts/amlogic/meson-g12b-odroid-n2.dtsi | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-)arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +17
-0@@ -31,6 +31,30 @@ hub_5v: regulator-hub-5v { enable-active-high; }; + /* USB hub supports both USB 2.0 and USB 3.0 root hub */ + usb-hub { + dr_mode = "host"; + #address-cells = <1>; + #size-cells = <0>; + + /* 2.0 hub on port 1 */ + hub_2_0: hub@1 { + compatible = "usb5e3,610"; + reg = <1>; + peer-hub = <&hub_3_0>; + vdd-supply = <&usb_pwr_en>; + }; + + /* 3.0 hub on port 4 */ + hub_3_0: hub@2 { + compatible = "usb5e3,620";
Quoted 8 lines
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi hub_5v: regulator-hub-5v { · line 56
Quoted 6 lines
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +6
-0+ reg = <2>; + peer-hub = <&hub_2_0>; + reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>; + vdd-supply = <&vcc_5v>; + }; + };Why is this nodes under / and not the dwc3 node ????
it's similar to usb-hub-hog, mostly usb-hub is just used to reset the USB hub controller
and set the power source of the USB hub.
Quoted 4 lines
With this current DT, there's no way for the usb controller to find those usb devices subnodes in /usb-hub, and it's clearly not described like this in the bindings.
USB hub is independent of the dwc2 and dwc3 initialization (phy, usb).
With this patch applied on my odroid-n2plus ,
I could see usb-hub entry in the /proc/device-tree nodes.
alarm@odroid-n2plus:~$ tree /proc/device-tree/usb-hub/ /proc/device-tree/usb-hub/ ├── #address-cells ├── dr_mode ├── hub@1 │ ├── compatible │ ├── name │ ├── peer-hub │ ├── phandle │ ├── reg │ └── vdd-supply ├── hub@2 │ ├── compatible │ ├── name │ ├── peer-hub │ ├── phandle │ ├── reg │ ├── reset-gpios │ └── vdd-supply ├── name └── #size-cells
3 directories, 17 files
alarm@odroid-n2plus:~$
alarm@odroid-n2plus:~$ lsusb -tv
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/2p, 480M
ID 1d6b:0002 Linux Foundation 2.0 root hub
|__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
ID 05e3:0610 Genesys Logic, Inc. Hub
|__ Port 003: Dev 003, If 0, Class=Mass Storage,
Driver=usb-storage, 480M
ID 058f:6387 Alcor Micro Corp. Flash Drive
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M
ID 1d6b:0003 Linux Foundation 3.0 root hub
|__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/4p, 5000M
ID 05e3:0620 Genesys Logic, Inc. GL3523 Hub
|__ Port 004: Dev 003, If 0, Class=Mass Storage,
Driver=usb-storage, 5000M
ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA 6Gb/s
bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge,
ASM1153E SATA 6Gb/s bridgeQuoted 3 lines
Neil
Thanks
-Anand