blob: d74cae9d4d6508d6469108fe0010df6a8e0a11fa [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pinctrl/mediatek,mt7622-pinctrl.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: MediaTek MT7622 Pin Controller
8
9maintainers:
10 - Sean Wang <sean.wang@kernel.org>
11
12description:
13 The MediaTek's MT7622 Pin controller is used to control SoC pins.
14
15properties:
16 compatible:
17 enum:
18 - mediatek,mt7622-pinctrl
19 - mediatek,mt7629-pinctrl
20
21 reg:
22 maxItems: 1
23
24 reg-names:
25 items:
26 - const: eint
27
28 gpio-controller: true
29
30 "#gpio-cells":
31 const: 2
32 description:
33 Number of cells in GPIO specifier. Since the generic GPIO binding is used,
34 the amount of cells must be specified as 2. See the below mentioned gpio
35 binding representation for description of particular cells.
36
Tom Rini762f85b2024-07-20 11:15:10 -060037 gpio-ranges:
38 maxItems: 1
39
Tom Rini53633a82024-02-29 12:33:36 -050040 interrupt-controller: true
41
42 interrupts:
43 maxItems: 1
44
45 "#interrupt-cells":
46 const: 2
47
48allOf:
49 - $ref: pinctrl.yaml#
50
51required:
52 - compatible
53 - reg
54 - gpio-controller
55 - "#gpio-cells"
56
57if:
58 required:
59 - interrupt-controller
60then:
61 required:
62 - reg-names
63 - interrupts
64 - "#interrupt-cells"
65
66patternProperties:
67 '-pins(-[a-z]+)?$':
68 type: object
69 additionalProperties: false
70 patternProperties:
71 '^mux(-|$)':
72 type: object
73 additionalProperties: false
74 description:
75 pinmux configuration nodes.
76 $ref: /schemas/pinctrl/pinmux-node.yaml
77 properties:
78 function:
79 description:
80 A string containing the name of the function to mux to the group.
Tom Rini762f85b2024-07-20 11:15:10 -060081 enum: [antsel, emmc, eth, i2c, i2s, ir, led, flash, pcie, pmic, pwm,
82 sd, spi, tdm, uart, watchdog, wifi]
Tom Rini53633a82024-02-29 12:33:36 -050083
84 groups:
85 description:
86 An array of strings. Each string contains the name of a group.
87
88 drive-strength:
89 enum: [4, 8, 12, 16]
90
91 required:
92 - groups
93 - function
94
95 allOf:
96 - if:
97 properties:
98 function:
Tom Rini762f85b2024-07-20 11:15:10 -060099 const: antsel
100 then:
101 properties:
102 groups:
103 items:
104 enum: [antsel0, antsel1, antsel2, antsel3, antsel4, antsel5,
105 antsel6, antsel7, antsel8, antsel9, antsel10,
106 antsel11, antsel12, antsel13, antsel14, antsel15,
107 antsel16, antsel17, antsel18, antsel19, antsel20,
108 antsel21, antsel22, antsel23, antsel24, antsel25,
109 antsel26, antsel27, antsel28, antsel29]
110 - if:
111 properties:
112 function:
Tom Rini53633a82024-02-29 12:33:36 -0500113 const: emmc
114 then:
115 properties:
116 groups:
Tom Rini762f85b2024-07-20 11:15:10 -0600117 items:
118 enum: [emmc, emmc_rst]
Tom Rini53633a82024-02-29 12:33:36 -0500119 - if:
120 properties:
121 function:
122 const: eth
123 then:
124 properties:
125 groups:
Tom Rini762f85b2024-07-20 11:15:10 -0600126 items:
127 enum: [esw, esw_p0_p1, esw_p2_p3_p4, rgmii_via_esw,
128 rgmii_via_gmac1, rgmii_via_gmac2, mdc_mdio]
Tom Rini53633a82024-02-29 12:33:36 -0500129 - if:
130 properties:
131 function:
132 const: i2c
133 then:
134 properties:
135 groups:
136 enum: [i2c0, i2c_0, i2c_1, i2c1_0, i2c1_1, i2c1_2, i2c2_0,
137 i2c2_1, i2c2_2]
138 - if:
139 properties:
140 function:
141 const: i2s
142 then:
143 properties:
144 groups:
Tom Rini762f85b2024-07-20 11:15:10 -0600145 items:
146 enum: [i2s_in_mclk_bclk_ws, i2s1_in_data, i2s2_in_data,
147 i2s3_in_data, i2s4_in_data, i2s_out_mclk_bclk_ws,
148 i2s1_out_data, i2s2_out_data, i2s3_out_data,
149 i2s4_out_data]
Tom Rini53633a82024-02-29 12:33:36 -0500150 - if:
151 properties:
152 function:
153 const: ir
154 then:
155 properties:
156 groups:
157 enum: [ir_0_tx, ir_1_tx, ir_2_tx, ir_0_rx, ir_1_rx, ir_2_rx]
158 - if:
159 properties:
160 function:
161 const: led
162 then:
163 properties:
164 groups:
165 enum: [ephy_leds, ephy0_led, ephy1_led, ephy2_led, ephy3_led,
166 ephy4_led, wled, wf2g_led, wf5g_led]
167 - if:
168 properties:
169 function:
170 const: flash
171 then:
172 properties:
173 groups:
174 enum: [par_nand, snfi, spi_nor]
175 - if:
176 properties:
177 function:
178 const: pcie
179 then:
180 properties:
181 groups:
Tom Rini762f85b2024-07-20 11:15:10 -0600182 items:
183 enum: [pcie0_0_waken, pcie0_1_waken, pcie1_0_waken,
184 pcie0_0_clkreq, pcie0_1_clkreq, pcie1_0_clkreq,
185 pcie0_pad_perst, pcie1_pad_perst, pcie_pereset,
186 pcie_wake, pcie_clkreq]
Tom Rini53633a82024-02-29 12:33:36 -0500187 - if:
188 properties:
189 function:
190 const: pmic
191 then:
192 properties:
193 groups:
194 enum: [pmic_bus]
195 - if:
196 properties:
197 function:
198 const: pwm
199 then:
200 properties:
201 groups:
Tom Rini762f85b2024-07-20 11:15:10 -0600202 items:
203 enum: [pwm_ch1_0, pwm_ch1_1, pwm_ch1_2, pwm_ch2_0, pwm_ch2_1,
204 pwm_ch2_2, pwm_ch3_0, pwm_ch3_1, pwm_ch3_2, pwm_ch4_0,
205 pwm_ch4_1, pwm_ch4_2, pwm_ch4_3, pwm_ch5_0, pwm_ch5_1,
206 pwm_ch5_2, pwm_ch6_0, pwm_ch6_1, pwm_ch6_2, pwm_ch6_3,
207 pwm_ch7_0, pwm_0, pwm_1]
Tom Rini53633a82024-02-29 12:33:36 -0500208 - if:
209 properties:
210 function:
211 const: sd
212 then:
213 properties:
214 groups:
215 enum: [sd_0, sd_1]
216 - if:
217 properties:
218 function:
219 const: spi
220 then:
221 properties:
222 groups:
223 enum: [spic0_0, spic0_1, spic1_0, spic1_1, spic2_0_wp_hold,
224 spic2_0, spi_0, spi_1, spi_wp, spi_hold]
225 - if:
226 properties:
227 function:
228 const: tdm
229 then:
230 properties:
231 groups:
232 enum: [tdm_0_out_mclk_bclk_ws, tdm_0_in_mclk_bclk_ws,
233 tdm_0_out_data, tdm_0_in_data, tdm_1_out_mclk_bclk_ws,
234 tdm_1_in_mclk_bclk_ws, tdm_1_out_data, tdm_1_in_data]
235 - if:
236 properties:
237 function:
238 const: uart
239 then:
240 properties:
241 groups:
242 enum: [uart0_0_tx_rx, uart1_0_tx_rx, uart1_0_rts_cts,
243 uart1_1_tx_rx, uart1_1_rts_cts, uart2_0_tx_rx,
244 uart2_0_rts_cts, uart2_1_tx_rx, uart2_1_rts_cts,
245 uart2_2_tx_rx, uart2_2_rts_cts, uart2_3_tx_rx,
246 uart3_0_tx_rx, uart3_1_tx_rx, uart3_1_rts_cts,
247 uart4_0_tx_rx, uart4_1_tx_rx, uart4_1_rts_cts,
248 uart4_2_tx_rx, uart4_2_rts_cts, uart0_txd_rxd,
249 uart1_0_txd_rxd, uart1_0_cts_rts, uart1_1_txd_rxd,
250 uart1_1_cts_rts, uart2_0_txd_rxd, uart2_0_cts_rts,
251 uart2_1_txd_rxd, uart2_1_cts_rts]
252 - if:
253 properties:
254 function:
255 const: watchdog
256 then:
257 properties:
258 groups:
259 enum: [watchdog]
260 - if:
261 properties:
262 function:
263 const: wifi
264 then:
265 properties:
266 groups:
267 enum: [wf0_2g, wf0_5g]
268
269 '^conf(-|$)':
270 type: object
271 additionalProperties: false
272 description:
273 pinconf configuration nodes.
274 $ref: /schemas/pinctrl/pincfg-node.yaml
275
276 properties:
277 groups:
278 description:
279 An array of strings. Each string contains the name of a group.
280 Valid values are the same as the pinmux node.
281
282 pins:
283 description:
284 An array of strings. Each string contains the name of a pin.
Tom Rini762f85b2024-07-20 11:15:10 -0600285 items:
286 enum: [GPIO_A, I2S1_IN, I2S1_OUT, I2S_BCLK, I2S_WS, I2S_MCLK, TXD0,
287 RXD0, SPI_WP, SPI_HOLD, SPI_CLK, SPI_MOSI, SPI_MISO, SPI_CS,
288 I2C_SDA, I2C_SCL, I2S2_IN, I2S3_IN, I2S4_IN, I2S2_OUT,
289 I2S3_OUT, I2S4_OUT, GPIO_B, MDC, MDIO, G2_TXD0, G2_TXD1,
290 G2_TXD2, G2_TXD3, G2_TXEN, G2_TXC, G2_RXD0, G2_RXD1, G2_RXD2,
291 G2_RXD3, G2_RXDV, G2_RXC, NCEB, NWEB, NREB, NDL4, NDL5, NDL6,
292 NDL7, NRB, NCLE, NALE, NDL0, NDL1, NDL2, NDL3, MDI_TP_P0,
293 MDI_TN_P0, MDI_RP_P0, MDI_RN_P0, MDI_TP_P1, MDI_TN_P1,
294 MDI_RP_P1, MDI_RN_P1, MDI_RP_P2, MDI_RN_P2, MDI_TP_P2,
295 MDI_TN_P2, MDI_TP_P3, MDI_TN_P3, MDI_RP_P3, MDI_RN_P3,
296 MDI_RP_P4, MDI_RN_P4, MDI_TP_P4, MDI_TN_P4, PMIC_SCL,
297 PMIC_SDA, SPIC1_CLK, SPIC1_MOSI, SPIC1_MISO, SPIC1_CS,
298 GPIO_D, WATCHDOG, RTS3_N, CTS3_N, TXD3, RXD3, PERST0_N,
299 PERST1_N, WLED_N, EPHY_LED0_N, AUXIN0, AUXIN1, AUXIN2,
300 AUXIN3, TXD4, RXD4, RTS4_N, CST4_N, PWM1, PWM2, PWM3, PWM4,
301 PWM5, PWM6, PWM7, GPIO_E, TOP_5G_CLK, TOP_5G_DATA,
302 WF0_5G_HB0, WF0_5G_HB1, WF0_5G_HB2, WF0_5G_HB3, WF0_5G_HB4,
303 WF0_5G_HB5, WF0_5G_HB6, XO_REQ, TOP_RST_N, SYS_WATCHDOG,
304 EPHY_LED0_N_JTDO, EPHY_LED1_N_JTDI, EPHY_LED2_N_JTMS,
305 EPHY_LED3_N_JTCLK, EPHY_LED4_N_JTRST_N, WF2G_LED_N,
306 WF5G_LED_N, GPIO_9, GPIO_10, GPIO_11, GPIO_12, UART1_TXD,
307 UART1_RXD, UART1_CTS, UART1_RTS, UART2_TXD, UART2_RXD,
308 UART2_CTS, UART2_RTS, SMI_MDC, SMI_MDIO, PCIE_PERESET_N,
309 PWM_0, GPIO_0, GPIO_1, GPIO_2, GPIO_3, GPIO_4, GPIO_5,
310 GPIO_6, GPIO_7, GPIO_8, UART0_TXD, UART0_RXD, TOP_2G_CLK,
311 TOP_2G_DATA, WF0_2G_HB0, WF0_2G_HB1, WF0_2G_HB2, WF0_2G_HB3,
312 WF0_2G_HB4, WF0_2G_HB5, WF0_2G_HB6]
Tom Rini53633a82024-02-29 12:33:36 -0500313
314 bias-disable: true
315
316 bias-pull-up: true
317
318 bias-pull-down: true
319
320 input-enable: true
321
322 input-disable: true
323
324 output-enable: true
325
326 output-low: true
327
328 output-high: true
329
330 input-schmitt-enable: true
331
332 input-schmitt-disable: true
333
334 drive-strength:
335 enum: [4, 8, 12, 16]
336
337 slew-rate:
338 enum: [0, 1]
339
340 mediatek,tdsel:
341 description:
342 An integer describing the steps for output level shifter duty
343 cycle when asserted (high pulse width adjustment). Valid arguments
344 are from 0 to 15.
345 $ref: /schemas/types.yaml#/definitions/uint32
346
347 mediatek,rdsel:
348 description:
349 An integer describing the steps for input level shifter duty cycle
350 when asserted (high pulse width adjustment). Valid arguments are
351 from 0 to 63.
352 $ref: /schemas/types.yaml#/definitions/uint32
353
354 required:
355 - pins
356
357additionalProperties: false
358
359examples:
360 - |
361 #include <dt-bindings/interrupt-controller/irq.h>
362 #include <dt-bindings/interrupt-controller/arm-gic.h>
363
364 soc {
365 #address-cells = <2>;
366 #size-cells = <2>;
367
368 pio: pinctrl@10211000 {
369 compatible = "mediatek,mt7622-pinctrl";
370 reg = <0 0x10211000 0 0x1000>;
371 gpio-controller;
372 #gpio-cells = <2>;
373
374 pinctrl_eth_default: eth-pins {
375 mux-mdio {
376 groups = "mdc_mdio";
377 function = "eth";
378 drive-strength = <12>;
379 };
380
381 mux-gmac2 {
382 groups = "rgmii_via_gmac2";
383 function = "eth";
384 drive-strength = <12>;
385 };
386
387 mux-esw {
388 groups = "esw";
389 function = "eth";
390 drive-strength = <8>;
391 };
392
393 conf-mdio {
394 pins = "MDC";
395 bias-pull-up;
396 };
397 };
398 };
399 };