xref: /src/sys/contrib/device-tree/Bindings/usb/genesys,gl850g.yaml (revision f25b8c9fb4f58cf61adb47d7570abe7caa6d385d)
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/usb/genesys,gl850g.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Genesys Logic USB hub controller
8
9maintainers:
10  - Icenowy Zheng <uwu@icenowy.me>
11
12properties:
13  compatible:
14    enum:
15      - usb5e3,608
16      - usb5e3,610
17      - usb5e3,620
18      - usb5e3,626
19
20  reg: true
21
22  reset-gpios:
23    description: GPIO controlling the RESET# pin.
24
25  vdd-supply:
26    description:
27      The regulator that provides 3.3V or 5.0V core power to the hub.
28
29  peer-hub: true
30
31  ports:
32    $ref: /schemas/graph.yaml#/properties/ports
33
34    patternProperties:
35      '^port@':
36        $ref: /schemas/graph.yaml#/properties/port
37
38        properties:
39          reg:
40            minimum: 1
41            maximum: 4
42
43required:
44  - compatible
45  - reg
46
47allOf:
48  - $ref: usb-hub.yaml#
49  - if:
50      properties:
51        compatible:
52          contains:
53            enum:
54              - usb5e3,608
55    then:
56      properties:
57        peer-hub: false
58        vdd-supply: false
59
60  - if:
61      properties:
62        compatible:
63          contains:
64            enum:
65              - usb5e3,610
66              - usb5e3,620
67    then:
68      properties:
69        peer-hub: true
70        vdd-supply: true
71
72unevaluatedProperties: false
73
74examples:
75  - |
76    #include <dt-bindings/gpio/gpio.h>
77    usb {
78        dr_mode = "host";
79        #address-cells = <1>;
80        #size-cells = <0>;
81
82        hub: hub@1 {
83            compatible = "usb5e3,608";
84            reg = <1>;
85            reset-gpios = <&pio 7 2 GPIO_ACTIVE_LOW>;
86        };
87    };
88
89  - |
90    #include <dt-bindings/gpio/gpio.h>
91    usb {
92        dr_mode = "host";
93        #address-cells = <1>;
94        #size-cells = <0>;
95
96        /* 2.0 hub on port 1 */
97        hub_2_0: hub@1 {
98            compatible = "usb5e3,610";
99            reg = <1>;
100            peer-hub = <&hub_3_0>;
101            reset-gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
102            vdd-supply = <&vcc_5v>;
103        };
104
105        /* 3.1 hub on port 4 */
106        hub_3_0: hub@2 {
107            compatible = "usb5e3,620";
108            reg = <2>;
109            peer-hub = <&hub_2_0>;
110            reset-gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
111            vdd-supply = <&vcc_5v>;
112        };
113    };
114