Unverified Commit 7b0ad462 authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Mark Brown
Browse files

ASoC: dt-bindings: qcom,q6asm: convert to dtschema



Convert Qualcomm Audio Stream Manager (Q6ASM) bindings to DT schema.

The original bindings documented:
1. APR service node with compatibles: "qcom,q6asm" and
   "qcom,q6asm-v<MAJOR-NUMBER>.<MINOR-NUMBER>",
2. actual DAIs child node with compatible "qcom,q6asm-dais".

The conversion entirely drops (1) because the compatible is already
documented in bindings/soc/qcom/qcom,apr.yaml.  The
"qcom,q6asm-v<MAJOR-NUMBER>.<MINOR-NUMBER>" on the other hand is not
used at all - neither in existing DTS, nor in downstream sources - so
versions seems to be fully auto-detectable.

Another change done in conversion is adding "iommus" property, which is
already used in DTS and Linux driver.

Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20220910091428.50418-11-krzysztof.kozlowski@linaro.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent b2496de1
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -103,8 +103,12 @@ patternProperties:
        unevaluatedProperties: false

      dais:
        # TODO: Waiting for Documentation/devicetree/bindings/sound/qcom,q6asm.txt
        type: object
        oneOf:
          - $ref: /schemas/sound/qcom,q6apm-dai.yaml#
          - $ref: /schemas/sound/qcom,q6dsp-lpass-ports.yaml#
          - $ref: /schemas/sound/qcom,q6asm-dais.yaml#
        unevaluatedProperties: false
        description: Qualcomm DSP audio ports

      routing:
+112 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/qcom,q6asm-dais.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm Audio Stream Manager (Q6ASM)

maintainers:
  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

description:
  Q6ASM is one of the APR audio services on Q6DSP. Each of its subnodes
  represent a dai with board specific configuration.

properties:
  compatible:
    enum:
      - qcom,q6asm-dais

  iommus:
    maxItems: 1

  "#sound-dai-cells":
    const: 1

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

patternProperties:
  "^dai@[0-9]+$":
    type: object
    description:
      Q6ASM Digital Audio Interface

    properties:
      reg:
        maxItems: 1

      direction:
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1, 2]
        description: |
          The direction of the dai stream::
           - Q6ASM_DAI_TX_RX (0) for both tx and rx
           - Q6ASM_DAI_TX (1) for only tx (Capture/Encode)
           - Q6ASM_DAI_RX (2) for only rx (Playback/Decode)

      is-compress-dai:
        type: boolean
        description:
          Compress offload dai.

    dependencies:
      is-compress-dai: ["direction"]

    required:
      - reg

    additionalProperties: false

required:
  - compatible
  - "#sound-dai-cells"
  - "#address-cells"
  - "#size-cells"

additionalProperties: false

examples:
  - |
    #include <dt-bindings/soc/qcom,apr.h>
    #include <dt-bindings/sound/qcom,q6asm.h>

    apr {
        compatible = "qcom,apr-v2";
        qcom,domain = <APR_DOMAIN_ADSP>;
        #address-cells = <1>;
        #size-cells = <0>;

        service@7 {
            compatible = "qcom,q6asm";
            reg = <APR_SVC_ASM>;
            qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

            dais {
                compatible = "qcom,q6asm-dais";
                iommus = <&apps_smmu 0x1821 0x0>;
                #address-cells = <1>;
                #size-cells = <0>;
                #sound-dai-cells = <1>;

                dai@0 {
                    reg = <0>;
                };

                dai@1 {
                    reg = <1>;
                };

                dai@2 {
                    reg = <2>;
                    is-compress-dai;
                    direction = <1>;
                };
            };
        };
    };
+0 −70
Original line number Diff line number Diff line
Qualcomm Audio Stream Manager (Q6ASM) binding

Q6ASM is one of the APR audio service on Q6DSP.
Please refer to qcom,apr.txt for details of the common apr service bindings
used by the apr service device.

- but must contain the following property:

- compatible:
	Usage: required
	Value type: <stringlist>
	Definition: must be "qcom,q6asm-v<MAJOR-NUMBER>.<MINOR-NUMBER>".
		    Or "qcom,q6asm" where the version number can be queried
		    from DSP.
		    example "qcom,q6asm-v2.0"

= ASM DAIs (Digital Audio Interface)
"dais" subnode of the ASM node represents dai specific configuration

- compatible:
	Usage: required
	Value type: <stringlist>
	Definition: must be "qcom,q6asm-dais".

- #sound-dai-cells
	Usage: required
	Value type: <u32>
	Definition: Must be 1

== ASM DAI is subnode of "dais" and represent a dai, it includes board specific
configuration of each dai. Must contain the following properties.

- reg
	Usage: required
	Value type: <u32>
	Definition: Must be dai id

- direction:
	Usage: Required for Compress offload dais
	Value type: <u32>
	Definition: Specifies the direction of the dai stream
			Q6ASM_DAI_TX_RX (0) for both tx and rx
			Q6ASM_DAI_TX (1) for only tx (Capture/Encode)
			Q6ASM_DAI_RX (2) for only rx (Playback/Decode)

- is-compress-dai:
	Usage: Required for Compress offload dais
	Value type: <boolean>
	Definition: present for Compress offload dais


= EXAMPLE
#include <dt-bindings/sound/qcom,q6asm.h>

apr-service@7 {
	compatible = "qcom,q6asm";
	reg = <APR_SVC_ASM>;
	q6asmdai: dais {
		compatible = "qcom,q6asm-dais";
		#address-cells = <1>;
		#size-cells = <0>;
		#sound-dai-cells = <1>;

		dai@0 {
			reg = <0>;
			direction = <Q6ASM_DAI_RX>;
			is-compress-dai;
		};
	};
};