Re: [PATCH 09/10] dt-bindings: sound: fsl,qmc-audio: Add support for multiple QMC channels per DAI

2024-06-27 Thread Rob Herring (Arm)


On Thu, 20 Jun 2024 10:42:56 +0200, Herve Codina wrote:
> The QMC audio uses one QMC channel per DAI and uses this QMC channel to
> transmit interleaved audio channel samples.
> 
> In order to work in non-interleave mode, a QMC audio DAI needs to use
> multiple QMC channels. In that case, the DAI maps each QMC channel to
> exactly one audio channel.
> 
> Allow QMC audio DAIs with multiple QMC channels attached.
> 
> Signed-off-by: Herve Codina 
> ---
>  .../bindings/sound/fsl,qmc-audio.yaml | 41 ---
>  1 file changed, 35 insertions(+), 6 deletions(-)
> 

Reviewed-by: Rob Herring (Arm) 



[PATCH 09/10] dt-bindings: sound: fsl,qmc-audio: Add support for multiple QMC channels per DAI

2024-06-20 Thread Herve Codina
The QMC audio uses one QMC channel per DAI and uses this QMC channel to
transmit interleaved audio channel samples.

In order to work in non-interleave mode, a QMC audio DAI needs to use
multiple QMC channels. In that case, the DAI maps each QMC channel to
exactly one audio channel.

Allow QMC audio DAIs with multiple QMC channels attached.

Signed-off-by: Herve Codina 
---
 .../bindings/sound/fsl,qmc-audio.yaml | 41 ---
 1 file changed, 35 insertions(+), 6 deletions(-)

diff --git a/Documentation/devicetree/bindings/sound/fsl,qmc-audio.yaml 
b/Documentation/devicetree/bindings/sound/fsl,qmc-audio.yaml
index b522ed7dcc51..a23e49198c37 100644
--- a/Documentation/devicetree/bindings/sound/fsl,qmc-audio.yaml
+++ b/Documentation/devicetree/bindings/sound/fsl,qmc-audio.yaml
@@ -12,7 +12,9 @@ maintainers:
 description: |
   The QMC audio is an ASoC component which uses QMC (QUICC Multichannel
   Controller) channels to transfer the audio data.
-  It provides as many DAI as the number of QMC channel used.
+  It provides several DAIs. For each DAI, the DAI is working in interleaved 
mode
+  if only one QMC channel is used by the DAI or it is working in 
non-interleaved
+  mode if several QMC channels are used by the DAI.
 
 allOf:
   - $ref: dai-common.yaml#
@@ -45,12 +47,19 @@ patternProperties:
   fsl,qmc-chan:
 $ref: /schemas/types.yaml#/definitions/phandle-array
 items:
-  - items:
-  - description: phandle to QMC node
-  - description: Channel number
+  items:
+- description: phandle to QMC node
+- description: Channel number
+minItems: 1
 description:
-  Should be a phandle/number pair. The phandle to QMC node and the QMC
-  channel to use for this DAI.
+  Should be a phandle/number pair list. The list of phandle to QMC node
+  and the QMC channel pair to use for this DAI.
+  If only one phandle/number pair is provided, this DAI works in
+  interleaved mode, i.e. audio channels for this DAI are interleaved in
+  the QMC channel. If more than one pair is provided, this DAI works
+  in non-interleave mode. In that case the first audio channel uses the
+  the first QMC channel, the second audio channel uses the second QMC
+  channel, etc...
 
 required:
   - reg
@@ -79,6 +88,11 @@ examples:
 reg = <17>;
 fsl,qmc-chan = < 17>;
 };
+dai@18 {
+reg = <18>;
+/* Non-interleaved mode */
+fsl,qmc-chan = < 18>, < 19>;
+};
 };
 
 sound {
@@ -115,4 +129,19 @@ examples:
 dai-tdm-slot-rx-mask = <0 0 1 0 1 0 1 0 1>;
 };
 };
+simple-audio-card,dai-link@2 {
+reg = <2>;
+format = "dsp_b";
+cpu {
+sound-dai = <_controller 18>;
+};
+codec {
+sound-dai = <>;
+dai-tdm-slot-num = <2>;
+dai-tdm-slot-width = <8>;
+/* TS 9, 10 */
+dai-tdm-slot-tx-mask = <0 0 0 0 0 0 0 0 0 1 1>;
+dai-tdm-slot-rx-mask = <0 0 0 0 0 0 0 0 0 1 1>;
+};
+};
 };
-- 
2.45.0