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

title: Cirrus Logic Lochnagar Audio Development Board

maintainers:
  - patches@opensource.cirrus.com

description: |
  Lochnagar is an evaluation and development board for Cirrus Logic
  Smart CODEC and Amp devices. It allows the connection of most Cirrus
  Logic devices on mini-cards, as well as allowing connection of various
  application processor systems to provide a full evaluation platform.
  Audio system topology, clocking and power can all be controlled through
  the Lochnagar, allowing the device under test to be used in a variety of
  possible use cases.

  This binding document describes the binding for the pinctrl portion of
  the driver.

  Also see these documents for generic binding information:
    [1] GPIO : ../gpio/gpio.txt
    [2] Pinctrl: ../pinctrl/pinctrl-bindings.txt

  And these for relevant defines:
    [3] include/dt-bindings/pinctrl/lochnagar.h

  This binding must be part of the Lochnagar MFD binding:
    [4] ../mfd/cirrus,lochnagar.yaml

properties:
  compatible:
    enum:
      - cirrus,lochnagar-pinctrl

  gpio-controller: true

  '#gpio-cells':
    description:
      The first cell is the pin number and the second cell is used
      to specify optional parameters.
    const: 2

  gpio-ranges:
    description:
      Range of pins managed by the GPIO controller, see [1]. Both the
      GPIO and Pinctrl base should be set to zero and the count to the
      appropriate of the LOCHNAGARx_PIN_NUM_GPIOS define, see [3].
    maxItems: 1

  pin-settings:
    type: object
    patternProperties:
      '-pins$':
        description:
          The pin configurations are defined as a child of the pinctrl
          states node, see [2]. Each sub-node can have the following
          properties.
        type: object
        allOf:
          - $ref: pincfg-node.yaml#
          - $ref: pinmux-node.yaml#

        properties:
          groups:
            description:
              A list of groups to select (either this or "pins" must be
              specified), available groups.
            enum: [ codec-aif1, codec-aif2, codec-aif3, dsp-aif1,
                    dsp-aif2, psia1, psia2, gf-aif1, gf-aif2, gf-aif3,
                    gf-aif4, spdif-aif, usb-aif1, usb-aif2, adat-aif,
                    soundcard-aif ]

          pins:
            description:
              A list of pin names to select (either this or "groups" must
              be specified), available pins.
            enum: [ fpga-gpio1, fpga-gpio2, fpga-gpio3, fpga-gpio4,
                    fpga-gpio5, fpga-gpio6, codec-gpio1, codec-gpio2,
                    codec-gpio3, codec-gpio4, codec-gpio5, codec-gpio6,
                    codec-gpio7, codec-gpio8, dsp-gpio1, dsp-gpio2,
                    dsp-gpio3, dsp-gpio4, dsp-gpio5, dsp-gpio6,
                    gf-gpio2, gf-gpio3, gf-gpio7, codec-aif1-bclk,
                    codec-aif1-rxdat, codec-aif1-lrclk, codec-aif1-txdat,
                    codec-aif2-bclk, codec-aif2-rxdat, codec-aif2-lrclk,
                    codec-aif2-txdat, codec-aif3-bclk, codec-aif3-rxdat,
                    codec-aif3-lrclk, codec-aif3-txdat, dsp-aif1-bclk,
                    dsp-aif1-rxdat, dsp-aif1-lrclk, dsp-aif1-txdat,
                    dsp-aif2-bclk, dsp-aif2-rxdat, dsp-aif2-lrclk,
                    dsp-aif2-txdat, psia1-bclk, psia1-rxdat, psia1-lrclk,
                    psia1-txdat, psia2-bclk, psia2-rxdat, psia2-lrclk,
                    psia2-txdat, gf-aif3-bclk, gf-aif3-rxdat,
                    gf-aif3-lrclk, gf-aif3-txdat, gf-aif4-bclk,
                    gf-aif4-rxdat, gf-aif4-lrclk, gf-aif4-txdat,
                    gf-aif1-bclk, gf-aif1-rxdat, gf-aif1-lrclk,
                    gf-aif1-txdat, gf-aif2-bclk, gf-aif2-rxdat,
                    gf-aif2-lrclk, gf-aif2-txdat, dsp-uart1-rx,
                    dsp-uart1-tx, dsp-uart2-rx, dsp-uart2-tx,
                    gf-uart2-rx, gf-uart2-tx, usb-uart-rx, codec-pdmclk1,
                    codec-pdmdat1, codec-pdmclk2, codec-pdmdat2,
                    codec-dmicclk1, codec-dmicdat1, codec-dmicclk2,
                    codec-dmicdat2, codec-dmicclk3, codec-dmicdat3,
                    codec-dmicclk4, codec-dmicdat4, dsp-dmicclk1,
                    dsp-dmicdat1, dsp-dmicclk2, dsp-dmicdat2, i2c2-scl,
                    i2c2-sda, i2c3-scl, i2c3-sda, i2c4-scl, i2c4-sda,
                    dsp-standby, codec-mclk1, codec-mclk2, dsp-clkin,
                    psia1-mclk, psia2-mclk, gf-gpio1, gf-gpio5,
                    dsp-gpio20, led1, led2 ]

          function:
            description:
              The mux function to select, available functions.
            enum: [ aif, fpga-gpio1, fpga-gpio2, fpga-gpio3, fpga-gpio4,
                    fpga-gpio5, fpga-gpio6, codec-gpio1, codec-gpio2,
                    codec-gpio3, codec-gpio4, codec-gpio5, codec-gpio6,
                    codec-gpio7, codec-gpio8, dsp-gpio1, dsp-gpio2,
                    dsp-gpio3, dsp-gpio4, dsp-gpio5, dsp-gpio6,
                    gf-gpio2, gf-gpio3, gf-gpio7, gf-gpio1, gf-gpio5,
                    dsp-gpio20, codec-clkout, dsp-clkout, pmic-32k,
                    spdif-clkout, clk-12m288, clk-11m2986, clk-24m576,
                    clk-22m5792, xmos-mclk, gf-clkout1, gf-mclk1,
                    gf-mclk3, gf-mclk2, gf-clkout2, codec-mclk1,
                    codec-mclk2, dsp-clkin, psia1-mclk, psia2-mclk,
                    spdif-mclk, codec-irq, codec-reset, dsp-reset,
                    dsp-irq, dsp-standby, codec-pdmclk1, codec-pdmdat1,
                    codec-pdmclk2, codec-pdmdat2, codec-dmicclk1,
                    codec-dmicdat1, codec-dmicclk2, codec-dmicdat2,
                    codec-dmicclk3, codec-dmicdat3, codec-dmicclk4,
                    codec-dmicdat4, dsp-dmicclk1, dsp-dmicdat1,
                    dsp-dmicclk2, dsp-dmicdat2, dsp-uart1-rx,
                    dsp-uart1-tx, dsp-uart2-rx, dsp-uart2-tx,
                    gf-uart2-rx, gf-uart2-tx, usb-uart-rx, usb-uart-tx,
                    i2c2-scl, i2c2-sda, i2c3-scl, i2c3-sda, i2c4-scl,
                    i2c4-sda, spdif-aif, psia1, psia1-bclk, psia1-lrclk,
                    psia1-rxdat, psia1-txdat, psia2, psia2-bclk,
                    psia2-lrclk, psia2-rxdat, psia2-txdat, codec-aif1,
                    codec-aif1-bclk, codec-aif1-lrclk, codec-aif1-rxdat,
                    codec-aif1-txdat, codec-aif2, codec-aif2-bclk,
                    codec-aif2-lrclk, codec-aif2-rxdat, codec-aif2-txdat,
                    codec-aif3, codec-aif3-bclk, codec-aif3-lrclk,
                    codec-aif3-rxdat, codec-aif3-txdat, dsp-aif1,
                    dsp-aif1-bclk, dsp-aif1-lrclk, dsp-aif1-rxdat,
                    dsp-aif1-txdat, dsp-aif2, dsp-aif2-bclk,
                    dsp-aif2-lrclk, dsp-aif2-rxdat, dsp-aif2-txdat,
                    gf-aif3, gf-aif3-bclk, gf-aif3-lrclk, gf-aif3-rxdat,
                    gf-aif3-txdat, gf-aif4, gf-aif4-bclk, gf-aif4-lrclk,
                    gf-aif4-rxdat, gf-aif4-txdat, gf-aif1, gf-aif1-bclk,
                    gf-aif1-lrclk, gf-aif1-rxdat, gf-aif1-txdat, gf-aif2,
                    gf-aif2-bclk, gf-aif2-lrclk, gf-aif2-rxdat,
                    gf-aif2-txdat, usb-aif1, usb-aif2, adat-aif,
                    soundcard-aif ]

          output-enable:
            description:
              Specifies that an AIF group will be used as a master
              interface (either this or input-enable is required if a
              group is being muxed to an AIF)

          input-enable:
            description:
              Specifies that an AIF group will be used as a slave
              interface (either this or output-enable is required if a
              group is being muxed to an AIF)

        additionalProperties: false

        required:
          - function

    additionalProperties: false

allOf:
  - $ref: pinctrl.yaml#

required:
  - compatible
  - gpio-controller
  - '#gpio-cells'
  - gpio-ranges
  - pinctrl-0
  - pinctrl-names

additionalProperties: false
