162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/sound/amlogic,axg-sound-card.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Amlogic AXG sound card
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Jerome Brunet <jbrunet@baylibre.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciallOf:
1362306a36Sopenharmony_ci  - $ref: sound-card-common.yaml#
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciproperties:
1662306a36Sopenharmony_ci  compatible:
1762306a36Sopenharmony_ci    const: amlogic,axg-sound-card
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci  audio-aux-devs:
2062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
2162306a36Sopenharmony_ci    description: list of auxiliary devices
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  audio-widgets:
2462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
2562306a36Sopenharmony_ci    description:
2662306a36Sopenharmony_ci      A list off component DAPM widget. Each entry is a pair of strings,
2762306a36Sopenharmony_ci      the first being the widget type, the second being the widget name
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_cipatternProperties:
3062306a36Sopenharmony_ci  "^dai-link-[0-9]+$":
3162306a36Sopenharmony_ci    type: object
3262306a36Sopenharmony_ci    additionalProperties: false
3362306a36Sopenharmony_ci    description:
3462306a36Sopenharmony_ci      Container for dai-link level properties and the CODEC sub-nodes.
3562306a36Sopenharmony_ci      There should be at least one (and probably more) subnode of this type
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci    properties:
3862306a36Sopenharmony_ci      dai-format:
3962306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/string
4062306a36Sopenharmony_ci        enum: [ i2s, left-j, dsp_a ]
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci      dai-tdm-slot-num:
4362306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
4462306a36Sopenharmony_ci        description:
4562306a36Sopenharmony_ci          Number of slots in use. If omitted, slot number is set to
4662306a36Sopenharmony_ci          accommodate the largest mask provided.
4762306a36Sopenharmony_ci        maximum: 32
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci      dai-tdm-slot-width:
5062306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
5162306a36Sopenharmony_ci        description: Width in bits for each slot
5262306a36Sopenharmony_ci        enum: [ 8, 16, 20, 24, 32 ]
5362306a36Sopenharmony_ci        default: 32
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci      mclk-fs:
5662306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
5762306a36Sopenharmony_ci        description:
5862306a36Sopenharmony_ci          Multiplication factor between the frame rate and master clock
5962306a36Sopenharmony_ci          rate
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci      sound-dai:
6262306a36Sopenharmony_ci        maxItems: 1
6362306a36Sopenharmony_ci        description: phandle of the CPU DAI
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci    patternProperties:
6662306a36Sopenharmony_ci      "^dai-tdm-slot-(t|r)x-mask-[0-3]$":
6762306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32-array
6862306a36Sopenharmony_ci        minItems: 1
6962306a36Sopenharmony_ci        maxItems: 32
7062306a36Sopenharmony_ci        description:
7162306a36Sopenharmony_ci          Transmit and receive cpu slot masks of each TDM lane
7262306a36Sopenharmony_ci          When omitted, mask is assumed to have to no slots. A valid
7362306a36Sopenharmony_ci          interface must have at least one slot, so at least one these
7462306a36Sopenharmony_ci          mask should be provided with an enabled slot.
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci      "^codec(-[0-9]+)?$":
7762306a36Sopenharmony_ci        type: object
7862306a36Sopenharmony_ci        additionalProperties: false
7962306a36Sopenharmony_ci        description:
8062306a36Sopenharmony_ci          dai-link representing backend links should have at least one subnode.
8162306a36Sopenharmony_ci          One subnode for each codec of the dai-link. dai-link representing
8262306a36Sopenharmony_ci          frontend links have no codec, therefore have no subnodes
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci        properties:
8562306a36Sopenharmony_ci          sound-dai:
8662306a36Sopenharmony_ci            maxItems: 1
8762306a36Sopenharmony_ci            description: phandle of the codec DAI
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci        patternProperties:
9062306a36Sopenharmony_ci          "^dai-tdm-slot-(t|r)x-mask$":
9162306a36Sopenharmony_ci            $ref: /schemas/types.yaml#/definitions/uint32-array
9262306a36Sopenharmony_ci            minItems: 1
9362306a36Sopenharmony_ci            maxItems: 32
9462306a36Sopenharmony_ci            description: Transmit and receive codec slot masks
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci        required:
9762306a36Sopenharmony_ci          - sound-dai
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci    required:
10062306a36Sopenharmony_ci      - sound-dai
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_cirequired:
10362306a36Sopenharmony_ci  - dai-link-0
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ciunevaluatedProperties: false
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ciexamples:
10862306a36Sopenharmony_ci  - |
10962306a36Sopenharmony_ci    sound {
11062306a36Sopenharmony_ci        compatible = "amlogic,axg-sound-card";
11162306a36Sopenharmony_ci        model = "AXG-S420";
11262306a36Sopenharmony_ci        audio-aux-devs = <&tdmin_a>, <&tdmout_c>;
11362306a36Sopenharmony_ci        audio-widgets = "Line", "Lineout",
11462306a36Sopenharmony_ci                        "Line", "Linein",
11562306a36Sopenharmony_ci                        "Speaker", "Speaker1 Left",
11662306a36Sopenharmony_ci                        "Speaker", "Speaker1 Right",
11762306a36Sopenharmony_ci                        "Speaker", "Speaker2 Left",
11862306a36Sopenharmony_ci                        "Speaker", "Speaker2 Right";
11962306a36Sopenharmony_ci        audio-routing = "TDMOUT_C IN 0", "FRDDR_A OUT 2",
12062306a36Sopenharmony_ci                        "SPDIFOUT IN 0", "FRDDR_A OUT 3",
12162306a36Sopenharmony_ci                        "TDM_C Playback", "TDMOUT_C OUT",
12262306a36Sopenharmony_ci                        "TDMIN_A IN 2", "TDM_C Capture",
12362306a36Sopenharmony_ci                        "TDMIN_A IN 5", "TDM_C Loopback",
12462306a36Sopenharmony_ci                        "TODDR_A IN 0", "TDMIN_A OUT",
12562306a36Sopenharmony_ci                        "Lineout", "Lineout AOUTL",
12662306a36Sopenharmony_ci                        "Lineout", "Lineout AOUTR",
12762306a36Sopenharmony_ci                        "Speaker1 Left", "SPK1 OUT_A",
12862306a36Sopenharmony_ci                        "Speaker2 Left", "SPK2 OUT_A",
12962306a36Sopenharmony_ci                        "Speaker1 Right", "SPK1 OUT_B",
13062306a36Sopenharmony_ci                        "Speaker2 Right", "SPK2 OUT_B",
13162306a36Sopenharmony_ci                        "Linein AINL", "Linein",
13262306a36Sopenharmony_ci                        "Linein AINR", "Linein";
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci        dai-link-0 {
13562306a36Sopenharmony_ci            sound-dai = <&frddr_a>;
13662306a36Sopenharmony_ci        };
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci        dai-link-1 {
13962306a36Sopenharmony_ci            sound-dai = <&toddr_a>;
14062306a36Sopenharmony_ci        };
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci        dai-link-2 {
14362306a36Sopenharmony_ci            sound-dai = <&tdmif_c>;
14462306a36Sopenharmony_ci            dai-format = "i2s";
14562306a36Sopenharmony_ci            dai-tdm-slot-tx-mask-2 = <1 1>;
14662306a36Sopenharmony_ci            dai-tdm-slot-tx-mask-3 = <1 1>;
14762306a36Sopenharmony_ci            dai-tdm-slot-rx-mask-1 = <1 1>;
14862306a36Sopenharmony_ci            mclk-fs = <256>;
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci            codec-0 {
15162306a36Sopenharmony_ci                sound-dai = <&lineout>;
15262306a36Sopenharmony_ci            };
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci            codec-1 {
15562306a36Sopenharmony_ci                sound-dai = <&speaker_amp1>;
15662306a36Sopenharmony_ci            };
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci            codec-2 {
15962306a36Sopenharmony_ci                sound-dai = <&speaker_amp2>;
16062306a36Sopenharmony_ci            };
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci            codec-3 {
16362306a36Sopenharmony_ci                sound-dai = <&linein>;
16462306a36Sopenharmony_ci            };
16562306a36Sopenharmony_ci        };
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci        dai-link-3 {
16862306a36Sopenharmony_ci            sound-dai = <&spdifout>;
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci            codec {
17162306a36Sopenharmony_ci                sound-dai = <&spdif_dit>;
17262306a36Sopenharmony_ci            };
17362306a36Sopenharmony_ci        };
17462306a36Sopenharmony_ci    };
175