xref: /linux/Documentation/devicetree/bindings/sound/amlogic,axg-sound-card.yaml (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
165f0a8eaSJerome Brunet# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
265f0a8eaSJerome Brunet%YAML 1.2
365f0a8eaSJerome Brunet---
465f0a8eaSJerome Brunet$id: http://devicetree.org/schemas/sound/amlogic,axg-sound-card.yaml#
565f0a8eaSJerome Brunet$schema: http://devicetree.org/meta-schemas/core.yaml#
665f0a8eaSJerome Brunet
765f0a8eaSJerome Brunettitle: Amlogic AXG sound card
865f0a8eaSJerome Brunet
965f0a8eaSJerome Brunetmaintainers:
1065f0a8eaSJerome Brunet  - Jerome Brunet <jbrunet@baylibre.com>
1165f0a8eaSJerome Brunet
12a06ce12eSKrzysztof KozlowskiallOf:
13a06ce12eSKrzysztof Kozlowski  - $ref: sound-card-common.yaml#
14a06ce12eSKrzysztof Kozlowski
1565f0a8eaSJerome Brunetproperties:
1665f0a8eaSJerome Brunet  compatible:
1765f0a8eaSJerome Brunet    const: amlogic,axg-sound-card
1865f0a8eaSJerome Brunet
1965f0a8eaSJerome Brunet  audio-aux-devs:
2065f0a8eaSJerome Brunet    $ref: /schemas/types.yaml#/definitions/phandle-array
2165f0a8eaSJerome Brunet    description: list of auxiliary devices
2265f0a8eaSJerome Brunet
2365f0a8eaSJerome Brunet  audio-widgets:
2465f0a8eaSJerome Brunet    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
2565f0a8eaSJerome Brunet    description:
2665f0a8eaSJerome Brunet      A list off component DAPM widget. Each entry is a pair of strings,
2765f0a8eaSJerome Brunet      the first being the widget type, the second being the widget name
2865f0a8eaSJerome Brunet
29*4b1d9019SNeil Armstrong  clocks:
30*4b1d9019SNeil Armstrong    minItems: 1
31*4b1d9019SNeil Armstrong    maxItems: 3
32*4b1d9019SNeil Armstrong    description:
33*4b1d9019SNeil Armstrong      Base PLL clocks of audio susbsytem, used to configure base clock
34*4b1d9019SNeil Armstrong      frequencies for different audio use-cases.
35*4b1d9019SNeil Armstrong
3665f0a8eaSJerome BrunetpatternProperties:
3765f0a8eaSJerome Brunet  "^dai-link-[0-9]+$":
3865f0a8eaSJerome Brunet    type: object
3965f0a8eaSJerome Brunet    additionalProperties: false
4065f0a8eaSJerome Brunet    description:
4165f0a8eaSJerome Brunet      Container for dai-link level properties and the CODEC sub-nodes.
4265f0a8eaSJerome Brunet      There should be at least one (and probably more) subnode of this type
4365f0a8eaSJerome Brunet
4465f0a8eaSJerome Brunet    properties:
4565f0a8eaSJerome Brunet      dai-format:
4665f0a8eaSJerome Brunet        $ref: /schemas/types.yaml#/definitions/string
4765f0a8eaSJerome Brunet        enum: [ i2s, left-j, dsp_a ]
4865f0a8eaSJerome Brunet
4965f0a8eaSJerome Brunet      dai-tdm-slot-num:
5065f0a8eaSJerome Brunet        $ref: /schemas/types.yaml#/definitions/uint32
5165f0a8eaSJerome Brunet        description:
5265f0a8eaSJerome Brunet          Number of slots in use. If omitted, slot number is set to
5365f0a8eaSJerome Brunet          accommodate the largest mask provided.
5465f0a8eaSJerome Brunet        maximum: 32
5565f0a8eaSJerome Brunet
5665f0a8eaSJerome Brunet      dai-tdm-slot-width:
5765f0a8eaSJerome Brunet        $ref: /schemas/types.yaml#/definitions/uint32
5865f0a8eaSJerome Brunet        description: Width in bits for each slot
5965f0a8eaSJerome Brunet        enum: [ 8, 16, 20, 24, 32 ]
6065f0a8eaSJerome Brunet        default: 32
6165f0a8eaSJerome Brunet
6265f0a8eaSJerome Brunet      mclk-fs:
6365f0a8eaSJerome Brunet        $ref: /schemas/types.yaml#/definitions/uint32
6465f0a8eaSJerome Brunet        description:
6565f0a8eaSJerome Brunet          Multiplication factor between the frame rate and master clock
6665f0a8eaSJerome Brunet          rate
6765f0a8eaSJerome Brunet
6865f0a8eaSJerome Brunet      sound-dai:
6965f0a8eaSJerome Brunet        maxItems: 1
7065f0a8eaSJerome Brunet        description: phandle of the CPU DAI
7165f0a8eaSJerome Brunet
7265f0a8eaSJerome Brunet    patternProperties:
7365f0a8eaSJerome Brunet      "^dai-tdm-slot-(t|r)x-mask-[0-3]$":
7465f0a8eaSJerome Brunet        $ref: /schemas/types.yaml#/definitions/uint32-array
7565f0a8eaSJerome Brunet        minItems: 1
7665f0a8eaSJerome Brunet        maxItems: 32
7765f0a8eaSJerome Brunet        description:
7865f0a8eaSJerome Brunet          Transmit and receive cpu slot masks of each TDM lane
7965f0a8eaSJerome Brunet          When omitted, mask is assumed to have to no slots. A valid
8065f0a8eaSJerome Brunet          interface must have at least one slot, so at least one these
8165f0a8eaSJerome Brunet          mask should be provided with an enabled slot.
8265f0a8eaSJerome Brunet
8365f0a8eaSJerome Brunet      "^codec(-[0-9]+)?$":
8465f0a8eaSJerome Brunet        type: object
8565f0a8eaSJerome Brunet        additionalProperties: false
8665f0a8eaSJerome Brunet        description:
8765f0a8eaSJerome Brunet          dai-link representing backend links should have at least one subnode.
8865f0a8eaSJerome Brunet          One subnode for each codec of the dai-link. dai-link representing
8965f0a8eaSJerome Brunet          frontend links have no codec, therefore have no subnodes
9065f0a8eaSJerome Brunet
9165f0a8eaSJerome Brunet        properties:
9265f0a8eaSJerome Brunet          sound-dai:
9365f0a8eaSJerome Brunet            maxItems: 1
9465f0a8eaSJerome Brunet            description: phandle of the codec DAI
9565f0a8eaSJerome Brunet
9665f0a8eaSJerome Brunet        patternProperties:
9765f0a8eaSJerome Brunet          "^dai-tdm-slot-(t|r)x-mask$":
9865f0a8eaSJerome Brunet            $ref: /schemas/types.yaml#/definitions/uint32-array
9965f0a8eaSJerome Brunet            minItems: 1
10065f0a8eaSJerome Brunet            maxItems: 32
10165f0a8eaSJerome Brunet            description: Transmit and receive codec slot masks
10265f0a8eaSJerome Brunet
10365f0a8eaSJerome Brunet        required:
10465f0a8eaSJerome Brunet          - sound-dai
10565f0a8eaSJerome Brunet
10665f0a8eaSJerome Brunet    required:
10765f0a8eaSJerome Brunet      - sound-dai
10865f0a8eaSJerome Brunet
10965f0a8eaSJerome Brunetrequired:
11065f0a8eaSJerome Brunet  - dai-link-0
11165f0a8eaSJerome Brunet
11265f0a8eaSJerome BrunetunevaluatedProperties: false
11365f0a8eaSJerome Brunet
11465f0a8eaSJerome Brunetexamples:
11565f0a8eaSJerome Brunet  - |
11665f0a8eaSJerome Brunet    sound {
11765f0a8eaSJerome Brunet        compatible = "amlogic,axg-sound-card";
11865f0a8eaSJerome Brunet        model = "AXG-S420";
11965f0a8eaSJerome Brunet        audio-aux-devs = <&tdmin_a>, <&tdmout_c>;
12065f0a8eaSJerome Brunet        audio-widgets = "Line", "Lineout",
12165f0a8eaSJerome Brunet                        "Line", "Linein",
12265f0a8eaSJerome Brunet                        "Speaker", "Speaker1 Left",
12365f0a8eaSJerome Brunet                        "Speaker", "Speaker1 Right",
12465f0a8eaSJerome Brunet                        "Speaker", "Speaker2 Left",
12565f0a8eaSJerome Brunet                        "Speaker", "Speaker2 Right";
12665f0a8eaSJerome Brunet        audio-routing = "TDMOUT_C IN 0", "FRDDR_A OUT 2",
12765f0a8eaSJerome Brunet                        "SPDIFOUT IN 0", "FRDDR_A OUT 3",
12865f0a8eaSJerome Brunet                        "TDM_C Playback", "TDMOUT_C OUT",
12965f0a8eaSJerome Brunet                        "TDMIN_A IN 2", "TDM_C Capture",
13065f0a8eaSJerome Brunet                        "TDMIN_A IN 5", "TDM_C Loopback",
13165f0a8eaSJerome Brunet                        "TODDR_A IN 0", "TDMIN_A OUT",
13265f0a8eaSJerome Brunet                        "Lineout", "Lineout AOUTL",
13365f0a8eaSJerome Brunet                        "Lineout", "Lineout AOUTR",
13465f0a8eaSJerome Brunet                        "Speaker1 Left", "SPK1 OUT_A",
13565f0a8eaSJerome Brunet                        "Speaker2 Left", "SPK2 OUT_A",
13665f0a8eaSJerome Brunet                        "Speaker1 Right", "SPK1 OUT_B",
13765f0a8eaSJerome Brunet                        "Speaker2 Right", "SPK2 OUT_B",
13865f0a8eaSJerome Brunet                        "Linein AINL", "Linein",
13965f0a8eaSJerome Brunet                        "Linein AINR", "Linein";
14065f0a8eaSJerome Brunet
14165f0a8eaSJerome Brunet        dai-link-0 {
14265f0a8eaSJerome Brunet            sound-dai = <&frddr_a>;
14365f0a8eaSJerome Brunet        };
14465f0a8eaSJerome Brunet
14565f0a8eaSJerome Brunet        dai-link-1 {
14665f0a8eaSJerome Brunet            sound-dai = <&toddr_a>;
14765f0a8eaSJerome Brunet        };
14865f0a8eaSJerome Brunet
14965f0a8eaSJerome Brunet        dai-link-2 {
15065f0a8eaSJerome Brunet            sound-dai = <&tdmif_c>;
15165f0a8eaSJerome Brunet            dai-format = "i2s";
15265f0a8eaSJerome Brunet            dai-tdm-slot-tx-mask-2 = <1 1>;
15365f0a8eaSJerome Brunet            dai-tdm-slot-tx-mask-3 = <1 1>;
15465f0a8eaSJerome Brunet            dai-tdm-slot-rx-mask-1 = <1 1>;
15565f0a8eaSJerome Brunet            mclk-fs = <256>;
15665f0a8eaSJerome Brunet
15765f0a8eaSJerome Brunet            codec-0 {
15865f0a8eaSJerome Brunet                sound-dai = <&lineout>;
15965f0a8eaSJerome Brunet            };
16065f0a8eaSJerome Brunet
16165f0a8eaSJerome Brunet            codec-1 {
16265f0a8eaSJerome Brunet                sound-dai = <&speaker_amp1>;
16365f0a8eaSJerome Brunet            };
16465f0a8eaSJerome Brunet
16565f0a8eaSJerome Brunet            codec-2 {
16665f0a8eaSJerome Brunet                sound-dai = <&speaker_amp2>;
16765f0a8eaSJerome Brunet            };
16865f0a8eaSJerome Brunet
16965f0a8eaSJerome Brunet            codec-3 {
17065f0a8eaSJerome Brunet                sound-dai = <&linein>;
17165f0a8eaSJerome Brunet            };
17265f0a8eaSJerome Brunet        };
17365f0a8eaSJerome Brunet
17465f0a8eaSJerome Brunet        dai-link-3 {
17565f0a8eaSJerome Brunet            sound-dai = <&spdifout>;
17665f0a8eaSJerome Brunet
17765f0a8eaSJerome Brunet            codec {
17865f0a8eaSJerome Brunet                sound-dai = <&spdif_dit>;
17965f0a8eaSJerome Brunet            };
18065f0a8eaSJerome Brunet        };
18165f0a8eaSJerome Brunet    };
182