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

title: Broadcom BCM6358 pin controller

maintainers:
  - Álvaro Fernández Rojas <noltari@gmail.com>
  - Jonas Gorski <jonas.gorski@gmail.com>

description:
  Bindings for Broadcom's BCM6358 memory-mapped pin controller.

properties:
  compatible:
    const: brcm,bcm6358-pinctrl

  reg:
    maxItems: 1

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

    properties:
      function:
        enum: [ ebi_cs, uart1, serial_led, legacy_led, led, spi_cs, utopia,
                pwm_syn_clk, sys_irq ]

      groups:
        enum: [ ebi_cs_grp, uart1_grp, serial_led_grp, legacy_led_grp,
                led_grp, spi_cs_grp, utopia_grp, pwm_syn_clk_grp, sys_irq_grp ]

allOf:
  - $ref: pinctrl.yaml#

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    pinctrl@18 {
      compatible = "brcm,bcm6358-pinctrl";
      reg = <0x18 0x4>;

      pinctrl_ebi_cs: ebi_cs-pins {
        function = "ebi_cs";
        groups = "ebi_cs_grp";
      };

      pinctrl_uart1: uart1-pins {
        function = "uart1";
        groups = "uart1_grp";
      };

      pinctrl_serial_led: serial_led-pins {
        function = "serial_led";
        groups = "serial_led_grp";
      };

      pinctrl_legacy_led: legacy_led-pins {
        function = "legacy_led";
        groups = "legacy_led_grp";
      };

      pinctrl_led: led-pins {
        function = "led";
        groups = "led_grp";
      };

      pinctrl_spi_cs_23: spi_cs-pins {
        function = "spi_cs";
        groups = "spi_cs_grp";
      };

      pinctrl_utopia: utopia-pins {
        function = "utopia";
        groups = "utopia_grp";
      };

      pinctrl_pwm_syn_clk: pwm_syn_clk-pins {
        function = "pwm_syn_clk";
        groups = "pwm_syn_clk_grp";
      };

      pinctrl_sys_irq: sys_irq-pins {
        function = "sys_irq";
        groups = "sys_irq_grp";
      };
    };
