# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/amlogic,gx-sound-card.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Amlogic GX sound card

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

allOf:
  - $ref: sound-card-common.yaml#

properties:
  compatible:
    items:
      - const: amlogic,gx-sound-card

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

  audio-widgets:
    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
    minItems: 2
    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

patternProperties:
  "^dai-link-[0-9]+$":
    type: object
    additionalProperties: false
    description: |-
      dai-link child nodes:
        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 ]

      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:
      "^codec(-[0-9]+)?$":
        type: object
        additionalProperties: false
        description: |-
          Codecs:
          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

        required:
          - sound-dai

    required:
      - sound-dai

required:
  - model
  - dai-link-0

unevaluatedProperties: false

examples:
  - |
    sound {
        compatible = "amlogic,gx-sound-card";
        model = "GXL-ACME-S905X-FOO";
        audio-aux-devs = <&amp>;
        audio-routing = "I2S ENCODER I2S IN", "I2S FIFO Playback";

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

        dai-link-1 {
                sound-dai = <&i2s_encoder>;
                dai-format = "i2s";
                mclk-fs = <256>;

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

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