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

title: NXP Audio Mixer (AUDMIX).

maintainers:
  - Shengjiu Wang <shengjiu.wang@nxp.com>
  - Frank Li <Frank.Li@nxp.com>

description: |
  The Audio Mixer is a on-chip functional module that allows mixing of two
  audio streams into a single audio stream. Audio Mixer has two input serial
  audio interfaces. These are driven by two Synchronous Audio interface
  modules (SAI). Each input serial interface carries 8 audio channels in its
  frame in TDM manner. Mixer mixes audio samples of corresponding channels
  from two interfaces into a single sample. Before mixing, audio samples of
  two inputs can be attenuated based on configuration. The output of the
  Audio Mixer is also a serial audio interface. Like input interfaces it has
  the same TDM frame format. This output is used to drive the serial DAC TDM
  interface of audio codec and also sent to the external pins along with the
  receive path of normal audio SAI module for readback by the CPU.

  The output of Audio Mixer can be selected from any of the three streams
    - serial audio input 1
    - serial audio input 2
    - mixed audio

  Mixing operation is independent of audio sample rate but the two audio
  input streams must have same audio sample rate with same number of channels
  in TDM frame to be eligible for mixing.

properties:
  compatible:
    const: fsl,imx8qm-audmix

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    items:
      - const: ipg

  power-domains:
    maxItems: 1

  dais:
    description: contain a list of phandles to AUDMIX connected DAIs.
    $ref: /schemas/types.yaml#/definitions/phandle-array
    minItems: 2
    items:
      - description: the AUDMIX output
        maxItems: 1
      - description: serial audio input 1
        maxItems: 1
      - description: serial audio input 2
        maxItems: 1

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - power-domains
  - dais

unevaluatedProperties: false

examples:
  - |
    audmix@59840000 {
      compatible = "fsl,imx8qm-audmix";
      reg = <0x59840000 0x10000>;
      clocks = <&amix_lpcg 0>;
      clock-names = "ipg";
      power-domains = <&pd_audmix>;
      dais = <&sai4>, <&sai5>;
    };
