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

title: Broadcom BCM63268 pin controller

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

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

properties:
  compatible:
    const: brcm,bcm63268-pinctrl

  reg:
    maxItems: 3

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

    properties:
      function:
        enum: [ serial_led_clk, serial_led_data, hsspi_cs4, hsspi_cs5,
                hsspi_cs6, hsspi_cs7, adsl_spi_miso, adsl_spi_mosi,
                vreq_clk, pcie_clkreq_b, robosw_led_clk, robosw_led_data,
                nand, gpio35_alt, dectpd, vdsl_phy_override_0,
                vdsl_phy_override_1, vdsl_phy_override_2,
                vdsl_phy_override_3, dsl_gpio8, dsl_gpio9 ]

      pins:
        enum: [ gpio0, gpio1, gpio16, gpio17, gpio8, gpio9, gpio18, gpio19,
                gpio22, gpio23, gpio30, gpio31, nand_grp, gpio35
                dectpd_grp, vdsl_phy_override_0_grp,
                vdsl_phy_override_1_grp, vdsl_phy_override_2_grp,
                vdsl_phy_override_3_grp, dsl_gpio8, dsl_gpio9 ]

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    pinctrl@10 {
      compatible = "brcm,bcm63268-pinctrl";
      reg = <0x10 0x4>, <0x18 0x8>, <0x38 0x4>;

      pinctrl_serial_led: serial_led-pins {
        pinctrl_serial_led_clk: serial_led_clk-pins {
          function = "serial_led_clk";
          pins = "gpio0";
        };

        pinctrl_serial_led_data: serial_led_data-pins {
          function = "serial_led_data";
          pins = "gpio1";
        };
      };

      pinctrl_hsspi_cs4: hsspi_cs4-pins {
        function = "hsspi_cs4";
        pins = "gpio16";
      };

      pinctrl_hsspi_cs5: hsspi_cs5-pins {
        function = "hsspi_cs5";
        pins = "gpio17";
      };

      pinctrl_hsspi_cs6: hsspi_cs6-pins {
        function = "hsspi_cs6";
        pins = "gpio8";
      };

      pinctrl_hsspi_cs7: hsspi_cs7-pins {
        function = "hsspi_cs7";
        pins = "gpio9";
      };

      pinctrl_adsl_spi: adsl_spi-pins {
        pinctrl_adsl_spi_miso: adsl_spi_miso-pins {
          function = "adsl_spi_miso";
          pins = "gpio18";
        };

        pinctrl_adsl_spi_mosi: adsl_spi_mosi-pins {
          function = "adsl_spi_mosi";
          pins = "gpio19";
        };
      };

      pinctrl_vreq_clk: vreq_clk-pins {
        function = "vreq_clk";
        pins = "gpio22";
      };

      pinctrl_pcie_clkreq_b: pcie_clkreq_b-pins {
        function = "pcie_clkreq_b";
        pins = "gpio23";
      };

      pinctrl_robosw_led_clk: robosw_led_clk-pins {
        function = "robosw_led_clk";
        pins = "gpio30";
      };

      pinctrl_robosw_led_data: robosw_led_data-pins {
        function = "robosw_led_data";
        pins = "gpio31";
      };

      pinctrl_nand: nand-pins {
        function = "nand";
        group = "nand_grp";
      };

      pinctrl_gpio35_alt: gpio35_alt-pins {
        function = "gpio35_alt";
        pin = "gpio35";
      };

      pinctrl_dectpd: dectpd-pins {
        function = "dectpd";
        group = "dectpd_grp";
      };

      pinctrl_vdsl_phy_override_0: vdsl_phy_override_0-pins {
        function = "vdsl_phy_override_0";
        group = "vdsl_phy_override_0_grp";
      };

      pinctrl_vdsl_phy_override_1: vdsl_phy_override_1-pins {
        function = "vdsl_phy_override_1";
        group = "vdsl_phy_override_1_grp";
      };

      pinctrl_vdsl_phy_override_2: vdsl_phy_override_2-pins {
        function = "vdsl_phy_override_2";
        group = "vdsl_phy_override_2_grp";
      };

      pinctrl_vdsl_phy_override_3: vdsl_phy_override_3-pins {
        function = "vdsl_phy_override_3";
        group = "vdsl_phy_override_3_grp";
      };

      pinctrl_dsl_gpio8: dsl_gpio8-pins {
        function = "dsl_gpio8";
        group = "dsl_gpio8";
      };

      pinctrl_dsl_gpio9: dsl_gpio9-pins {
        function = "dsl_gpio9";
        group = "dsl_gpio9";
      };
    };
