xref: /linux/Documentation/devicetree/bindings/gpio/aspeed,ast2400-gpio.yaml (revision c771600c6af14749609b49565ffb4cac2959710d)
1177f954fSAndrew Jeffery# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2177f954fSAndrew Jeffery%YAML 1.2
3177f954fSAndrew Jeffery---
4177f954fSAndrew Jeffery$id: http://devicetree.org/schemas/gpio/aspeed,ast2400-gpio.yaml#
5177f954fSAndrew Jeffery$schema: http://devicetree.org/meta-schemas/core.yaml#
6177f954fSAndrew Jeffery
7177f954fSAndrew Jefferytitle: Aspeed GPIO controller
8177f954fSAndrew Jeffery
9177f954fSAndrew Jefferymaintainers:
10177f954fSAndrew Jeffery  - Andrew Jeffery <andrew@codeconstruct.com.au>
11177f954fSAndrew Jeffery
12177f954fSAndrew Jefferyproperties:
13177f954fSAndrew Jeffery  compatible:
14177f954fSAndrew Jeffery    enum:
15177f954fSAndrew Jeffery      - aspeed,ast2400-gpio
16177f954fSAndrew Jeffery      - aspeed,ast2500-gpio
17177f954fSAndrew Jeffery      - aspeed,ast2600-gpio
18*bef6959aSBilly Tsai      - aspeed,ast2700-gpio
19177f954fSAndrew Jeffery
20177f954fSAndrew Jeffery  reg:
21177f954fSAndrew Jeffery    maxItems: 1
22177f954fSAndrew Jeffery
23177f954fSAndrew Jeffery  clocks:
24177f954fSAndrew Jeffery    maxItems: 1
25177f954fSAndrew Jeffery    description: The clock to use for debounce timings
26177f954fSAndrew Jeffery
27177f954fSAndrew Jeffery  gpio-controller: true
28177f954fSAndrew Jeffery  gpio-line-names:
29*bef6959aSBilly Tsai    minItems: 12
30177f954fSAndrew Jeffery    maxItems: 232
31177f954fSAndrew Jeffery
32177f954fSAndrew Jeffery  gpio-ranges: true
33177f954fSAndrew Jeffery
34177f954fSAndrew Jeffery  "#gpio-cells":
35177f954fSAndrew Jeffery    const: 2
36177f954fSAndrew Jeffery
37177f954fSAndrew Jeffery  interrupts:
38177f954fSAndrew Jeffery    maxItems: 1
39177f954fSAndrew Jeffery
40177f954fSAndrew Jeffery  interrupt-controller: true
41177f954fSAndrew Jeffery
42177f954fSAndrew Jeffery  "#interrupt-cells":
43177f954fSAndrew Jeffery    const: 2
44177f954fSAndrew Jeffery
45177f954fSAndrew Jeffery  ngpios:
46*bef6959aSBilly Tsai    minimum: 12
47177f954fSAndrew Jeffery    maximum: 232
48177f954fSAndrew Jeffery
49177f954fSAndrew Jefferyrequired:
50177f954fSAndrew Jeffery  - compatible
51177f954fSAndrew Jeffery  - reg
52177f954fSAndrew Jeffery  - interrupts
53177f954fSAndrew Jeffery  - interrupt-controller
54177f954fSAndrew Jeffery  - "#interrupt-cells"
55177f954fSAndrew Jeffery  - gpio-controller
56177f954fSAndrew Jeffery  - "#gpio-cells"
57177f954fSAndrew Jeffery
58177f954fSAndrew JefferyallOf:
59177f954fSAndrew Jeffery  - if:
60177f954fSAndrew Jeffery      properties:
61177f954fSAndrew Jeffery        compatible:
62177f954fSAndrew Jeffery          contains:
63177f954fSAndrew Jeffery            const: aspeed,ast2400-gpio
64177f954fSAndrew Jeffery    then:
65177f954fSAndrew Jeffery      properties:
66177f954fSAndrew Jeffery        gpio-line-names:
67177f954fSAndrew Jeffery          minItems: 220
68177f954fSAndrew Jeffery          maxItems: 220
69177f954fSAndrew Jeffery        ngpios:
70177f954fSAndrew Jeffery          const: 220
71177f954fSAndrew Jeffery  - if:
72177f954fSAndrew Jeffery      properties:
73177f954fSAndrew Jeffery        compatible:
74177f954fSAndrew Jeffery          contains:
75177f954fSAndrew Jeffery            const: aspeed,ast2500-gpio
76177f954fSAndrew Jeffery    then:
77177f954fSAndrew Jeffery      properties:
78177f954fSAndrew Jeffery        gpio-line-names:
79177f954fSAndrew Jeffery          minItems: 232
80177f954fSAndrew Jeffery          maxItems: 232
81177f954fSAndrew Jeffery        ngpios:
82177f954fSAndrew Jeffery          const: 232
83177f954fSAndrew Jeffery  - if:
84177f954fSAndrew Jeffery      properties:
85177f954fSAndrew Jeffery        compatible:
86177f954fSAndrew Jeffery          contains:
87177f954fSAndrew Jeffery            const: aspeed,ast2600-gpio
88177f954fSAndrew Jeffery    then:
89177f954fSAndrew Jeffery      properties:
90177f954fSAndrew Jeffery        gpio-line-names:
91177f954fSAndrew Jeffery          minItems: 36
92177f954fSAndrew Jeffery          maxItems: 208
93177f954fSAndrew Jeffery        ngpios:
94177f954fSAndrew Jeffery          enum: [ 36, 208 ]
95177f954fSAndrew Jeffery      required:
96177f954fSAndrew Jeffery        - ngpios
97*bef6959aSBilly Tsai  - if:
98*bef6959aSBilly Tsai      properties:
99*bef6959aSBilly Tsai        compatible:
100*bef6959aSBilly Tsai          contains:
101*bef6959aSBilly Tsai            const: aspeed,ast2700-gpio
102*bef6959aSBilly Tsai    then:
103*bef6959aSBilly Tsai      properties:
104*bef6959aSBilly Tsai        gpio-line-names:
105*bef6959aSBilly Tsai          minItems: 12
106*bef6959aSBilly Tsai          maxItems: 216
107*bef6959aSBilly Tsai        ngpios:
108*bef6959aSBilly Tsai          enum: [ 12, 216 ]
109*bef6959aSBilly Tsai      required:
110*bef6959aSBilly Tsai        - ngpios
111177f954fSAndrew Jeffery
112177f954fSAndrew JefferyadditionalProperties: false
113177f954fSAndrew Jeffery
114177f954fSAndrew Jefferyexamples:
115177f954fSAndrew Jeffery  - |
116177f954fSAndrew Jeffery    gpio@1e780000 {
117177f954fSAndrew Jeffery        compatible = "aspeed,ast2400-gpio";
118177f954fSAndrew Jeffery        reg = <0x1e780000 0x1000>;
119177f954fSAndrew Jeffery        interrupts = <20>;
120177f954fSAndrew Jeffery        interrupt-controller;
121177f954fSAndrew Jeffery        #interrupt-cells = <2>;
122177f954fSAndrew Jeffery        gpio-controller;
123177f954fSAndrew Jeffery        #gpio-cells = <2>;
124177f954fSAndrew Jeffery    };
125177f954fSAndrew Jeffery  - |
126177f954fSAndrew Jeffery    gpio: gpio@1e780000 {
127177f954fSAndrew Jeffery        compatible = "aspeed,ast2500-gpio";
128177f954fSAndrew Jeffery        reg = <0x1e780000 0x200>;
129177f954fSAndrew Jeffery        interrupts = <20>;
130177f954fSAndrew Jeffery        interrupt-controller;
131177f954fSAndrew Jeffery        #interrupt-cells = <2>;
132177f954fSAndrew Jeffery        gpio-controller;
133177f954fSAndrew Jeffery        #gpio-cells = <2>;
134177f954fSAndrew Jeffery        gpio-ranges = <&pinctrl 0 0 232>;
135177f954fSAndrew Jeffery    };
136177f954fSAndrew Jeffery  - |
137177f954fSAndrew Jeffery    #include <dt-bindings/clock/ast2600-clock.h>
138177f954fSAndrew Jeffery    #include <dt-bindings/interrupt-controller/arm-gic.h>
139177f954fSAndrew Jeffery    #include <dt-bindings/interrupt-controller/irq.h>
140177f954fSAndrew Jeffery    gpio0: gpio@1e780000 {
141177f954fSAndrew Jeffery        compatible = "aspeed,ast2600-gpio";
142177f954fSAndrew Jeffery        reg = <0x1e780000 0x400>;
143177f954fSAndrew Jeffery        clocks = <&syscon ASPEED_CLK_APB2>;
144177f954fSAndrew Jeffery        interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
145177f954fSAndrew Jeffery        interrupt-controller;
146177f954fSAndrew Jeffery        #interrupt-cells = <2>;
147177f954fSAndrew Jeffery        #gpio-cells = <2>;
148177f954fSAndrew Jeffery        gpio-controller;
149177f954fSAndrew Jeffery        gpio-ranges = <&pinctrl 0 0 208>;
150177f954fSAndrew Jeffery        ngpios = <208>;
151177f954fSAndrew Jeffery    };
152177f954fSAndrew Jeffery    gpio1: gpio@1e780800 {
153177f954fSAndrew Jeffery        compatible = "aspeed,ast2600-gpio";
154177f954fSAndrew Jeffery        reg = <0x1e780800 0x800>;
155177f954fSAndrew Jeffery        clocks = <&syscon ASPEED_CLK_APB1>;
156177f954fSAndrew Jeffery        interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
157177f954fSAndrew Jeffery        interrupt-controller;
158177f954fSAndrew Jeffery        #interrupt-cells = <2>;
159177f954fSAndrew Jeffery        gpio-controller;
160177f954fSAndrew Jeffery        #gpio-cells = <2>;
161177f954fSAndrew Jeffery        gpio-ranges = <&pinctrl 0 208 36>;
162177f954fSAndrew Jeffery        ngpios = <36>;
163177f954fSAndrew Jeffery    };
164