1e3dcb725SMaxime Ripard# SPDX-License-Identifier: GPL-2.0
2e3dcb725SMaxime Ripard%YAML 1.2
3e3dcb725SMaxime Ripard---
4e3dcb725SMaxime Ripard$id: http://devicetree.org/schemas/pinctrl/allwinner,sun4i-a10-pinctrl.yaml#
5e3dcb725SMaxime Ripard$schema: http://devicetree.org/meta-schemas/core.yaml#
6e3dcb725SMaxime Ripard
7e3dcb725SMaxime Ripardtitle: Allwinner A10 Pin Controller Device Tree Bindings
8e3dcb725SMaxime Ripard
9e3dcb725SMaxime Ripardmaintainers:
10e3dcb725SMaxime Ripard  - Chen-Yu Tsai <wens@csie.org>
115c7404bbSMaxime Ripard  - Maxime Ripard <mripard@kernel.org>
12e3dcb725SMaxime Ripard
13e3dcb725SMaxime Ripardproperties:
14e3dcb725SMaxime Ripard  "#gpio-cells":
15e3dcb725SMaxime Ripard    const: 3
16e3dcb725SMaxime Ripard    description:
17e3dcb725SMaxime Ripard      GPIO consumers must use three arguments, first the number of the
18e3dcb725SMaxime Ripard      bank, then the pin number inside that bank, and finally the GPIO
19e3dcb725SMaxime Ripard      flags.
20e3dcb725SMaxime Ripard
21e3dcb725SMaxime Ripard  "#interrupt-cells":
22e3dcb725SMaxime Ripard    const: 3
23e3dcb725SMaxime Ripard    description:
24e3dcb725SMaxime Ripard      Interrupts consumers must use three arguments, first the number
25e3dcb725SMaxime Ripard      of the bank, then the pin number inside that bank, and finally
26e3dcb725SMaxime Ripard      the interrupts flags.
27e3dcb725SMaxime Ripard
28e3dcb725SMaxime Ripard  compatible:
29e3dcb725SMaxime Ripard    enum:
30e3dcb725SMaxime Ripard      - allwinner,sun4i-a10-pinctrl
31e3dcb725SMaxime Ripard      - allwinner,sun5i-a10s-pinctrl
32e3dcb725SMaxime Ripard      - allwinner,sun5i-a13-pinctrl
33e3dcb725SMaxime Ripard      - allwinner,sun6i-a31-pinctrl
34e3dcb725SMaxime Ripard      - allwinner,sun6i-a31-r-pinctrl
35e3dcb725SMaxime Ripard      - allwinner,sun6i-a31s-pinctrl
36e3dcb725SMaxime Ripard      - allwinner,sun7i-a20-pinctrl
37e3dcb725SMaxime Ripard      - allwinner,sun8i-a23-pinctrl
38e3dcb725SMaxime Ripard      - allwinner,sun8i-a23-r-pinctrl
39e3dcb725SMaxime Ripard      - allwinner,sun8i-a33-pinctrl
40e3dcb725SMaxime Ripard      - allwinner,sun8i-a83t-pinctrl
41e3dcb725SMaxime Ripard      - allwinner,sun8i-a83t-r-pinctrl
42e3dcb725SMaxime Ripard      - allwinner,sun8i-h3-pinctrl
43e3dcb725SMaxime Ripard      - allwinner,sun8i-h3-r-pinctrl
44e3dcb725SMaxime Ripard      - allwinner,sun8i-r40-pinctrl
45e3dcb725SMaxime Ripard      - allwinner,sun8i-v3-pinctrl
46e3dcb725SMaxime Ripard      - allwinner,sun8i-v3s-pinctrl
47e3dcb725SMaxime Ripard      - allwinner,sun9i-a80-pinctrl
48e3dcb725SMaxime Ripard      - allwinner,sun9i-a80-r-pinctrl
49e3dcb725SMaxime Ripard      - allwinner,sun50i-a64-pinctrl
50e3dcb725SMaxime Ripard      - allwinner,sun50i-a64-r-pinctrl
515e842dc2SYangtao Li      - allwinner,sun50i-a100-pinctrl
525e842dc2SYangtao Li      - allwinner,sun50i-a100-r-pinctrl
53e3dcb725SMaxime Ripard      - allwinner,sun50i-h5-pinctrl
54e3dcb725SMaxime Ripard      - allwinner,sun50i-h6-pinctrl
55e3dcb725SMaxime Ripard      - allwinner,sun50i-h6-r-pinctrl
56*fdca7cb9SAndre Przywara      - allwinner,sun50i-h616-pinctrl
57*fdca7cb9SAndre Przywara      - allwinner,sun50i-h616-r-pinctrl
58e3dcb725SMaxime Ripard      - allwinner,suniv-f1c100s-pinctrl
59e3dcb725SMaxime Ripard      - nextthing,gr8-pinctrl
60e3dcb725SMaxime Ripard
61e3dcb725SMaxime Ripard  reg:
62e3dcb725SMaxime Ripard    maxItems: 1
63e3dcb725SMaxime Ripard
64e3dcb725SMaxime Ripard  interrupts:
65e3dcb725SMaxime Ripard    minItems: 1
66*fdca7cb9SAndre Przywara    maxItems: 8
67e3dcb725SMaxime Ripard    description:
68e3dcb725SMaxime Ripard      One interrupt per external interrupt bank supported on the
69e3dcb725SMaxime Ripard      controller, sorted by bank number ascending order.
70e3dcb725SMaxime Ripard
71e3dcb725SMaxime Ripard  clocks:
72e3dcb725SMaxime Ripard    items:
73e3dcb725SMaxime Ripard      - description: Bus Clock
74e3dcb725SMaxime Ripard      - description: High Frequency Oscillator
75e3dcb725SMaxime Ripard      - description: Low Frequency Oscillator
76e3dcb725SMaxime Ripard
77e3dcb725SMaxime Ripard  clock-names:
78e3dcb725SMaxime Ripard    items:
79e3dcb725SMaxime Ripard      - const: apb
80e3dcb725SMaxime Ripard      - const: hosc
81e3dcb725SMaxime Ripard      - const: losc
82e3dcb725SMaxime Ripard
83e3dcb725SMaxime Ripard  resets:
84e3dcb725SMaxime Ripard    maxItems: 1
85e3dcb725SMaxime Ripard
86e3dcb725SMaxime Ripard  gpio-controller: true
87e3dcb725SMaxime Ripard  interrupt-controller: true
88e3dcb725SMaxime Ripard  gpio-line-names: true
89e3dcb725SMaxime Ripard
90e3dcb725SMaxime Ripard  input-debounce:
91e3dcb725SMaxime Ripard    description:
92e3dcb725SMaxime Ripard      Debouncing periods in microseconds, one period per interrupt
93e3dcb725SMaxime Ripard      bank found in the controller
943d21a460SRob Herring    $ref: /schemas/types.yaml#/definitions/uint32-array
953d21a460SRob Herring    minItems: 1
96*fdca7cb9SAndre Przywara    maxItems: 8
97e3dcb725SMaxime Ripard
98e3dcb725SMaxime RipardpatternProperties:
99e3dcb725SMaxime Ripard  # It's pretty scary, but the basic idea is that:
100e3dcb725SMaxime Ripard  #   - One node name can start with either s- or r- for PRCM nodes,
101e3dcb725SMaxime Ripard  #   - Then, the name itself can be any repetition of <string>- (to
102e3dcb725SMaxime Ripard  #     accomodate with nodes like uart4-rts-cts-pins), where each
103e3dcb725SMaxime Ripard  #     string can be either starting with 'p' but in a string longer
104e3dcb725SMaxime Ripard  #     than 3, or something that doesn't start with 'p',
105e3dcb725SMaxime Ripard  #   - Then, the bank name is optional and will be between pa and pg,
106e3dcb725SMaxime Ripard  #     pl or pm. Some pins groups that have several options will have
107e3dcb725SMaxime Ripard  #     the pin numbers then,
108e3dcb725SMaxime Ripard  #   - Finally, the name will end with either -pin or pins.
109e3dcb725SMaxime Ripard
110e3dcb725SMaxime Ripard  "^([rs]-)?(([a-z0-9]{3,}|[a-oq-z][a-z0-9]*?)?-)+?(p[a-ilm][0-9]*?-)??pins?$":
111e3dcb725SMaxime Ripard    type: object
112e3dcb725SMaxime Ripard
113e3dcb725SMaxime Ripard    properties:
114e3dcb725SMaxime Ripard      pins: true
115e3dcb725SMaxime Ripard      function: true
116e3dcb725SMaxime Ripard      bias-disable: true
117e3dcb725SMaxime Ripard      bias-pull-up: true
118e3dcb725SMaxime Ripard      bias-pull-down: true
119e3dcb725SMaxime Ripard
120e3dcb725SMaxime Ripard      drive-strength:
1213d21a460SRob Herring        $ref: /schemas/types.yaml#/definitions/uint32
1223d21a460SRob Herring        enum: [10, 20, 30, 40]
123e3dcb725SMaxime Ripard
124e3dcb725SMaxime Ripard    required:
125e3dcb725SMaxime Ripard      - pins
126e3dcb725SMaxime Ripard      - function
127e3dcb725SMaxime Ripard
128e3dcb725SMaxime Ripard    additionalProperties: false
129e3dcb725SMaxime Ripard
130e3dcb725SMaxime Ripard  "^vcc-p[a-hlm]-supply$":
131e3dcb725SMaxime Ripard    description:
132e3dcb725SMaxime Ripard      Power supplies for pin banks.
133e3dcb725SMaxime Ripard
134e3dcb725SMaxime Ripardrequired:
135e3dcb725SMaxime Ripard  - "#gpio-cells"
136e3dcb725SMaxime Ripard  - "#interrupt-cells"
137e3dcb725SMaxime Ripard  - compatible
138e3dcb725SMaxime Ripard  - reg
139e3dcb725SMaxime Ripard  - interrupts
140e3dcb725SMaxime Ripard  - clocks
141e3dcb725SMaxime Ripard  - clock-names
142e3dcb725SMaxime Ripard  - gpio-controller
143e3dcb725SMaxime Ripard  - interrupt-controller
144e3dcb725SMaxime Ripard
145e3dcb725SMaxime RipardallOf:
146e3dcb725SMaxime Ripard  # FIXME: We should have the pin bank supplies here, but not a lot of
147e3dcb725SMaxime Ripard  # boards are defining it at the moment so it would generate a lot of
148e3dcb725SMaxime Ripard  # warnings.
149e3dcb725SMaxime Ripard
150e3dcb725SMaxime Ripard  - if:
151e3dcb725SMaxime Ripard      properties:
152e3dcb725SMaxime Ripard        compatible:
153e3dcb725SMaxime Ripard          enum:
154*fdca7cb9SAndre Przywara            - allwinner,sun50i-h616-pinctrl
155*fdca7cb9SAndre Przywara
156*fdca7cb9SAndre Przywara    then:
157*fdca7cb9SAndre Przywara      properties:
158*fdca7cb9SAndre Przywara        interrupts:
159*fdca7cb9SAndre Przywara          minItems: 8
160*fdca7cb9SAndre Przywara
161*fdca7cb9SAndre Przywara  - if:
162*fdca7cb9SAndre Przywara      properties:
163*fdca7cb9SAndre Przywara        compatible:
164*fdca7cb9SAndre Przywara          enum:
1655e842dc2SYangtao Li            - allwinner,sun50i-a100-pinctrl
1665e842dc2SYangtao Li
1675e842dc2SYangtao Li    then:
1685e842dc2SYangtao Li      properties:
1695e842dc2SYangtao Li        interrupts:
1705e842dc2SYangtao Li          minItems: 7
1715e842dc2SYangtao Li          maxItems: 7
1725e842dc2SYangtao Li
1735e842dc2SYangtao Li  - if:
1745e842dc2SYangtao Li      properties:
1755e842dc2SYangtao Li        compatible:
1765e842dc2SYangtao Li          enum:
177e3dcb725SMaxime Ripard            - allwinner,sun9i-a80-pinctrl
178e3dcb725SMaxime Ripard
179e3dcb725SMaxime Ripard    then:
180e3dcb725SMaxime Ripard      properties:
181e3dcb725SMaxime Ripard        interrupts:
182e3dcb725SMaxime Ripard          minItems: 5
183e3dcb725SMaxime Ripard          maxItems: 5
184e3dcb725SMaxime Ripard
18596bef667SYangtao Li  - if:
186e3dcb725SMaxime Ripard      properties:
187e3dcb725SMaxime Ripard        compatible:
188e3dcb725SMaxime Ripard          enum:
189e3dcb725SMaxime Ripard            - allwinner,sun6i-a31-pinctrl
190e3dcb725SMaxime Ripard            - allwinner,sun6i-a31s-pinctrl
191e3dcb725SMaxime Ripard            - allwinner,sun50i-h6-pinctrl
192e3dcb725SMaxime Ripard
193e3dcb725SMaxime Ripard    then:
194e3dcb725SMaxime Ripard      properties:
195e3dcb725SMaxime Ripard        interrupts:
196e3dcb725SMaxime Ripard          minItems: 4
197e3dcb725SMaxime Ripard          maxItems: 4
198e3dcb725SMaxime Ripard
19996bef667SYangtao Li  - if:
200e3dcb725SMaxime Ripard      properties:
201e3dcb725SMaxime Ripard        compatible:
202e3dcb725SMaxime Ripard          enum:
203e3dcb725SMaxime Ripard            - allwinner,sun8i-a23-pinctrl
204e3dcb725SMaxime Ripard            - allwinner,sun8i-a83t-pinctrl
205e3dcb725SMaxime Ripard            - allwinner,sun50i-a64-pinctrl
206e3dcb725SMaxime Ripard            - allwinner,sun50i-h5-pinctrl
207e3dcb725SMaxime Ripard            - allwinner,suniv-f1c100s-pinctrl
208e3dcb725SMaxime Ripard
209e3dcb725SMaxime Ripard    then:
210e3dcb725SMaxime Ripard      properties:
211e3dcb725SMaxime Ripard        interrupts:
212e3dcb725SMaxime Ripard          minItems: 3
213e3dcb725SMaxime Ripard          maxItems: 3
214e3dcb725SMaxime Ripard
21596bef667SYangtao Li  - if:
216e3dcb725SMaxime Ripard      properties:
217e3dcb725SMaxime Ripard        compatible:
218e3dcb725SMaxime Ripard          enum:
219e3dcb725SMaxime Ripard            - allwinner,sun6i-a31-r-pinctrl
220e3dcb725SMaxime Ripard            - allwinner,sun8i-a33-pinctrl
221e3dcb725SMaxime Ripard            - allwinner,sun8i-h3-pinctrl
222e3dcb725SMaxime Ripard            - allwinner,sun8i-v3-pinctrl
223e3dcb725SMaxime Ripard            - allwinner,sun8i-v3s-pinctrl
224e3dcb725SMaxime Ripard            - allwinner,sun9i-a80-r-pinctrl
225e3dcb725SMaxime Ripard            - allwinner,sun50i-h6-r-pinctrl
226e3dcb725SMaxime Ripard
227e3dcb725SMaxime Ripard    then:
228e3dcb725SMaxime Ripard      properties:
229e3dcb725SMaxime Ripard        interrupts:
230e3dcb725SMaxime Ripard          minItems: 2
231e3dcb725SMaxime Ripard          maxItems: 2
232e3dcb725SMaxime Ripard
23396bef667SYangtao Li  - if:
23496bef667SYangtao Li      properties:
23596bef667SYangtao Li        compatible:
23696bef667SYangtao Li          enum:
23796bef667SYangtao Li            - allwinner,sun4i-a10-pinctrl
23896bef667SYangtao Li            - allwinner,sun5i-a10s-pinctrl
23996bef667SYangtao Li            - allwinner,sun5i-a13-pinctrl
24096bef667SYangtao Li            - allwinner,sun7i-a20-pinctrl
24196bef667SYangtao Li            - allwinner,sun8i-a23-r-pinctrl
24296bef667SYangtao Li            - allwinner,sun8i-a83t-r-pinctrl
24396bef667SYangtao Li            - allwinner,sun8i-h3-r-pinctrl
24496bef667SYangtao Li            - allwinner,sun8i-r40-pinctrl
24596bef667SYangtao Li            - allwinner,sun50i-a64-r-pinctrl
2465e842dc2SYangtao Li            - allwinner,sun50i-a100-r-pinctrl
24796bef667SYangtao Li            - nextthing,gr8-pinctrl
24896bef667SYangtao Li
24996bef667SYangtao Li    then:
250e3dcb725SMaxime Ripard      properties:
251e3dcb725SMaxime Ripard        interrupts:
252e3dcb725SMaxime Ripard          minItems: 1
253e3dcb725SMaxime Ripard          maxItems: 1
254e3dcb725SMaxime Ripard
255e3dcb725SMaxime RipardadditionalProperties: false
256e3dcb725SMaxime Ripard
257e3dcb725SMaxime Ripardexamples:
258e3dcb725SMaxime Ripard  - |
259e3dcb725SMaxime Ripard    #include <dt-bindings/clock/sun5i-ccu.h>
260e3dcb725SMaxime Ripard
261e3dcb725SMaxime Ripard    pio: pinctrl@1c20800 {
262e3dcb725SMaxime Ripard        compatible = "allwinner,sun5i-a13-pinctrl";
263e3dcb725SMaxime Ripard        reg = <0x01c20800 0x400>;
264e3dcb725SMaxime Ripard        interrupts = <28>;
265e3dcb725SMaxime Ripard        clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
266e3dcb725SMaxime Ripard        clock-names = "apb", "hosc", "losc";
267e3dcb725SMaxime Ripard        gpio-controller;
268e3dcb725SMaxime Ripard        interrupt-controller;
269e3dcb725SMaxime Ripard        #interrupt-cells = <3>;
270e3dcb725SMaxime Ripard        #gpio-cells = <3>;
271e3dcb725SMaxime Ripard
272e3dcb725SMaxime Ripard        uart1_pe_pins: uart1-pe-pins {
273e3dcb725SMaxime Ripard            pins = "PE10", "PE11";
274e3dcb725SMaxime Ripard            function = "uart1";
275e3dcb725SMaxime Ripard        };
276e3dcb725SMaxime Ripard
277e3dcb725SMaxime Ripard        uart1_pg_pins: uart1-pg-pins {
278e3dcb725SMaxime Ripard            pins = "PG3", "PG4";
279e3dcb725SMaxime Ripard            function = "uart1";
280e3dcb725SMaxime Ripard        };
281e3dcb725SMaxime Ripard    };
282