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

title: Tegra210 OPE

description:
  The Output Processing Engine (OPE) is one of the AHUB client. It has
  PEQ (Parametric Equalizer) and MBDRC (Multi Band Dynamic Range Compressor)
  sub blocks for data processing.

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

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    oneOf:
      - const: nvidia,tegra210-ope
      - items:
          - enum:
              - nvidia,tegra264-ope
              - nvidia,tegra234-ope
              - nvidia,tegra194-ope
              - nvidia,tegra186-ope
          - const: nvidia,tegra210-ope

  reg:
    maxItems: 1

  "#address-cells":
    enum: [ 1, 2 ]

  "#size-cells":
    enum: [ 1, 2 ]

  ranges: true

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

  ports:
    $ref: /schemas/graph.yaml#/properties/ports
    properties:
      port@0:
        $ref: audio-graph-port.yaml#
        unevaluatedProperties: false
        description:
          OPE ACIF (Audio Client Interface) input port. This is connected
          to corresponding ACIF output port on AHUB (Audio Hub).

      port@1:
        $ref: audio-graph-port.yaml#
        unevaluatedProperties: false
        description:
          OPE ACIF output port. This is connected to corresponding ACIF
          input port on AHUB.

patternProperties:
  '^equalizer@[0-9a-f]+$':
    type: object
    $ref: nvidia,tegra210-peq.yaml#

  '^dynamic-range-compressor@[0-9a-f]+$':
    type: object
    $ref: nvidia,tegra210-mbdrc.yaml#

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    processing-engine@702d8000 {
        compatible = "nvidia,tegra210-ope";
        reg = <0x702d8000 0x100>;
        sound-name-prefix = "OPE1";
    };

...
