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
56fdca7cb9SAndre Przywara      - allwinner,sun50i-h616-pinctrl
57fdca7cb9SAndre 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
66fdca7cb9SAndre 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  gpio-controller: true
84e3dcb725SMaxime Ripard  interrupt-controller: true
85e3dcb725SMaxime Ripard  gpio-line-names: true
86e3dcb725SMaxime Ripard
87e3dcb725SMaxime Ripard  input-debounce:
88e3dcb725SMaxime Ripard    description:
89e3dcb725SMaxime Ripard      Debouncing periods in microseconds, one period per interrupt
90e3dcb725SMaxime Ripard      bank found in the controller
913d21a460SRob Herring    $ref: /schemas/types.yaml#/definitions/uint32-array
923d21a460SRob Herring    minItems: 1
93fdca7cb9SAndre Przywara    maxItems: 8
94e3dcb725SMaxime Ripard
95e3dcb725SMaxime RipardpatternProperties:
96e3dcb725SMaxime Ripard  # It's pretty scary, but the basic idea is that:
97e3dcb725SMaxime Ripard  #   - One node name can start with either s- or r- for PRCM nodes,
98e3dcb725SMaxime Ripard  #   - Then, the name itself can be any repetition of <string>- (to
99e3dcb725SMaxime Ripard  #     accomodate with nodes like uart4-rts-cts-pins), where each
100e3dcb725SMaxime Ripard  #     string can be either starting with 'p' but in a string longer
101e3dcb725SMaxime Ripard  #     than 3, or something that doesn't start with 'p',
102e3dcb725SMaxime Ripard  #   - Then, the bank name is optional and will be between pa and pg,
103e3dcb725SMaxime Ripard  #     pl or pm. Some pins groups that have several options will have
104e3dcb725SMaxime Ripard  #     the pin numbers then,
105e3dcb725SMaxime Ripard  #   - Finally, the name will end with either -pin or pins.
106e3dcb725SMaxime Ripard
107e3dcb725SMaxime Ripard  "^([rs]-)?(([a-z0-9]{3,}|[a-oq-z][a-z0-9]*?)?-)+?(p[a-ilm][0-9]*?-)??pins?$":
108e3dcb725SMaxime Ripard    type: object
109e3dcb725SMaxime Ripard
110e3dcb725SMaxime Ripard    properties:
111e3dcb725SMaxime Ripard      pins: true
112e3dcb725SMaxime Ripard      function: true
113e3dcb725SMaxime Ripard      bias-disable: true
114e3dcb725SMaxime Ripard      bias-pull-up: true
115e3dcb725SMaxime Ripard      bias-pull-down: true
116e3dcb725SMaxime Ripard
117e3dcb725SMaxime Ripard      drive-strength:
1183d21a460SRob Herring        $ref: /schemas/types.yaml#/definitions/uint32
1193d21a460SRob Herring        enum: [10, 20, 30, 40]
120e3dcb725SMaxime Ripard
121e3dcb725SMaxime Ripard    required:
122e3dcb725SMaxime Ripard      - pins
123e3dcb725SMaxime Ripard      - function
124e3dcb725SMaxime Ripard
125e3dcb725SMaxime Ripard    additionalProperties: false
126e3dcb725SMaxime Ripard
127e3dcb725SMaxime Ripard  "^vcc-p[a-hlm]-supply$":
128e3dcb725SMaxime Ripard    description:
129e3dcb725SMaxime Ripard      Power supplies for pin banks.
130e3dcb725SMaxime Ripard
131e3dcb725SMaxime Ripardrequired:
132e3dcb725SMaxime Ripard  - "#gpio-cells"
133e3dcb725SMaxime Ripard  - compatible
134e3dcb725SMaxime Ripard  - reg
135e3dcb725SMaxime Ripard  - clocks
136e3dcb725SMaxime Ripard  - clock-names
137e3dcb725SMaxime Ripard  - gpio-controller
138e3dcb725SMaxime Ripard
139e3dcb725SMaxime RipardallOf:
140e3dcb725SMaxime Ripard  # FIXME: We should have the pin bank supplies here, but not a lot of
141e3dcb725SMaxime Ripard  # boards are defining it at the moment so it would generate a lot of
142e3dcb725SMaxime Ripard  # warnings.
143e3dcb725SMaxime Ripard
144c09acbc4SRafał Miłecki  - $ref: "pinctrl.yaml#"
145e3dcb725SMaxime Ripard  - if:
146*ee84131bSAndre Przywara      not:
147*ee84131bSAndre Przywara        properties:
148*ee84131bSAndre Przywara          compatible:
149*ee84131bSAndre Przywara            enum:
150*ee84131bSAndre Przywara              - allwinner,sun50i-h616-r-pinctrl
151*ee84131bSAndre Przywara
152*ee84131bSAndre Przywara    then:
153*ee84131bSAndre Przywara      required:
154*ee84131bSAndre Przywara        - "#interrupt-cells"
155*ee84131bSAndre Przywara        - interrupts
156*ee84131bSAndre Przywara        - interrupt-controller
157*ee84131bSAndre Przywara
158*ee84131bSAndre Przywara  - if:
159e3dcb725SMaxime Ripard      properties:
160e3dcb725SMaxime Ripard        compatible:
161e3dcb725SMaxime Ripard          enum:
162fdca7cb9SAndre Przywara            - allwinner,sun50i-h616-pinctrl
163fdca7cb9SAndre Przywara
164fdca7cb9SAndre Przywara    then:
165fdca7cb9SAndre Przywara      properties:
166fdca7cb9SAndre Przywara        interrupts:
167fdca7cb9SAndre Przywara          minItems: 8
168fdca7cb9SAndre Przywara
169fdca7cb9SAndre Przywara  - if:
170fdca7cb9SAndre Przywara      properties:
171fdca7cb9SAndre Przywara        compatible:
172fdca7cb9SAndre Przywara          enum:
1735e842dc2SYangtao Li            - allwinner,sun50i-a100-pinctrl
1745e842dc2SYangtao Li
1755e842dc2SYangtao Li    then:
1765e842dc2SYangtao Li      properties:
1775e842dc2SYangtao Li        interrupts:
1785e842dc2SYangtao Li          minItems: 7
1795e842dc2SYangtao Li          maxItems: 7
1805e842dc2SYangtao Li
1815e842dc2SYangtao Li  - if:
1825e842dc2SYangtao Li      properties:
1835e842dc2SYangtao Li        compatible:
1845e842dc2SYangtao Li          enum:
185e3dcb725SMaxime Ripard            - allwinner,sun9i-a80-pinctrl
186e3dcb725SMaxime Ripard
187e3dcb725SMaxime Ripard    then:
188e3dcb725SMaxime Ripard      properties:
189e3dcb725SMaxime Ripard        interrupts:
190e3dcb725SMaxime Ripard          minItems: 5
191e3dcb725SMaxime Ripard          maxItems: 5
192e3dcb725SMaxime Ripard
19396bef667SYangtao Li  - if:
194e3dcb725SMaxime Ripard      properties:
195e3dcb725SMaxime Ripard        compatible:
196e3dcb725SMaxime Ripard          enum:
197e3dcb725SMaxime Ripard            - allwinner,sun6i-a31-pinctrl
198e3dcb725SMaxime Ripard            - allwinner,sun6i-a31s-pinctrl
199e3dcb725SMaxime Ripard            - allwinner,sun50i-h6-pinctrl
200e3dcb725SMaxime Ripard
201e3dcb725SMaxime Ripard    then:
202e3dcb725SMaxime Ripard      properties:
203e3dcb725SMaxime Ripard        interrupts:
204e3dcb725SMaxime Ripard          minItems: 4
205e3dcb725SMaxime Ripard          maxItems: 4
206e3dcb725SMaxime Ripard
20796bef667SYangtao Li  - if:
208e3dcb725SMaxime Ripard      properties:
209e3dcb725SMaxime Ripard        compatible:
210e3dcb725SMaxime Ripard          enum:
211e3dcb725SMaxime Ripard            - allwinner,sun8i-a23-pinctrl
212e3dcb725SMaxime Ripard            - allwinner,sun8i-a83t-pinctrl
213e3dcb725SMaxime Ripard            - allwinner,sun50i-a64-pinctrl
214e3dcb725SMaxime Ripard            - allwinner,sun50i-h5-pinctrl
215e3dcb725SMaxime Ripard            - allwinner,suniv-f1c100s-pinctrl
216e3dcb725SMaxime Ripard
217e3dcb725SMaxime Ripard    then:
218e3dcb725SMaxime Ripard      properties:
219e3dcb725SMaxime Ripard        interrupts:
220e3dcb725SMaxime Ripard          minItems: 3
221e3dcb725SMaxime Ripard          maxItems: 3
222e3dcb725SMaxime Ripard
22396bef667SYangtao Li  - if:
224e3dcb725SMaxime Ripard      properties:
225e3dcb725SMaxime Ripard        compatible:
226e3dcb725SMaxime Ripard          enum:
227e3dcb725SMaxime Ripard            - allwinner,sun6i-a31-r-pinctrl
228e3dcb725SMaxime Ripard            - allwinner,sun8i-a33-pinctrl
229e3dcb725SMaxime Ripard            - allwinner,sun8i-h3-pinctrl
230e3dcb725SMaxime Ripard            - allwinner,sun8i-v3-pinctrl
231e3dcb725SMaxime Ripard            - allwinner,sun8i-v3s-pinctrl
232e3dcb725SMaxime Ripard            - allwinner,sun9i-a80-r-pinctrl
233e3dcb725SMaxime Ripard            - allwinner,sun50i-h6-r-pinctrl
234e3dcb725SMaxime Ripard
235e3dcb725SMaxime Ripard    then:
236e3dcb725SMaxime Ripard      properties:
237e3dcb725SMaxime Ripard        interrupts:
238e3dcb725SMaxime Ripard          minItems: 2
239e3dcb725SMaxime Ripard          maxItems: 2
240e3dcb725SMaxime Ripard
24196bef667SYangtao Li  - if:
24296bef667SYangtao Li      properties:
24396bef667SYangtao Li        compatible:
24496bef667SYangtao Li          enum:
24596bef667SYangtao Li            - allwinner,sun4i-a10-pinctrl
24696bef667SYangtao Li            - allwinner,sun5i-a10s-pinctrl
24796bef667SYangtao Li            - allwinner,sun5i-a13-pinctrl
24896bef667SYangtao Li            - allwinner,sun7i-a20-pinctrl
24996bef667SYangtao Li            - allwinner,sun8i-a23-r-pinctrl
25096bef667SYangtao Li            - allwinner,sun8i-a83t-r-pinctrl
25196bef667SYangtao Li            - allwinner,sun8i-h3-r-pinctrl
25296bef667SYangtao Li            - allwinner,sun8i-r40-pinctrl
25396bef667SYangtao Li            - allwinner,sun50i-a64-r-pinctrl
2545e842dc2SYangtao Li            - allwinner,sun50i-a100-r-pinctrl
25596bef667SYangtao Li            - nextthing,gr8-pinctrl
25696bef667SYangtao Li
25796bef667SYangtao Li    then:
258e3dcb725SMaxime Ripard      properties:
259e3dcb725SMaxime Ripard        interrupts:
260e3dcb725SMaxime Ripard          minItems: 1
261e3dcb725SMaxime Ripard          maxItems: 1
262e3dcb725SMaxime Ripard
263e3dcb725SMaxime RipardadditionalProperties: false
264e3dcb725SMaxime Ripard
265e3dcb725SMaxime Ripardexamples:
266e3dcb725SMaxime Ripard  - |
267e3dcb725SMaxime Ripard    #include <dt-bindings/clock/sun5i-ccu.h>
268e3dcb725SMaxime Ripard
269e3dcb725SMaxime Ripard    pio: pinctrl@1c20800 {
270e3dcb725SMaxime Ripard        compatible = "allwinner,sun5i-a13-pinctrl";
271e3dcb725SMaxime Ripard        reg = <0x01c20800 0x400>;
272e3dcb725SMaxime Ripard        interrupts = <28>;
273e3dcb725SMaxime Ripard        clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
274e3dcb725SMaxime Ripard        clock-names = "apb", "hosc", "losc";
275e3dcb725SMaxime Ripard        gpio-controller;
276e3dcb725SMaxime Ripard        interrupt-controller;
277e3dcb725SMaxime Ripard        #interrupt-cells = <3>;
278e3dcb725SMaxime Ripard        #gpio-cells = <3>;
279e3dcb725SMaxime Ripard
280e3dcb725SMaxime Ripard        uart1_pe_pins: uart1-pe-pins {
281e3dcb725SMaxime Ripard            pins = "PE10", "PE11";
282e3dcb725SMaxime Ripard            function = "uart1";
283e3dcb725SMaxime Ripard        };
284e3dcb725SMaxime Ripard
285e3dcb725SMaxime Ripard        uart1_pg_pins: uart1-pg-pins {
286e3dcb725SMaxime Ripard            pins = "PG3", "PG4";
287e3dcb725SMaxime Ripard            function = "uart1";
288e3dcb725SMaxime Ripard        };
289e3dcb725SMaxime Ripard    };
290