1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/gpio/gpio-ep9301.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: EP93xx GPIO controller
8
9maintainers:
10  - Linus Walleij <linus.walleij@linaro.org>
11  - Bartosz Golaszewski <brgl@bgdev.pl>
12  - Nikita Shubin <nikita.shubin@maquefel.me>
13
14properties:
15  compatible:
16    oneOf:
17      - const: cirrus,ep9301-gpio
18      - items:
19          - enum:
20              - cirrus,ep9302-gpio
21              - cirrus,ep9307-gpio
22              - cirrus,ep9312-gpio
23              - cirrus,ep9315-gpio
24          - const: cirrus,ep9301-gpio
25
26  reg:
27    minItems: 2
28    items:
29      - description: data register
30      - description: direction register
31      - description: interrupt registers base
32
33  reg-names:
34    minItems: 2
35    items:
36      - const: data
37      - const: dir
38      - const: intr
39
40  gpio-controller: true
41
42  gpio-ranges: true
43
44  "#gpio-cells":
45    const: 2
46
47  interrupt-controller: true
48
49  "#interrupt-cells":
50    const: 2
51
52  interrupts:
53    oneOf:
54      - maxItems: 1
55      - description: port F has dedicated irq line for each gpio line
56        maxItems: 8
57
58required:
59  - compatible
60  - reg
61  - gpio-controller
62  - "#gpio-cells"
63
64additionalProperties: false
65
66examples:
67  - |
68    gpio@80840000 {
69      compatible = "cirrus,ep9301-gpio";
70      reg = <0x80840000 0x04>,
71            <0x80840010 0x04>,
72            <0x80840090 0x1c>;
73      reg-names = "data", "dir", "intr";
74      gpio-controller;
75      #gpio-cells = <2>;
76        interrupt-controller;
77        interrupt-parent = <&vic1>;
78        interrupts = <27>;
79    };
80
81    gpio@80840004 {
82      compatible = "cirrus,ep9301-gpio";
83      reg = <0x80840004 0x04>,
84            <0x80840014 0x04>,
85            <0x808400ac 0x1c>;
86      reg-names = "data", "dir", "intr";
87      gpio-controller;
88      #gpio-cells = <2>;
89      interrupt-controller;
90      interrupt-parent = <&vic1>;
91      interrupts = <27>;
92    };
93
94    gpio@80840008 {
95      compatible = "cirrus,ep9301-gpio";
96      reg = <0x80840008 0x04>,
97            <0x80840018 0x04>;
98      reg-names = "data", "dir";
99      gpio-controller;
100      #gpio-cells = <2>;
101    };
102
103    gpio@8084000c {
104      compatible = "cirrus,ep9301-gpio";
105      reg = <0x8084000c 0x04>,
106            <0x8084001c 0x04>;
107      reg-names = "data", "dir";
108      gpio-controller;
109      #gpio-cells = <2>;
110    };
111
112    gpio@80840020 {
113      compatible = "cirrus,ep9301-gpio";
114      reg = <0x80840020 0x04>,
115            <0x80840024 0x04>;
116      reg-names = "data", "dir";
117      gpio-controller;
118      #gpio-cells = <2>;
119    };
120
121    gpio@80840030 {
122      compatible = "cirrus,ep9301-gpio";
123      reg = <0x80840030 0x04>,
124            <0x80840034 0x04>,
125            <0x8084004c 0x1c>;
126      reg-names = "data", "dir", "intr";
127      gpio-controller;
128      #gpio-cells = <2>;
129      interrupt-controller;
130      interrupts-extended = <&vic0 19>, <&vic0 20>,
131                            <&vic0 21>, <&vic0 22>,
132                            <&vic1 15>, <&vic1 16>,
133                            <&vic1 17>, <&vic1 18>;
134    };
135
136    gpio@80840038 {
137      compatible = "cirrus,ep9301-gpio";
138      reg = <0x80840038 0x04>,
139            <0x8084003c 0x04>;
140      reg-names = "data", "dir";
141      gpio-controller;
142      #gpio-cells = <2>;
143    };
144
145    gpio@80840040 {
146      compatible = "cirrus,ep9301-gpio";
147      reg = <0x80840040 0x04>,
148            <0x80840044 0x04>;
149      reg-names = "data", "dir";
150      gpio-controller;
151      #gpio-cells = <2>;
152    };
153
154...
155