1*2846c905SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*2846c905SEmmanuel Vadot%YAML 1.2 3*2846c905SEmmanuel Vadot--- 4*2846c905SEmmanuel Vadot$id: http://devicetree.org/schemas/pinctrl/mediatek,mt7988-pinctrl.yaml# 5*2846c905SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*2846c905SEmmanuel Vadot 7*2846c905SEmmanuel Vadottitle: MediaTek MT7988 Pin Controller 8*2846c905SEmmanuel Vadot 9*2846c905SEmmanuel Vadotmaintainers: 10*2846c905SEmmanuel Vadot - Sean Wang <sean.wang@kernel.org> 11*2846c905SEmmanuel Vadot 12*2846c905SEmmanuel Vadotdescription: 13*2846c905SEmmanuel Vadot The MediaTek's MT7988 Pin controller is used to control SoC pins. 14*2846c905SEmmanuel Vadot 15*2846c905SEmmanuel Vadotproperties: 16*2846c905SEmmanuel Vadot compatible: 17*2846c905SEmmanuel Vadot enum: 18*2846c905SEmmanuel Vadot - mediatek,mt7988-pinctrl 19*2846c905SEmmanuel Vadot 20*2846c905SEmmanuel Vadot reg: 21*2846c905SEmmanuel Vadot minItems: 7 22*2846c905SEmmanuel Vadot maxItems: 7 23*2846c905SEmmanuel Vadot 24*2846c905SEmmanuel Vadot reg-names: 25*2846c905SEmmanuel Vadot items: 26*2846c905SEmmanuel Vadot - const: gpio 27*2846c905SEmmanuel Vadot - const: iocfg_tr 28*2846c905SEmmanuel Vadot - const: iocfg_br 29*2846c905SEmmanuel Vadot - const: iocfg_rb 30*2846c905SEmmanuel Vadot - const: iocfg_lb 31*2846c905SEmmanuel Vadot - const: iocfg_tl 32*2846c905SEmmanuel Vadot - const: eint 33*2846c905SEmmanuel Vadot 34*2846c905SEmmanuel Vadot gpio-controller: true 35*2846c905SEmmanuel Vadot 36*2846c905SEmmanuel Vadot "#gpio-cells": 37*2846c905SEmmanuel Vadot const: 2 38*2846c905SEmmanuel Vadot 39*2846c905SEmmanuel Vadot gpio-ranges: 40*2846c905SEmmanuel Vadot minItems: 1 41*2846c905SEmmanuel Vadot maxItems: 5 42*2846c905SEmmanuel Vadot description: 43*2846c905SEmmanuel Vadot GPIO valid number range. 44*2846c905SEmmanuel Vadot 45*2846c905SEmmanuel Vadot interrupt-controller: true 46*2846c905SEmmanuel Vadot 47*2846c905SEmmanuel Vadot interrupts: 48*2846c905SEmmanuel Vadot maxItems: 1 49*2846c905SEmmanuel Vadot 50*2846c905SEmmanuel Vadot "#interrupt-cells": 51*2846c905SEmmanuel Vadot const: 2 52*2846c905SEmmanuel Vadot 53*2846c905SEmmanuel VadotallOf: 54*2846c905SEmmanuel Vadot - $ref: pinctrl.yaml# 55*2846c905SEmmanuel Vadot 56*2846c905SEmmanuel Vadotrequired: 57*2846c905SEmmanuel Vadot - compatible 58*2846c905SEmmanuel Vadot - reg 59*2846c905SEmmanuel Vadot - reg-names 60*2846c905SEmmanuel Vadot - gpio-controller 61*2846c905SEmmanuel Vadot - "#gpio-cells" 62*2846c905SEmmanuel Vadot 63*2846c905SEmmanuel VadotpatternProperties: 64*2846c905SEmmanuel Vadot '-pins$': 65*2846c905SEmmanuel Vadot type: object 66*2846c905SEmmanuel Vadot additionalProperties: false 67*2846c905SEmmanuel Vadot 68*2846c905SEmmanuel Vadot properties: 69*2846c905SEmmanuel Vadot mux: 70*2846c905SEmmanuel Vadot type: object 71*2846c905SEmmanuel Vadot additionalProperties: false 72*2846c905SEmmanuel Vadot $ref: /schemas/pinctrl/pinmux-node.yaml 73*2846c905SEmmanuel Vadot description: | 74*2846c905SEmmanuel Vadot pinmux configuration nodes. 75*2846c905SEmmanuel Vadot 76*2846c905SEmmanuel Vadot The following table shows the effective values of "group", "function" 77*2846c905SEmmanuel Vadot properties and chip pinout pins 78*2846c905SEmmanuel Vadot 79*2846c905SEmmanuel Vadot groups function pins (in pin#) 80*2846c905SEmmanuel Vadot --------------------------------------------------------------------- 81*2846c905SEmmanuel Vadot "tops_jtag0_0" "jtag" 0, 1, 2, 3, 4 82*2846c905SEmmanuel Vadot "wo0_jtag" "jtag" 50, 51, 52, 53, 54 83*2846c905SEmmanuel Vadot "wo1_jtag" "jtag" 50, 51, 52, 53, 54 84*2846c905SEmmanuel Vadot "wo2_jtag" "jtag" 50, 51, 52, 53, 54 85*2846c905SEmmanuel Vadot "jtag" "jtag" 58, 59, 60, 61, 62 86*2846c905SEmmanuel Vadot "tops_jtag0_1" "jtag" 58, 59, 60, 61, 62 87*2846c905SEmmanuel Vadot "int_usxgmii" "int_usxgmii" 2, 3 88*2846c905SEmmanuel Vadot "pwm0" "pwm" 57 89*2846c905SEmmanuel Vadot "pwm1" "pwm" 21 90*2846c905SEmmanuel Vadot "pwm2" "pwm" 80 91*2846c905SEmmanuel Vadot "pwm2_0" "pwm" 58 92*2846c905SEmmanuel Vadot "pwm3" "pwm" 81 93*2846c905SEmmanuel Vadot "pwm3_0" "pwm" 59 94*2846c905SEmmanuel Vadot "pwm4" "pwm" 82 95*2846c905SEmmanuel Vadot "pwm4_0" "pwm" 60 96*2846c905SEmmanuel Vadot "pwm5" "pwm" 83 97*2846c905SEmmanuel Vadot "pwm5_0" "pwm" 61 98*2846c905SEmmanuel Vadot "pwm6" "pwm" 69 99*2846c905SEmmanuel Vadot "pwm6_0" "pwm" 62 100*2846c905SEmmanuel Vadot "pwm7" "pwm" 70 101*2846c905SEmmanuel Vadot "pwm7_0" "pwm" 4 102*2846c905SEmmanuel Vadot "dfd" "dfd" 0, 1, 2, 3, 4 103*2846c905SEmmanuel Vadot "xfi_phy0_i2c0" "i2c" 0, 1 104*2846c905SEmmanuel Vadot "xfi_phy1_i2c0" "i2c" 0, 1 105*2846c905SEmmanuel Vadot "xfi_phy_pll_i2c0" "i2c" 3, 4 106*2846c905SEmmanuel Vadot "xfi_phy_pll_i2c1" "i2c" 3, 4 107*2846c905SEmmanuel Vadot "i2c0_0" "i2c" 5, 6 108*2846c905SEmmanuel Vadot "i2c1_sfp" "i2c" 5, 6 109*2846c905SEmmanuel Vadot "xfi_pextp_phy0_i2c" "i2c" 5, 6 110*2846c905SEmmanuel Vadot "xfi_pextp_phy1_i2c" "i2c" 5, 6 111*2846c905SEmmanuel Vadot "i2c0_1" "i2c" 15, 16 112*2846c905SEmmanuel Vadot "u30_phy_i2c0" "i2c" 15, 16 113*2846c905SEmmanuel Vadot "u32_phy_i2c0" "i2c" 15, 16 114*2846c905SEmmanuel Vadot "xfi_phy0_i2c1" "i2c" 15, 16 115*2846c905SEmmanuel Vadot "xfi_phy1_i2c1" "i2c" 15, 16 116*2846c905SEmmanuel Vadot "xfi_phy_pll_i2c2" "i2c" 15, 16 117*2846c905SEmmanuel Vadot "i2c1_0" "i2c" 17, 18 118*2846c905SEmmanuel Vadot "u30_phy_i2c1" "i2c" 17, 18 119*2846c905SEmmanuel Vadot "u32_phy_i2c1" "i2c" 17, 18 120*2846c905SEmmanuel Vadot "xfi_phy_pll_i2c3" "i2c" 17, 18 121*2846c905SEmmanuel Vadot "sgmii0_i2c" "i2c" 17, 18 122*2846c905SEmmanuel Vadot "sgmii1_i2c" "i2c" 17, 18 123*2846c905SEmmanuel Vadot "i2c1_2" "i2c" 69, 70 124*2846c905SEmmanuel Vadot "i2c2_0" "i2c" 69, 70 125*2846c905SEmmanuel Vadot "i2c2_1" "i2c" 71, 72 126*2846c905SEmmanuel Vadot "mdc_mdio0" "eth" 5, 6 127*2846c905SEmmanuel Vadot "2p5g_ext_mdio" "eth" 28, 29 128*2846c905SEmmanuel Vadot "gbe_ext_mdio" "eth" 30, 31 129*2846c905SEmmanuel Vadot "mdc_mdio1" "eth" 69, 70 130*2846c905SEmmanuel Vadot "pcie_wake_n0_0" "pcie" 7 131*2846c905SEmmanuel Vadot "pcie_clk_req_n0_0" "pcie" 8 132*2846c905SEmmanuel Vadot "pcie_wake_n3_0" "pcie" 9 133*2846c905SEmmanuel Vadot "pcie_clk_req_n3" "pcie" 10 134*2846c905SEmmanuel Vadot "pcie_clk_req_n0_1" "pcie" 10 135*2846c905SEmmanuel Vadot "pcie_p0_phy_i2c" "pcie" 7, 8 136*2846c905SEmmanuel Vadot "pcie_p1_phy_i2c" "pcie" 7, 8 137*2846c905SEmmanuel Vadot "pcie_p3_phy_i2c" "pcie" 9, 10 138*2846c905SEmmanuel Vadot "pcie_p2_phy_i2c" "pcie" 7, 8 139*2846c905SEmmanuel Vadot "ckm_phy_i2c" "pcie" 9, 10 140*2846c905SEmmanuel Vadot "pcie_wake_n0_1" "pcie" 13 141*2846c905SEmmanuel Vadot "pcie_wake_n3_1" "pcie" 14 142*2846c905SEmmanuel Vadot "pcie_2l_0_pereset" "pcie" 19 143*2846c905SEmmanuel Vadot "pcie_1l_1_pereset" "pcie" 20 144*2846c905SEmmanuel Vadot "pcie_clk_req_n2_1" "pcie" 63 145*2846c905SEmmanuel Vadot "pcie_2l_1_pereset" "pcie" 73 146*2846c905SEmmanuel Vadot "pcie_1l_0_pereset" "pcie" 74 147*2846c905SEmmanuel Vadot "pcie_wake_n1_0" "pcie" 75 148*2846c905SEmmanuel Vadot "pcie_clk_req_n1" "pcie" 76 149*2846c905SEmmanuel Vadot "pcie_wake_n2_0" "pcie" 77 150*2846c905SEmmanuel Vadot "pcie_clk_req_n2_0" "pcie" 78 151*2846c905SEmmanuel Vadot "pcie_wake_n2_1" "pcie" 79 152*2846c905SEmmanuel Vadot "pmic" "pmic" 11 153*2846c905SEmmanuel Vadot "watchdog" "watchdog" 12 154*2846c905SEmmanuel Vadot "spi0_wp_hold" "spi" 22, 23 155*2846c905SEmmanuel Vadot "spi0" "spi" 24, 25, 26, 27 156*2846c905SEmmanuel Vadot "spi1" "spi" 28, 29, 30, 31 157*2846c905SEmmanuel Vadot "spi2" "spi" 32, 33, 34, 35 158*2846c905SEmmanuel Vadot "spi2_wp_hold" "spi" 36, 37 159*2846c905SEmmanuel Vadot "snfi" "flash" 22, 23, 24, 25, 26, 27 160*2846c905SEmmanuel Vadot "emmc_45" "flash" 21, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37 161*2846c905SEmmanuel Vadot "sdcard" "flash" 32, 33, 34, 35, 36, 37 162*2846c905SEmmanuel Vadot "emmc_51" "flash" 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 163*2846c905SEmmanuel Vadot "uart2" "uart" 0, 1, 2, 3 164*2846c905SEmmanuel Vadot "tops_uart0_0" "uart" 22, 23 165*2846c905SEmmanuel Vadot "uart2_0" "uart" 28, 29, 30, 31 166*2846c905SEmmanuel Vadot "uart1_0" "uart" 32, 33, 34, 35 167*2846c905SEmmanuel Vadot "uart2_1" "uart" 32, 33, 34, 35 168*2846c905SEmmanuel Vadot "net_wo0_uart_txd_0" "uart" 28 169*2846c905SEmmanuel Vadot "net_wo1_uart_txd_0" "uart" 29 170*2846c905SEmmanuel Vadot "net_wo2_uart_txd_0" "uart" 30 171*2846c905SEmmanuel Vadot "tops_uart1_0" "uart" 28, 29 172*2846c905SEmmanuel Vadot "tops_uart0_1" "uart" 30, 31 173*2846c905SEmmanuel Vadot "tops_uart1_1" "uart" 36, 37 174*2846c905SEmmanuel Vadot "uart0" "uart" 55, 56 175*2846c905SEmmanuel Vadot "tops_uart0_2" "uart" 55, 56 176*2846c905SEmmanuel Vadot "uart2_2" "uart" 50, 51, 52, 53 177*2846c905SEmmanuel Vadot "uart1_1" "uart" 58, 59, 60, 61 178*2846c905SEmmanuel Vadot "uart2_3" "uart" 58, 59, 60, 61 179*2846c905SEmmanuel Vadot "uart1_2" "uart" 80, 81, 82, 83 180*2846c905SEmmanuel Vadot "uart1_2_lite" "uart" 80, 81 181*2846c905SEmmanuel Vadot "tops_uart1_2" "uart" 80, 81 182*2846c905SEmmanuel Vadot "net_wo0_uart_txd_1" "uart" 80 183*2846c905SEmmanuel Vadot "net_wo1_uart_txd_1" "uart" 81 184*2846c905SEmmanuel Vadot "net_wo2_uart_txd_1" "uart" 82 185*2846c905SEmmanuel Vadot "udi" "udi" 32, 33, 34, 35, 36 186*2846c905SEmmanuel Vadot "i2s" "audio" 50, 51, 52, 53, 54 187*2846c905SEmmanuel Vadot "pcm" "audio" 50, 51, 52, 53 188*2846c905SEmmanuel Vadot "gbe0_led1" "led" 58 189*2846c905SEmmanuel Vadot "gbe1_led1" "led" 59 190*2846c905SEmmanuel Vadot "gbe2_led1" "led" 60 191*2846c905SEmmanuel Vadot "gbe3_led1" "led" 61 192*2846c905SEmmanuel Vadot "2p5gbe_led1" "led" 62 193*2846c905SEmmanuel Vadot "gbe0_led0" "led" 64 194*2846c905SEmmanuel Vadot "gbe1_led0" "led" 65 195*2846c905SEmmanuel Vadot "gbe2_led0" "led" 66 196*2846c905SEmmanuel Vadot "gbe3_led0" "led" 67 197*2846c905SEmmanuel Vadot "2p5gbe_led0" "led" 68 198*2846c905SEmmanuel Vadot "drv_vbus_p1" "usb" 63 199*2846c905SEmmanuel Vadot "drv_vbus" "usb" 79 200*2846c905SEmmanuel Vadot 201*2846c905SEmmanuel Vadot properties: 202*2846c905SEmmanuel Vadot function: 203*2846c905SEmmanuel Vadot description: 204*2846c905SEmmanuel Vadot A string containing the name of the function to mux to the group. 205*2846c905SEmmanuel Vadot enum: [audio, dfd, eth, flash, i2c, int_usxgmii, jtag, led, pcie, pmic, pwm, spi, 206*2846c905SEmmanuel Vadot uart, udi, usb, watchdog] 207*2846c905SEmmanuel Vadot groups: 208*2846c905SEmmanuel Vadot description: 209*2846c905SEmmanuel Vadot An array of strings. Each string contains the name of a group. 210*2846c905SEmmanuel Vadot 211*2846c905SEmmanuel Vadot required: 212*2846c905SEmmanuel Vadot - function 213*2846c905SEmmanuel Vadot - groups 214*2846c905SEmmanuel Vadot 215*2846c905SEmmanuel Vadot allOf: 216*2846c905SEmmanuel Vadot - if: 217*2846c905SEmmanuel Vadot properties: 218*2846c905SEmmanuel Vadot function: 219*2846c905SEmmanuel Vadot const: audio 220*2846c905SEmmanuel Vadot then: 221*2846c905SEmmanuel Vadot properties: 222*2846c905SEmmanuel Vadot groups: 223*2846c905SEmmanuel Vadot enum: [i2s, pcm] 224*2846c905SEmmanuel Vadot - if: 225*2846c905SEmmanuel Vadot properties: 226*2846c905SEmmanuel Vadot function: 227*2846c905SEmmanuel Vadot const: jtag 228*2846c905SEmmanuel Vadot then: 229*2846c905SEmmanuel Vadot properties: 230*2846c905SEmmanuel Vadot groups: 231*2846c905SEmmanuel Vadot enum: [jtag, tops_jtag0_0, tops_jtag0_1, wo0_jtag, wo1_jtag, wo2_jtag] 232*2846c905SEmmanuel Vadot - if: 233*2846c905SEmmanuel Vadot properties: 234*2846c905SEmmanuel Vadot function: 235*2846c905SEmmanuel Vadot const: int_usxgmii 236*2846c905SEmmanuel Vadot then: 237*2846c905SEmmanuel Vadot properties: 238*2846c905SEmmanuel Vadot groups: 239*2846c905SEmmanuel Vadot const: int_usxgmii 240*2846c905SEmmanuel Vadot - if: 241*2846c905SEmmanuel Vadot properties: 242*2846c905SEmmanuel Vadot function: 243*2846c905SEmmanuel Vadot const: dfd 244*2846c905SEmmanuel Vadot then: 245*2846c905SEmmanuel Vadot properties: 246*2846c905SEmmanuel Vadot groups: 247*2846c905SEmmanuel Vadot const: dfd 248*2846c905SEmmanuel Vadot - if: 249*2846c905SEmmanuel Vadot properties: 250*2846c905SEmmanuel Vadot function: 251*2846c905SEmmanuel Vadot const: flash 252*2846c905SEmmanuel Vadot then: 253*2846c905SEmmanuel Vadot properties: 254*2846c905SEmmanuel Vadot groups: 255*2846c905SEmmanuel Vadot enum: [emmc_45, emmc_51, sdcard, snfi] 256*2846c905SEmmanuel Vadot - if: 257*2846c905SEmmanuel Vadot properties: 258*2846c905SEmmanuel Vadot function: 259*2846c905SEmmanuel Vadot const: eth 260*2846c905SEmmanuel Vadot then: 261*2846c905SEmmanuel Vadot properties: 262*2846c905SEmmanuel Vadot groups: 263*2846c905SEmmanuel Vadot enum: [2p5g_ext_mdio, gbe_ext_mdio, mdc_mdio0, mdc_mdio1] 264*2846c905SEmmanuel Vadot - if: 265*2846c905SEmmanuel Vadot properties: 266*2846c905SEmmanuel Vadot function: 267*2846c905SEmmanuel Vadot const: i2c 268*2846c905SEmmanuel Vadot then: 269*2846c905SEmmanuel Vadot properties: 270*2846c905SEmmanuel Vadot groups: 271*2846c905SEmmanuel Vadot enum: [xfi_phy0_i2c0, xfi_phy1_i2c0, xfi_phy_pll_i2c0, 272*2846c905SEmmanuel Vadot xfi_phy_pll_i2c1, i2c0_0, i2c1_sfp, xfi_pextp_phy0_i2c, 273*2846c905SEmmanuel Vadot xfi_pextp_phy1_i2c, i2c0_1, u30_phy_i2c0, u32_phy_i2c0, 274*2846c905SEmmanuel Vadot xfi_phy0_i2c1, xfi_phy1_i2c1, xfi_phy_pll_i2c2, i2c1_0, 275*2846c905SEmmanuel Vadot u30_phy_i2c1, u32_phy_i2c1, xfi_phy_pll_i2c3, sgmii0_i2c, 276*2846c905SEmmanuel Vadot sgmii1_i2c, i2c1_2, i2c2_0, i2c2_1] 277*2846c905SEmmanuel Vadot - if: 278*2846c905SEmmanuel Vadot properties: 279*2846c905SEmmanuel Vadot function: 280*2846c905SEmmanuel Vadot const: led 281*2846c905SEmmanuel Vadot then: 282*2846c905SEmmanuel Vadot properties: 283*2846c905SEmmanuel Vadot groups: 284*2846c905SEmmanuel Vadot enum: [2p5gbe_led0, 2p5gbe_led1, gbe0_led0, gbe0_led1, gbe1_led0, gbe1_led1, 285*2846c905SEmmanuel Vadot gbe2_led0, gbe2_led1, gbe3_led0, gbe3_led1, wf5g_led0, wf5g_led1] 286*2846c905SEmmanuel Vadot - if: 287*2846c905SEmmanuel Vadot properties: 288*2846c905SEmmanuel Vadot function: 289*2846c905SEmmanuel Vadot const: pcie 290*2846c905SEmmanuel Vadot then: 291*2846c905SEmmanuel Vadot properties: 292*2846c905SEmmanuel Vadot groups: 293*2846c905SEmmanuel Vadot items: 294*2846c905SEmmanuel Vadot enum: [pcie_wake_n0_0, pcie_clk_req_n0_0, pcie_wake_n3_0, 295*2846c905SEmmanuel Vadot pcie_clk_req_n3, pcie_p0_phy_i2c, pcie_p1_phy_i2c, 296*2846c905SEmmanuel Vadot pcie_p3_phy_i2c, pcie_p2_phy_i2c, ckm_phy_i2c, 297*2846c905SEmmanuel Vadot pcie_wake_n0_1, pcie_wake_n3_1, pcie_2l_0_pereset, 298*2846c905SEmmanuel Vadot pcie_1l_1_pereset, pcie_clk_req_n2_1, pcie_2l_1_pereset, 299*2846c905SEmmanuel Vadot pcie_1l_0_pereset, pcie_wake_n1_0, pcie_clk_req_n1, 300*2846c905SEmmanuel Vadot pcie_wake_n2_0, pcie_clk_req_n2_0, pcie_wake_n2_1, 301*2846c905SEmmanuel Vadot pcie_clk_req_n0_1] 302*2846c905SEmmanuel Vadot maxItems: 3 303*2846c905SEmmanuel Vadot - if: 304*2846c905SEmmanuel Vadot properties: 305*2846c905SEmmanuel Vadot function: 306*2846c905SEmmanuel Vadot const: pmic 307*2846c905SEmmanuel Vadot then: 308*2846c905SEmmanuel Vadot properties: 309*2846c905SEmmanuel Vadot groups: 310*2846c905SEmmanuel Vadot const: pmic 311*2846c905SEmmanuel Vadot - if: 312*2846c905SEmmanuel Vadot properties: 313*2846c905SEmmanuel Vadot function: 314*2846c905SEmmanuel Vadot const: pwm 315*2846c905SEmmanuel Vadot then: 316*2846c905SEmmanuel Vadot properties: 317*2846c905SEmmanuel Vadot groups: 318*2846c905SEmmanuel Vadot items: 319*2846c905SEmmanuel Vadot enum: [pwm0, pwm1, pwm2, pwm2_0, pwm3, pwm3_0, pwm4, pwm4_0, pwm5, pwm5_0, 320*2846c905SEmmanuel Vadot pwm6, pwm6_0, pwm7, pwm7_0] 321*2846c905SEmmanuel Vadot maxItems: 2 322*2846c905SEmmanuel Vadot - if: 323*2846c905SEmmanuel Vadot properties: 324*2846c905SEmmanuel Vadot function: 325*2846c905SEmmanuel Vadot const: spi 326*2846c905SEmmanuel Vadot then: 327*2846c905SEmmanuel Vadot properties: 328*2846c905SEmmanuel Vadot groups: 329*2846c905SEmmanuel Vadot items: 330*2846c905SEmmanuel Vadot enum: [spi0, spi0_wp_hold, spi1, spi2, spi2_wp_hold] 331*2846c905SEmmanuel Vadot maxItems: 2 332*2846c905SEmmanuel Vadot - if: 333*2846c905SEmmanuel Vadot properties: 334*2846c905SEmmanuel Vadot function: 335*2846c905SEmmanuel Vadot const: uart 336*2846c905SEmmanuel Vadot then: 337*2846c905SEmmanuel Vadot properties: 338*2846c905SEmmanuel Vadot groups: 339*2846c905SEmmanuel Vadot items: 340*2846c905SEmmanuel Vadot enum: [net_wo0_uart_txd_0, net_wo0_uart_txd_1, net_wo1_uart_txd_0, 341*2846c905SEmmanuel Vadot net_wo1_uart_txd_1, net_wo2_uart_txd_0, net_wo2_uart_txd_1, 342*2846c905SEmmanuel Vadot tops_uart0_0, tops_uart0_1, tops_uart0_2, tops_uart1_0, 343*2846c905SEmmanuel Vadot tops_uart1_1, tops_uart1_2, uart0, uart1_0, uart1_1, uart1_2, 344*2846c905SEmmanuel Vadot uart1_2_lite, uart2, uart2_0, uart2_1, uart2_3] 345*2846c905SEmmanuel Vadot maxItems: 2 346*2846c905SEmmanuel Vadot - if: 347*2846c905SEmmanuel Vadot properties: 348*2846c905SEmmanuel Vadot function: 349*2846c905SEmmanuel Vadot const: watchdog 350*2846c905SEmmanuel Vadot then: 351*2846c905SEmmanuel Vadot properties: 352*2846c905SEmmanuel Vadot groups: 353*2846c905SEmmanuel Vadot const: watchdog 354*2846c905SEmmanuel Vadot - if: 355*2846c905SEmmanuel Vadot properties: 356*2846c905SEmmanuel Vadot function: 357*2846c905SEmmanuel Vadot const: udi 358*2846c905SEmmanuel Vadot then: 359*2846c905SEmmanuel Vadot properties: 360*2846c905SEmmanuel Vadot groups: 361*2846c905SEmmanuel Vadot const: udi 362*2846c905SEmmanuel Vadot - if: 363*2846c905SEmmanuel Vadot properties: 364*2846c905SEmmanuel Vadot function: 365*2846c905SEmmanuel Vadot const: usb 366*2846c905SEmmanuel Vadot then: 367*2846c905SEmmanuel Vadot properties: 368*2846c905SEmmanuel Vadot groups: 369*2846c905SEmmanuel Vadot items: 370*2846c905SEmmanuel Vadot enum: [drv_vbus, drv_vbus_p1] 371*2846c905SEmmanuel Vadot maxItems: 1 372*2846c905SEmmanuel Vadot 373*2846c905SEmmanuel Vadot patternProperties: 374*2846c905SEmmanuel Vadot '^conf(-[-a-z]*)?$': 375*2846c905SEmmanuel Vadot type: object 376*2846c905SEmmanuel Vadot additionalProperties: false 377*2846c905SEmmanuel Vadot description: 378*2846c905SEmmanuel Vadot pinconf configuration nodes. 379*2846c905SEmmanuel Vadot $ref: /schemas/pinctrl/pincfg-node.yaml 380*2846c905SEmmanuel Vadot 381*2846c905SEmmanuel Vadot properties: 382*2846c905SEmmanuel Vadot pins: 383*2846c905SEmmanuel Vadot description: 384*2846c905SEmmanuel Vadot An array of strings. Each string contains the name of a pin. 385*2846c905SEmmanuel Vadot items: 386*2846c905SEmmanuel Vadot enum: [UART2_RXD, UART2_TXD, UART2_CTS, UART2_RTS, GPIO_A, SMI_0_MDC, 387*2846c905SEmmanuel Vadot SMI_0_MDIO, PCIE30_2L_0_WAKE_N, PCIE30_2L_0_CLKREQ_N, 388*2846c905SEmmanuel Vadot PCIE30_1L_1_WAKE_N, PCIE30_1L_1_CLKREQ_N, GPIO_P, WATCHDOG, 389*2846c905SEmmanuel Vadot GPIO_RESET, GPIO_WPS, PMIC_I2C_SCL, PMIC_I2C_SDA, I2C_1_SCL, 390*2846c905SEmmanuel Vadot I2C_1_SDA, PCIE30_2L_0_PRESET_N, PCIE30_1L_1_PRESET_N, PWMD1, 391*2846c905SEmmanuel Vadot SPI0_WP, SPI0_HOLD, SPI0_CSB, SPI0_MISO, SPI0_MOSI, SPI0_CLK, 392*2846c905SEmmanuel Vadot SPI1_CSB, SPI1_MISO, SPI1_MOSI, SPI1_CLK, SPI2_CLK, SPI2_MOSI, 393*2846c905SEmmanuel Vadot SPI2_MISO, SPI2_CSB, SPI2_HOLD, SPI2_WP, EMMC_RSTB, EMMC_DSL, 394*2846c905SEmmanuel Vadot EMMC_CK, EMMC_CMD, EMMC_DATA_7, EMMC_DATA_6, EMMC_DATA_5, 395*2846c905SEmmanuel Vadot EMMC_DATA_4, EMMC_DATA_3, EMMC_DATA_2, EMMC_DATA_1, 396*2846c905SEmmanuel Vadot EMMC_DATA_0, PCM_FS_I2S_LRCK, PCM_CLK_I2S_BCLK, 397*2846c905SEmmanuel Vadot PCM_DRX_I2S_DIN, PCM_DTX_I2S_DOUT, PCM_MCK_I2S_MCLK, 398*2846c905SEmmanuel Vadot UART0_RXD, UART0_TXD, PWMD0, JTAG_JTDI, JTAG_JTDO, JTAG_JTMS, 399*2846c905SEmmanuel Vadot JTAG_JTCLK, JTAG_JTRST_N, USB_DRV_VBUS_P1, LED_A, LED_B, LED_C, 400*2846c905SEmmanuel Vadot LED_D, LED_E, GPIO_B, GPIO_C, I2C_2_SCL, I2C_2_SDA, 401*2846c905SEmmanuel Vadot PCIE30_2L_1_PRESET_N, PCIE30_1L_0_PRESET_N, 402*2846c905SEmmanuel Vadot PCIE30_2L_1_WAKE_N, PCIE30_2L_1_CLKREQ_N, 403*2846c905SEmmanuel Vadot PCIE30_1L_0_WAKE_N, PCIE30_1L_0_CLKREQ_N, USB_DRV_VBUS_P0, 404*2846c905SEmmanuel Vadot UART1_RXD, UART1_TXD, UART1_CTS, UART1_RTS] 405*2846c905SEmmanuel Vadot maxItems: 84 406*2846c905SEmmanuel Vadot 407*2846c905SEmmanuel Vadot bias-disable: true 408*2846c905SEmmanuel Vadot 409*2846c905SEmmanuel Vadot bias-pull-up: 410*2846c905SEmmanuel Vadot oneOf: 411*2846c905SEmmanuel Vadot - type: boolean 412*2846c905SEmmanuel Vadot description: normal pull up. 413*2846c905SEmmanuel Vadot - enum: [100, 101, 102, 103] 414*2846c905SEmmanuel Vadot description: 415*2846c905SEmmanuel Vadot PUPD/R1/R0 pull down type. See MTK_PUPD_SET_R1R0 defines in 416*2846c905SEmmanuel Vadot dt-bindings/pinctrl/mt65xx.h. 417*2846c905SEmmanuel Vadot 418*2846c905SEmmanuel Vadot bias-pull-down: 419*2846c905SEmmanuel Vadot oneOf: 420*2846c905SEmmanuel Vadot - type: boolean 421*2846c905SEmmanuel Vadot description: normal pull down. 422*2846c905SEmmanuel Vadot - enum: [100, 101, 102, 103] 423*2846c905SEmmanuel Vadot description: 424*2846c905SEmmanuel Vadot PUPD/R1/R0 pull down type. See MTK_PUPD_SET_R1R0 defines in 425*2846c905SEmmanuel Vadot dt-bindings/pinctrl/mt65xx.h. 426*2846c905SEmmanuel Vadot 427*2846c905SEmmanuel Vadot input-enable: true 428*2846c905SEmmanuel Vadot 429*2846c905SEmmanuel Vadot input-disable: true 430*2846c905SEmmanuel Vadot 431*2846c905SEmmanuel Vadot output-enable: true 432*2846c905SEmmanuel Vadot 433*2846c905SEmmanuel Vadot output-low: true 434*2846c905SEmmanuel Vadot 435*2846c905SEmmanuel Vadot output-high: true 436*2846c905SEmmanuel Vadot 437*2846c905SEmmanuel Vadot input-schmitt-enable: true 438*2846c905SEmmanuel Vadot 439*2846c905SEmmanuel Vadot input-schmitt-disable: true 440*2846c905SEmmanuel Vadot 441*2846c905SEmmanuel Vadot drive-strength: 442*2846c905SEmmanuel Vadot enum: [2, 4, 6, 8, 10, 12, 14, 16] 443*2846c905SEmmanuel Vadot 444*2846c905SEmmanuel Vadot mediatek,pull-up-adv: 445*2846c905SEmmanuel Vadot description: | 446*2846c905SEmmanuel Vadot Valid arguments for 'mediatek,pull-up-adv' are '0', '1', '2', '3' 447*2846c905SEmmanuel Vadot Pull up settings for 2 pull resistors, R0 and R1. Valid arguments 448*2846c905SEmmanuel Vadot are described as below: 449*2846c905SEmmanuel Vadot 0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled. 450*2846c905SEmmanuel Vadot 1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled. 451*2846c905SEmmanuel Vadot 2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled. 452*2846c905SEmmanuel Vadot 3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled. 453*2846c905SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 454*2846c905SEmmanuel Vadot enum: [0, 1, 2, 3] 455*2846c905SEmmanuel Vadot 456*2846c905SEmmanuel Vadot mediatek,pull-down-adv: 457*2846c905SEmmanuel Vadot description: | 458*2846c905SEmmanuel Vadot Valid arguments for 'mediatek,pull-up-adv' are '0', '1', '2', '3' 459*2846c905SEmmanuel Vadot Pull down settings for 2 pull resistors, R0 and R1. Valid arguments 460*2846c905SEmmanuel Vadot are described as below: 461*2846c905SEmmanuel Vadot 0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled. 462*2846c905SEmmanuel Vadot 1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled. 463*2846c905SEmmanuel Vadot 2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled. 464*2846c905SEmmanuel Vadot 3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled. 465*2846c905SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 466*2846c905SEmmanuel Vadot enum: [0, 1, 2, 3] 467*2846c905SEmmanuel Vadot 468*2846c905SEmmanuel Vadot required: 469*2846c905SEmmanuel Vadot - pins 470*2846c905SEmmanuel Vadot 471*2846c905SEmmanuel VadotadditionalProperties: false 472*2846c905SEmmanuel Vadot 473*2846c905SEmmanuel Vadotexamples: 474*2846c905SEmmanuel Vadot - | 475*2846c905SEmmanuel Vadot #include <dt-bindings/interrupt-controller/irq.h> 476*2846c905SEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 477*2846c905SEmmanuel Vadot #include <dt-bindings/pinctrl/mt65xx.h> 478*2846c905SEmmanuel Vadot 479*2846c905SEmmanuel Vadot soc { 480*2846c905SEmmanuel Vadot #address-cells = <2>; 481*2846c905SEmmanuel Vadot #size-cells = <2>; 482*2846c905SEmmanuel Vadot 483*2846c905SEmmanuel Vadot pio: pinctrl@1001f000 { 484*2846c905SEmmanuel Vadot compatible = "mediatek,mt7988-pinctrl"; 485*2846c905SEmmanuel Vadot reg = <0 0x1001f000 0 0x1000>, 486*2846c905SEmmanuel Vadot <0 0x11c10000 0 0x1000>, 487*2846c905SEmmanuel Vadot <0 0x11d00000 0 0x1000>, 488*2846c905SEmmanuel Vadot <0 0x11d20000 0 0x1000>, 489*2846c905SEmmanuel Vadot <0 0x11e00000 0 0x1000>, 490*2846c905SEmmanuel Vadot <0 0x11f00000 0 0x1000>, 491*2846c905SEmmanuel Vadot <0 0x1000b000 0 0x1000>; 492*2846c905SEmmanuel Vadot reg-names = "gpio", "iocfg_tr", 493*2846c905SEmmanuel Vadot "iocfg_br", "iocfg_rb", 494*2846c905SEmmanuel Vadot "iocfg_lb", "iocfg_tl", "eint"; 495*2846c905SEmmanuel Vadot gpio-controller; 496*2846c905SEmmanuel Vadot #gpio-cells = <2>; 497*2846c905SEmmanuel Vadot gpio-ranges = <&pio 0 0 84>; 498*2846c905SEmmanuel Vadot interrupt-controller; 499*2846c905SEmmanuel Vadot interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>; 500*2846c905SEmmanuel Vadot interrupt-parent = <&gic>; 501*2846c905SEmmanuel Vadot #interrupt-cells = <2>; 502*2846c905SEmmanuel Vadot 503*2846c905SEmmanuel Vadot i2c0_pins: i2c0-g0-pins { 504*2846c905SEmmanuel Vadot mux { 505*2846c905SEmmanuel Vadot function = "i2c"; 506*2846c905SEmmanuel Vadot groups = "i2c0_1"; 507*2846c905SEmmanuel Vadot }; 508*2846c905SEmmanuel Vadot }; 509*2846c905SEmmanuel Vadot 510*2846c905SEmmanuel Vadot mdio0_pins: mdio0-pins { 511*2846c905SEmmanuel Vadot mux { 512*2846c905SEmmanuel Vadot function = "eth"; 513*2846c905SEmmanuel Vadot groups = "mdc_mdio0"; 514*2846c905SEmmanuel Vadot }; 515*2846c905SEmmanuel Vadot 516*2846c905SEmmanuel Vadot conf { 517*2846c905SEmmanuel Vadot pins = "SMI_0_MDC", "SMI_0_MDIO"; 518*2846c905SEmmanuel Vadot drive-strength = <8>; 519*2846c905SEmmanuel Vadot }; 520*2846c905SEmmanuel Vadot }; 521*2846c905SEmmanuel Vadot 522*2846c905SEmmanuel Vadot mmc0_pins_emmc_51: mmc0-emmc-51-pins { 523*2846c905SEmmanuel Vadot mux { 524*2846c905SEmmanuel Vadot function = "flash"; 525*2846c905SEmmanuel Vadot groups = "emmc_51"; 526*2846c905SEmmanuel Vadot }; 527*2846c905SEmmanuel Vadot }; 528*2846c905SEmmanuel Vadot 529*2846c905SEmmanuel Vadot mmc0_pins_sdcard: mmc0-sdcard-pins { 530*2846c905SEmmanuel Vadot mux { 531*2846c905SEmmanuel Vadot function = "flash"; 532*2846c905SEmmanuel Vadot groups = "sdcard"; 533*2846c905SEmmanuel Vadot }; 534*2846c905SEmmanuel Vadot }; 535*2846c905SEmmanuel Vadot 536*2846c905SEmmanuel Vadot pcie0_pins: pcie0-pins { 537*2846c905SEmmanuel Vadot mux { 538*2846c905SEmmanuel Vadot function = "pcie"; 539*2846c905SEmmanuel Vadot groups = "pcie_2l_0_pereset", "pcie_clk_req_n0_0", 540*2846c905SEmmanuel Vadot "pcie_wake_n0_0"; 541*2846c905SEmmanuel Vadot }; 542*2846c905SEmmanuel Vadot }; 543*2846c905SEmmanuel Vadot 544*2846c905SEmmanuel Vadot pcie1_pins: pcie1-pins { 545*2846c905SEmmanuel Vadot mux { 546*2846c905SEmmanuel Vadot function = "pcie"; 547*2846c905SEmmanuel Vadot groups = "pcie_2l_1_pereset", "pcie_clk_req_n1", 548*2846c905SEmmanuel Vadot "pcie_wake_n1_0"; 549*2846c905SEmmanuel Vadot }; 550*2846c905SEmmanuel Vadot }; 551*2846c905SEmmanuel Vadot 552*2846c905SEmmanuel Vadot pcie2_pins: pcie2-pins { 553*2846c905SEmmanuel Vadot mux { 554*2846c905SEmmanuel Vadot function = "pcie"; 555*2846c905SEmmanuel Vadot groups = "pcie_1l_0_pereset", "pcie_clk_req_n2_0", 556*2846c905SEmmanuel Vadot "pcie_wake_n2_0"; 557*2846c905SEmmanuel Vadot }; 558*2846c905SEmmanuel Vadot }; 559*2846c905SEmmanuel Vadot 560*2846c905SEmmanuel Vadot pcie3_pins: pcie3-pins { 561*2846c905SEmmanuel Vadot mux { 562*2846c905SEmmanuel Vadot function = "pcie"; 563*2846c905SEmmanuel Vadot groups = "pcie_1l_1_pereset", "pcie_clk_req_n3", 564*2846c905SEmmanuel Vadot "pcie_wake_n3_0"; 565*2846c905SEmmanuel Vadot }; 566*2846c905SEmmanuel Vadot }; 567*2846c905SEmmanuel Vadot 568*2846c905SEmmanuel Vadot uart0_pins: uart0-pins { 569*2846c905SEmmanuel Vadot mux { 570*2846c905SEmmanuel Vadot function = "uart"; 571*2846c905SEmmanuel Vadot groups = "uart0"; 572*2846c905SEmmanuel Vadot }; 573*2846c905SEmmanuel Vadot }; 574*2846c905SEmmanuel Vadot }; 575*2846c905SEmmanuel Vadot }; 576