# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/nvidia,tegra-audio-max9808x.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NVIDIA Tegra audio complex with MAX9808x CODEC

maintainers:
  - Jon Hunter <jonathanh@nvidia.com>
  - Thierry Reding <thierry.reding@gmail.com>

allOf:
  - $ref: nvidia,tegra-audio-common.yaml#

properties:
  compatible:
    oneOf:
      - items:
          - pattern: '^[a-z0-9]+,tegra-audio-max98088(-[a-z0-9]+)+$'
          - const: nvidia,tegra-audio-max98088
      - items:
          - pattern: '^[a-z0-9]+,tegra-audio-max98089(-[a-z0-9]+)+$'
          - const: nvidia,tegra-audio-max98089

  nvidia,audio-routing:
    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
    description: |
      A list of the connections between audio components.
      Each entry is a pair of strings, the first being the connection's sink,
      the second being the connection's source. Valid names for sources and
      sinks are the pins (documented in the binding document),
      and the jacks on the board.
    minItems: 2
    items:
      enum:
        # Board Connectors
        - Int Spk
        - Headphone Jack
        - Earpiece
        - Headset Mic
        - Internal Mic 1
        - Internal Mic 2

        # CODEC Pins
        - HPL
        - HPR
        - SPKL
        - SPKR
        - RECL
        - RECR
        - INA1
        - INA2
        - INB1
        - INB2
        - MIC1
        - MIC2
        - MICBIAS

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/clock/tegra30-car.h>
    #include <dt-bindings/soc/tegra-pmc.h>
    sound {
        compatible = "lge,tegra-audio-max98089-p895",
                     "nvidia,tegra-audio-max98089";
        nvidia,model = "LG Optimus Vu MAX98089";

        nvidia,audio-routing =
            "Headphone Jack", "HPL",
            "Headphone Jack", "HPR",
            "Int Spk", "SPKL",
            "Int Spk", "SPKR",
            "Earpiece", "RECL",
            "Earpiece", "RECR",
            "INA1", "Headset Mic",
            "MIC1", "MICBIAS",
            "MICBIAS", "Internal Mic 1",
            "MIC2", "Internal Mic 2";

        nvidia,i2s-controller = <&tegra_i2s0>;
        nvidia,audio-codec = <&codec>;

        clocks = <&tegra_car TEGRA30_CLK_PLL_A>,
                 <&tegra_car TEGRA30_CLK_PLL_A_OUT0>,
                 <&tegra_pmc TEGRA_PMC_CLK_OUT_1>;
        clock-names = "pll_a", "pll_a_out0", "mclk";
    };