Unverified Commit fb601316 authored by Herve Codina's avatar Herve Codina Committed by Mark Brown
Browse files

dt-bindings: sound: fsl,qmc-audio: Add support for multiple QMC channels per DAI



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: default avatarHerve Codina <herve.codina@bootlin.com>
Reviewed-by: default avatarRob Herring (Arm) <robh@kernel.org>
Link: https://patch.msgid.link/20240701113038.55144-10-herve.codina@bootlin.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent af8432b2
Loading
Loading
Loading
Loading
+35 −6
Original line number Diff line number Diff line
@@ -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:
          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 = <&qmc 17>;
        };
        dai@18 {
            reg = <18>;
            /* Non-interleaved mode */
            fsl,qmc-chan = <&qmc 18>, <&qmc 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 = <&audio_controller 18>;
            };
            codec {
                sound-dai = <&codec3>;
                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>;
            };
        };
    };