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

title: Google SC7280-Herobrine ASoC sound card driver

maintainers:
  - Srinivasa Rao Mandadapu <srivasam@codeaurora.org>
  - Judy Hsiao <judyhsiao@chromium.org>

description:
  This binding describes the SC7280 sound card which uses LPASS for audio.

properties:
  compatible:
    enum:
      - google,sc7280-herobrine

  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.

  model:
    $ref: /schemas/types.yaml#/definitions/string
    description: User specified audio sound card name

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

patternProperties:
  "^dai-link@[0-9a-f]$":
    description:
      Each subnode represents a dai link. Subnodes of each dai links would be
      cpu/codec dais.

    type: object

    properties:
      link-name:
        description: Indicates dai-link name and PCM stream name.
        $ref: /schemas/types.yaml#/definitions/string
        maxItems: 1

      reg:
        maxItems: 1
        description: dai link address.

      cpu:
        description: Holds subnode which indicates cpu dai.
        type: object
        properties:
          sound-dai: true

        required:
          - sound-dai

        additionalProperties: false

      codec:
        description: Holds subnode which indicates codec dai.
        type: object
        properties:
          sound-dai: true

        required:
          - sound-dai

        additionalProperties: false

      platform:
        description: Holds subnode which includes the phandle of q6apm platform device.
        type: object
        properties:
          sound-dai:
            maxItems: 1

        required:
          - sound-dai

        additionalProperties: false

    required:
      - link-name
      - cpu
      - codec
      - reg

    additionalProperties: false

required:
  - compatible
  - model
  - "#address-cells"
  - "#size-cells"

additionalProperties: false

examples:

  - |
    #include <dt-bindings/sound/qcom,lpass.h>
    sound {
        compatible = "google,sc7280-herobrine";
        model = "sc7280-wcd938x-max98360a-4dmic";

        audio-routing =
            "IN1_HPHL", "HPHL_OUT",
            "IN2_HPHR", "HPHR_OUT",
            "AMIC1", "MIC BIAS1",
            "AMIC2", "MIC BIAS2",
            "VA DMIC0", "MIC BIAS3",
            "VA DMIC1", "MIC BIAS3",
            "VA DMIC2", "MIC BIAS4",
            "VA DMIC3", "MIC BIAS4",
            "TX SWR_ADC0", "ADC1_OUTPUT",
            "TX SWR_ADC1", "ADC2_OUTPUT",
            "TX SWR_ADC2", "ADC3_OUTPUT",
            "TX SWR_DMIC0", "DMIC1_OUTPUT",
            "TX SWR_DMIC1", "DMIC2_OUTPUT",
            "TX SWR_DMIC2", "DMIC3_OUTPUT",
            "TX SWR_DMIC3", "DMIC4_OUTPUT";

        #address-cells = <1>;
        #size-cells = <0>;

        dai-link@0 {
            link-name = "WCD Playback";
            reg = <LPASS_CDC_DMA_RX0>;
            cpu {
                sound-dai = <&lpass_cpu LPASS_CDC_DMA_RX0>;
            };

            codec {
                sound-dai = <&wcd938x 0>, <&swr0 0>, <&rxmacro 0>;
            };
        };
        dai-link@1 {
            link-name = "WCD Capture";
            reg = <LPASS_CDC_DMA_TX3>;
            cpu {
                sound-dai = <&lpass_cpu LPASS_CDC_DMA_TX3>;
            };

            codec {
                sound-dai = <&wcd938x 1>, <&swr1 0>, <&txmacro 0>;
            };
        };

        dai-link@2 {
            link-name = "MI2S Playback";
            reg = <MI2S_SECONDARY>;
            cpu {
                sound-dai = <&lpass_cpu MI2S_SECONDARY>;
            };

            codec {
                sound-dai = <&max98360a>;
            };
        };

        dai-link@3 {
            link-name = "DMIC Capture";
            reg = <LPASS_CDC_DMA_VA_TX0>;
            cpu {
                sound-dai = <&lpass_cpu LPASS_CDC_DMA_VA_TX0>;
            };

            codec {
                sound-dai = <&vamacro 0>;
            };
        };

        dai-link@5 {
            link-name = "DP Playback";
            reg = <LPASS_DP_RX>;
            cpu {
                sound-dai = <&lpass_cpu LPASS_DP_RX>;
            };

            codec {
                sound-dai = <&mdss_dp>;
            };
        };
    };
