xref: /linux/Documentation/devicetree/bindings/pinctrl/airoha,an7563-pinctrl.yaml (revision cf9610f9116d55c5a66ef9f1faecacabd93a9322)
1*59f04460SMikhail Kshevetskiy# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*59f04460SMikhail Kshevetskiy%YAML 1.2
3*59f04460SMikhail Kshevetskiy---
4*59f04460SMikhail Kshevetskiy$id: http://devicetree.org/schemas/pinctrl/airoha,an7563-pinctrl.yaml#
5*59f04460SMikhail Kshevetskiy$schema: http://devicetree.org/meta-schemas/core.yaml#
6*59f04460SMikhail Kshevetskiy
7*59f04460SMikhail Kshevetskiytitle: Airoha AN7563 Pin Controller
8*59f04460SMikhail Kshevetskiy
9*59f04460SMikhail Kshevetskiymaintainers:
10*59f04460SMikhail Kshevetskiy  - Lorenzo Bianconi <lorenzo@kernel.org>
11*59f04460SMikhail Kshevetskiy
12*59f04460SMikhail Kshevetskiydescription:
13*59f04460SMikhail Kshevetskiy  The Airoha's AN7563 Pin controller is used to control SoC pins.
14*59f04460SMikhail Kshevetskiy
15*59f04460SMikhail Kshevetskiyproperties:
16*59f04460SMikhail Kshevetskiy  compatible:
17*59f04460SMikhail Kshevetskiy    const: airoha,an7563-pinctrl
18*59f04460SMikhail Kshevetskiy
19*59f04460SMikhail Kshevetskiy  interrupts:
20*59f04460SMikhail Kshevetskiy    maxItems: 1
21*59f04460SMikhail Kshevetskiy
22*59f04460SMikhail Kshevetskiy  gpio-controller: true
23*59f04460SMikhail Kshevetskiy
24*59f04460SMikhail Kshevetskiy  '#gpio-cells':
25*59f04460SMikhail Kshevetskiy    const: 2
26*59f04460SMikhail Kshevetskiy
27*59f04460SMikhail Kshevetskiy  gpio-ranges:
28*59f04460SMikhail Kshevetskiy    maxItems: 1
29*59f04460SMikhail Kshevetskiy
30*59f04460SMikhail Kshevetskiy  interrupt-controller: true
31*59f04460SMikhail Kshevetskiy
32*59f04460SMikhail Kshevetskiy  '#interrupt-cells':
33*59f04460SMikhail Kshevetskiy    const: 2
34*59f04460SMikhail Kshevetskiy
35*59f04460SMikhail KshevetskiyallOf:
36*59f04460SMikhail Kshevetskiy  - $ref: pinctrl.yaml#
37*59f04460SMikhail Kshevetskiy
38*59f04460SMikhail Kshevetskiyrequired:
39*59f04460SMikhail Kshevetskiy  - compatible
40*59f04460SMikhail Kshevetskiy  - interrupts
41*59f04460SMikhail Kshevetskiy  - gpio-controller
42*59f04460SMikhail Kshevetskiy  - "#gpio-cells"
43*59f04460SMikhail Kshevetskiy  - interrupt-controller
44*59f04460SMikhail Kshevetskiy  - "#interrupt-cells"
45*59f04460SMikhail Kshevetskiy
46*59f04460SMikhail KshevetskiypatternProperties:
47*59f04460SMikhail Kshevetskiy  '-pins$':
48*59f04460SMikhail Kshevetskiy    type: object
49*59f04460SMikhail Kshevetskiy
50*59f04460SMikhail Kshevetskiy    patternProperties:
51*59f04460SMikhail Kshevetskiy      '^mux(-|$)':
52*59f04460SMikhail Kshevetskiy        type: object
53*59f04460SMikhail Kshevetskiy
54*59f04460SMikhail Kshevetskiy        description:
55*59f04460SMikhail Kshevetskiy          pinmux configuration nodes.
56*59f04460SMikhail Kshevetskiy
57*59f04460SMikhail Kshevetskiy        $ref: /schemas/pinctrl/pinmux-node.yaml
58*59f04460SMikhail Kshevetskiy
59*59f04460SMikhail Kshevetskiy        properties:
60*59f04460SMikhail Kshevetskiy          function:
61*59f04460SMikhail Kshevetskiy            description:
62*59f04460SMikhail Kshevetskiy              A string containing the name of the function to mux to the group.
63*59f04460SMikhail Kshevetskiy            enum: [pon, sipo, mdio, uart, jtag, pcm, spi, pnand, gpio,
64*59f04460SMikhail Kshevetskiy                   pcie_reset, pwm, phy1_led0, phy2_led0, phy3_led0,
65*59f04460SMikhail Kshevetskiy                   phy4_led0, phy1_led1, phy2_led1, phy3_led1, phy4_led1]
66*59f04460SMikhail Kshevetskiy
67*59f04460SMikhail Kshevetskiy          groups:
68*59f04460SMikhail Kshevetskiy            description:
69*59f04460SMikhail Kshevetskiy              An array of strings. Each string contains the name of a group.
70*59f04460SMikhail Kshevetskiy
71*59f04460SMikhail Kshevetskiy        required:
72*59f04460SMikhail Kshevetskiy          - function
73*59f04460SMikhail Kshevetskiy          - groups
74*59f04460SMikhail Kshevetskiy
75*59f04460SMikhail Kshevetskiy        allOf:
76*59f04460SMikhail Kshevetskiy          - if:
77*59f04460SMikhail Kshevetskiy              properties:
78*59f04460SMikhail Kshevetskiy                function:
79*59f04460SMikhail Kshevetskiy                  const: pon
80*59f04460SMikhail Kshevetskiy            then:
81*59f04460SMikhail Kshevetskiy              properties:
82*59f04460SMikhail Kshevetskiy                groups:
83*59f04460SMikhail Kshevetskiy                  enum: [pon]
84*59f04460SMikhail Kshevetskiy          - if:
85*59f04460SMikhail Kshevetskiy              properties:
86*59f04460SMikhail Kshevetskiy                function:
87*59f04460SMikhail Kshevetskiy                  const: sipo
88*59f04460SMikhail Kshevetskiy            then:
89*59f04460SMikhail Kshevetskiy              properties:
90*59f04460SMikhail Kshevetskiy                groups:
91*59f04460SMikhail Kshevetskiy                  enum: [sipo, sipo_rclk]
92*59f04460SMikhail Kshevetskiy          - if:
93*59f04460SMikhail Kshevetskiy              properties:
94*59f04460SMikhail Kshevetskiy                function:
95*59f04460SMikhail Kshevetskiy                  const: mdio
96*59f04460SMikhail Kshevetskiy            then:
97*59f04460SMikhail Kshevetskiy              properties:
98*59f04460SMikhail Kshevetskiy                groups:
99*59f04460SMikhail Kshevetskiy                  enum: [mdio]
100*59f04460SMikhail Kshevetskiy          - if:
101*59f04460SMikhail Kshevetskiy              properties:
102*59f04460SMikhail Kshevetskiy                function:
103*59f04460SMikhail Kshevetskiy                  const: uart
104*59f04460SMikhail Kshevetskiy            then:
105*59f04460SMikhail Kshevetskiy              properties:
106*59f04460SMikhail Kshevetskiy                groups:
107*59f04460SMikhail Kshevetskiy                  items:
108*59f04460SMikhail Kshevetskiy                    enum: [hsuart, hsuart_cts_rts]
109*59f04460SMikhail Kshevetskiy                  maxItems: 2
110*59f04460SMikhail Kshevetskiy          - if:
111*59f04460SMikhail Kshevetskiy              properties:
112*59f04460SMikhail Kshevetskiy                function:
113*59f04460SMikhail Kshevetskiy                  const: jtag
114*59f04460SMikhail Kshevetskiy            then:
115*59f04460SMikhail Kshevetskiy              properties:
116*59f04460SMikhail Kshevetskiy                groups:
117*59f04460SMikhail Kshevetskiy                  enum: [jtag_udi, jtag_dfd]
118*59f04460SMikhail Kshevetskiy          - if:
119*59f04460SMikhail Kshevetskiy              properties:
120*59f04460SMikhail Kshevetskiy                function:
121*59f04460SMikhail Kshevetskiy                  const: pcm
122*59f04460SMikhail Kshevetskiy            then:
123*59f04460SMikhail Kshevetskiy              properties:
124*59f04460SMikhail Kshevetskiy                groups:
125*59f04460SMikhail Kshevetskiy                  enum: [pcm1, pcm2]
126*59f04460SMikhail Kshevetskiy          - if:
127*59f04460SMikhail Kshevetskiy              properties:
128*59f04460SMikhail Kshevetskiy                function:
129*59f04460SMikhail Kshevetskiy                  const: spi
130*59f04460SMikhail Kshevetskiy            then:
131*59f04460SMikhail Kshevetskiy              properties:
132*59f04460SMikhail Kshevetskiy                groups:
133*59f04460SMikhail Kshevetskiy                  items:
134*59f04460SMikhail Kshevetskiy                    enum: [spi_quad, spi_cs1]
135*59f04460SMikhail Kshevetskiy                  maxItems: 2
136*59f04460SMikhail Kshevetskiy          - if:
137*59f04460SMikhail Kshevetskiy              properties:
138*59f04460SMikhail Kshevetskiy                function:
139*59f04460SMikhail Kshevetskiy                  const: pnand
140*59f04460SMikhail Kshevetskiy            then:
141*59f04460SMikhail Kshevetskiy              properties:
142*59f04460SMikhail Kshevetskiy                groups:
143*59f04460SMikhail Kshevetskiy                  enum: [pnand]
144*59f04460SMikhail Kshevetskiy          - if:
145*59f04460SMikhail Kshevetskiy              properties:
146*59f04460SMikhail Kshevetskiy                function:
147*59f04460SMikhail Kshevetskiy                  const: gpio
148*59f04460SMikhail Kshevetskiy            then:
149*59f04460SMikhail Kshevetskiy              properties:
150*59f04460SMikhail Kshevetskiy                groups:
151*59f04460SMikhail Kshevetskiy                  enum: [gpio28, gpio29, gpio30, gpio31, gpio32,
152*59f04460SMikhail Kshevetskiy                         gpio33, gpio34, gpio35, gpio36, gpio37]
153*59f04460SMikhail Kshevetskiy          - if:
154*59f04460SMikhail Kshevetskiy              properties:
155*59f04460SMikhail Kshevetskiy                function:
156*59f04460SMikhail Kshevetskiy                  const: pcie_reset
157*59f04460SMikhail Kshevetskiy            then:
158*59f04460SMikhail Kshevetskiy              properties:
159*59f04460SMikhail Kshevetskiy                groups:
160*59f04460SMikhail Kshevetskiy                  enum: [pcie_reset0, pcie_reset1]
161*59f04460SMikhail Kshevetskiy          - if:
162*59f04460SMikhail Kshevetskiy              properties:
163*59f04460SMikhail Kshevetskiy                function:
164*59f04460SMikhail Kshevetskiy                  const: pwm
165*59f04460SMikhail Kshevetskiy            then:
166*59f04460SMikhail Kshevetskiy              properties:
167*59f04460SMikhail Kshevetskiy                groups:
168*59f04460SMikhail Kshevetskiy                  enum: [gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6,
169*59f04460SMikhail Kshevetskiy                         gpio7, gpio8, gpio9, gpio10, gpio11, gpio12, gpio13,
170*59f04460SMikhail Kshevetskiy                         gpio14, gpio15, gpio16, gpio17, gpio18, gpio19,
171*59f04460SMikhail Kshevetskiy                         gpio20, gpio21, gpio22, gpio23, gpio24, gpio25,
172*59f04460SMikhail Kshevetskiy                         gpio26, gpio27, gpio28, gpio29, gpio30, gpio31,
173*59f04460SMikhail Kshevetskiy                         gpio36, gpio37]
174*59f04460SMikhail Kshevetskiy          - if:
175*59f04460SMikhail Kshevetskiy              properties:
176*59f04460SMikhail Kshevetskiy                function:
177*59f04460SMikhail Kshevetskiy                  const: phy1_led0
178*59f04460SMikhail Kshevetskiy            then:
179*59f04460SMikhail Kshevetskiy              properties:
180*59f04460SMikhail Kshevetskiy                groups:
181*59f04460SMikhail Kshevetskiy                  enum: [gpio8, gpio9, gpio10, gpio11]
182*59f04460SMikhail Kshevetskiy          - if:
183*59f04460SMikhail Kshevetskiy              properties:
184*59f04460SMikhail Kshevetskiy                function:
185*59f04460SMikhail Kshevetskiy                  const: phy2_led0
186*59f04460SMikhail Kshevetskiy            then:
187*59f04460SMikhail Kshevetskiy              properties:
188*59f04460SMikhail Kshevetskiy                groups:
189*59f04460SMikhail Kshevetskiy                  enum: [gpio8, gpio9, gpio10, gpio11]
190*59f04460SMikhail Kshevetskiy          - if:
191*59f04460SMikhail Kshevetskiy              properties:
192*59f04460SMikhail Kshevetskiy                function:
193*59f04460SMikhail Kshevetskiy                  const: phy3_led0
194*59f04460SMikhail Kshevetskiy            then:
195*59f04460SMikhail Kshevetskiy              properties:
196*59f04460SMikhail Kshevetskiy                groups:
197*59f04460SMikhail Kshevetskiy                  enum: [gpio8, gpio9, gpio10, gpio11]
198*59f04460SMikhail Kshevetskiy          - if:
199*59f04460SMikhail Kshevetskiy              properties:
200*59f04460SMikhail Kshevetskiy                function:
201*59f04460SMikhail Kshevetskiy                  const: phy4_led0
202*59f04460SMikhail Kshevetskiy            then:
203*59f04460SMikhail Kshevetskiy              properties:
204*59f04460SMikhail Kshevetskiy                groups:
205*59f04460SMikhail Kshevetskiy                  enum: [gpio8, gpio9, gpio10, gpio11]
206*59f04460SMikhail Kshevetskiy          - if:
207*59f04460SMikhail Kshevetskiy              properties:
208*59f04460SMikhail Kshevetskiy                function:
209*59f04460SMikhail Kshevetskiy                  const: phy1_led1
210*59f04460SMikhail Kshevetskiy            then:
211*59f04460SMikhail Kshevetskiy              properties:
212*59f04460SMikhail Kshevetskiy                groups:
213*59f04460SMikhail Kshevetskiy                  enum: [gpio4, gpio5, gpio6, gpio7]
214*59f04460SMikhail Kshevetskiy          - if:
215*59f04460SMikhail Kshevetskiy              properties:
216*59f04460SMikhail Kshevetskiy                function:
217*59f04460SMikhail Kshevetskiy                  const: phy2_led1
218*59f04460SMikhail Kshevetskiy            then:
219*59f04460SMikhail Kshevetskiy              properties:
220*59f04460SMikhail Kshevetskiy                groups:
221*59f04460SMikhail Kshevetskiy                  enum: [gpio4, gpio5, gpio6, gpio7]
222*59f04460SMikhail Kshevetskiy          - if:
223*59f04460SMikhail Kshevetskiy              properties:
224*59f04460SMikhail Kshevetskiy                function:
225*59f04460SMikhail Kshevetskiy                  const: phy3_led1
226*59f04460SMikhail Kshevetskiy            then:
227*59f04460SMikhail Kshevetskiy              properties:
228*59f04460SMikhail Kshevetskiy                groups:
229*59f04460SMikhail Kshevetskiy                  enum: [gpio4, gpio5, gpio6, gpio7]
230*59f04460SMikhail Kshevetskiy          - if:
231*59f04460SMikhail Kshevetskiy              properties:
232*59f04460SMikhail Kshevetskiy                function:
233*59f04460SMikhail Kshevetskiy                  const: phy4_led1
234*59f04460SMikhail Kshevetskiy            then:
235*59f04460SMikhail Kshevetskiy              properties:
236*59f04460SMikhail Kshevetskiy                groups:
237*59f04460SMikhail Kshevetskiy                  enum: [gpio4, gpio5, gpio6, gpio7]
238*59f04460SMikhail Kshevetskiy
239*59f04460SMikhail Kshevetskiy        additionalProperties: false
240*59f04460SMikhail Kshevetskiy
241*59f04460SMikhail Kshevetskiy      '^conf(-|$)':
242*59f04460SMikhail Kshevetskiy        type: object
243*59f04460SMikhail Kshevetskiy
244*59f04460SMikhail Kshevetskiy        description:
245*59f04460SMikhail Kshevetskiy          pinconf configuration nodes.
246*59f04460SMikhail Kshevetskiy
247*59f04460SMikhail Kshevetskiy        $ref: /schemas/pinctrl/pincfg-node.yaml
248*59f04460SMikhail Kshevetskiy
249*59f04460SMikhail Kshevetskiy        properties:
250*59f04460SMikhail Kshevetskiy          pins:
251*59f04460SMikhail Kshevetskiy            description:
252*59f04460SMikhail Kshevetskiy              An array of strings. Each string contains the name of a pin.
253*59f04460SMikhail Kshevetskiy            items:
254*59f04460SMikhail Kshevetskiy              enum: [gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7,
255*59f04460SMikhail Kshevetskiy                     gpio8, gpio9, gpio10, gpio11, gpio12, gpio13, gpio14,
256*59f04460SMikhail Kshevetskiy                     gpio15, gpio16, gpio17, gpio18, gpio19, gpio20, gpio21,
257*59f04460SMikhail Kshevetskiy                     gpio22, gpio23, gpio24, gpio25, gpio26, gpio27,
258*59f04460SMikhail Kshevetskiy                     pcie_reset0, pcie_reset1, i2c_scl, i2c_sda, spi_clk,
259*59f04460SMikhail Kshevetskiy                     spi_cs, spi_mosi, spi_miso, uart_txd, uart_rxd]
260*59f04460SMikhail Kshevetskiy            minItems: 1
261*59f04460SMikhail Kshevetskiy            maxItems: 38
262*59f04460SMikhail Kshevetskiy
263*59f04460SMikhail Kshevetskiy          bias-disable: true
264*59f04460SMikhail Kshevetskiy
265*59f04460SMikhail Kshevetskiy          bias-pull-up: true
266*59f04460SMikhail Kshevetskiy
267*59f04460SMikhail Kshevetskiy          bias-pull-down: true
268*59f04460SMikhail Kshevetskiy
269*59f04460SMikhail Kshevetskiy          input-enable: true
270*59f04460SMikhail Kshevetskiy
271*59f04460SMikhail Kshevetskiy          output-enable: true
272*59f04460SMikhail Kshevetskiy
273*59f04460SMikhail Kshevetskiy          output-low: true
274*59f04460SMikhail Kshevetskiy
275*59f04460SMikhail Kshevetskiy          output-high: true
276*59f04460SMikhail Kshevetskiy
277*59f04460SMikhail Kshevetskiy          drive-open-drain: true
278*59f04460SMikhail Kshevetskiy
279*59f04460SMikhail Kshevetskiy          drive-strength:
280*59f04460SMikhail Kshevetskiy            description:
281*59f04460SMikhail Kshevetskiy              Selects the drive strength for MIO pins, in mA.
282*59f04460SMikhail Kshevetskiy            enum: [2, 4, 6, 8]
283*59f04460SMikhail Kshevetskiy
284*59f04460SMikhail Kshevetskiy        required:
285*59f04460SMikhail Kshevetskiy          - pins
286*59f04460SMikhail Kshevetskiy
287*59f04460SMikhail Kshevetskiy        additionalProperties: false
288*59f04460SMikhail Kshevetskiy
289*59f04460SMikhail Kshevetskiy    additionalProperties: false
290*59f04460SMikhail Kshevetskiy
291*59f04460SMikhail KshevetskiyadditionalProperties: false
292*59f04460SMikhail Kshevetskiy
293*59f04460SMikhail Kshevetskiyexamples:
294*59f04460SMikhail Kshevetskiy  - |
295*59f04460SMikhail Kshevetskiy    #include <dt-bindings/interrupt-controller/arm-gic.h>
296*59f04460SMikhail Kshevetskiy
297*59f04460SMikhail Kshevetskiy    pinctrl {
298*59f04460SMikhail Kshevetskiy      compatible = "airoha,an7563-pinctrl";
299*59f04460SMikhail Kshevetskiy
300*59f04460SMikhail Kshevetskiy      interrupt-parent = <&gic>;
301*59f04460SMikhail Kshevetskiy      interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
302*59f04460SMikhail Kshevetskiy
303*59f04460SMikhail Kshevetskiy      gpio-controller;
304*59f04460SMikhail Kshevetskiy      #gpio-cells = <2>;
305*59f04460SMikhail Kshevetskiy
306*59f04460SMikhail Kshevetskiy      interrupt-controller;
307*59f04460SMikhail Kshevetskiy      #interrupt-cells = <2>;
308*59f04460SMikhail Kshevetskiy
309*59f04460SMikhail Kshevetskiy      gpio-ranges = <&pinctrl 0 0 38>;
310*59f04460SMikhail Kshevetskiy
311*59f04460SMikhail Kshevetskiy      pcie1-rst-pins {
312*59f04460SMikhail Kshevetskiy        conf {
313*59f04460SMikhail Kshevetskiy          pins = "pcie_reset1";
314*59f04460SMikhail Kshevetskiy          drive-open-drain = <1>;
315*59f04460SMikhail Kshevetskiy        };
316*59f04460SMikhail Kshevetskiy      };
317*59f04460SMikhail Kshevetskiy
318*59f04460SMikhail Kshevetskiy      pwm-pins {
319*59f04460SMikhail Kshevetskiy        mux {
320*59f04460SMikhail Kshevetskiy          function = "pwm";
321*59f04460SMikhail Kshevetskiy          groups = "gpio18";
322*59f04460SMikhail Kshevetskiy        };
323*59f04460SMikhail Kshevetskiy      };
324*59f04460SMikhail Kshevetskiy
325*59f04460SMikhail Kshevetskiy      spi-pins {
326*59f04460SMikhail Kshevetskiy        mux {
327*59f04460SMikhail Kshevetskiy          function = "spi";
328*59f04460SMikhail Kshevetskiy          groups = "spi_quad", "spi_cs1";
329*59f04460SMikhail Kshevetskiy        };
330*59f04460SMikhail Kshevetskiy      };
331*59f04460SMikhail Kshevetskiy
332*59f04460SMikhail Kshevetskiy      hsuart-pins {
333*59f04460SMikhail Kshevetskiy        mux {
334*59f04460SMikhail Kshevetskiy          function = "uart";
335*59f04460SMikhail Kshevetskiy          groups = "hsuart", "hsuart_cts_rts";
336*59f04460SMikhail Kshevetskiy        };
337*59f04460SMikhail Kshevetskiy      };
338*59f04460SMikhail Kshevetskiy
339*59f04460SMikhail Kshevetskiy      mdio-pins {
340*59f04460SMikhail Kshevetskiy        mux {
341*59f04460SMikhail Kshevetskiy          function = "mdio";
342*59f04460SMikhail Kshevetskiy          groups = "mdio";
343*59f04460SMikhail Kshevetskiy        };
344*59f04460SMikhail Kshevetskiy
345*59f04460SMikhail Kshevetskiy        conf {
346*59f04460SMikhail Kshevetskiy          pins = "gpio2";
347*59f04460SMikhail Kshevetskiy          output-enable;
348*59f04460SMikhail Kshevetskiy        };
349*59f04460SMikhail Kshevetskiy      };
350*59f04460SMikhail Kshevetskiy    };
351