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

title: Qualcomm Technologies Inc. ASoC sound card drivers

maintainers:
  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

description:
  This bindings describes Qualcomm SoC based sound cards
  which uses LPASS internal codec for audio.

properties:
  compatible:
    enum:
      - lenovo,yoga-c630-sndcard
      - qcom,apq8016-sbc-sndcard
      - qcom,db845c-sndcard
      - qcom,msm8916-qdsp6-sndcard
      - qcom,sdm845-sndcard
      - qcom,sm8250-sndcard
      - qcom,qrb5165-rb5-sndcard

  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 could be power supplies,
      MicBias of codec and the jacks on the board.

  aux-devs:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: |
      List of phandles pointing to auxiliary devices, such
      as amplifiers, to be added to the sound card.

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

  pin-switches:
    description: List of widget names for which pin switches should be created.
    $ref: /schemas/types.yaml#/definitions/string-array

  widgets:
    description: User specified audio sound widgets.
    $ref: /schemas/types.yaml#/definitions/non-unique-string-array

  # Only valid for some compatibles (see allOf if below)
  reg: true
  reg-names: true

patternProperties:
  ".*-dai-link$":
    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

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

      platform:
        description: Holds subnode which indicates platform dai.
        type: object
        properties:
          sound-dai:
            maxItems: 1

      codec:
        description: Holds subnode which indicates codec dai.
        type: object
        properties:
          sound-dai:
            minItems: 1
            maxItems: 4

    required:
      - link-name
      - cpu

    additionalProperties: false

required:
  - compatible
  - model

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,apq8016-sbc-sndcard
              - qcom,msm8916-qdsp6-sndcard
    then:
      properties:
        reg:
          items:
            - description: Microphone I/O mux register address
            - description: Speaker I/O mux register address
        reg-names:
          items:
            - const: mic-iomux
            - const: spkr-iomux
      required:
        - compatible
        - model
        - reg
        - reg-names
    else:
      properties:
        reg: false
        reg-names: false

additionalProperties: false

examples:

  - |
    #include <dt-bindings/sound/qcom,q6afe.h>
    #include <dt-bindings/sound/qcom,q6asm.h>
    sound {
        compatible = "qcom,qrb5165-rb5-sndcard";
        model = "Qualcomm-qrb5165-RB5-WSA8815-Speakers-DMIC0";
        audio-routing = "SpkrLeft IN", "WSA_SPK1 OUT",
                    "SpkrRight IN", "WSA_SPK2 OUT",
                    "VA DMIC0", "vdd-micb",
                    "VA DMIC1", "vdd-micb";

        mm1-dai-link {
            link-name = "MultiMedia0";
            cpu {
                sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA1>;
            };
        };

        mm2-dai-link {
            link-name = "MultiMedia2";
            cpu {
                sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA2>;
            };
        };

        mm3-dai-link {
            link-name = "MultiMedia3";
            cpu {
                sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA3>;
            };
        };

        hdmi-dai-link {
            link-name = "HDMI Playback";
            cpu {
                sound-dai = <&q6afedai TERTIARY_MI2S_RX>;
            };

            platform {
                sound-dai = <&q6routing>;
            };

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

        wsa-dai-link {
            link-name = "WSA Playback";
            cpu {
                sound-dai = <&q6afedai WSA_CODEC_DMA_RX_0>;
            };

            platform {
                sound-dai = <&q6routing>;
            };

            codec {
                sound-dai = <&left_spkr>, <&right_spkr>, <&swr0 0>, <&wsamacro>;
            };
        };

        va-dai-link {
            link-name = "VA Capture";
            cpu {
                sound-dai = <&q6afedai VA_CODEC_DMA_TX_0>;
            };

            platform {
                sound-dai = <&q6routing>;
            };

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

  - |
    #include <dt-bindings/sound/qcom,lpass.h>
    sound@7702000 {
        compatible = "qcom,apq8016-sbc-sndcard";
        reg = <0x07702000 0x4>, <0x07702004 0x4>;
        reg-names = "mic-iomux", "spkr-iomux";

        model = "DB410c";
        audio-routing =
            "AMIC2", "MIC BIAS Internal2",
            "AMIC3", "MIC BIAS External1";

        pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>;
        pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>;
        pinctrl-names = "default", "sleep";

        quaternary-dai-link {
            link-name = "ADV7533";
            cpu {
                sound-dai = <&lpass MI2S_QUATERNARY>;
            };
            codec {
                sound-dai = <&adv_bridge 0>;
            };
        };

        primary-dai-link {
            link-name = "WCD";
            cpu {
                sound-dai = <&lpass MI2S_PRIMARY>;
            };
            codec {
                sound-dai = <&lpass_codec 0>, <&wcd_codec 0>;
            };
        };

        tertiary-dai-link {
            link-name = "WCD-Capture";
            cpu {
                sound-dai = <&lpass MI2S_TERTIARY>;
            };
            codec {
                sound-dai = <&lpass_codec 1>, <&wcd_codec 1>;
            };
        };
    };

  - |
    #include <dt-bindings/sound/qcom,q6afe.h>
    #include <dt-bindings/sound/qcom,q6asm.h>
    sound@7702000 {
        compatible = "qcom,msm8916-qdsp6-sndcard";
        reg = <0x07702000 0x4>, <0x07702004 0x4>;
        reg-names = "mic-iomux", "spkr-iomux";

        model = "msm8916";
        widgets =
            "Speaker", "Speaker",
            "Headphone", "Headphones";
        pin-switches = "Speaker";
        audio-routing =
            "Speaker", "Speaker Amp OUT",
            "Speaker Amp IN", "HPH_R",
            "Headphones", "HPH_L",
            "Headphones", "HPH_R",
            "AMIC1", "MIC BIAS Internal1",
            "AMIC2", "MIC BIAS Internal2",
            "AMIC3", "MIC BIAS Internal3";
        aux-devs = <&speaker_amp>;

        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cdc_pdm_lines_act>;
        pinctrl-1 = <&cdc_pdm_lines_sus>;

        mm1-dai-link {
            link-name = "MultiMedia1";
            cpu {
                sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
            };
        };

        primary-dai-link {
            link-name = "Primary MI2S";
            cpu {
                sound-dai = <&q6afedai PRIMARY_MI2S_RX>;
            };
            platform {
                sound-dai = <&q6routing>;
            };
            codec {
                sound-dai = <&lpass_codec 0>, <&wcd_codec 0>;
            };
        };
    };
