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
56e3dcb725SMaxime Ripard      - allwinner,suniv-f1c100s-pinctrl
57e3dcb725SMaxime Ripard      - nextthing,gr8-pinctrl
58e3dcb725SMaxime Ripard
59e3dcb725SMaxime Ripard  reg:
60e3dcb725SMaxime Ripard    maxItems: 1
61e3dcb725SMaxime Ripard
62e3dcb725SMaxime Ripard  interrupts:
63e3dcb725SMaxime Ripard    minItems: 1
64e3dcb725SMaxime Ripard    maxItems: 5
65e3dcb725SMaxime Ripard    description:
66e3dcb725SMaxime Ripard      One interrupt per external interrupt bank supported on the
67e3dcb725SMaxime Ripard      controller, sorted by bank number ascending order.
68e3dcb725SMaxime Ripard
69e3dcb725SMaxime Ripard  clocks:
70e3dcb725SMaxime Ripard    items:
71e3dcb725SMaxime Ripard      - description: Bus Clock
72e3dcb725SMaxime Ripard      - description: High Frequency Oscillator
73e3dcb725SMaxime Ripard      - description: Low Frequency Oscillator
74e3dcb725SMaxime Ripard
75e3dcb725SMaxime Ripard  clock-names:
76e3dcb725SMaxime Ripard    items:
77e3dcb725SMaxime Ripard      - const: apb
78e3dcb725SMaxime Ripard      - const: hosc
79e3dcb725SMaxime Ripard      - const: losc
80e3dcb725SMaxime Ripard
81e3dcb725SMaxime Ripard  resets:
82e3dcb725SMaxime Ripard    maxItems: 1
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
943d21a460SRob Herring    maxItems: 5
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
100e3dcb725SMaxime Ripard  #     accomodate 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
128e3dcb725SMaxime Ripard  "^vcc-p[a-hlm]-supply$":
129e3dcb725SMaxime Ripard    description:
130e3dcb725SMaxime Ripard      Power supplies for pin banks.
131e3dcb725SMaxime Ripard
132e3dcb725SMaxime Ripardrequired:
133e3dcb725SMaxime Ripard  - "#gpio-cells"
134e3dcb725SMaxime Ripard  - "#interrupt-cells"
135e3dcb725SMaxime Ripard  - compatible
136e3dcb725SMaxime Ripard  - reg
137e3dcb725SMaxime Ripard  - interrupts
138e3dcb725SMaxime Ripard  - clocks
139e3dcb725SMaxime Ripard  - clock-names
140e3dcb725SMaxime Ripard  - gpio-controller
141e3dcb725SMaxime Ripard  - interrupt-controller
142e3dcb725SMaxime Ripard
143e3dcb725SMaxime RipardallOf:
144e3dcb725SMaxime Ripard  # FIXME: We should have the pin bank supplies here, but not a lot of
145e3dcb725SMaxime Ripard  # boards are defining it at the moment so it would generate a lot of
146e3dcb725SMaxime Ripard  # warnings.
147e3dcb725SMaxime Ripard
148e3dcb725SMaxime Ripard  - if:
149e3dcb725SMaxime Ripard      properties:
150e3dcb725SMaxime Ripard        compatible:
151e3dcb725SMaxime Ripard          enum:
1525e842dc2SYangtao Li            - allwinner,sun50i-a100-pinctrl
1535e842dc2SYangtao Li
1545e842dc2SYangtao Li    then:
1555e842dc2SYangtao Li      properties:
1565e842dc2SYangtao Li        interrupts:
1575e842dc2SYangtao Li          minItems: 7
1585e842dc2SYangtao Li          maxItems: 7
1595e842dc2SYangtao Li
1605e842dc2SYangtao Li  - if:
1615e842dc2SYangtao Li      properties:
1625e842dc2SYangtao Li        compatible:
1635e842dc2SYangtao Li          enum:
164e3dcb725SMaxime Ripard            - allwinner,sun9i-a80-pinctrl
165e3dcb725SMaxime Ripard
166e3dcb725SMaxime Ripard    then:
167e3dcb725SMaxime Ripard      properties:
168e3dcb725SMaxime Ripard        interrupts:
169e3dcb725SMaxime Ripard          minItems: 5
170e3dcb725SMaxime Ripard          maxItems: 5
171e3dcb725SMaxime Ripard
17296bef667SYangtao Li  - if:
173e3dcb725SMaxime Ripard      properties:
174e3dcb725SMaxime Ripard        compatible:
175e3dcb725SMaxime Ripard          enum:
176e3dcb725SMaxime Ripard            - allwinner,sun6i-a31-pinctrl
177e3dcb725SMaxime Ripard            - allwinner,sun6i-a31s-pinctrl
178e3dcb725SMaxime Ripard            - allwinner,sun50i-h6-pinctrl
179e3dcb725SMaxime Ripard
180e3dcb725SMaxime Ripard    then:
181e3dcb725SMaxime Ripard      properties:
182e3dcb725SMaxime Ripard        interrupts:
183e3dcb725SMaxime Ripard          minItems: 4
184e3dcb725SMaxime Ripard          maxItems: 4
185e3dcb725SMaxime Ripard
18696bef667SYangtao Li  - if:
187e3dcb725SMaxime Ripard      properties:
188e3dcb725SMaxime Ripard        compatible:
189e3dcb725SMaxime Ripard          enum:
190e3dcb725SMaxime Ripard            - allwinner,sun8i-a23-pinctrl
191e3dcb725SMaxime Ripard            - allwinner,sun8i-a83t-pinctrl
192e3dcb725SMaxime Ripard            - allwinner,sun50i-a64-pinctrl
193e3dcb725SMaxime Ripard            - allwinner,sun50i-h5-pinctrl
194e3dcb725SMaxime Ripard            - allwinner,suniv-f1c100s-pinctrl
195e3dcb725SMaxime Ripard
196e3dcb725SMaxime Ripard    then:
197e3dcb725SMaxime Ripard      properties:
198e3dcb725SMaxime Ripard        interrupts:
199e3dcb725SMaxime Ripard          minItems: 3
200e3dcb725SMaxime Ripard          maxItems: 3
201e3dcb725SMaxime Ripard
20296bef667SYangtao Li  - if:
203e3dcb725SMaxime Ripard      properties:
204e3dcb725SMaxime Ripard        compatible:
205e3dcb725SMaxime Ripard          enum:
206e3dcb725SMaxime Ripard            - allwinner,sun6i-a31-r-pinctrl
207e3dcb725SMaxime Ripard            - allwinner,sun8i-a33-pinctrl
208e3dcb725SMaxime Ripard            - allwinner,sun8i-h3-pinctrl
209e3dcb725SMaxime Ripard            - allwinner,sun8i-v3-pinctrl
210e3dcb725SMaxime Ripard            - allwinner,sun8i-v3s-pinctrl
211e3dcb725SMaxime Ripard            - allwinner,sun9i-a80-r-pinctrl
212e3dcb725SMaxime Ripard            - allwinner,sun50i-h6-r-pinctrl
213e3dcb725SMaxime Ripard
214e3dcb725SMaxime Ripard    then:
215e3dcb725SMaxime Ripard      properties:
216e3dcb725SMaxime Ripard        interrupts:
217e3dcb725SMaxime Ripard          minItems: 2
218e3dcb725SMaxime Ripard          maxItems: 2
219e3dcb725SMaxime Ripard
22096bef667SYangtao Li  - if:
22196bef667SYangtao Li      properties:
22296bef667SYangtao Li        compatible:
22396bef667SYangtao Li          enum:
22496bef667SYangtao Li            - allwinner,sun4i-a10-pinctrl
22596bef667SYangtao Li            - allwinner,sun5i-a10s-pinctrl
22696bef667SYangtao Li            - allwinner,sun5i-a13-pinctrl
22796bef667SYangtao Li            - allwinner,sun7i-a20-pinctrl
22896bef667SYangtao Li            - allwinner,sun8i-a23-r-pinctrl
22996bef667SYangtao Li            - allwinner,sun8i-a83t-r-pinctrl
23096bef667SYangtao Li            - allwinner,sun8i-h3-r-pinctrl
23196bef667SYangtao Li            - allwinner,sun8i-r40-pinctrl
23296bef667SYangtao Li            - allwinner,sun50i-a64-r-pinctrl
2335e842dc2SYangtao Li            - allwinner,sun50i-a100-r-pinctrl
23496bef667SYangtao Li            - nextthing,gr8-pinctrl
23596bef667SYangtao Li
23696bef667SYangtao Li    then:
237e3dcb725SMaxime Ripard      properties:
238e3dcb725SMaxime Ripard        interrupts:
239e3dcb725SMaxime Ripard          minItems: 1
240e3dcb725SMaxime Ripard          maxItems: 1
241e3dcb725SMaxime Ripard
242e3dcb725SMaxime RipardadditionalProperties: false
243e3dcb725SMaxime Ripard
244e3dcb725SMaxime Ripardexamples:
245e3dcb725SMaxime Ripard  - |
246e3dcb725SMaxime Ripard    #include <dt-bindings/clock/sun5i-ccu.h>
247e3dcb725SMaxime Ripard
248e3dcb725SMaxime Ripard    pio: pinctrl@1c20800 {
249e3dcb725SMaxime Ripard        compatible = "allwinner,sun5i-a13-pinctrl";
250e3dcb725SMaxime Ripard        reg = <0x01c20800 0x400>;
251e3dcb725SMaxime Ripard        interrupts = <28>;
252e3dcb725SMaxime Ripard        clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
253e3dcb725SMaxime Ripard        clock-names = "apb", "hosc", "losc";
254e3dcb725SMaxime Ripard        gpio-controller;
255e3dcb725SMaxime Ripard        interrupt-controller;
256e3dcb725SMaxime Ripard        #interrupt-cells = <3>;
257e3dcb725SMaxime Ripard        #gpio-cells = <3>;
258e3dcb725SMaxime Ripard
259e3dcb725SMaxime Ripard        uart1_pe_pins: uart1-pe-pins {
260e3dcb725SMaxime Ripard            pins = "PE10", "PE11";
261e3dcb725SMaxime Ripard            function = "uart1";
262e3dcb725SMaxime Ripard        };
263e3dcb725SMaxime Ripard
264e3dcb725SMaxime Ripard        uart1_pg_pins: uart1-pg-pins {
265e3dcb725SMaxime Ripard            pins = "PG3", "PG4";
266e3dcb725SMaxime Ripard            function = "uart1";
267e3dcb725SMaxime Ripard        };
268e3dcb725SMaxime Ripard    };
269