# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/nvidia,tegra210-amx.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Tegra210 AMX Device Tree Bindings

description: |
  The Audio Multiplexer (AMX) block can multiplex up to four input streams
  each of which can have maximum 16 channels and generate an output stream
  with maximum 16 channels. A byte RAM helps to form an output frame by
  any combination of bytes from the input frames.

maintainers:
  - Jon Hunter <jonathanh@nvidia.com>
  - Mohan Kumar <mkumard@nvidia.com>
  - Sameer Pujar <spujar@nvidia.com>

allOf:
  - $ref: name-prefix.yaml#

properties:
  $nodename:
    pattern: "^amx@[0-9a-f]*$"

  compatible:
    oneOf:
      - const: nvidia,tegra210-amx
      - items:
          - const: nvidia,tegra186-amx
          - const: nvidia,tegra210-amx
      - const: nvidia,tegra194-amx
      - items:
          - const: nvidia,tegra234-amx
          - const: nvidia,tegra194-amx

  reg:
    maxItems: 1

  sound-name-prefix:
    pattern: "^AMX[1-9]$"

  ports:
    $ref: /schemas/graph.yaml#/properties/ports
    description: |
      AMX has four inputs and one output. Accordingly ACIF (Audio Client
      Interfaces) port nodes are defined to represent AMX inputs (port 0
      to 3) and output (port 4). These are connected to corresponding
      ports on AHUB (Audio Hub).

    patternProperties:
      '^port@[0-3]':
        $ref: audio-graph-port.yaml#
        unevaluatedProperties: false
        description: AMX ACIF input ports

    properties:
      port@4:
        $ref: audio-graph-port.yaml#
        unevaluatedProperties: false
        description: AMX ACIF output port

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |

    amx@702d3000 {
        compatible = "nvidia,tegra210-amx";
        reg = <0x702d3000 0x100>;
        sound-name-prefix = "AMX1";
    };

...
