Merge tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git...
[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 contains 5 GPIO ports, PA to PE, for a total of 160 pins.
23   The JZ4750, the JZ4755 the JZ4760, the JZ4770 and the JZ4780 contains 6 GPIO
24   ports, PA to PF, for a total of 192 pins. The JZ4775 contains 7 GPIO ports,
25   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       - items:
51           - const: ingenic,jz4760b-pinctrl
52           - const: ingenic,jz4760-pinctrl
53       - items:
54           - const: ingenic,x1000e-pinctrl
55           - const: ingenic,x1000-pinctrl
56       - items:
57           - const: ingenic,x2000e-pinctrl
58           - const: ingenic,x2000-pinctrl
59
60   reg:
61     maxItems: 1
62
63   "#address-cells":
64     const: 1
65
66   "#size-cells":
67     const: 0
68
69 patternProperties:
70   "^gpio@[0-9]$":
71     type: object
72     properties:
73       compatible:
74         enum:
75           - ingenic,jz4730-gpio
76           - ingenic,jz4740-gpio
77           - ingenic,jz4725b-gpio
78           - ingenic,jz4750-gpio
79           - ingenic,jz4755-gpio
80           - ingenic,jz4760-gpio
81           - ingenic,jz4770-gpio
82           - ingenic,jz4775-gpio
83           - ingenic,jz4780-gpio
84           - ingenic,x1000-gpio
85           - ingenic,x1500-gpio
86           - ingenic,x1830-gpio
87           - ingenic,x2000-gpio
88
89       reg:
90         items:
91           - description: The GPIO bank number
92
93       gpio-controller: true
94
95       "#gpio-cells":
96         const: 2
97
98       gpio-ranges:
99         maxItems: 1
100
101       interrupt-controller: true
102
103       "#interrupt-cells":
104         const: 2
105         description:
106           Refer to ../interrupt-controller/interrupts.txt for more details.
107
108       interrupts:
109         maxItems: 1
110
111     required:
112       - compatible
113       - reg
114       - gpio-controller
115       - "#gpio-cells"
116       - interrupts
117       - interrupt-controller
118       - "#interrupt-cells"
119
120     additionalProperties: false
121
122 required:
123   - compatible
124   - reg
125   - "#address-cells"
126   - "#size-cells"
127
128 additionalProperties:
129   anyOf:
130     - type: object
131       allOf:
132         - $ref: pincfg-node.yaml#
133         - $ref: pinmux-node.yaml#
134
135       properties:
136         phandle: true
137         function: true
138         groups: true
139         pins: true
140         bias-disable: true
141         bias-pull-up: true
142         bias-pull-down: true
143         output-low: true
144         output-high: true
145       additionalProperties: false
146
147     - type: object
148       properties:
149         phandle: true
150       additionalProperties:
151         type: object
152         allOf:
153           - $ref: pincfg-node.yaml#
154           - $ref: pinmux-node.yaml#
155
156         properties:
157           phandle: true
158           function: true
159           groups: true
160           pins: true
161           bias-disable: true
162           bias-pull-up: true
163           bias-pull-down: true
164           output-low: true
165           output-high: true
166         additionalProperties: false
167
168 examples:
169   - |
170     pin-controller@10010000 {
171       compatible = "ingenic,jz4770-pinctrl";
172       reg = <0x10010000 0x600>;
173
174       #address-cells = <1>;
175       #size-cells = <0>;
176
177       gpio@0 {
178         compatible = "ingenic,jz4770-gpio";
179         reg = <0>;
180
181         gpio-controller;
182         gpio-ranges = <&pinctrl 0 0 32>;
183         #gpio-cells = <2>;
184
185         interrupt-controller;
186         #interrupt-cells = <2>;
187
188         interrupt-parent = <&intc>;
189         interrupts = <17>;
190       };
191     };