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 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
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      - 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
69patternProperties:
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
122required:
123  - compatible
124  - reg
125  - "#address-cells"
126  - "#size-cells"
127
128additionalProperties:
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
168examples:
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    };
192