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

title: Broadcom BCM6328 pin controller

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

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

properties:
  compatible:
    const: brcm,bcm6328-pinctrl

  reg:
    maxItems: 1

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

    properties:
      function:
        enum: [ serial_led_data, serial_led_clk, inet_act_led, pcie_clkreq,
                led, ephy0_act_led, ephy1_act_led, ephy2_act_led,
                ephy3_act_led, hsspi_cs1, usb_device_port, usb_host_port ]

      pins:
        enum: [ gpio6, gpio7, gpio11, gpio16, gpio17, gpio18, gpio19,
                gpio20, gpio25, gpio26, gpio27, gpio28, hsspi_cs1,
                usb_port1 ]

    patternProperties:
      '-pins$':
        $ref: '#/patternProperties/-pins$'

allOf:
  - $ref: pinctrl.yaml#

required:
  - compatible
  - reg

additionalProperties: false

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

      pinctrl_serial_led: serial_led-pins {
        pinctrl_serial_led_data: serial_led_data-pins {
          function = "serial_led_data";
          pins = "gpio6";
        };

        pinctrl_serial_led_clk: serial_led_clk-pins {
          function = "serial_led_clk";
          pins = "gpio7";
        };
      };

      pinctrl_inet_act_led: inet_act_led-pins {
        function = "inet_act_led";
        pins = "gpio11";
      };

      pinctrl_pcie_clkreq: pcie_clkreq-pins {
        function = "pcie_clkreq";
        pins = "gpio16";
      };

      pinctrl_ephy0_spd_led: ephy0_spd_led-pins {
        function = "led";
        pins = "gpio17";
      };

      pinctrl_ephy1_spd_led: ephy1_spd_led-pins {
        function = "led";
        pins = "gpio18";
      };

      pinctrl_ephy2_spd_led: ephy2_spd_led-pins {
        function = "led";
        pins = "gpio19";
      };

      pinctrl_ephy3_spd_led: ephy3_spd_led-pins {
        function = "led";
        pins = "gpio20";
      };

      pinctrl_ephy0_act_led: ephy0_act_led-pins {
        function = "ephy0_act_led";
        pins = "gpio25";
      };

      pinctrl_ephy1_act_led: ephy1_act_led-pins {
        function = "ephy1_act_led";
        pins = "gpio26";
      };

      pinctrl_ephy2_act_led: ephy2_act_led-pins {
        function = "ephy2_act_led";
        pins = "gpio27";
      };

      pinctrl_ephy3_act_led: ephy3_act_led-pins {
        function = "ephy3_act_led";
        pins = "gpio28";
      };

      pinctrl_hsspi_cs1: hsspi_cs1-pins {
        function = "hsspi_cs1";
        pins = "hsspi_cs1";
      };

      pinctrl_usb_port1_device: usb_port1_device-pins {
        function = "usb_device_port";
        pins = "usb_port1";
      };

      pinctrl_usb_port1_host: usb_port1_host-pins {
        function = "usb_host_port";
        pins = "usb_port1";
      };
    };
