| # 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: |
| enum: |
| - fsl,imx8qm-audmix |
| - fsl,imx952-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 |
| |
| allOf: |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - fsl,imx8qm-audmix |
| then: |
| required: |
| - 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>; |
| }; |
| }; |
| }; |
| }; |