463 lines · yaml
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)2%YAML 1.23---4$id: http://devicetree.org/schemas/pinctrl/mediatek,mt7986-pinctrl.yaml#5$schema: http://devicetree.org/meta-schemas/core.yaml#6 7title: MediaTek MT7986 Pin Controller8 9maintainers:10 - Sean Wang <sean.wang@kernel.org>11 12description:13 The MediaTek's MT7986 Pin controller is used to control SoC pins.14 15properties:16 compatible:17 enum:18 - mediatek,mt7986a-pinctrl19 - mediatek,mt7986b-pinctrl20 21 reg:22 minItems: 823 maxItems: 824 25 reg-names:26 items:27 - const: gpio28 - const: iocfg_rt29 - const: iocfg_rb30 - const: iocfg_lt31 - const: iocfg_lb32 - const: iocfg_tr33 - const: iocfg_tl34 - const: eint35 36 gpio-controller: true37 38 "#gpio-cells":39 const: 240 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 gpio43 binding representation for description of particular cells.44 45 gpio-ranges:46 minItems: 147 maxItems: 548 description:49 GPIO valid number range.50 51 interrupt-controller: true52 53 interrupts:54 maxItems: 155 56 "#interrupt-cells":57 const: 258 59allOf:60 - $ref: pinctrl.yaml#61 62required:63 - compatible64 - reg65 - reg-names66 - gpio-controller67 - "#gpio-cells"68 69patternProperties:70 '-pins$':71 type: object72 additionalProperties: false73 74 patternProperties:75 '^.*mux.*$':76 type: object77 additionalProperties: false78 description: |79 pinmux configuration nodes.80 81 The following table shows the effective values of "group", "function"82 properties and chip pinout pins83 84 groups function pins (in pin#)85 ---------------------------------------------------------------------86 "watchdog" "watchdog" 087 "wifi_led" "led" 1, 288 "i2c" "i2c" 3, 489 "uart1_0" "uart" 7, 8, 9, 1090 "uart1_rx_tx" "uart" 42, 4391 "uart1_cts_rts" "uart" 44, 4592 "pcie_clk" "pcie" 993 "pcie_wake" "pcie" 1094 "spi1_0" "spi" 11, 12, 13, 1495 "pwm1_1" "pwm" 20,96 "pwm0" "pwm" 21,97 "pwm1_0" "pwm" 22,98 "snfi" "flash" 23, 24, 25, 26, 27, 2899 "spi1_2" "spi" 29, 30, 31, 32100 "emmc_45" "emmc" 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,101 32102 103 "spi1_1" "spi" 23, 24, 25, 26104 "uart1_2_rx_tx" "uart" 29, 30105 "uart1_2_cts_rts" "uart" 31, 32106 "uart1_1" "uart" 23, 24, 25, 26107 "uart2_0_rx_tx" "uart" 29, 30108 "uart2_0_cts_rts" "uart" 31, 32109 "spi0" "spi" 33, 34, 35, 36110 "spi0_wp_hold" "spi" 37, 38111 "uart1_3_rx_tx" "uart" 35, 36112 "uart1_3_cts_rts" "uart" 37, 38113 "uart2_1" "uart" 33, 34, 35, 36114 "spi1_3" "spi" 33, 34, 35, 36115 "uart0" "uart" 39, 40116 "pcie_pereset" "pcie" 41117 "uart1" "uart" 42, 43, 44, 45118 "uart2" "uart" 46, 47, 48, 49119 "emmc_51" "emmc" 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,120 60, 61121 122 "pcm" "audio" 62, 63, 64, 65123 "i2s" "audio" 62, 63, 64, 65124 "switch_int" "eth" 66125 "mdc_mdio" "eth" 67126 "wf_2g" "wifi" 74, 75, 76, 77, 78, 79, 80, 81, 82, 83127 "wf_5g" "wifi" 91, 92, 93, 94, 95, 96, 97, 98, 99, 100128 "wf_dbdc" "wifi" 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,129 84, 85130 131 $ref: /schemas/pinctrl/pinmux-node.yaml132 properties:133 function:134 description:135 A string containing the name of the function to mux to the group.136 There is no "audio", "pcie" functions on mt7986b, you can only use137 those functions on mt7986a.138 enum: [audio, emmc, eth, i2c, led, flash, pcie, pwm, spi, uart,139 watchdog, wifi]140 groups:141 description:142 An array of strings. Each string contains the name of a group.143 There is no "pcie_pereset", "uart1", "uart2" "emmc_51", "pcm", and144 "i2s" groups on mt7986b, you can only use those groups on mt7986a.145 required:146 - function147 - groups148 149 allOf:150 - if:151 properties:152 function:153 const: audio154 then:155 properties:156 groups:157 enum: [pcm, i2s]158 - if:159 properties:160 function:161 const: emmc162 then:163 properties:164 groups:165 enum: [emmc_45, emmc_51]166 - if:167 properties:168 function:169 const: eth170 then:171 properties:172 groups:173 enum: [switch_int, mdc_mdio]174 - if:175 properties:176 function:177 const: i2c178 then:179 properties:180 groups:181 enum: [i2c]182 - if:183 properties:184 function:185 const: led186 then:187 properties:188 groups:189 enum: [wifi_led]190 - if:191 properties:192 function:193 const: flash194 then:195 properties:196 groups:197 enum: [snfi]198 - if:199 properties:200 function:201 const: pcie202 then:203 properties:204 groups:205 items:206 enum: [pcie_clk, pcie_wake, pcie_pereset]207 maxItems: 3208 - if:209 properties:210 function:211 const: pwm212 then:213 properties:214 groups:215 items:216 enum: [pwm0, pwm1_0, pwm1_1]217 maxItems: 2218 - if:219 properties:220 function:221 const: spi222 then:223 properties:224 groups:225 items:226 enum: [spi0, spi0_wp_hold, spi1_0, spi1_1, spi1_2, spi1_3]227 maxItems: 2228 - if:229 properties:230 function:231 const: uart232 then:233 properties:234 groups:235 items:236 enum: [uart1_0, uart1_rx_tx, uart1_cts_rts, uart1_1,237 uart1_2_rx_tx, uart1_2_cts_rts, uart1_3_rx_tx,238 uart1_3_cts_rts, uart2_0_rx_tx, uart2_0_cts_rts,239 uart2_1, uart0, uart1, uart2]240 maxItems: 2241 - if:242 properties:243 function:244 const: watchdog245 then:246 properties:247 groups:248 enum: [watchdog]249 - if:250 properties:251 function:252 const: wifi253 then:254 properties:255 groups:256 items:257 enum: [wf_2g, wf_5g, wf_dbdc]258 maxItems: 3259 '^.*conf.*$':260 type: object261 additionalProperties: false262 description:263 pinconf configuration nodes.264 $ref: /schemas/pinctrl/pincfg-node.yaml265 266 properties:267 pins:268 description:269 An array of strings. Each string contains the name of a pin. There270 is no PIN 41 to PIN 65 above on mt7686b, you can only use those271 pins on mt7986a.272 items:273 enum: [SYS_WATCHDOG, WF2G_LED, WF5G_LED, I2C_SCL, I2C_SDA, GPIO_0,274 GPIO_1, GPIO_2, GPIO_3, GPIO_4, GPIO_5, GPIO_6, GPIO_7,275 GPIO_8, GPIO_9, GPIO_10, GPIO_11, GPIO_12, GPIO_13,276 GPIO_14, GPIO_15, PWM0, PWM1, SPI0_CLK, SPI0_MOSI,277 SPI0_MISO, SPI0_CS, SPI0_HOLD, SPI0_WP, SPI1_CLK,278 SPI1_MOSI, SPI1_MISO, SPI1_CS, SPI2_CLK, SPI2_MOSI,279 SPI2_MISO, SPI2_CS, SPI2_HOLD, SPI2_WP, UART0_RXD,280 UART0_TXD, PCIE_PERESET_N, UART1_RXD, UART1_TXD, UART1_CTS,281 UART1_RTS, UART2_RXD, UART2_TXD, UART2_CTS, UART2_RTS,282 EMMC_DATA_0, EMMC_DATA_1, EMMC_DATA_2, EMMC_DATA_3,283 EMMC_DATA_4, EMMC_DATA_5, EMMC_DATA_6, EMMC_DATA_7,284 EMMC_CMD, EMMC_CK, EMMC_DSL, EMMC_RSTB, PCM_DTX, PCM_DRX,285 PCM_CLK, PCM_FS, MT7531_INT, SMI_MDC, SMI_MDIO,286 WF0_DIG_RESETB, WF0_CBA_RESETB, WF0_XO_REQ, WF0_TOP_CLK,287 WF0_TOP_DATA, WF0_HB1, WF0_HB2, WF0_HB3, WF0_HB4, WF0_HB0,288 WF0_HB0_B, WF0_HB5, WF0_HB6, WF0_HB7, WF0_HB8, WF0_HB9,289 WF0_HB10, WF1_DIG_RESETB, WF1_CBA_RESETB, WF1_XO_REQ,290 WF1_TOP_CLK, WF1_TOP_DATA, WF1_HB1, WF1_HB2, WF1_HB3,291 WF1_HB4, WF1_HB0, WF1_HB0_B, WF1_HB5, WF1_HB6, WF1_HB7,292 WF1_HB8]293 maxItems: 101294 295 bias-disable: true296 297 bias-pull-up:298 oneOf:299 - type: boolean300 description: normal pull up.301 - enum: [100, 101, 102, 103]302 description:303 PUPD/R1/R0 pull down type. See MTK_PUPD_SET_R1R0 defines in304 dt-bindings/pinctrl/mt65xx.h.305 306 bias-pull-down:307 oneOf:308 - type: boolean309 description: normal pull down.310 - enum: [100, 101, 102, 103]311 description:312 PUPD/R1/R0 pull down type. See MTK_PUPD_SET_R1R0 defines in313 dt-bindings/pinctrl/mt65xx.h.314 315 input-enable: true316 317 input-disable: true318 319 output-enable: true320 321 output-low: true322 323 output-high: true324 325 input-schmitt-enable: true326 327 input-schmitt-disable: true328 329 drive-strength:330 enum: [2, 4, 6, 8, 10, 12, 14, 16]331 332 mediatek,pull-up-adv:333 description: |334 Valid arguments for 'mediatek,pull-up-adv' are '0', '1', '2', '3'335 Pull up settings for 2 pull resistors, R0 and R1. Valid arguments336 are described as below:337 0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.338 1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.339 2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.340 3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.341 $ref: /schemas/types.yaml#/definitions/uint32342 enum: [0, 1, 2, 3]343 344 mediatek,pull-down-adv:345 description: |346 Valid arguments for 'mediatek,pull-up-adv' are '0', '1', '2', '3'347 Pull down settings for 2 pull resistors, R0 and R1. Valid arguments348 are described as below:349 0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.350 1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.351 2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.352 3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.353 $ref: /schemas/types.yaml#/definitions/uint32354 enum: [0, 1, 2, 3]355 356 required:357 - pins358 359additionalProperties: false360 361examples:362 - |363 #include <dt-bindings/interrupt-controller/irq.h>364 #include <dt-bindings/interrupt-controller/arm-gic.h>365 #include <dt-bindings/pinctrl/mt65xx.h>366 367 soc {368 #address-cells = <2>;369 #size-cells = <2>;370 pio: pinctrl@1001f000 {371 compatible = "mediatek,mt7986a-pinctrl";372 reg = <0 0x1001f000 0 0x1000>,373 <0 0x11c30000 0 0x1000>,374 <0 0x11c40000 0 0x1000>,375 <0 0x11e20000 0 0x1000>,376 <0 0x11e30000 0 0x1000>,377 <0 0x11f00000 0 0x1000>,378 <0 0x11f10000 0 0x1000>,379 <0 0x1000b000 0 0x1000>;380 reg-names = "gpio", "iocfg_rt", "iocfg_rb", "iocfg_lt",381 "iocfg_lb", "iocfg_tr", "iocfg_tl", "eint";382 gpio-controller;383 #gpio-cells = <2>;384 gpio-ranges = <&pio 0 0 100>;385 interrupt-controller;386 interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;387 interrupt-parent = <&gic>;388 #interrupt-cells = <2>;389 390 pcie_pins: pcie-pins {391 mux {392 function = "pcie";393 groups = "pcie_clk", "pcie_wake", "pcie_pereset";394 };395 };396 397 pwm_pins: pwm-pins {398 mux {399 function = "pwm";400 groups = "pwm0", "pwm1_0";401 };402 };403 404 spi0_pins: spi0-pins {405 mux {406 function = "spi";407 groups = "spi0", "spi0_wp_hold";408 };409 };410 411 uart1_pins: uart1-pins {412 mux {413 function = "uart";414 groups = "uart1";415 };416 };417 418 uart1_3_pins: uart1-3-pins {419 mux {420 function = "uart";421 groups = "uart1_3_rx_tx", "uart1_3_cts_rts";422 };423 };424 425 uart2_pins: uart2-pins {426 mux {427 function = "uart";428 groups = "uart2";429 };430 };431 432 mmc0_pins_default: mmc0-pins {433 mux {434 function = "emmc";435 groups = "emmc_51";436 };437 conf-cmd-dat {438 pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",439 "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",440 "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";441 input-enable;442 drive-strength = <4>;443 bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */444 };445 conf-clk {446 pins = "EMMC_CK";447 drive-strength = <6>;448 bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */449 };450 conf-ds {451 pins = "EMMC_DSL";452 bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */453 };454 conf-rst {455 pins = "EMMC_RSTB";456 drive-strength = <4>;457 bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */458 };459 };460 461 };462 };463