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

title: Marvell AC5 pin controller

maintainers:
  - Chris Packham <chris.packham@alliedtelesis.co.nz>

description:
  Bindings for Marvell's AC5 memory-mapped pin controller.

properties:
  compatible:
    items:
      - const: marvell,ac5-pinctrl

  reg:
    maxItems: 1

patternProperties:
  '-pins$':
    type: object
    $ref: pinmux-node.yaml#
    additionalProperties: false

    properties:
      marvell,function:
        $ref: /schemas/types.yaml#/definitions/string
        description:
          Indicates the function to select.
        enum: [ dev_init_done, ge, gpio, i2c0, i2c1, int_out, led, nand, pcie, ptp, sdio,
                spi0, spi1, synce, tsen_int, uart0, uart1, uart2, uart3, uartsd, wd_int, xg ]

      marvell,pins:
        $ref: /schemas/types.yaml#/definitions/string-array
        description:
          Array of MPP pins to be used for the given function.
        minItems: 1
        items:
          enum: [ mpp0, mpp1, mpp2, mpp3, mpp4, mpp5, mpp6, mpp7, mpp8, mpp9,
                  mpp10, mpp11, mpp12, mpp13, mpp14, mpp15, mpp16, mpp17, mpp18, mpp19,
                  mpp20, mpp21, mpp22, mpp23, mpp24, mpp25, mpp26, mpp27, mpp28, mpp29,
                  mpp30, mpp31, mpp32, mpp33, mpp34, mpp35, mpp36, mpp37, mpp38, mpp39,
                  mpp40, mpp41, mpp42, mpp43, mpp44, mpp45 ]

allOf:
  - $ref: pinctrl.yaml#

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    pinctrl@80020100 {
      compatible = "marvell,ac5-pinctrl";
      reg = <0x80020100 0x20>;

      i2c0_pins: i2c0-pins {
        marvell,pins = "mpp26", "mpp27";
        marvell,function = "i2c0";
      };

      i2c0_gpio: i2c0-gpio-pins {
        marvell,pins = "mpp26", "mpp27";
        marvell,function = "gpio";
      };
    };