xref: /freebsd/sys/contrib/device-tree/Bindings/gpio/mrvl-gpio.yaml (revision dd41de95a84d979615a2ef11df6850622bf6184e)
1# SPDX-License-Identifier: GPL-2.0-only
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/gpio/mrvl-gpio.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Marvell PXA GPIO controller
8
9maintainers:
10  - Linus Walleij <linus.walleij@linaro.org>
11  - Bartosz Golaszewski <bgolaszewski@baylibre.com>
12  - Rob Herring <robh+dt@kernel.org>
13
14allOf:
15  - if:
16      properties:
17        compatible:
18          contains:
19            enum:
20              - intel,pxa25x-gpio
21              - intel,pxa26x-gpio
22              - intel,pxa27x-gpio
23              - intel,pxa3xx-gpio
24    then:
25      properties:
26        interrupts:
27          minItems: 3
28          maxItems: 3
29        interrupt-names:
30          items:
31            - const: gpio0
32            - const: gpio1
33            - const: gpio_mux
34  - if:
35      properties:
36        compatible:
37          contains:
38            enum:
39              - marvell,mmp-gpio
40              - marvell,mmp2-gpio
41    then:
42      properties:
43        interrupts:
44          maxItems: 1
45        interrupt-names:
46          items:
47            - const: gpio_mux
48
49properties:
50  $nodename:
51    pattern: '^gpio@[0-9a-f]+$'
52
53  compatible:
54    enum:
55      - intel,pxa25x-gpio
56      - intel,pxa26x-gpio
57      - intel,pxa27x-gpio
58      - intel,pxa3xx-gpio
59      - marvell,mmp-gpio
60      - marvell,mmp2-gpio
61      - marvell,pxa93x-gpio
62
63  reg:
64    maxItems: 1
65
66  clocks:
67    maxItems: 1
68
69  resets:
70    maxItems: 1
71
72  ranges: true
73
74  '#address-cells':
75    const: 1
76
77  '#size-cells':
78    const: 1
79
80  gpio-controller: true
81
82  '#gpio-cells':
83    const: 2
84
85  gpio-ranges:
86    maxItems: 1
87
88  interrupts: true
89
90  interrupt-names: true
91
92  interrupt-controller: true
93
94  '#interrupt-cells':
95    const: 2
96
97patternProperties:
98  '^gpio@[0-9a-f]*$':
99    type: object
100    properties:
101      reg:
102        maxItems: 1
103
104    required:
105      - reg
106
107    additionalProperties: false
108
109required:
110  - compatible
111  - '#address-cells'
112  - '#size-cells'
113  - reg
114  - gpio-controller
115  - '#gpio-cells'
116  - interrupts
117  - interrupt-names
118  - interrupt-controller
119  - '#interrupt-cells'
120
121additionalProperties: false
122
123examples:
124  - |
125    #include <dt-bindings/clock/pxa-clock.h>
126    gpio@40e00000 {
127        compatible = "intel,pxa3xx-gpio";
128        #address-cells = <1>;
129        #size-cells = <1>;
130        reg = <0x40e00000 0x10000>;
131        gpio-controller;
132        #gpio-cells = <2>;
133        interrupts = <8>, <9>, <10>;
134        interrupt-names = "gpio0", "gpio1", "gpio_mux";
135        clocks = <&clks CLK_GPIO>;
136        interrupt-controller;
137        #interrupt-cells = <2>;
138    };
139  - |
140    #include <dt-bindings/clock/marvell,pxa910.h>
141    gpio@d4019000 {
142        compatible = "marvell,mmp-gpio";
143        #address-cells = <1>;
144        #size-cells = <1>;
145        reg = <0xd4019000 0x1000>;
146        gpio-controller;
147        #gpio-cells = <2>;
148        interrupts = <49>;
149        interrupt-names = "gpio_mux";
150        clocks = <&soc_clocks PXA910_CLK_GPIO>;
151        resets = <&soc_clocks PXA910_CLK_GPIO>;
152        interrupt-controller;
153        #interrupt-cells = <2>;
154        ranges;
155
156        gpio@d4019000 {
157            reg = <0xd4019000 0x4>;
158        };
159
160        gpio@d4019004 {
161            reg = <0xd4019004 0x4>;
162        };
163
164        gpio@d4019008 {
165            reg = <0xd4019008 0x4>;
166        };
167
168        gpio@d4019100 {
169            reg = <0xd4019100 0x4>;
170        };
171     };
172
173...
174