# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/microchip,mpfs-pinctrl-iomux0.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Microchip PolarFire SoC iomux0

maintainers:
  - Conor Dooley <conor.dooley@microchip.com>

description:
  iomux0 is responsible for routing some functions to either the FPGA fabric,
  or to MSSIOs. It only performs muxing, and has no IO configuration role, as
  fabric IOs are configured separately and just routing a function to MSSIOs is
  not sufficient for it to actually get mapped to an MSSIO, just makes it
  possible.

properties:
  compatible:
    oneOf:
      - const: microchip,mpfs-pinctrl-iomux0
      - items:
          - const: microchip,pic64gx-pinctrl-iomux0
          - const: microchip,mpfs-pinctrl-iomux0

  reg:
    maxItems: 1

  pinctrl-use-default: true

patternProperties:
  '^mux-':
    type: object
    $ref: pinmux-node.yaml
    additionalProperties: false

    properties:
      function:
        description:
          A string containing the name of the function to mux to the group.
        enum: [ spi0, spi1, i2c0, i2c1, can0, can1, qspi, uart0, uart1, uart2,
                uart3, uart4, mdio0, mdio1 ]

      groups:
        description:
          An array of strings. Each string contains the name of a group.
        items:
          enum: [ spi0_fabric, spi0_mssio, spi1_fabric, spi1_mssio, i2c0_fabric,
                  i2c0_mssio, i2c1_fabric, i2c1_mssio, can0_fabric, can0_mssio,
                  can1_fabric, can1_mssio, qspi_fabric, qspi_mssio,
                  uart0_fabric, uart0_mssio, uart1_fabric, uart1_mssio,
                  uart2_fabric, uart2_mssio, uart3_fabric, uart3_mssio,
                  uart4_fabric, uart4_mssio, mdio0_fabric, mdio0_mssio,
                  mdio1_fabric, mdio1_mssio ]

    required:
      - function
      - groups

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    soc {
      #size-cells = <1>;
      #address-cells = <1>;

      pinctrl@200 {
        compatible = "microchip,mpfs-pinctrl-iomux0";
        reg = <0x200 0x4>;

        mux-spi0-fabric {
          function = "spi0";
          groups = "spi0_fabric";
        };

        mux-spi1-mssio {
          function = "spi1";
          groups = "spi1_mssio";
        };
      };
    };

...
