Unverified Commit b7875d88 authored by Stephan Gerhold's avatar Stephan Gerhold Committed by Mark Brown
Browse files

ASoC: dt-bindings: qcom: apq8016-sbc: Move to qcom,sm8250 DT schema



All the Qualcomm sound card drivers use the same common device tree
parsing code, so the allowed device tree nodes are almost the same
for all of them. Convert the qcom,apq8016-sbc-sndcard documentation
to a DT schema by adding it to the existing qcom,sm8250 schema.

The only speciality of qcom,apq8016-sbc-sndcard is that it has memory
resources for setting up an I/O mux. This can be handled using
a conditional if statement that only requires it for the apq8016-sbc
compatible.

Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20211202145505.58852-4-stephan@gerhold.net


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 1875ae76
Loading
Loading
Loading
Loading
+0 −96
Original line number Diff line number Diff line
* Qualcomm Technologies APQ8016 SBC ASoC machine driver

This node models the Qualcomm Technologies APQ8016 SBC ASoC machine driver

Required properties:

- compatible		: "qcom,apq8016-sbc-sndcard"

- pinctrl-N		: One property must exist for each entry in
			  pinctrl-names.  See ../pinctrl/pinctrl-bindings.txt
			  for details of the property values.
- pinctrl-names		: Must contain a "default" entry.
- reg			: Must contain an address for each entry in reg-names.
- reg-names		: A list which must include the following entries:
				* "mic-iomux"
				* "spkr-iomux"
- qcom,model		: Name of the sound card.

- qcom,audio-routing	: 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 msm8x16_wcd codec and the jacks on the board:

			  Power supplies:
			  * MIC BIAS External1
			  * MIC BIAS External2
			  * MIC BIAS Internal1
			  * MIC BIAS Internal2

			  Board connectors:
			  * Headset Mic
			  * Secondary Mic
			  * DMIC
			  * Ext Spk

Optional properties:

- aux-devs		: A list of phandles for auxiliary devices (e.g. analog
			  amplifiers) that do not appear directly within the DAI
			  links. Should be connected to another audio component
			  using "qcom,audio-routing".

Dai-link subnode properties and subnodes:

Required dai-link subnodes:

- cpu					: CPU   sub-node
- codec					: CODEC sub-node

Required CPU/CODEC subnodes properties:

-link-name		: Name of the dai link.
-sound-dai		: phandle/s and port of CPU/CODEC

Example:

sound: sound {
	compatible = "qcom,apq8016-sbc-sndcard";
	reg = <0x07702000 0x4>, <0x07702004 0x4>;
	reg-names = "mic-iomux", "spkr-iomux";
	qcom,model = "DB410c";

	qcom,audio-routing =
		"MIC BIAS External1", "Handset Mic",
		"MIC BIAS Internal2", "Headset Mic",
		"MIC BIAS External1", "Secondary Mic",
		"AMIC1", "MIC BIAS External1",
		"AMIC2", "MIC BIAS Internal2",
		"AMIC3", "MIC BIAS External1",
		"DMIC1", "MIC BIAS Internal1",
		"MIC BIAS Internal1", "Digital Mic1",
		"DMIC2", "MIC BIAS Internal1",
		"MIC BIAS Internal1", "Digital Mic2";

	/* I2S - Internal codec */
	internal-dai-link@0 {
		cpu { /* PRIMARY */
			sound-dai = <&lpass MI2S_PRIMARY>;
		};
		codec {
			sound-dai = <&lpass_codec 0>, <&wcd_codec 0>;
		};
	};

	/* External Primary or External Secondary -ADV7533 HDMI */
	external-dai-link@0 {
		link-name = "ADV7533";
		cpu { /* QUAT */
			sound-dai = <&lpass MI2S_QUATERNARY>;
		};
		codec {
			sound-dai = <&adv_bridge 0>;
		};
	};
};
+81 −2
Original line number Diff line number Diff line
@@ -4,18 +4,19 @@
$id: http://devicetree.org/schemas/sound/qcom,sm8250.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm Technologies Inc. SM8250 ASoC sound card driver
title: Qualcomm Technologies Inc. ASoC sound card drivers

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

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

properties:
  compatible:
    enum:
      - qcom,apq8016-sbc-sndcard
      - qcom,sm8250-sndcard
      - qcom,qrb5165-rb5-sndcard

@@ -37,6 +38,10 @@ properties:
    $ref: /schemas/types.yaml#/definitions/string
    description: User visible long sound card name

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

patternProperties:
  ".*-dai-link$":
    description:
@@ -79,6 +84,33 @@ required:
  - compatible
  - model

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,apq8016-sbc-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:
@@ -160,3 +192,50 @@ examples:
            };
        };
    };

  - |
    #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>;
            };
        };
    };