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
7dd3cb467SAndrew Lunntitle: Allwinner A10 Pin Controller
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
49329d32a9SSamuel Holland      - allwinner,sun20i-d1-pinctrl
50e3dcb725SMaxime Ripard      - allwinner,sun50i-a64-pinctrl
51e3dcb725SMaxime Ripard      - allwinner,sun50i-a64-r-pinctrl
525e842dc2SYangtao Li      - allwinner,sun50i-a100-pinctrl
535e842dc2SYangtao Li      - allwinner,sun50i-a100-r-pinctrl
54e3dcb725SMaxime Ripard      - allwinner,sun50i-h5-pinctrl
55e3dcb725SMaxime Ripard      - allwinner,sun50i-h6-pinctrl
56e3dcb725SMaxime Ripard      - allwinner,sun50i-h6-r-pinctrl
57fdca7cb9SAndre Przywara      - allwinner,sun50i-h616-pinctrl
58fdca7cb9SAndre Przywara      - allwinner,sun50i-h616-r-pinctrl
59e3dcb725SMaxime Ripard      - allwinner,suniv-f1c100s-pinctrl
60e3dcb725SMaxime Ripard      - nextthing,gr8-pinctrl
61e3dcb725SMaxime Ripard
62e3dcb725SMaxime Ripard  reg:
63e3dcb725SMaxime Ripard    maxItems: 1
64e3dcb725SMaxime Ripard
65e3dcb725SMaxime Ripard  interrupts:
66e3dcb725SMaxime Ripard    minItems: 1
67fdca7cb9SAndre Przywara    maxItems: 8
68e3dcb725SMaxime Ripard    description:
69e3dcb725SMaxime Ripard      One interrupt per external interrupt bank supported on the
70e3dcb725SMaxime Ripard      controller, sorted by bank number ascending order.
71e3dcb725SMaxime Ripard
72e3dcb725SMaxime Ripard  clocks:
73e3dcb725SMaxime Ripard    items:
74e3dcb725SMaxime Ripard      - description: Bus Clock
75e3dcb725SMaxime Ripard      - description: High Frequency Oscillator
76e3dcb725SMaxime Ripard      - description: Low Frequency Oscillator
77e3dcb725SMaxime Ripard
78e3dcb725SMaxime Ripard  clock-names:
79e3dcb725SMaxime Ripard    items:
80e3dcb725SMaxime Ripard      - const: apb
81e3dcb725SMaxime Ripard      - const: hosc
82e3dcb725SMaxime Ripard      - const: losc
83e3dcb725SMaxime Ripard
84e3dcb725SMaxime Ripard  gpio-controller: true
85e3dcb725SMaxime Ripard  interrupt-controller: true
86e3dcb725SMaxime Ripard  gpio-line-names: true
87e3dcb725SMaxime Ripard
88e3dcb725SMaxime Ripard  input-debounce:
89e3dcb725SMaxime Ripard    description:
90e3dcb725SMaxime Ripard      Debouncing periods in microseconds, one period per interrupt
91e3dcb725SMaxime Ripard      bank found in the controller
923d21a460SRob Herring    $ref: /schemas/types.yaml#/definitions/uint32-array
933d21a460SRob Herring    minItems: 1
94fdca7cb9SAndre Przywara    maxItems: 8
95e3dcb725SMaxime Ripard
96e3dcb725SMaxime RipardpatternProperties:
97e3dcb725SMaxime Ripard  # It's pretty scary, but the basic idea is that:
98e3dcb725SMaxime Ripard  #   - One node name can start with either s- or r- for PRCM nodes,
99e3dcb725SMaxime Ripard  #   - Then, the name itself can be any repetition of <string>- (to
100*47aab533SBjorn Helgaas  #     accommodate with nodes like uart4-rts-cts-pins), where each
101e3dcb725SMaxime Ripard  #     string can be either starting with 'p' but in a string longer
102e3dcb725SMaxime Ripard  #     than 3, or something that doesn't start with 'p',
103e3dcb725SMaxime Ripard  #   - Then, the bank name is optional and will be between pa and pg,
104e3dcb725SMaxime Ripard  #     pl or pm. Some pins groups that have several options will have
105e3dcb725SMaxime Ripard  #     the pin numbers then,
106e3dcb725SMaxime Ripard  #   - Finally, the name will end with either -pin or pins.
107e3dcb725SMaxime Ripard
108e3dcb725SMaxime Ripard  "^([rs]-)?(([a-z0-9]{3,}|[a-oq-z][a-z0-9]*?)?-)+?(p[a-ilm][0-9]*?-)??pins?$":
109e3dcb725SMaxime Ripard    type: object
110e3dcb725SMaxime Ripard
111e3dcb725SMaxime Ripard    properties:
112e3dcb725SMaxime Ripard      pins: true
113e3dcb725SMaxime Ripard      function: true
114e3dcb725SMaxime Ripard      bias-disable: true
115e3dcb725SMaxime Ripard      bias-pull-up: true
116e3dcb725SMaxime Ripard      bias-pull-down: true
117e3dcb725SMaxime Ripard
118e3dcb725SMaxime Ripard      drive-strength:
1193d21a460SRob Herring        $ref: /schemas/types.yaml#/definitions/uint32
1203d21a460SRob Herring        enum: [10, 20, 30, 40]
121e3dcb725SMaxime Ripard
122e3dcb725SMaxime Ripard    required:
123e3dcb725SMaxime Ripard      - pins
124e3dcb725SMaxime Ripard      - function
125e3dcb725SMaxime Ripard
126e3dcb725SMaxime Ripard    additionalProperties: false
127e3dcb725SMaxime Ripard
128c1e72763SAndre Przywara  "^vcc-p[a-ilm]-supply$":
129e3dcb725SMaxime Ripard    description:
130e3dcb725SMaxime Ripard      Power supplies for pin banks.
131e3dcb725SMaxime Ripard
132e3dcb725SMaxime Ripardrequired:
133e3dcb725SMaxime Ripard  - "#gpio-cells"
134e3dcb725SMaxime Ripard  - compatible
135e3dcb725SMaxime Ripard  - reg
136e3dcb725SMaxime Ripard  - clocks
137e3dcb725SMaxime Ripard  - clock-names
138e3dcb725SMaxime Ripard  - gpio-controller
139e3dcb725SMaxime Ripard
140e3dcb725SMaxime RipardallOf:
141e3dcb725SMaxime Ripard  # FIXME: We should have the pin bank supplies here, but not a lot of
142e3dcb725SMaxime Ripard  # boards are defining it at the moment so it would generate a lot of
143e3dcb725SMaxime Ripard  # warnings.
144e3dcb725SMaxime Ripard
14549cd1dd1SRob Herring  - $ref: pinctrl.yaml#
146e3dcb725SMaxime Ripard  - if:
147ee84131bSAndre Przywara      not:
148ee84131bSAndre Przywara        properties:
149ee84131bSAndre Przywara          compatible:
150ee84131bSAndre Przywara            enum:
151ee84131bSAndre Przywara              - allwinner,sun50i-h616-r-pinctrl
152ee84131bSAndre Przywara
153ee84131bSAndre Przywara    then:
154ee84131bSAndre Przywara      required:
155ee84131bSAndre Przywara        - "#interrupt-cells"
156ee84131bSAndre Przywara        - interrupts
157ee84131bSAndre Przywara        - interrupt-controller
158ee84131bSAndre Przywara
159ee84131bSAndre Przywara  - if:
160e3dcb725SMaxime Ripard      properties:
161e3dcb725SMaxime Ripard        compatible:
162e3dcb725SMaxime Ripard          enum:
163fdca7cb9SAndre Przywara            - allwinner,sun50i-h616-pinctrl
164fdca7cb9SAndre Przywara
165fdca7cb9SAndre Przywara    then:
166fdca7cb9SAndre Przywara      properties:
167fdca7cb9SAndre Przywara        interrupts:
168fdca7cb9SAndre Przywara          minItems: 8
169fdca7cb9SAndre Przywara
170fdca7cb9SAndre Przywara  - if:
171fdca7cb9SAndre Przywara      properties:
172fdca7cb9SAndre Przywara        compatible:
173fdca7cb9SAndre Przywara          enum:
1745e842dc2SYangtao Li            - allwinner,sun50i-a100-pinctrl
1755e842dc2SYangtao Li
1765e842dc2SYangtao Li    then:
1775e842dc2SYangtao Li      properties:
1785e842dc2SYangtao Li        interrupts:
1795e842dc2SYangtao Li          minItems: 7
1805e842dc2SYangtao Li          maxItems: 7
1815e842dc2SYangtao Li
1825e842dc2SYangtao Li  - if:
1835e842dc2SYangtao Li      properties:
1845e842dc2SYangtao Li        compatible:
1855e842dc2SYangtao Li          enum:
186329d32a9SSamuel Holland            - allwinner,sun20i-d1-pinctrl
187329d32a9SSamuel Holland
188329d32a9SSamuel Holland    then:
189329d32a9SSamuel Holland      properties:
190329d32a9SSamuel Holland        interrupts:
191329d32a9SSamuel Holland          minItems: 6
192329d32a9SSamuel Holland          maxItems: 6
193329d32a9SSamuel Holland
194329d32a9SSamuel Holland  - if:
195329d32a9SSamuel Holland      properties:
196329d32a9SSamuel Holland        compatible:
197329d32a9SSamuel Holland          enum:
198e3dcb725SMaxime Ripard            - allwinner,sun9i-a80-pinctrl
199e3dcb725SMaxime Ripard
200e3dcb725SMaxime Ripard    then:
201e3dcb725SMaxime Ripard      properties:
202e3dcb725SMaxime Ripard        interrupts:
203e3dcb725SMaxime Ripard          minItems: 5
204e3dcb725SMaxime Ripard          maxItems: 5
205e3dcb725SMaxime Ripard
20696bef667SYangtao Li  - if:
207e3dcb725SMaxime Ripard      properties:
208e3dcb725SMaxime Ripard        compatible:
209e3dcb725SMaxime Ripard          enum:
210e3dcb725SMaxime Ripard            - allwinner,sun6i-a31-pinctrl
211e3dcb725SMaxime Ripard            - allwinner,sun6i-a31s-pinctrl
212e3dcb725SMaxime Ripard            - allwinner,sun50i-h6-pinctrl
213e3dcb725SMaxime Ripard
214e3dcb725SMaxime Ripard    then:
215e3dcb725SMaxime Ripard      properties:
216e3dcb725SMaxime Ripard        interrupts:
217e3dcb725SMaxime Ripard          minItems: 4
218e3dcb725SMaxime Ripard          maxItems: 4
219e3dcb725SMaxime Ripard
22096bef667SYangtao Li  - if:
221e3dcb725SMaxime Ripard      properties:
222e3dcb725SMaxime Ripard        compatible:
223e3dcb725SMaxime Ripard          enum:
224e3dcb725SMaxime Ripard            - allwinner,sun8i-a23-pinctrl
225e3dcb725SMaxime Ripard            - allwinner,sun8i-a83t-pinctrl
226e3dcb725SMaxime Ripard            - allwinner,sun50i-a64-pinctrl
227e3dcb725SMaxime Ripard            - allwinner,sun50i-h5-pinctrl
228e3dcb725SMaxime Ripard            - allwinner,suniv-f1c100s-pinctrl
229e3dcb725SMaxime Ripard
230e3dcb725SMaxime Ripard    then:
231e3dcb725SMaxime Ripard      properties:
232e3dcb725SMaxime Ripard        interrupts:
233e3dcb725SMaxime Ripard          minItems: 3
234e3dcb725SMaxime Ripard          maxItems: 3
235e3dcb725SMaxime Ripard
23696bef667SYangtao Li  - if:
237e3dcb725SMaxime Ripard      properties:
238e3dcb725SMaxime Ripard        compatible:
239e3dcb725SMaxime Ripard          enum:
240e3dcb725SMaxime Ripard            - allwinner,sun6i-a31-r-pinctrl
241e3dcb725SMaxime Ripard            - allwinner,sun8i-a33-pinctrl
242e3dcb725SMaxime Ripard            - allwinner,sun8i-h3-pinctrl
243e3dcb725SMaxime Ripard            - allwinner,sun8i-v3-pinctrl
244e3dcb725SMaxime Ripard            - allwinner,sun8i-v3s-pinctrl
245e3dcb725SMaxime Ripard            - allwinner,sun9i-a80-r-pinctrl
246e3dcb725SMaxime Ripard            - allwinner,sun50i-h6-r-pinctrl
247e3dcb725SMaxime Ripard
248e3dcb725SMaxime Ripard    then:
249e3dcb725SMaxime Ripard      properties:
250e3dcb725SMaxime Ripard        interrupts:
251e3dcb725SMaxime Ripard          minItems: 2
252e3dcb725SMaxime Ripard          maxItems: 2
253e3dcb725SMaxime Ripard
25496bef667SYangtao Li  - if:
25596bef667SYangtao Li      properties:
25696bef667SYangtao Li        compatible:
25796bef667SYangtao Li          enum:
25896bef667SYangtao Li            - allwinner,sun4i-a10-pinctrl
25996bef667SYangtao Li            - allwinner,sun5i-a10s-pinctrl
26096bef667SYangtao Li            - allwinner,sun5i-a13-pinctrl
26196bef667SYangtao Li            - allwinner,sun7i-a20-pinctrl
26296bef667SYangtao Li            - allwinner,sun8i-a23-r-pinctrl
26396bef667SYangtao Li            - allwinner,sun8i-a83t-r-pinctrl
26496bef667SYangtao Li            - allwinner,sun8i-h3-r-pinctrl
26596bef667SYangtao Li            - allwinner,sun8i-r40-pinctrl
26696bef667SYangtao Li            - allwinner,sun50i-a64-r-pinctrl
2675e842dc2SYangtao Li            - allwinner,sun50i-a100-r-pinctrl
26896bef667SYangtao Li            - nextthing,gr8-pinctrl
26996bef667SYangtao Li
27096bef667SYangtao Li    then:
271e3dcb725SMaxime Ripard      properties:
272e3dcb725SMaxime Ripard        interrupts:
273e3dcb725SMaxime Ripard          minItems: 1
274e3dcb725SMaxime Ripard          maxItems: 1
275e3dcb725SMaxime Ripard
276e3dcb725SMaxime RipardadditionalProperties: false
277e3dcb725SMaxime Ripard
278e3dcb725SMaxime Ripardexamples:
279e3dcb725SMaxime Ripard  - |
280e3dcb725SMaxime Ripard    #include <dt-bindings/clock/sun5i-ccu.h>
281e3dcb725SMaxime Ripard
282e3dcb725SMaxime Ripard    pio: pinctrl@1c20800 {
283e3dcb725SMaxime Ripard        compatible = "allwinner,sun5i-a13-pinctrl";
284e3dcb725SMaxime Ripard        reg = <0x01c20800 0x400>;
285e3dcb725SMaxime Ripard        interrupts = <28>;
286e3dcb725SMaxime Ripard        clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
287e3dcb725SMaxime Ripard        clock-names = "apb", "hosc", "losc";
288e3dcb725SMaxime Ripard        gpio-controller;
289e3dcb725SMaxime Ripard        interrupt-controller;
290e3dcb725SMaxime Ripard        #interrupt-cells = <3>;
291e3dcb725SMaxime Ripard        #gpio-cells = <3>;
292e3dcb725SMaxime Ripard
293e3dcb725SMaxime Ripard        uart1_pe_pins: uart1-pe-pins {
294e3dcb725SMaxime Ripard            pins = "PE10", "PE11";
295e3dcb725SMaxime Ripard            function = "uart1";
296e3dcb725SMaxime Ripard        };
297e3dcb725SMaxime Ripard
298e3dcb725SMaxime Ripard        uart1_pg_pins: uart1-pg-pins {
299e3dcb725SMaxime Ripard            pins = "PG3", "PG4";
300e3dcb725SMaxime Ripard            function = "uart1";
301e3dcb725SMaxime Ripard        };
302e3dcb725SMaxime Ripard    };
303