[PATCH 2/3] dt-bindings: pinctrl: Add EcoNet EN7528 pin controller
Ahmed Naseef
naseefkm at gmail.com
Sun Aug 9 01:04:59 PDT 2026
Add the binding for the pin controller found on the EcoNet EN7528 MIPS
SoC. It shares the IP with the Airoha pin controllers, but its IOMUX and
pin configuration registers have a different layout, so it gets its own
compatible.
The CHIP SCU holding those registers is referenced by the airoha,chip-scu
phandle.
Signed-off-by: Ahmed Naseef <naseefkm at gmail.com>
---
.../pinctrl/econet,en7528-pinctrl.yaml | 190 ++++++++++++++++++
1 file changed, 190 insertions(+)
create mode 100644 Documentation/devicetree/bindings/pinctrl/econet,en7528-pinctrl.yaml
diff --git a/Documentation/devicetree/bindings/pinctrl/econet,en7528-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/econet,en7528-pinctrl.yaml
new file mode 100644
index 000000000000..574285939c9d
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/econet,en7528-pinctrl.yaml
@@ -0,0 +1,190 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/econet,en7528-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: EcoNet EN7528 Pin Controller
+
+maintainers:
+ - Lorenzo Bianconi <lorenzo at kernel.org>
+
+description:
+ The EcoNet EN7528 pin controller is used to control SoC pins. It shares the
+ IP with the Airoha pin controllers, but its IOMUX and pin configuration
+ registers have a different layout.
+
+properties:
+ compatible:
+ const: econet,en7528-pinctrl
+
+ airoha,chip-scu:
+ description: phandle to the chip SCU syscon
+ $ref: /schemas/types.yaml#/definitions/phandle
+
+ 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
+ - airoha,chip-scu
+ - 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: [gpio, jtag, pcie_reset, pcm, pcm_spi, phy1_led0,
+ phy1_led1, phy2_led0, phy2_led1, phy3_led0, phy3_led1,
+ phy4_led0, phy4_led1, pnand, pon, pwm, sipo, spi, uart]
+
+ groups:
+ description:
+ An array of strings. Each string contains the name of a group.
+ items:
+ enum: [pon, sipo, sipo_rclk, uart2, uart2_cts_rts, uart3,
+ ejtag, pcm1, pcm2, spi_quad, spi_cs1, pcm_spi,
+ pcm_spi_int, pcm_spi_rst, pcm_spi_cs1, pcm_spi_cs2,
+ pcm_spi_cs3, pcm_spi_cs4, pcm_spi_cs5, pcm_spi_cs6,
+ pcm_spi_cs7, pnand, 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,
+ gpio30, gpio31, gpio32, gpio33, gpio34, gpio35,
+ gpio36, gpio37, gpio38, gpio39, gpio40, gpio41,
+ pcie_reset0, pcie_reset1]
+
+ required:
+ - function
+ - groups
+
+ 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: [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, gpio30, gpio31,
+ gpio32, gpio33, gpio34, gpio35, gpio36, gpio37,
+ gpio38, gpio39, pcie_reset0, pcie_reset1, i2c_sda,
+ i2c_scl, uart_txd, uart_rxd, spi_cs0, spi_clk,
+ spi_mosi, spi_miso]
+ minItems: 1
+ maxItems: 50
+
+ bias-disable: true
+
+ bias-pull-up: true
+
+ bias-pull-down: true
+
+ input-enable: true
+
+ output-enable: true
+
+ output-low: true
+
+ output-high: true
+
+ drive-strength:
+ description:
+ Selects the drive strength for the pin, in mA.
+ enum: [2, 4]
+
+ required:
+ - pins
+
+ additionalProperties: false
+
+ additionalProperties: false
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/mips-gic.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ pinctrl {
+ compatible = "econet,en7528-pinctrl";
+
+ airoha,chip-scu = <&chip_scu>;
+
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SHARED 10 IRQ_TYPE_LEVEL_HIGH>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ gpio-ranges = <&pinctrl 0 0 42>;
+
+ uart2-pins {
+ mux {
+ function = "uart";
+ groups = "uart2";
+ };
+
+ conf {
+ pins = "gpio28", "gpio29";
+ bias-pull-up;
+ };
+ };
+
+ pwm-pins {
+ mux {
+ function = "pwm";
+ groups = "gpio30";
+ };
+ };
+ };
--
2.34.1
More information about the Linux-mediatek
mailing list