Unverified Commit e1b26ac9 authored by Srinivas Kandagatla's avatar Srinivas Kandagatla Committed by Mark Brown
Browse files

ASoC: dt-bindings: move LPASS dai related bindings out of q6afe



q6afe (Audio Front End) is one of the DSP service that handles both
LPASS (Low Power Audio SubSystem) Audio ports and LPASS clocks.
As LPASS is a hardwware IP and commonly used by Qualcomm Audio DSP.
In order to allow  multiple DSP frameworks to use these bindings
its best to move it out from the dsp specific bindings.

For compatibility reasons and not breaking which is already working
we still maintain same compatible string "qcom,q6afe-dais"

Also as part of this change convert these LPASS dai related bindings
into yaml format.

Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20211026111655.1702-2-srinivas.kandagatla@linaro.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 21b178b8
Loading
Loading
Loading
Loading
+0 −158
Original line number Diff line number Diff line
@@ -12,92 +12,6 @@ used by all apr services. Must contain the following properties.
		  from DSP.
		  example "qcom,q6afe"

= AFE DAIs (Digital Audio Interface)
"dais" subnode of the AFE node. It represents afe dais, each afe dai is a
subnode of "dais" representing board specific dai setup.
"dais" node should have following properties followed by dai children.

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

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

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

- #size-cells
	Usage: required
	Value type: <u32>
	Definition: Must be 0

== AFE 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

- qcom,sd-lines
	Usage: required for mi2s interface
	Value type: <prop-encoded-array>
	Definition: Must be list of serial data lines used by this dai.
	should be one or more of the 0-3 sd lines.

 - qcom,tdm-sync-mode:
	Usage: required for tdm interface
	Value type: <prop-encoded-array>
	Definition: Synchronization mode.
		0 - Short sync bit mode
		1 - Long sync mode
		2 - Short sync slot mode

 - qcom,tdm-sync-src:
	Usage: required for tdm interface
	Value type: <prop-encoded-array>
	Definition: Synchronization source.
		0 - External source
		1 - Internal source

 - qcom,tdm-data-out:
	Usage: required for tdm interface
	Value type: <prop-encoded-array>
	Definition: Data out signal to drive with other masters.
		0 - Disable
		1 - Enable

 - qcom,tdm-invert-sync:
	Usage: required for tdm interface
	Value type: <prop-encoded-array>
	Definition: Invert the sync.
		0 - Normal
		1 - Invert

 - qcom,tdm-data-delay:
	Usage: required for tdm interface
	Value type: <prop-encoded-array>
	Definition: Number of bit clock to delay data
		with respect to sync edge.
		0 - 0 bit clock cycle
		1 - 1 bit clock cycle
		2 - 2 bit clock cycle

 - qcom,tdm-data-align:
	Usage: required for tdm interface
	Value type: <prop-encoded-array>
	Definition: Indicate how data is packed
		within the slot. For example, 32 slot width in case of
		sample bit width is 24.
		0 - MSB
		1 - LSB

