Merge branch 'work.init' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / pinctrl / ingenic,pinctrl.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/pinctrl/ingenic,pinctrl.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Ingenic SoCs pin controller devicetree bindings
8
9 description: >
10   Please refer to pinctrl-bindings.txt in this directory for details of the
11   common pinctrl bindings used by client devices, including the meaning of the
12   phrase "pin configuration node".
13
14   For the Ingenic SoCs, pin control is tightly bound with GPIO ports. All pins
15   may be used as GPIOs, multiplexed device functions are configured within the
16   GPIO port configuration registers and it is typical to refer to pins using the
17   naming scheme "PxN" where x is a character identifying the GPIO port with
18   which the pin is associated and N is an integer from 0 to 31 identifying the
19   pin within that GPIO port. For example PA0 is the first pin in GPIO port A,
20   and PB31 is the last pin in GPIO port B. The JZ4730, the JZ4740, the JZ4725B,
21   the X1000 and the X1830 contains 4 GPIO ports, PA to PD, for a total of 128
22   pins. The X2000 and the X2100 contains 5 GPIO ports, PA to PE, for a total of
23   160 pins. The JZ4750, the JZ4755 the JZ4760, the JZ4770 and the JZ4780 contains
24   6 GPIO ports, PA to PF, for a total of 192 pins. The JZ4775 contains 7 GPIO
25   ports, PA to PG, for a total of 224 pins.
26
27 maintainers:
28   - Paul Cercueil <paul@crapouillou.net>
29
30 properties:
31   nodename:
32     pattern: "^pinctrl@[0-9a-f]+$"
33
34   compatible:
35     oneOf:
36       - enum:
37           - ingenic,jz4730-pinctrl
38           - ingenic,jz4740-pinctrl
39           - ingenic,jz4725b-pinctrl
40           - ingenic,jz4750-pinctrl
41           - ingenic,jz4755-pinctrl
42           - ingenic,jz4760-pinctrl
43           - ingenic,jz4770-pinctrl
44           - ingenic,jz4775-pinctrl
45           - ingenic,jz4780-pinctrl
46           - ingenic,x1000-pinctrl
47           - ingenic,x1500-pinctrl
48           - ingenic,x1830-pinctrl
49           - ingenic,x2000-pinctrl
50           - ingenic,x2100-pinctrl
51       - items:
52           - const: ingenic,jz4760b-pinctrl
53           - const: ingenic,jz4760-pinctrl
54       - items:
55           - const: ingenic,x1000e-pinctrl
56           - const: ingenic,x1000-pinctrl
57       - items:
58           - const: ingenic,x2000e-pinctrl
59           - const: ingenic,x2000-pinctrl
60
61   reg:
62     maxItems: 1
63
64   "#address-cells":
65     const: 1
66
67   "#size-cells":
68     const: 0
69
70 patternProperties:
71   "^gpio@[0-9]$":
72     type: object
73     properties:
74       compatible:
75         enum:
76           - ingenic,jz4730-gpio
77           - ingenic,jz4740-gpio
78           - ingenic,jz4725b-gpio
79           - ingenic,jz4750-gpio
80           - ingenic,jz4755-gpio
81           - ingenic,jz4760-gpio
82           - ingenic,jz4770-gpio
83           - ingenic,jz4775-gpio
84           - ingenic,jz4780-gpio
85           - ingenic,x1000-gpio
86           - ingenic,x1500-gpio
87           - ingenic,x1830-gpio
88           - ingenic,x2000-gpio
89           - ingenic,x2100-gpio
90
91       reg:
92         items:
93           - description: The GPIO bank number
94
95       gpio-controller: true
96
97       "#gpio-cells":
98         const: 2
99
100       gpio-ranges:
101         maxItems: 1
102
103       interrupt-controller: true
104
105       "#interrupt-cells":
106         const: 2
107         description:
108           Refer to ../interrupt-controller/interrupts.txt for more details.
109
110       interrupts:
111         maxItems: 1
112
113     required:
114       - compatible
115       - reg
116       - gpio-controller
117       - "#gpio-cells"
118       - interrupts
119       - interrupt-controller
120       - "#interrupt-cells"
121
122     additionalProperties: false
123
124 required:
125   - compatible
126   - reg
127   - "#address-cells"
128   - "#size-cells"
129
130 additionalProperties:
131   anyOf:
132     - type: object
133       allOf:
134         - $ref: pincfg-node.yaml#
135         - $ref: pinmux-node.yaml#
136
137       properties:
138         phandle: true
139         function: true
140         groups: true
141         pins: true
142         bias-disable: true
143         bias-pull-up: true
144         bias-pull-down: true
145         output-low: true
146         output-high: true
147       additionalProperties: false
148
149     - type: object
150       properties:
151         phandle: true
152       additionalProperties:
153         type: object
154         allOf:
155           - $ref: pincfg-node.yaml#
156           - $ref: pinmux-node.yaml#
157
158         properties:
159           phandle: true
160           function: true
161           groups: true
162           pins: true
163           bias-disable: true
164           bias-pull-up: true
165           bias-pull-down: true
166           output-low: true
167           output-high: true
168         additionalProperties: false
169
170 examples:
171   - |
172     pin-controller@10010000 {
173       compatible = "ingenic,jz4770-pinctrl";
174       reg = <0x10010000 0x600>;
175
176       #address-cells = <1>;
177       #size-cells = <0>;
178
179       gpio@0 {
180         compatible = "ingenic,jz4770-gpio";
181         reg = <0>;
182
183         gpio-controller;
184         gpio-ranges = <&pinctrl 0 0 32>;
185         #gpio-cells = <2>;
186
187         interrupt-controller;
188         #interrupt-cells = <2>;
189
190         interrupt-parent = <&intc>;
191         interrupts = <17>;
192       };
193     };