Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[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 JZ4740, the X1000 and the X1830
21   contains 4 GPIO ports, PA to PD, for a total of 128 pins. The JZ4760, the
22   JZ4770 and the JZ4780 contains 6 GPIO ports, PA to PF, for a total of 192
23   pins.
24
25 maintainers:
26   - Paul Cercueil <paul@crapouillou.net>
27
28 properties:
29   nodename:
30     pattern: "^pinctrl@[0-9a-f]+$"
31
32   compatible:
33     oneOf:
34       - enum:
35           - ingenic,jz4740-pinctrl
36           - ingenic,jz4725b-pinctrl
37           - ingenic,jz4760-pinctrl
38           - ingenic,jz4770-pinctrl
39           - ingenic,jz4780-pinctrl
40           - ingenic,x1000-pinctrl
41           - ingenic,x1500-pinctrl
42           - ingenic,x1830-pinctrl
43       - items:
44           - const: ingenic,jz4760b-pinctrl
45           - const: ingenic,jz4760-pinctrl
46       - items:
47           - const: ingenic,x1000e-pinctrl
48           - const: ingenic,x1000-pinctrl
49
50   reg:
51     maxItems: 1
52
53   "#address-cells":
54     const: 1
55
56   "#size-cells":
57     const: 0
58
59 patternProperties:
60   "^gpio@[0-9]$":
61     type: object
62     properties:
63       compatible:
64         enum:
65           - ingenic,jz4740-gpio
66           - ingenic,jz4725b-gpio
67           - ingenic,jz4760-gpio
68           - ingenic,jz4770-gpio
69           - ingenic,jz4780-gpio
70           - ingenic,x1000-gpio
71           - ingenic,x1500-gpio
72           - ingenic,x1830-gpio
73
74       reg:
75         items:
76           - description: The GPIO bank number
77
78       gpio-controller: true
79
80       "#gpio-cells":
81         const: 2
82
83       gpio-ranges:
84         maxItems: 1
85
86       interrupt-controller: true
87
88       "#interrupt-cells":
89         const: 2
90         description:
91           Refer to ../interrupt-controller/interrupts.txt for more details.
92
93       interrupts:
94         maxItems: 1
95
96     required:
97       - compatible
98       - reg
99       - gpio-controller
100       - "#gpio-cells"
101       - interrupts
102       - interrupt-controller
103       - "#interrupt-cells"
104
105     additionalProperties: false
106
107 required:
108   - compatible
109   - reg
110   - "#address-cells"
111   - "#size-cells"
112
113 additionalProperties:
114   anyOf:
115     - type: object
116       allOf:
117         - $ref: pincfg-node.yaml#
118         - $ref: pinmux-node.yaml#
119
120       properties:
121         phandle: true
122         function: true
123         groups: true
124         pins: true
125         bias-disable: true
126         bias-pull-up: true
127         bias-pull-down: true
128         output-low: true
129         output-high: true
130       additionalProperties: false
131
132     - type: object
133       properties:
134         phandle: true
135       additionalProperties:
136         type: object
137         allOf:
138           - $ref: pincfg-node.yaml#
139           - $ref: pinmux-node.yaml#
140
141         properties:
142           phandle: true
143           function: true
144           groups: true
145           pins: true
146           bias-disable: true
147           bias-pull-up: true
148           bias-pull-down: true
149           output-low: true
150           output-high: true
151         additionalProperties: false
152
153 examples:
154   - |
155     pin-controller@10010000 {
156       compatible = "ingenic,jz4770-pinctrl";
157       reg = <0x10010000 0x600>;
158
159       #address-cells = <1>;
160       #size-cells = <0>;
161
162       gpio@0 {
163         compatible = "ingenic,jz4770-gpio";
164         reg = <0>;
165
166         gpio-controller;
167         gpio-ranges = <&pinctrl 0 0 32>;
168         #gpio-cells = <2>;
169
170         interrupt-controller;
171         #interrupt-cells = <2>;
172
173         interrupt-parent = <&intc>;
174         interrupts = <17>;
175       };
176     };