# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/pinctrl/airoha,en7523-pinctrl.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Airoha EN7523 Pin Controller maintainers: - Lorenzo Bianconi description: The Airoha's EN7523 Pin controller is used to control SoC pins. properties: compatible: const: airoha,en7523-pinctrl interrupts: maxItems: 1 gpio-controller: true '#gpio-cells': const: 2 gpio-ranges: maxItems: 1 interrupt-controller: true '#interrupt-cells': const: 2 allOf: - $ref: pinctrl.yaml# required: - compatible - interrupts - gpio-controller - gpio-ranges - "#gpio-cells" - interrupt-controller - "#interrupt-cells" patternProperties: '-pins$': type: object patternProperties: '^mux(-|$)': type: object 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: [pon, tod_1pps, sipo, mdio, uart, i2c, jtag, pcm, spi, pcm_spi, i2s, gpio, pcie_reset, pwm, phy1_led0, phy2_led0, phy3_led0, phy4_led0, phy1_led1, phy2_led1, phy3_led1, phy4_led1] groups: description: An array of strings. Each string contains the name of a group. required: - function - groups allOf: - if: properties: function: const: pon then: properties: groups: enum: [pon] - if: properties: function: const: tod_1pps then: properties: groups: enum: [pon_tod_1pps, gsw_tod_1pps] - if: properties: function: const: sipo then: properties: groups: enum: [sipo, sipo_rclk] - if: properties: function: const: mdio then: properties: groups: enum: [mdio] - if: properties: function: const: uart then: properties: groups: items: enum: [uart2, npu_uart] maxItems: 2 - if: properties: function: const: i2c then: properties: groups: enum: [i2c1] - if: properties: function: const: jtag then: properties: groups: enum: [jtag_udi, jtag_dfd] - if: properties: function: const: pcm then: properties: groups: enum: [pcm1, pcm2] - if: properties: function: const: spi then: properties: groups: items: enum: [spi_quad, spi_cs1] maxItems: 2 - if: properties: function: const: pcm_spi then: properties: groups: items: enum: [pcm_spi, pcm_spi_int, pcm_spi_rst, pcm_spi_cs1, pcm_spi_cs2_p156, pcm_spi_cs2_p128, pcm_spi_cs3, pcm_spi_cs4] maxItems: 7 - if: properties: function: const: i2s then: properties: groups: enum: [i2s] - if: properties: function: const: gpio then: properties: groups: enum: [gpio28, gpio29] - if: properties: function: const: pcie_reset then: properties: groups: enum: [pcie_reset0, pcie_reset1] - if: properties: function: const: pwm then: properties: groups: enum: [gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7, gpio8, gpio9, gpio10, gpio11, gpio12, gpio13, gpio14, gpio15, gpio16, gpio17, gpio18, gpio19, gpio20, gpio21, gpio22, gpio23, gpio24, gpio25, gpio26, gpio27, gpio28, gpio29] - if: properties: function: const: phy1_led0 then: properties: groups: enum: [gpio22, gpio23, gpio24, gpio25] - if: properties: function: const: phy2_led0 then: properties: groups: enum: [gpio22, gpio23, gpio24, gpio25] - if: properties: function: const: phy3_led0 then: properties: groups: enum: [gpio22, gpio23, gpio24, gpio25] - if: properties: function: const: phy4_led0 then: properties: groups: enum: [gpio22, gpio23, gpio24, gpio25] - if: properties: function: const: phy1_led1 then: properties: groups: enum: [gpio7, gpio6, gpio5, gpio4] - if: properties: function: const: phy2_led1 then: properties: groups: enum: [gpio7, gpio6, gpio5, gpio4] - if: properties: function: const: phy3_led1 then: properties: groups: enum: [gpio7, gpio6, gpio5, gpio4] - if: properties: function: const: phy4_led1 then: properties: groups: enum: [gpio7, gpio6, gpio5, gpio4] additionalProperties: false '^conf(-|$)': type: object description: pinconf configuration nodes. $ref: /schemas/pinctrl/pincfg-node.yaml properties: pins: description: An array of strings. Each string contains the name of a pin. items: enum: [i2c_sda, i2c_scl, spi_cs0, spi_clk, spi_mosi, spi_miso, uart1_txd, uart1_rxd, gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7, gpio8, gpio9, gpio10, gpio11, gpio12, gpio13, gpio14, gpio15, gpio16, gpio17, gpio18, gpio19, gpio20, gpio21, gpio22, gpio23, gpio24, gpio25, gpio26, gpio27, pcie_reset0, pcie_reset1] minItems: 1 maxItems: 38 bias-disable: true bias-pull-up: true bias-pull-down: true input-enable: true output-enable: true output-low: true output-high: true drive-open-drain: true drive-strength: description: Selects the drive strength for MIO pins, in mA. enum: [2, 4, 6, 8] required: - pins additionalProperties: false additionalProperties: false additionalProperties: false examples: - | #include pinctrl { compatible = "airoha,en7523-pinctrl"; interrupt-parent = <&gic>; interrupts = ; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; gpio-ranges = <&pinctrl 0 12 30>; pcie1-rst-pins { conf { pins = "pcie_reset1"; drive-open-drain = <1>; }; }; pwm-pins { mux { function = "pwm"; groups = "gpio18"; }; }; spi-pins { mux { function = "spi"; groups = "spi_quad", "spi_cs1"; }; }; uart2-pins { mux { function = "uart"; groups = "uart2"; }; }; mdio-pins { mux { function = "mdio"; groups = "mdio"; }; conf { pins = "gpio2"; output-enable; }; }; };