Unverified Commit 65f0a8ea authored by Jerome Brunet's avatar Jerome Brunet Committed by Mark Brown
Browse files

ASoC: dt-bindings: meson: convert axg sound card control to schema



Convert the DT binding documentation for the Amlogic axg sound card to
schema.

Signed-off-by: default avatarJerome Brunet <jbrunet@baylibre.com>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20230208093520.52843-2-jbrunet@baylibre.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 677e3ab7
Loading
Loading
Loading
Loading
+0 −124
Original line number Diff line number Diff line
Amlogic AXG sound card:

Required properties:

- compatible: "amlogic,axg-sound-card"
- model : User specified audio sound card name, one string

Optional properties:

- audio-aux-devs : List of phandles pointing to auxiliary devices
- audio-widgets : Please refer to widgets.txt.
- audio-routing : A list of the connections between audio components.

Subnodes:

- dai-link: Container for dai-link level properties and the CODEC
	    sub-nodes. There should be at least one (and probably more)
	    subnode of this type.

Required dai-link properties:

- sound-dai: phandle and port of the CPU DAI.

Required TDM Backend dai-link properties:
- dai-format : CPU/CODEC common audio format

Optional TDM Backend dai-link properties:
- dai-tdm-slot-rx-mask-{0,1,2,3}: Receive direction slot masks
- dai-tdm-slot-tx-mask-{0,1,2,3}: Transmit direction slot masks
				  When omitted, mask is assumed to have to no
				  slots. A valid must have at one slot, so at
				  least one these mask should be provided with
				  an enabled slot.
- dai-tdm-slot-num : Please refer to tdm-slot.txt.
		     If omitted, slot number is set to accommodate the largest
		     mask provided.
- dai-tdm-slot-width : Please refer to tdm-slot.txt. default to 32 if omitted.
- mclk-fs : Multiplication factor between stream rate and mclk

Backend dai-link subnodes:

- codec: dai-link representing backend links should have at least one subnode.
	 One subnode for each codec of the dai-link.
	 dai-link representing frontend links have no codec, therefore have no
	 subnodes

Required codec subnodes properties:

- sound-dai: phandle and port of the CODEC DAI.

Optional codec subnodes properties:

- dai-tdm-slot-tx-mask : Please refer to tdm-slot.txt.
- dai-tdm-slot-rx-mask : Please refer to tdm-slot.txt.

Example:

sound {
	compatible = "amlogic,axg-sound-card";
	model = "AXG-S420";
	audio-aux-devs = <&tdmin_a>, <&tdmout_c>;
	audio-widgets = "Line", "Lineout",
			"Line", "Linein",
			"Speaker", "Speaker1 Left",
			"Speaker", "Speaker1 Right";
			"Speaker", "Speaker2 Left",
			"Speaker", "Speaker2 Right";
	audio-routing = "TDMOUT_C IN 0", "FRDDR_A OUT 2",
			"SPDIFOUT IN 0", "FRDDR_A OUT 3",
			"TDM_C Playback", "TDMOUT_C OUT",
			"TDMIN_A IN 2", "TDM_C Capture",
			"TDMIN_A IN 5", "TDM_C Loopback",
			"TODDR_A IN 0", "TDMIN_A OUT",
			"Lineout", "Lineout AOUTL",
			"Lineout", "Lineout AOUTR",
			"Speaker1 Left", "SPK1 OUT_A",
			"Speaker2 Left", "SPK2 OUT_A",
			"Speaker1 Right", "SPK1 OUT_B",
			"Speaker2 Right", "SPK2 OUT_B",
			"Linein AINL", "Linein",
			"Linein AINR", "Linein";

	dai-link@0 {
		sound-dai = <&frddr_a>;
	};

	dai-link@1 {
		sound-dai = <&toddr_a>;
	};

	dai-link@2 {
		sound-dai = <&tdmif_c>;
		dai-format = "i2s";
		dai-tdm-slot-tx-mask-2 = <1 1>;
		dai-tdm-slot-tx-mask-3 = <1 1>;
		dai-tdm-slot-rx-mask-1 = <1 1>;
		mclk-fs = <256>;

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

		codec@1 {
			sound-dai = <&speaker_amp1>;
		};

		codec@2 {
			sound-dai = <&speaker_amp2>;
		};

		codec@3 {
			sound-dai = <&linein>;
		};

	};

	dai-link@3 {
		sound-dai = <&spdifout>;

		codec {
			sound-dai = <&spdif_dit>;
		};
	};
};
+183 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/amlogic,axg-sound-card.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Amlogic AXG sound card

