1d0d9071bSViorel SumanNXP Audio Mixer (AUDMIX).
2d0d9071bSViorel Suman
3d0d9071bSViorel SumanThe Audio Mixer is a on-chip functional module that allows mixing of two
4d0d9071bSViorel Sumanaudio streams into a single audio stream. Audio Mixer has two input serial
5d0d9071bSViorel Sumanaudio interfaces. These are driven by two Synchronous Audio interface
6d0d9071bSViorel Sumanmodules (SAI). Each input serial interface carries 8 audio channels in its
7d0d9071bSViorel Sumanframe in TDM manner. Mixer mixes audio samples of corresponding channels
8d0d9071bSViorel Sumanfrom two interfaces into a single sample. Before mixing, audio samples of
9d0d9071bSViorel Sumantwo inputs can be attenuated based on configuration. The output of the
10d0d9071bSViorel SumanAudio Mixer is also a serial audio interface. Like input interfaces it has
11d0d9071bSViorel Sumanthe same TDM frame format. This output is used to drive the serial DAC TDM
12d0d9071bSViorel Sumaninterface of audio codec and also sent to the external pins along with the
13d0d9071bSViorel Sumanreceive path of normal audio SAI module for readback by the CPU.
14d0d9071bSViorel Suman
15d0d9071bSViorel SumanThe output of Audio Mixer can be selected from any of the three streams
16d0d9071bSViorel Suman - serial audio input 1
17d0d9071bSViorel Suman - serial audio input 2
18d0d9071bSViorel Suman - mixed audio
19d0d9071bSViorel Suman
20d0d9071bSViorel SumanMixing operation is independent of audio sample rate but the two audio
21d0d9071bSViorel Sumaninput streams must have same audio sample rate with same number of channels
22d0d9071bSViorel Sumanin TDM frame to be eligible for mixing.
23d0d9071bSViorel Suman
24d0d9071bSViorel SumanDevice driver required properties:
25d0d9071bSViorel Suman=================================
26d0d9071bSViorel Suman  - compatible		: Compatible list, contains "fsl,imx8qm-audmix"
27d0d9071bSViorel Suman
28d0d9071bSViorel Suman  - reg			: Offset and length of the register set for the device.
29d0d9071bSViorel Suman
30d0d9071bSViorel Suman  - clocks		: Must contain an entry for each entry in clock-names.
31d0d9071bSViorel Suman
32d0d9071bSViorel Suman  - clock-names		: Must include the "ipg" for register access.
33d0d9071bSViorel Suman
34d0d9071bSViorel Suman  - power-domains	: Must contain the phandle to AUDMIX power domain node
35d0d9071bSViorel Suman
36d0d9071bSViorel Suman  - dais		: Must contain a list of phandles to AUDMIX connected
37d0d9071bSViorel Suman			  DAIs. The current implementation requires two phandles
38d0d9071bSViorel Suman			  to SAI interfaces to be provided, the first SAI in the
39d0d9071bSViorel Suman			  list being used to route the AUDMIX output.
40d0d9071bSViorel Suman
41d0d9071bSViorel SumanDevice driver configuration example:
42d0d9071bSViorel Suman======================================
43d0d9071bSViorel Suman  audmix: audmix@59840000 {
44d0d9071bSViorel Suman    compatible = "fsl,imx8qm-audmix";
45d0d9071bSViorel Suman    reg = <0x0 0x59840000 0x0 0x10000>;
46d0d9071bSViorel Suman    clocks = <&clk IMX8QXP_AUD_AUDMIX_IPG>;
47d0d9071bSViorel Suman    clock-names = "ipg";
48d0d9071bSViorel Suman    power-domains = <&pd_audmix>;
49d0d9071bSViorel Suman    dais = <&sai4>, <&sai5>;
50d0d9071bSViorel Suman  };
51