Documentation / devicetree / bindings / sound / fsl,audmix.yaml


Based on kernel version 6.15. Page generated on 2025-05-29 09:09 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
# 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

  ports:
    $ref: /schemas/graph.yaml#/properties/ports
    patternProperties:
      '^port@[0-1]':
        $ref: audio-graph-port.yaml#
        unevaluatedProperties: false
        description: Input port from SAI TX

    properties:
      port@2:
        $ref: audio-graph-port.yaml#
        unevaluatedProperties: false
        description: Output port to SAI RX

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

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>;
 
      ports {
        #address-cells = <1>;
        #size-cells = <0>;
 
        port@0 {
          reg = <0>;
          playback-only;
 
          amix_endpoint0: endpoint {
            dai-tdm-slot-num = <8>;
            dai-tdm-slot-width = <32>;
            dai-tdm-slot-width-map = <32 8 32>;
            dai-format = "dsp_a";
            remote-endpoint = <&be00_ep>;
          };
        };
 
        port@1 {
          reg = <1>;
          playback-only;
 
          amix_endpoint1: endpoint {
            dai-tdm-slot-num = <8>;
            dai-tdm-slot-width = <32>;
            dai-tdm-slot-width-map = <32 8 32>;
            dai-format = "dsp_a";
            remote-endpoint = <&be01_ep>;
          };
        };
 
        port@2 {
          reg = <2>;
          capture-only;
 
          amix_endpoint2: endpoint {
            dai-tdm-slot-num = <8>;
            dai-tdm-slot-width = <32>;
            dai-tdm-slot-width-map = <32 8 32>;
            dai-format = "dsp_a";
            bitclock-master;
            frame-master;
            remote-endpoint = <&be02_ep>;
          };
        };
      };
    };