= AFE CLOCKSS
"clocks" subnode of the AFE node. It represents q6afe clocks
"clocks" node should have following properties.
@@ -122,78 +36,6 @@ apr-service@4 {
	compatible = "qcom,q6afe";
	reg = <APR_SVC_AFE>;

	dais {
		compatible = "qcom,q6afe-dais";
		#sound-dai-cells = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

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

		dai@24 {
			reg = <PRIMARY_TDM_RX_0>;
			qcom,tdm-sync-mode = <1>:
			qcom,tdm-sync-src = <1>;
			qcom,tdm-data-out = <0>;
			qcom,tdm-invert-sync = <1>;
			qcom,tdm-data-delay = <1>;
			qcom,tdm-data-align = <0>;

		};

		dai@25 {
			reg = <PRIMARY_TDM_TX_0>;
			qcom,tdm-sync-mode = <1>:
			qcom,tdm-sync-src = <1>;
			qcom,tdm-data-out = <0>;
			qcom,tdm-invert-sync = <1>;
			qcom,tdm-data-delay <1>:
			qcom,tdm-data-align = <0>;
		};

		dai@16 {
			reg = <PRIMARY_MI2S_RX>;
			qcom,sd-lines = <0 2>;
		};

		dai@17 {
			reg = <PRIMARY_MI2S_TX>;
			qcom,sd-lines = <1>;
		};

		dai@18 {
			reg = <SECONDARY_MI2S_RX>;
			qcom,sd-lines = <0 3>;
		};

		dai@19 {
			reg = <SECONDARY_MI2S_TX>;
			qcom,sd-lines = <1>;
		};

		dai@20 {
			reg = <TERTIARY_MI2S_RX>;
			qcom,sd-lines = <1 3>;
		};

		dai@21 {
			reg = <TERTIARY_MI2S_TX>;
			qcom,sd-lines = <0>;
		};

		dai@22 {
			reg = <QUATERNARY_MI2S_RX>;
			qcom,sd-lines = <0>;
		};

		dai@23 {
			reg = <QUATERNARY_MI2S_TX>;
			qcom,sd-lines = <1>;
		};
	};

	clocks {
		compatible = "qcom,q6afe-clocks";
		#clock-cells = <2>;
+178 −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,q6dsp-lpass-ports.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Qualcomm DSP LPASS(Low Power Audio SubSystem) Audio Ports binding

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

description: |
  This binding describes the Qualcomm DSP LPASS Audio ports

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

  reg:
    maxItems: 1

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

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

#Digital Audio Interfaces
patternProperties:
  '^dai@[0-9]+$':
    type: object
    description:
      Q6DSP Digital Audio Interfaces.

    properties:
      reg:
        description:
          Digital Audio Interface ID

      qcom,sd-lines:
        $ref: /schemas/types.yaml#/definitions/uint32-array
        description:
          List of serial data lines used by this dai.should be one or more of the 0-3 sd lines.
        minItems: 1
        maxItems: 4
        uniqueItems: true
        items:
          minimum: 0
          maximum: 3

      qcom,tdm-sync-mode:
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1, 2]
        description:
          TDM Synchronization mode
            0 = Short sync bit mode
            1 = Long sync mode
            2 = Short sync slot mode

      qcom,tdm-sync-src:
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1]
        description:
          TDM Synchronization source
            0 = External source
            1 = Internal source

      qcom,tdm-data-out:
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1]
        description:
          TDM Data out signal to drive with other masters
            0 = Disable
            1 = Enable

      qcom,tdm-invert-sync:
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1]
        description:
          TDM Invert the sync
            0 = Normal
            1 = Invert

      qcom,tdm-data-delay:
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1, 2]
        description:
          TDM Number of bit clock to delay data
            0 = 0 bit clock cycle
            1 = 1 bit clock cycle
            2 = 2 bit clock cycle

      qcom,tdm-data-align:
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1]
        description:
          Indicate how data is packed within the slot. For example, 32 slot
          width in case of sample bit width is 24TDM Invert the sync.
            0 = MSB
            1 = LSB

    required:
      - reg

    allOf:
      - if:
          properties:
            reg:
              contains:
                # TDM DAI ID range from PRIMARY_TDM_RX_0 - QUINARY_TDM_TX_7
                items:
                  minimum: 24
                  maximum: 103
        then:
          required:
            - qcom,tdm-sync-mode
            - qcom,tdm-sync-src
            - qcom,tdm-data-out
            - qcom,tdm-invert-sync
            - qcom,tdm-data-delay
            - qcom,tdm-data-align

      - if:
          properties:
            reg:
              contains:
                # MI2S DAI ID range PRIMARY_MI2S_RX - QUATERNARY_MI2S_TX and
                # QUINARY_MI2S_RX - QUINARY_MI2S_TX
                items:
                  oneOf:
                    - minimum: 16
                      maximum: 23
                    - minimum: 127
                      maximum: 128
        then:
          required:
            - qcom,sd-lines

    additionalProperties: false

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

additionalProperties: false

examples:
  - |
    #include <dt-bindings/soc/qcom,apr.h>
    #include <dt-bindings/sound/qcom,q6afe.h>
    apr {
        #address-cells = <1>;
        #size-cells = <0>;
        apr-service@4 {
            reg = <APR_SVC_AFE>;
            #address-cells = <1>;
            #size-cells = <0>;
            q6afedai@1 {
              compatible = "qcom,q6afe-dais";
              reg = <1>;
              #address-cells = <1>;
              #size-cells = <0>;
              #sound-dai-cells = <1>;

              dai@22 {
                reg = <QUATERNARY_MI2S_RX>;
                qcom,sd-lines = <0 1 2 3>;
              };
            };
        };
      };