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
7title: Ingenic SoCs pin controller devicetree bindings
8
9description: >
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
27maintainers:
28  - Paul Cercueil <paul@crapouillou.net>
29
30properties:
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
70patternProperties:
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
124required:
125  - compatible
126  - reg
127  - "#address-cells"
128  - "#size-cells"
129
130additionalProperties:
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
170examples:
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    };
194