# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/pinctrl/mediatek,mt7622-pinctrl.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: MediaTek MT7622 Pin Controller maintainers: - Sean Wang <sean.wang@kernel.org> description: The MediaTek's MT7622 Pin controller is used to control SoC pins. properties: compatible: enum: - mediatek,mt7622-pinctrl - mediatek,mt7629-pinctrl reg: maxItems: 1 reg-names: items: - const: eint gpio-controller: true "#gpio-cells": const: 2 description: Number of cells in GPIO specifier. Since the generic GPIO binding is used, the amount of cells must be specified as 2. See the below mentioned gpio binding representation for description of particular cells. interrupt-controller: true interrupts: maxItems: 1 "#interrupt-cells": const: 2 allOf: - $ref: pinctrl.yaml# required: - compatible - reg - gpio-controller - "#gpio-cells" if: required: - interrupt-controller then: required: - reg-names - interrupts - "#interrupt-cells" patternProperties: '-pins(-[a-z]+)?$': type: object additionalProperties: false patternProperties: '^mux(-|$)': type: object additionalProperties: false description: pinmux configuration nodes. $ref: /schemas/pinctrl/pinmux-node.yaml properties: function: description: A string containing the name of the function to mux to the group. enum: [emmc, eth, i2c, i2s, ir, led, flash, pcie, pmic, pwm, sd, spi, tdm, uart, watchdog, wifi] groups: description: An array of strings. Each string contains the name of a group. drive-strength: enum: [4, 8, 12, 16] required: - groups - function allOf: - if: properties: function: const: emmc then: properties: groups: enum: [emmc, emmc_rst] - if: properties: function: const: eth then: properties: groups: enum: [esw, esw_p0_p1, esw_p2_p3_p4, rgmii_via_esw, rgmii_via_gmac1, rgmii_via_gmac2, mdc_mdio] - if: properties: function: const: i2c then: properties: groups: enum: [i2c0, i2c_0, i2c_1, i2c1_0, i2c1_1, i2c1_2, i2c2_0, i2c2_1, i2c2_2] - if: properties: function: const: i2s then: properties: groups: enum: [i2s_in_mclk_bclk_ws, i2s1_in_data, i2s2_in_data, i2s3_in_data, i2s4_in_data, i2s_out_mclk_bclk_ws, i2s1_out_data, i2s2_out_data, i2s3_out_data, i2s4_out_data] - if: properties: function: const: ir then: properties: groups: enum: [ir_0_tx, ir_1_tx, ir_2_tx, ir_0_rx, ir_1_rx, ir_2_rx] - if: properties: function: const: led then: properties: groups: enum: [ephy_leds, ephy0_led, ephy1_led, ephy2_led, ephy3_led, ephy4_led, wled, wf2g_led, wf5g_led] - if: properties: function: const: flash then: properties: groups: enum: [par_nand, snfi, spi_nor] - if: properties: function: const: pcie then: properties: groups: enum: [pcie0_0_waken, pcie0_1_waken, pcie1_0_waken, pcie0_0_clkreq, pcie0_1_clkreq, pcie1_0_clkreq, pcie0_pad_perst, pcie1_pad_perst, pcie_pereset, pcie_wake, pcie_clkreq] - if: properties: function: const: pmic then: properties: groups: enum: [pmic_bus] - if: properties: function: const: pwm then: properties: groups: enum: [pwm_ch1_0, pwm_ch1_1, pwm_ch1_2, pwm_ch2_0, pwm_ch2_1, pwm_ch2_2, pwm_ch3_0, pwm_ch3_1, pwm_ch3_2, pwm_ch4_0, pwm_ch4_1, pwm_ch4_2, pwm_ch4_3, pwm_ch5_0, pwm_ch5_1, pwm_ch5_2, pwm_ch6_0, pwm_ch6_1, pwm_ch6_2, pwm_ch6_3, pwm_ch7_0, pwm_0, pwm_1] - if: properties: function: const: sd then: properties: groups: enum: [sd_0, sd_1] - if: properties: function: const: spi then: properties: groups: enum: [spic0_0, spic0_1, spic1_0, spic1_1, spic2_0_wp_hold, spic2_0, spi_0, spi_1, spi_wp, spi_hold] - if: properties: function: const: tdm then: properties: groups: enum: [tdm_0_out_mclk_bclk_ws, tdm_0_in_mclk_bclk_ws, tdm_0_out_data, tdm_0_in_data, tdm_1_out_mclk_bclk_ws, tdm_1_in_mclk_bclk_ws, tdm_1_out_data, tdm_1_in_data] - if: properties: function: const: uart then: properties: groups: enum: [uart0_0_tx_rx, uart1_0_tx_rx, uart1_0_rts_cts, uart1_1_tx_rx, uart1_1_rts_cts, uart2_0_tx_rx, uart2_0_rts_cts, uart2_1_tx_rx, uart2_1_rts_cts, uart2_2_tx_rx, uart2_2_rts_cts, uart2_3_tx_rx, uart3_0_tx_rx, uart3_1_tx_rx, uart3_1_rts_cts, uart4_0_tx_rx, uart4_1_tx_rx, uart4_1_rts_cts, uart4_2_tx_rx, uart4_2_rts_cts, uart0_txd_rxd, uart1_0_txd_rxd, uart1_0_cts_rts, uart1_1_txd_rxd, uart1_1_cts_rts, uart2_0_txd_rxd, uart2_0_cts_rts, uart2_1_txd_rxd, uart2_1_cts_rts] - if: properties: function: const: watchdog then: properties: groups: enum: [watchdog] - if: properties: function: const: wifi then: properties: groups: enum: [wf0_2g, wf0_5g] '^conf(-|$)': type: object additionalProperties: false description: pinconf configuration nodes. $ref: /schemas/pinctrl/pincfg-node.yaml properties: groups: description: An array of strings. Each string contains the name of a group. Valid values are the same as the pinmux node. pins: description: An array of strings. Each string contains the name of a pin. enum: [GPIO_A, I2S1_IN, I2S1_OUT, I2S_BCLK, I2S_WS, I2S_MCLK, TXD0, RXD0, SPI_WP, SPI_HOLD, SPI_CLK, SPI_MOSI, SPI_MISO, SPI_CS, I2C_SDA, I2C_SCL, I2S2_IN, I2S3_IN, I2S4_IN, I2S2_OUT, I2S3_OUT, I2S4_OUT, GPIO_B, MDC, MDIO, G2_TXD0, G2_TXD1, G2_TXD2, G2_TXD3, G2_TXEN, G2_TXC, G2_RXD0, G2_RXD1, G2_RXD2, G2_RXD3, G2_RXDV, G2_RXC, NCEB, NWEB, NREB, NDL4, NDL5, NDL6, NDL7, NRB, NCLE, NALE, NDL0, NDL1, NDL2, NDL3, MDI_TP_P0, MDI_TN_P0, MDI_RP_P0, MDI_RN_P0, MDI_TP_P1, MDI_TN_P1, MDI_RP_P1, MDI_RN_P1, MDI_RP_P2, MDI_RN_P2, MDI_TP_P2, MDI_TN_P2, MDI_TP_P3, MDI_TN_P3, MDI_RP_P3, MDI_RN_P3, MDI_RP_P4, MDI_RN_P4, MDI_TP_P4, MDI_TN_P4, PMIC_SCL, PMIC_SDA, SPIC1_CLK, SPIC1_MOSI, SPIC1_MISO, SPIC1_CS, GPIO_D, WATCHDOG, RTS3_N, CTS3_N, TXD3, RXD3, PERST0_N, PERST1_N, WLED_N, EPHY_LED0_N, AUXIN0, AUXIN1, AUXIN2, AUXIN3, TXD4, RXD4, RTS4_N, CST4_N, PWM1, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7, GPIO_E, TOP_5G_CLK, TOP_5G_DATA, WF0_5G_HB0, WF0_5G_HB1, WF0_5G_HB2, WF0_5G_HB3, WF0_5G_HB4, WF0_5G_HB5, WF0_5G_HB6, XO_REQ, TOP_RST_N, SYS_WATCHDOG, EPHY_LED0_N_JTDO, EPHY_LED1_N_JTDI, EPHY_LED2_N_JTMS, EPHY_LED3_N_JTCLK, EPHY_LED4_N_JTRST_N, WF2G_LED_N, WF5G_LED_N, GPIO_9, GPIO_10, GPIO_11, GPIO_12, UART1_TXD, UART1_RXD, UART1_CTS, UART1_RTS, UART2_TXD, UART2_RXD, UART2_CTS, UART2_RTS, SMI_MDC, SMI_MDIO, PCIE_PERESET_N, PWM_0, GPIO_0, GPIO_1, GPIO_2, GPIO_3, GPIO_4, GPIO_5, GPIO_6, GPIO_7, GPIO_8, UART0_TXD, UART0_RXD, TOP_2G_CLK, TOP_2G_DATA, WF0_2G_HB0, WF0_2G_HB1, WF0_2G_HB2, WF0_2G_HB3, WF0_2G_HB4, WF0_2G_HB5, WF0_2G_HB6] bias-disable: true bias-pull-up: true bias-pull-down: true input-enable: true input-disable: true output-enable: true output-low: true output-high: true input-schmitt-enable: true input-schmitt-disable: true drive-strength: enum: [4, 8, 12, 16] slew-rate: enum: [0, 1] mediatek,tdsel: description: An integer describing the steps for output level shifter duty cycle when asserted (high pulse width adjustment). Valid arguments are from 0 to 15. $ref: /schemas/types.yaml#/definitions/uint32 mediatek,rdsel: description: An integer describing the steps for input level shifter duty cycle when asserted (high pulse width adjustment). Valid arguments are from 0 to 63. $ref: /schemas/types.yaml#/definitions/uint32 required: - pins additionalProperties: false examples: - | #include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/arm-gic.h> soc { #address-cells = <2>; #size-cells = <2>; pio: pinctrl@10211000 { compatible = "mediatek,mt7622-pinctrl"; reg = <0 0x10211000 0 0x1000>; gpio-controller; #gpio-cells = <2>; pinctrl_eth_default: eth-pins { mux-mdio { groups = "mdc_mdio"; function = "eth"; drive-strength = <12>; }; mux-gmac2 { groups = "rgmii_via_gmac2"; function = "eth"; drive-strength = <12>; }; mux-esw { groups = "esw"; function = "eth"; drive-strength = <8>; }; conf-mdio { pins = "MDC"; bias-pull-up; }; }; }; };