maintainers:
  - Jerome Brunet <jbrunet@baylibre.com>

properties:
  compatible:
    const: amlogic,axg-sound-card

  audio-aux-devs:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: list of auxiliary devices

  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.

  audio-widgets:
    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
    description:
      A list off component DAPM widget. Each entry is a pair of strings,
      the first being the widget type, the second being the widget name

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

patternProperties:
  "^dai-link-[0-9]+$":
    type: object
    additionalProperties: false
    description:
      Container for dai-link level properties and the CODEC sub-nodes.
      There should be at least one (and probably more) subnode of this type

    properties:
      dai-format:
        $ref: /schemas/types.yaml#/definitions/string
        enum: [ i2s, left-j, dsp_a ]

      dai-tdm-slot-num:
        $ref: /schemas/types.yaml#/definitions/uint32
        description:
          Number of slots in use. If omitted, slot number is set to
          accommodate the largest mask provided.
        maximum: 32

      dai-tdm-slot-width:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: Width in bits for each slot
        enum: [ 8, 16, 20, 24, 32 ]
        default: 32

      mclk-fs:
        $ref: /schemas/types.yaml#/definitions/uint32
        description:
          Multiplication factor between the frame rate and master clock
          rate

      sound-dai:
        maxItems: 1
        description: phandle of the CPU DAI

    patternProperties:
      "^dai-tdm-slot-(t|r)x-mask-[0-3]$":
        $ref: /schemas/types.yaml#/definitions/uint32-array
        minItems: 1
        maxItems: 32
        description:
          Transmit and receive cpu slot masks of each TDM lane
          When omitted, mask is assumed to have to no slots. A valid
          interface must have at least one slot, so at least one these
          mask should be provided with an enabled slot.

      "^codec(-[0-9]+)?$":
        type: object
        additionalProperties: false
        description:
          dai-link representing backend links should have at least one subnode.
          One subnode for each codec of the dai-link. dai-link representing
          frontend links have no codec, therefore have no subnodes

        properties:
          sound-dai:
            maxItems: 1
            description: phandle of the codec DAI

        patternProperties:
          "^dai-tdm-slot-(t|r)x-mask$":
            $ref: /schemas/types.yaml#/definitions/uint32-array
            minItems: 1
            maxItems: 32
            description: Transmit and receive codec slot masks

        required:
          - sound-dai

    required:
      - sound-dai

required:
  - model
  - dai-link-0

unevaluatedProperties: false

examples:
  - |
    sound {
        compatible = "amlogic,axg-sound-card";
        model = "AXG-S420";
        audio-aux-devs = <&tdmin_a>, <&tdmout_c>;
        audio-widgets = "Line", "Lineout",
                        "Line", "Linein",
                        "Speaker", "Speaker1 Left",
                        "Speaker", "Speaker1 Right",
                        "Speaker", "Speaker2 Left",
                        "Speaker", "Speaker2 Right";
        audio-routing = "TDMOUT_C IN 0", "FRDDR_A OUT 2",
                        "SPDIFOUT IN 0", "FRDDR_A OUT 3",
                        "TDM_C Playback", "TDMOUT_C OUT",
                        "TDMIN_A IN 2", "TDM_C Capture",
                        "TDMIN_A IN 5", "TDM_C Loopback",
                        "TODDR_A IN 0", "TDMIN_A OUT",
                        "Lineout", "Lineout AOUTL",
                        "Lineout", "Lineout AOUTR",
                        "Speaker1 Left", "SPK1 OUT_A",
                        "Speaker2 Left", "SPK2 OUT_A",
                        "Speaker1 Right", "SPK1 OUT_B",
                        "Speaker2 Right", "SPK2 OUT_B",
                        "Linein AINL", "Linein",
                        "Linein AINR", "Linein";

        dai-link-0 {
            sound-dai = <&frddr_a>;
        };

        dai-link-1 {
            sound-dai = <&toddr_a>;
        };

        dai-link-2 {
            sound-dai = <&tdmif_c>;
            dai-format = "i2s";
            dai-tdm-slot-tx-mask-2 = <1 1>;
            dai-tdm-slot-tx-mask-3 = <1 1>;
            dai-tdm-slot-rx-mask-1 = <1 1>;
            mclk-fs = <256>;

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

            codec-1 {
                sound-dai = <&speaker_amp1>;
            };

            codec-2 {
                sound-dai = <&speaker_amp2>;
            };

            codec-3 {
                sound-dai = <&linein>;
            };
        };

        dai-link-3 {
            sound-dai = <&spdifout>;

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