]> git.ipfire.org Git - thirdparty/u-boot.git/blob - Bindings/pinctrl/mediatek,mt7981-pinctrl.yaml
Squashed 'dts/upstream/' content from commit aaba2d45dc2a
[thirdparty/u-boot.git] / Bindings / pinctrl / mediatek,mt7981-pinctrl.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/pinctrl/mediatek,mt7981-pinctrl.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: MediaTek MT7981 Pin Controller
8
9 maintainers:
10 - Daniel Golle <daniel@makrotopia.org>
11
12 description:
13 The MediaTek's MT7981 Pin controller is used to control SoC pins.
14
15 properties:
16 compatible:
17 enum:
18 - mediatek,mt7981-pinctrl
19
20 reg:
21 minItems: 9
22 maxItems: 9
23
24 reg-names:
25 items:
26 - const: gpio
27 - const: iocfg_rt
28 - const: iocfg_rm
29 - const: iocfg_rb
30 - const: iocfg_lb
31 - const: iocfg_bl
32 - const: iocfg_tm
33 - const: iocfg_tl
34 - const: eint
35
36 gpio-controller: true
37
38 "#gpio-cells":
39 const: 2
40 description:
41 Number of cells in GPIO specifier. Since the generic GPIO binding is used,
42 the amount of cells must be specified as 2. See the below mentioned gpio
43 binding representation for description of particular cells.
44
45 gpio-ranges:
46 minItems: 1
47 maxItems: 5
48 description: GPIO valid number range.
49
50 interrupt-controller: true
51
52 interrupts:
53 maxItems: 1
54
55 "#interrupt-cells":
56 const: 2
57
58 allOf:
59 - $ref: pinctrl.yaml#
60
61 required:
62 - compatible
63 - reg
64 - reg-names
65 - gpio-controller
66 - "#gpio-cells"
67
68 patternProperties:
69 '-pins$':
70 type: object
71 additionalProperties: false
72
73 patternProperties:
74 '^.*mux.*$':
75 type: object
76 additionalProperties: false
77 description: |
78 pinmux configuration nodes.
79
80 The following table shows the effective values of "group", "function"
81 properties and chip pinout pins
82
83 groups function pins (in pin#)
84 ---------------------------------------------------------------------
85 "wa_aice1" "wa_aice" 0, 1
86 "wa_aice2" "wa_aice" 0, 1
87 "wm_uart_0" "uart" 0, 1
88 "dfd" "dfd" 0, 1, 4, 5
89 "watchdog" "watchdog" 2
90 "pcie_pereset" "pcie" 3
91 "jtag" "jtag" 4, 5, 6, 7, 8
92 "wm_jtag_0" "jtag" 4, 5, 6, 7, 8
93 "wo0_jtag_0" "jtag" 9, 10, 11, 12, 13
94 "uart2_0" "uart" 4, 5, 6, 7
95 "gbe_led0" "led" 8
96 "pta_ext_0" "pta" 4, 5, 6
97 "pwm2" "pwm" 7
98 "net_wo0_uart_txd_0" "uart" 8
99 "spi1_0" "spi" 4, 5, 6, 7
100 "i2c0_0" "i2c" 6, 7
101 "dfd_ntrst" "dfd" 8
102 "wm_aice1" "wa_aice" 9, 10
103 "pwm0_0" "pwm" 13
104 "pwm0_1" "pwm" 15
105 "pwm1_0" "pwm" 14
106 "pwm1_1" "pwm" 15
107 "net_wo0_uart_txd_1" "uart" 14
108 "net_wo0_uart_txd_2" "uart" 15
109 "gbe_led1" "led" 13
110 "pcm" "pcm" 9, 10, 11, 12, 13, 25
111 "watchdog1" "watchdog" 13
112 "udi" "udi" 9, 10, 11, 12, 13
113 "drv_vbus" "usb" 14
114 "emmc_45" "flash" 15, 16, 17, 18, 19, 20, 21, 22, 23,
115 24, 25
116
117 "snfi" "flash" 16, 17, 18, 19, 20, 21
118 "spi0" "spi" 16, 17, 18, 19
119 "spi0_wp_hold" "spi" 20, 21
120 "spi1_1" "spi" 22, 23, 24, 25
121 "spi2" "spi" 26, 27, 28, 29
122 "spi2_wp_hold" "spi" 30, 31
123 "uart1_0" "uart" 16, 17, 18, 19
124 "uart1_1" "uart" 26, 27, 28, 29
125 "uart2_1" "uart" 22, 23, 24, 25
126 "pta_ext_1" "pta" 22, 23, 24
127 "wm_aurt_1" "uart" 20, 21
128 "wm_aurt_2" "uart" 30, 31
129 "wm_jtag_1" "jtag" 20, 21, 22, 23, 24
130 "wo0_jtag_1" "jtag" 25, 26, 27, 28, 29
131 "wa_aice3" "wa_aice" 28, 20
132 "wm_aice2" "wa_aice" 30, 31
133 "i2c0_1" "i2c" 30, 31
134 "u2_phy_i2c" "i2c" 30, 31
135 "uart0" "uart" 32, 33
136 "sgmii1_phy_i2c" "i2c" 32, 33
137 "u3_phy_i2c" "i2c" 32, 33
138 "sgmii0_phy_i2c" "i2c" 32, 33
139 "pcie_clk" "pcie" 34
140 "pcie_wake" "pcie" 35
141 "i2c0_2" "i2c" 36, 37
142 "smi_mdc_mdio" "eth" 36, 37
143 "gbe_ext_mdc_mdio" "eth" 36, 37
144 "wf0_mode1" "eth" 40, 41, 42, 43, 44, 45, 46, 47, 48,
145 49, 50, 51, 52, 53, 54, 55, 56
146
147 "wf0_mode3" "eth" 45, 46, 47, 48, 49, 51
148 "wf2g_led0" "led" 30
149 "wf2g_led1" "led" 34
150 "wf5g_led0" "led" 31
151 "wf5g_led1" "led" 35
152 "mt7531_int" "eth" 38
153 "ant_sel" "ant" 14, 15, 16, 17, 18, 19, 20, 21, 22,
154 23, 24, 25, 34, 35
155
156 $ref: /schemas/pinctrl/pinmux-node.yaml
157 properties:
158 function:
159 description:
160 A string containing the name of the function to mux to the group.
161 enum: [wa_aice, dfd, jtag, pta, pcm, udi, usb, ant, eth, i2c, led,
162 pwm, spi, uart, watchdog, flash, pcie]
163 groups:
164 description:
165 An array of strings. Each string contains the name of a group.
166
167 required:
168 - function
169 - groups
170
171 allOf:
172 - if:
173 properties:
174 function:
175 const: wa_aice
176 then:
177 properties:
178 groups:
179 enum: [wa_aice1, wa_aice2, wm_aice1_1, wa_aice3, wm_aice1_2]
180 - if:
181 properties:
182 function:
183 const: dfd
184 then:
185 properties:
186 groups:
187 enum: [dfd, dfd_ntrst]
188 - if:
189 properties:
190 function:
191 const: jtag
192 then:
193 properties:
194 groups:
195 enum: [jtag, wm_jtag_0, wo0_jtag_0, wo0_jtag_1, wm_jtag_1]
196 - if:
197 properties:
198 function:
199 const: pta
200 then:
201 properties:
202 groups:
203 enum: [pta_ext_0, pta_ext_1]
204 - if:
205 properties:
206 function:
207 const: pcm
208 then:
209 properties:
210 groups:
211 enum: [pcm]
212 - if:
213 properties:
214 function:
215 const: udi
216 then:
217 properties:
218 groups:
219 enum: [udi]
220 - if:
221 properties:
222 function:
223 const: usb
224 then:
225 properties:
226 groups:
227 enum: [drv_vbus]
228 - if:
229 properties:
230 function:
231 const: ant
232 then:
233 properties:
234 groups:
235 enum: [ant_sel]
236 - if:
237 properties:
238 function:
239 const: eth
240 then:
241 properties:
242 groups:
243 enum: [smi_mdc_mdio, gbe_ext_mdc_mdio, wf0_mode1, wf0_mode3,
244 mt7531_int]
245 - if:
246 properties:
247 function:
248 const: i2c
249 then:
250 properties:
251 groups:
252 enum: [i2c0_0, i2c0_1, u2_phy_i2c, sgmii1_phy_i2c, u3_phy_i2c,
253 sgmii0_phy_i2c, i2c0_2]
254 - if:
255 properties:
256 function:
257 const: led
258 then:
259 properties:
260 groups:
261 enum: [gbe_led0, gbe_led1, wf2g_led0, wf2g_led1, wf5g_led0,
262 wf5g_led1]
263 - if:
264 properties:
265 function:
266 const: pwm
267 then:
268 properties:
269 groups:
270 items:
271 enum: [pwm2, pwm0_0, pwm0_1, pwm1_0, pwm1_1]
272 maxItems: 3
273 - if:
274 properties:
275 function:
276 const: spi
277 then:
278 properties:
279 groups:
280 items:
281 enum: [spi1_0, spi0, spi0_wp_hold, spi1_1, spi2,
282 spi2_wp_hold]
283 maxItems: 4
284 - if:
285 properties:
286 function:
287 const: uart
288 then:
289 properties:
290 groups:
291 items:
292 enum: [wm_uart_0, uart2_0, net_wo0_uart_txd_0,
293 net_wo0_uart_txd_1, net_wo0_uart_txd_2, uart1_0,
294 uart1_1, uart2_1, wm_aurt_1, wm_aurt_2, uart0]
295 - if:
296 properties:
297 function:
298 const: watchdog
299 then:
300 properties:
301 groups:
302 enum: [watchdog]
303 - if:
304 properties:
305 function:
306 const: flash
307 then:
308 properties:
309 groups:
310 items:
311 enum: [emmc_45, snfi]
312 maxItems: 1
313 - if:
314 properties:
315 function:
316 const: pcie
317 then:
318 properties:
319 groups:
320 items:
321 enum: [pcie_clk, pcie_wake, pcie_pereset]
322 maxItems: 3
323
324 '^.*conf.*$':
325 type: object
326 additionalProperties: false
327 description: pinconf configuration nodes.
328 $ref: /schemas/pinctrl/pincfg-node.yaml
329
330 properties:
331 pins:
332 description:
333 An array of strings. Each string contains the name of a pin.
334 items:
335 enum: [GPIO_WPS, GPIO_RESET, SYS_WATCHDOG, PCIE_PERESET_N,
336 JTAG_JTDO, JTAG_JTDI, JTAG_JTMS, JTAG_JTCLK, JTAG_JTRST_N,
337 WO_JTAG_JTDO, WO_JTAG_JTDI, WO_JTAG_JTMS, WO_JTAG_JTCLK,
338 WO_JTAG_JTRST_N, USB_VBUS, PWM0, SPI0_CLK, SPI0_MOSI,
339 SPI0_MISO, SPI0_CS, SPI0_HOLD, SPI0_WP, SPI1_CLK,
340 SPI1_MOSI, SPI1_MISO, SPI1_CS, SPI2_CLK, SPI2_MOSI,
341 SPI2_MISO, SPI2_CS, SPI2_HOLD, SPI2_WP, UART0_RXD,
342 UART0_TXD, PCIE_CLK_REQ, PCIE_WAKE_N, SMI_MDC, SMI_MDIO,
343 GBE_INT, GBE_RESET, WF_DIG_RESETB, WF_CBA_RESETB,
344 WF_XO_REQ, WF_TOP_CLK, WF_TOP_DATA, WF_HB1, WF_HB2, WF_HB3,
345 WF_HB4, WF_HB0, WF_HB0_B, WF_HB5, WF_HB6, WF_HB7, WF_HB8,
346 WF_HB9, WF_HB10]
347 maxItems: 57
348
349 bias-disable: true
350
351 bias-pull-up:
352 oneOf:
353 - type: boolean
354 description: normal pull up.
355 - enum: [100, 101, 102, 103]
356 description:
357 PUPD/R1/R0 pull down type. See MTK_PUPD_SET_R1R0 defines in
358 dt-bindings/pinctrl/mt65xx.h.
359
360 bias-pull-down:
361 oneOf:
362 - type: boolean
363 description: normal pull down.
364 - enum: [100, 101, 102, 103]
365 description:
366 PUPD/R1/R0 pull down type. See MTK_PUPD_SET_R1R0 defines in
367 dt-bindings/pinctrl/mt65xx.h.
368
369 input-enable: true
370
371 input-disable: true
372
373 output-enable: true
374
375 output-low: true
376
377 output-high: true
378
379 input-schmitt-enable: true
380
381 input-schmitt-disable: true
382
383 drive-strength:
384 enum: [2, 4, 6, 8, 10, 12, 14, 16]
385
386 mediatek,pull-up-adv:
387 description: |
388 Valid arguments for 'mediatek,pull-up-adv' are '0', '1', '2', '3'
389 Pull up settings for 2 pull resistors, R0 and R1. Valid arguments
390 are described as below:
391 0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
392 1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
393 2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
394 3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
395 $ref: /schemas/types.yaml#/definitions/uint32
396 enum: [0, 1, 2, 3]
397
398 mediatek,pull-down-adv:
399 description: |
400 Valid arguments for 'mediatek,pull-up-adv' are '0', '1', '2', '3'
401 Pull down settings for 2 pull resistors, R0 and R1. Valid arguments
402 are described as below:
403 0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
404 1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
405 2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
406 3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
407 $ref: /schemas/types.yaml#/definitions/uint32
408 enum: [0, 1, 2, 3]
409
410 required:
411 - pins
412
413 additionalProperties: false
414
415 examples:
416 - |
417 #include <dt-bindings/interrupt-controller/irq.h>
418 #include <dt-bindings/interrupt-controller/arm-gic.h>
419 #include <dt-bindings/pinctrl/mt65xx.h>
420
421 soc {
422 #address-cells = <2>;
423 #size-cells = <2>;
424 pio: pinctrl@11d00000 {
425 compatible = "mediatek,mt7981-pinctrl";
426 reg = <0 0x11d00000 0 0x1000>,
427 <0 0x11c00000 0 0x1000>,
428 <0 0x11c10000 0 0x1000>,
429 <0 0x11d20000 0 0x1000>,
430 <0 0x11e00000 0 0x1000>,
431 <0 0x11e20000 0 0x1000>,
432 <0 0x11f00000 0 0x1000>,
433 <0 0x11f10000 0 0x1000>,
434 <0 0x1000b000 0 0x1000>;
435 reg-names = "gpio", "iocfg_rt", "iocfg_rm",
436 "iocfg_rb", "iocfg_lb", "iocfg_bl",
437 "iocfg_tm", "iocfg_tl", "eint";
438 gpio-controller;
439 #gpio-cells = <2>;
440 gpio-ranges = <&pio 0 0 56>;
441 interrupt-controller;
442 interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;
443 interrupt-parent = <&gic>;
444 #interrupt-cells = <2>;
445
446 mdio_pins: mdio-pins {
447 mux {
448 function = "eth";
449 groups = "smi_mdc_mdio";
450 };
451 };
452
453 spi0_flash_pins: spi0-pins {
454 mux {
455 function = "spi";
456 groups = "spi0", "spi0_wp_hold";
457 };
458
459 conf-pu {
460 pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
461 drive-strength = <MTK_DRIVE_8mA>;
462 bias-pull-up = <MTK_PUPD_SET_R1R0_11>;
463 };
464
465 conf-pd {
466 pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
467 drive-strength = <MTK_DRIVE_8mA>;
468 bias-pull-down = <MTK_PUPD_SET_R1R0_11>;
469 };
470 };
471
472 pcie_pins: pcie-pins {
473 mux {
474 function = "pcie";
475 groups = "pcie_clk", "pcie_wake", "pcie_pereset";
476 };
477 };
478
479 };
480 };