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
51e3dcb725SMaxime Ripard      - allwinner,sun50i-h5-pinctrl
52e3dcb725SMaxime Ripard      - allwinner,sun50i-h6-pinctrl
53e3dcb725SMaxime Ripard      - allwinner,sun50i-h6-r-pinctrl
54e3dcb725SMaxime Ripard      - allwinner,suniv-f1c100s-pinctrl
55e3dcb725SMaxime Ripard      - nextthing,gr8-pinctrl
56e3dcb725SMaxime Ripard
57e3dcb725SMaxime Ripard  reg:
58e3dcb725SMaxime Ripard    maxItems: 1
59e3dcb725SMaxime Ripard
60e3dcb725SMaxime Ripard  interrupts:
61e3dcb725SMaxime Ripard    minItems: 1
62e3dcb725SMaxime Ripard    maxItems: 5
63e3dcb725SMaxime Ripard    description:
64e3dcb725SMaxime Ripard      One interrupt per external interrupt bank supported on the
65e3dcb725SMaxime Ripard      controller, sorted by bank number ascending order.
66e3dcb725SMaxime Ripard
67e3dcb725SMaxime Ripard  clocks:
68e3dcb725SMaxime Ripard    items:
69e3dcb725SMaxime Ripard      - description: Bus Clock
70e3dcb725SMaxime Ripard      - description: High Frequency Oscillator
71e3dcb725SMaxime Ripard      - description: Low Frequency Oscillator
72e3dcb725SMaxime Ripard
73e3dcb725SMaxime Ripard  clock-names:
74e3dcb725SMaxime Ripard    items:
75e3dcb725SMaxime Ripard      - const: apb
76e3dcb725SMaxime Ripard      - const: hosc
77e3dcb725SMaxime Ripard      - const: losc
78e3dcb725SMaxime Ripard
79e3dcb725SMaxime Ripard  resets:
80e3dcb725SMaxime Ripard    maxItems: 1
81e3dcb725SMaxime Ripard
82e3dcb725SMaxime Ripard  gpio-controller: true
83e3dcb725SMaxime Ripard  interrupt-controller: true
84e3dcb725SMaxime Ripard  gpio-line-names: true
85e3dcb725SMaxime Ripard
86e3dcb725SMaxime Ripard  input-debounce:
87e3dcb725SMaxime Ripard    allOf:
88e3dcb725SMaxime Ripard      - $ref: /schemas/types.yaml#/definitions/uint32-array
89e3dcb725SMaxime Ripard      - minItems: 1
90e3dcb725SMaxime Ripard        maxItems: 5
91e3dcb725SMaxime Ripard    description:
92e3dcb725SMaxime Ripard      Debouncing periods in microseconds, one period per interrupt
93e3dcb725SMaxime Ripard      bank found in the controller
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:
118e3dcb725SMaxime Ripard        allOf:
119e3dcb725SMaxime Ripard          - $ref: /schemas/types.yaml#/definitions/uint32
120e3dcb725SMaxime Ripard          - 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:
152e3dcb725SMaxime Ripard            - allwinner,sun9i-a80-pinctrl
153e3dcb725SMaxime Ripard
154e3dcb725SMaxime Ripard    then:
155e3dcb725SMaxime Ripard      properties:
156e3dcb725SMaxime Ripard        interrupts:
157e3dcb725SMaxime Ripard          minItems: 5
158e3dcb725SMaxime Ripard          maxItems: 5
159e3dcb725SMaxime Ripard
160e3dcb725SMaxime Ripard    else:
161e3dcb725SMaxime Ripard      if:
162e3dcb725SMaxime Ripard        properties:
163e3dcb725SMaxime Ripard          compatible:
164e3dcb725SMaxime Ripard            enum:
165e3dcb725SMaxime Ripard              - allwinner,sun6i-a31-pinctrl
166e3dcb725SMaxime Ripard              - allwinner,sun6i-a31s-pinctrl
167e3dcb725SMaxime Ripard              - allwinner,sun50i-h6-pinctrl
168e3dcb725SMaxime Ripard
169e3dcb725SMaxime Ripard      then:
170e3dcb725SMaxime Ripard        properties:
171e3dcb725SMaxime Ripard          interrupts:
172e3dcb725SMaxime Ripard            minItems: 4
173e3dcb725SMaxime Ripard            maxItems: 4
174e3dcb725SMaxime Ripard
175e3dcb725SMaxime Ripard      else:
176e3dcb725SMaxime Ripard        if:
177e3dcb725SMaxime Ripard          properties:
178e3dcb725SMaxime Ripard            compatible:
179e3dcb725SMaxime Ripard              enum:
180e3dcb725SMaxime Ripard                - allwinner,sun8i-a23-pinctrl
181e3dcb725SMaxime Ripard                - allwinner,sun8i-a83t-pinctrl
182e3dcb725SMaxime Ripard                - allwinner,sun50i-a64-pinctrl
183e3dcb725SMaxime Ripard                - allwinner,sun50i-h5-pinctrl
184e3dcb725SMaxime Ripard                - allwinner,suniv-f1c100s-pinctrl
185e3dcb725SMaxime Ripard
186e3dcb725SMaxime Ripard        then:
187e3dcb725SMaxime Ripard          properties:
188e3dcb725SMaxime Ripard            interrupts:
189e3dcb725SMaxime Ripard              minItems: 3
190e3dcb725SMaxime Ripard              maxItems: 3
191e3dcb725SMaxime Ripard
192e3dcb725SMaxime Ripard        else:
193e3dcb725SMaxime Ripard          if:
194e3dcb725SMaxime Ripard            properties:
195e3dcb725SMaxime Ripard              compatible:
196e3dcb725SMaxime Ripard                enum:
197e3dcb725SMaxime Ripard                  - allwinner,sun6i-a31-r-pinctrl
198e3dcb725SMaxime Ripard                  - allwinner,sun8i-a33-pinctrl
199e3dcb725SMaxime Ripard                  - allwinner,sun8i-h3-pinctrl
200e3dcb725SMaxime Ripard                  - allwinner,sun8i-v3-pinctrl
201e3dcb725SMaxime Ripard                  - allwinner,sun8i-v3s-pinctrl
202e3dcb725SMaxime Ripard                  - allwinner,sun9i-a80-r-pinctrl
203e3dcb725SMaxime Ripard                  - allwinner,sun50i-h6-r-pinctrl
204e3dcb725SMaxime Ripard
205e3dcb725SMaxime Ripard          then:
206e3dcb725SMaxime Ripard            properties:
207e3dcb725SMaxime Ripard              interrupts:
208e3dcb725SMaxime Ripard                minItems: 2
209e3dcb725SMaxime Ripard                maxItems: 2
210e3dcb725SMaxime Ripard
211e3dcb725SMaxime Ripard          else:
212e3dcb725SMaxime Ripard            properties:
213e3dcb725SMaxime Ripard              interrupts:
214e3dcb725SMaxime Ripard                minItems: 1
215e3dcb725SMaxime Ripard                maxItems: 1
216e3dcb725SMaxime Ripard
217e3dcb725SMaxime RipardadditionalProperties: false
218e3dcb725SMaxime Ripard
219e3dcb725SMaxime Ripardexamples:
220e3dcb725SMaxime Ripard  - |
221e3dcb725SMaxime Ripard    #include <dt-bindings/clock/sun5i-ccu.h>
222e3dcb725SMaxime Ripard
223e3dcb725SMaxime Ripard    pio: pinctrl@1c20800 {
224e3dcb725SMaxime Ripard        compatible = "allwinner,sun5i-a13-pinctrl";
225e3dcb725SMaxime Ripard        reg = <0x01c20800 0x400>;
226e3dcb725SMaxime Ripard        interrupts = <28>;
227e3dcb725SMaxime Ripard        clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
228e3dcb725SMaxime Ripard        clock-names = "apb", "hosc", "losc";
229e3dcb725SMaxime Ripard        gpio-controller;
230e3dcb725SMaxime Ripard        interrupt-controller;
231e3dcb725SMaxime Ripard        #interrupt-cells = <3>;
232e3dcb725SMaxime Ripard        #gpio-cells = <3>;
233e3dcb725SMaxime Ripard
234e3dcb725SMaxime Ripard        uart1_pe_pins: uart1-pe-pins {
235e3dcb725SMaxime Ripard            pins = "PE10", "PE11";
236e3dcb725SMaxime Ripard            function = "uart1";
237e3dcb725SMaxime Ripard        };
238e3dcb725SMaxime Ripard
239e3dcb725SMaxime Ripard        uart1_pg_pins: uart1-pg-pins {
240e3dcb725SMaxime Ripard            pins = "PG3", "PG4";
241e3dcb725SMaxime Ripard            function = "uart1";
242e3dcb725SMaxime Ripard        };
243e3dcb725SMaxime Ripard    };
244