xref: /freebsd/sys/contrib/device-tree/Bindings/pinctrl/allwinner,sun4i-a10-pinctrl.yaml (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0
2*c66ec88fSEmmanuel Vadot%YAML 1.2
3*c66ec88fSEmmanuel Vadot---
4*c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/pinctrl/allwinner,sun4i-a10-pinctrl.yaml#
5*c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*c66ec88fSEmmanuel Vadot
7*c66ec88fSEmmanuel Vadottitle: Allwinner A10 Pin Controller Device Tree Bindings
8*c66ec88fSEmmanuel Vadot
9*c66ec88fSEmmanuel Vadotmaintainers:
10*c66ec88fSEmmanuel Vadot  - Chen-Yu Tsai <wens@csie.org>
11*c66ec88fSEmmanuel Vadot  - Maxime Ripard <mripard@kernel.org>
12*c66ec88fSEmmanuel Vadot
13*c66ec88fSEmmanuel Vadotproperties:
14*c66ec88fSEmmanuel Vadot  "#gpio-cells":
15*c66ec88fSEmmanuel Vadot    const: 3
16*c66ec88fSEmmanuel Vadot    description:
17*c66ec88fSEmmanuel Vadot      GPIO consumers must use three arguments, first the number of the
18*c66ec88fSEmmanuel Vadot      bank, then the pin number inside that bank, and finally the GPIO
19*c66ec88fSEmmanuel Vadot      flags.
20*c66ec88fSEmmanuel Vadot
21*c66ec88fSEmmanuel Vadot  "#interrupt-cells":
22*c66ec88fSEmmanuel Vadot    const: 3
23*c66ec88fSEmmanuel Vadot    description:
24*c66ec88fSEmmanuel Vadot      Interrupts consumers must use three arguments, first the number
25*c66ec88fSEmmanuel Vadot      of the bank, then the pin number inside that bank, and finally
26*c66ec88fSEmmanuel Vadot      the interrupts flags.
27*c66ec88fSEmmanuel Vadot
28*c66ec88fSEmmanuel Vadot  compatible:
29*c66ec88fSEmmanuel Vadot    enum:
30*c66ec88fSEmmanuel Vadot      - allwinner,sun4i-a10-pinctrl
31*c66ec88fSEmmanuel Vadot      - allwinner,sun5i-a10s-pinctrl
32*c66ec88fSEmmanuel Vadot      - allwinner,sun5i-a13-pinctrl
33*c66ec88fSEmmanuel Vadot      - allwinner,sun6i-a31-pinctrl
34*c66ec88fSEmmanuel Vadot      - allwinner,sun6i-a31-r-pinctrl
35*c66ec88fSEmmanuel Vadot      - allwinner,sun6i-a31s-pinctrl
36*c66ec88fSEmmanuel Vadot      - allwinner,sun7i-a20-pinctrl
37*c66ec88fSEmmanuel Vadot      - allwinner,sun8i-a23-pinctrl
38*c66ec88fSEmmanuel Vadot      - allwinner,sun8i-a23-r-pinctrl
39*c66ec88fSEmmanuel Vadot      - allwinner,sun8i-a33-pinctrl
40*c66ec88fSEmmanuel Vadot      - allwinner,sun8i-a83t-pinctrl
41*c66ec88fSEmmanuel Vadot      - allwinner,sun8i-a83t-r-pinctrl
42*c66ec88fSEmmanuel Vadot      - allwinner,sun8i-h3-pinctrl
43*c66ec88fSEmmanuel Vadot      - allwinner,sun8i-h3-r-pinctrl
44*c66ec88fSEmmanuel Vadot      - allwinner,sun8i-r40-pinctrl
45*c66ec88fSEmmanuel Vadot      - allwinner,sun8i-v3-pinctrl
46*c66ec88fSEmmanuel Vadot      - allwinner,sun8i-v3s-pinctrl
47*c66ec88fSEmmanuel Vadot      - allwinner,sun9i-a80-pinctrl
48*c66ec88fSEmmanuel Vadot      - allwinner,sun9i-a80-r-pinctrl
49*c66ec88fSEmmanuel Vadot      - allwinner,sun50i-a64-pinctrl
50*c66ec88fSEmmanuel Vadot      - allwinner,sun50i-a64-r-pinctrl
51*c66ec88fSEmmanuel Vadot      - allwinner,sun50i-h5-pinctrl
52*c66ec88fSEmmanuel Vadot      - allwinner,sun50i-h6-pinctrl
53*c66ec88fSEmmanuel Vadot      - allwinner,sun50i-h6-r-pinctrl
54*c66ec88fSEmmanuel Vadot      - allwinner,suniv-f1c100s-pinctrl
55*c66ec88fSEmmanuel Vadot      - nextthing,gr8-pinctrl
56*c66ec88fSEmmanuel Vadot
57*c66ec88fSEmmanuel Vadot  reg:
58*c66ec88fSEmmanuel Vadot    maxItems: 1
59*c66ec88fSEmmanuel Vadot
60*c66ec88fSEmmanuel Vadot  interrupts:
61*c66ec88fSEmmanuel Vadot    minItems: 1
62*c66ec88fSEmmanuel Vadot    maxItems: 5
63*c66ec88fSEmmanuel Vadot    description:
64*c66ec88fSEmmanuel Vadot      One interrupt per external interrupt bank supported on the
65*c66ec88fSEmmanuel Vadot      controller, sorted by bank number ascending order.
66*c66ec88fSEmmanuel Vadot
67*c66ec88fSEmmanuel Vadot  clocks:
68*c66ec88fSEmmanuel Vadot    items:
69*c66ec88fSEmmanuel Vadot      - description: Bus Clock
70*c66ec88fSEmmanuel Vadot      - description: High Frequency Oscillator
71*c66ec88fSEmmanuel Vadot      - description: Low Frequency Oscillator
72*c66ec88fSEmmanuel Vadot
73*c66ec88fSEmmanuel Vadot  clock-names:
74*c66ec88fSEmmanuel Vadot    items:
75*c66ec88fSEmmanuel Vadot      - const: apb
76*c66ec88fSEmmanuel Vadot      - const: hosc
77*c66ec88fSEmmanuel Vadot      - const: losc
78*c66ec88fSEmmanuel Vadot
79*c66ec88fSEmmanuel Vadot  resets:
80*c66ec88fSEmmanuel Vadot    maxItems: 1
81*c66ec88fSEmmanuel Vadot
82*c66ec88fSEmmanuel Vadot  gpio-controller: true
83*c66ec88fSEmmanuel Vadot  interrupt-controller: true
84*c66ec88fSEmmanuel Vadot  gpio-line-names: true
85*c66ec88fSEmmanuel Vadot
86*c66ec88fSEmmanuel Vadot  input-debounce:
87*c66ec88fSEmmanuel Vadot    description:
88*c66ec88fSEmmanuel Vadot      Debouncing periods in microseconds, one period per interrupt
89*c66ec88fSEmmanuel Vadot      bank found in the controller
90*c66ec88fSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
91*c66ec88fSEmmanuel Vadot    minItems: 1
92*c66ec88fSEmmanuel Vadot    maxItems: 5
93*c66ec88fSEmmanuel Vadot
94*c66ec88fSEmmanuel VadotpatternProperties:
95*c66ec88fSEmmanuel Vadot  # It's pretty scary, but the basic idea is that:
96*c66ec88fSEmmanuel Vadot  #   - One node name can start with either s- or r- for PRCM nodes,
97*c66ec88fSEmmanuel Vadot  #   - Then, the name itself can be any repetition of <string>- (to
98*c66ec88fSEmmanuel Vadot  #     accomodate with nodes like uart4-rts-cts-pins), where each
99*c66ec88fSEmmanuel Vadot  #     string can be either starting with 'p' but in a string longer
100*c66ec88fSEmmanuel Vadot  #     than 3, or something that doesn't start with 'p',
101*c66ec88fSEmmanuel Vadot  #   - Then, the bank name is optional and will be between pa and pg,
102*c66ec88fSEmmanuel Vadot  #     pl or pm. Some pins groups that have several options will have
103*c66ec88fSEmmanuel Vadot  #     the pin numbers then,
104*c66ec88fSEmmanuel Vadot  #   - Finally, the name will end with either -pin or pins.
105*c66ec88fSEmmanuel Vadot
106*c66ec88fSEmmanuel Vadot  "^([rs]-)?(([a-z0-9]{3,}|[a-oq-z][a-z0-9]*?)?-)+?(p[a-ilm][0-9]*?-)??pins?$":
107*c66ec88fSEmmanuel Vadot    type: object
108*c66ec88fSEmmanuel Vadot
109*c66ec88fSEmmanuel Vadot    properties:
110*c66ec88fSEmmanuel Vadot      pins: true
111*c66ec88fSEmmanuel Vadot      function: true
112*c66ec88fSEmmanuel Vadot      bias-disable: true
113*c66ec88fSEmmanuel Vadot      bias-pull-up: true
114*c66ec88fSEmmanuel Vadot      bias-pull-down: true
115*c66ec88fSEmmanuel Vadot
116*c66ec88fSEmmanuel Vadot      drive-strength:
117*c66ec88fSEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/uint32
118*c66ec88fSEmmanuel Vadot        enum: [10, 20, 30, 40]
119*c66ec88fSEmmanuel Vadot
120*c66ec88fSEmmanuel Vadot    required:
121*c66ec88fSEmmanuel Vadot      - pins
122*c66ec88fSEmmanuel Vadot      - function
123*c66ec88fSEmmanuel Vadot
124*c66ec88fSEmmanuel Vadot    additionalProperties: false
125*c66ec88fSEmmanuel Vadot
126*c66ec88fSEmmanuel Vadot  "^vcc-p[a-hlm]-supply$":
127*c66ec88fSEmmanuel Vadot    description:
128*c66ec88fSEmmanuel Vadot      Power supplies for pin banks.
129*c66ec88fSEmmanuel Vadot
130*c66ec88fSEmmanuel Vadotrequired:
131*c66ec88fSEmmanuel Vadot  - "#gpio-cells"
132*c66ec88fSEmmanuel Vadot  - "#interrupt-cells"
133*c66ec88fSEmmanuel Vadot  - compatible
134*c66ec88fSEmmanuel Vadot  - reg
135*c66ec88fSEmmanuel Vadot  - interrupts
136*c66ec88fSEmmanuel Vadot  - clocks
137*c66ec88fSEmmanuel Vadot  - clock-names
138*c66ec88fSEmmanuel Vadot  - gpio-controller
139*c66ec88fSEmmanuel Vadot  - interrupt-controller
140*c66ec88fSEmmanuel Vadot
141*c66ec88fSEmmanuel VadotallOf:
142*c66ec88fSEmmanuel Vadot  # FIXME: We should have the pin bank supplies here, but not a lot of
143*c66ec88fSEmmanuel Vadot  # boards are defining it at the moment so it would generate a lot of
144*c66ec88fSEmmanuel Vadot  # warnings.
145*c66ec88fSEmmanuel Vadot
146*c66ec88fSEmmanuel Vadot  - if:
147*c66ec88fSEmmanuel Vadot      properties:
148*c66ec88fSEmmanuel Vadot        compatible:
149*c66ec88fSEmmanuel Vadot          enum:
150*c66ec88fSEmmanuel Vadot            - allwinner,sun9i-a80-pinctrl
151*c66ec88fSEmmanuel Vadot
152*c66ec88fSEmmanuel Vadot    then:
153*c66ec88fSEmmanuel Vadot      properties:
154*c66ec88fSEmmanuel Vadot        interrupts:
155*c66ec88fSEmmanuel Vadot          minItems: 5
156*c66ec88fSEmmanuel Vadot          maxItems: 5
157*c66ec88fSEmmanuel Vadot
158*c66ec88fSEmmanuel Vadot    else:
159*c66ec88fSEmmanuel Vadot      if:
160*c66ec88fSEmmanuel Vadot        properties:
161*c66ec88fSEmmanuel Vadot          compatible:
162*c66ec88fSEmmanuel Vadot            enum:
163*c66ec88fSEmmanuel Vadot              - allwinner,sun6i-a31-pinctrl
164*c66ec88fSEmmanuel Vadot              - allwinner,sun6i-a31s-pinctrl
165*c66ec88fSEmmanuel Vadot              - allwinner,sun50i-h6-pinctrl
166*c66ec88fSEmmanuel Vadot
167*c66ec88fSEmmanuel Vadot      then:
168*c66ec88fSEmmanuel Vadot        properties:
169*c66ec88fSEmmanuel Vadot          interrupts:
170*c66ec88fSEmmanuel Vadot            minItems: 4
171*c66ec88fSEmmanuel Vadot            maxItems: 4
172*c66ec88fSEmmanuel Vadot
173*c66ec88fSEmmanuel Vadot      else:
174*c66ec88fSEmmanuel Vadot        if:
175*c66ec88fSEmmanuel Vadot          properties:
176*c66ec88fSEmmanuel Vadot            compatible:
177*c66ec88fSEmmanuel Vadot              enum:
178*c66ec88fSEmmanuel Vadot                - allwinner,sun8i-a23-pinctrl
179*c66ec88fSEmmanuel Vadot                - allwinner,sun8i-a83t-pinctrl
180*c66ec88fSEmmanuel Vadot                - allwinner,sun50i-a64-pinctrl
181*c66ec88fSEmmanuel Vadot                - allwinner,sun50i-h5-pinctrl
182*c66ec88fSEmmanuel Vadot                - allwinner,suniv-f1c100s-pinctrl
183*c66ec88fSEmmanuel Vadot
184*c66ec88fSEmmanuel Vadot        then:
185*c66ec88fSEmmanuel Vadot          properties:
186*c66ec88fSEmmanuel Vadot            interrupts:
187*c66ec88fSEmmanuel Vadot              minItems: 3
188*c66ec88fSEmmanuel Vadot              maxItems: 3
189*c66ec88fSEmmanuel Vadot
190*c66ec88fSEmmanuel Vadot        else:
191*c66ec88fSEmmanuel Vadot          if:
192*c66ec88fSEmmanuel Vadot            properties:
193*c66ec88fSEmmanuel Vadot              compatible:
194*c66ec88fSEmmanuel Vadot                enum:
195*c66ec88fSEmmanuel Vadot                  - allwinner,sun6i-a31-r-pinctrl
196*c66ec88fSEmmanuel Vadot                  - allwinner,sun8i-a33-pinctrl
197*c66ec88fSEmmanuel Vadot                  - allwinner,sun8i-h3-pinctrl
198*c66ec88fSEmmanuel Vadot                  - allwinner,sun8i-v3-pinctrl
199*c66ec88fSEmmanuel Vadot                  - allwinner,sun8i-v3s-pinctrl
200*c66ec88fSEmmanuel Vadot                  - allwinner,sun9i-a80-r-pinctrl
201*c66ec88fSEmmanuel Vadot                  - allwinner,sun50i-h6-r-pinctrl
202*c66ec88fSEmmanuel Vadot
203*c66ec88fSEmmanuel Vadot          then:
204*c66ec88fSEmmanuel Vadot            properties:
205*c66ec88fSEmmanuel Vadot              interrupts:
206*c66ec88fSEmmanuel Vadot                minItems: 2
207*c66ec88fSEmmanuel Vadot                maxItems: 2
208*c66ec88fSEmmanuel Vadot
209*c66ec88fSEmmanuel Vadot          else:
210*c66ec88fSEmmanuel Vadot            properties:
211*c66ec88fSEmmanuel Vadot              interrupts:
212*c66ec88fSEmmanuel Vadot                minItems: 1
213*c66ec88fSEmmanuel Vadot                maxItems: 1
214*c66ec88fSEmmanuel Vadot
215*c66ec88fSEmmanuel VadotadditionalProperties: false
216*c66ec88fSEmmanuel Vadot
217*c66ec88fSEmmanuel Vadotexamples:
218*c66ec88fSEmmanuel Vadot  - |
219*c66ec88fSEmmanuel Vadot    #include <dt-bindings/clock/sun5i-ccu.h>
220*c66ec88fSEmmanuel Vadot
221*c66ec88fSEmmanuel Vadot    pio: pinctrl@1c20800 {
222*c66ec88fSEmmanuel Vadot        compatible = "allwinner,sun5i-a13-pinctrl";
223*c66ec88fSEmmanuel Vadot        reg = <0x01c20800 0x400>;
224*c66ec88fSEmmanuel Vadot        interrupts = <28>;
225*c66ec88fSEmmanuel Vadot        clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
226*c66ec88fSEmmanuel Vadot        clock-names = "apb", "hosc", "losc";
227*c66ec88fSEmmanuel Vadot        gpio-controller;
228*c66ec88fSEmmanuel Vadot        interrupt-controller;
229*c66ec88fSEmmanuel Vadot        #interrupt-cells = <3>;
230*c66ec88fSEmmanuel Vadot        #gpio-cells = <3>;
231*c66ec88fSEmmanuel Vadot
232*c66ec88fSEmmanuel Vadot        uart1_pe_pins: uart1-pe-pins {
233*c66ec88fSEmmanuel Vadot            pins = "PE10", "PE11";
234*c66ec88fSEmmanuel Vadot            function = "uart1";
235*c66ec88fSEmmanuel Vadot        };
236*c66ec88fSEmmanuel Vadot
237*c66ec88fSEmmanuel Vadot        uart1_pg_pins: uart1-pg-pins {
238*c66ec88fSEmmanuel Vadot            pins = "PG3", "PG4";
239*c66ec88fSEmmanuel Vadot            function = "uart1";
240*c66ec88fSEmmanuel Vadot        };
241*c66ec88fSEmmanuel Vadot    };
242