xref: /linux/Documentation/devicetree/bindings/sound/fsl,qmc-audio.yaml (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
1f72ebecdSHerve Codina# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2f72ebecdSHerve Codina%YAML 1.2
3f72ebecdSHerve Codina---
4f72ebecdSHerve Codina$id: http://devicetree.org/schemas/sound/fsl,qmc-audio.yaml#
5f72ebecdSHerve Codina$schema: http://devicetree.org/meta-schemas/core.yaml#
6f72ebecdSHerve Codina
7f72ebecdSHerve Codinatitle: QMC audio
8f72ebecdSHerve Codina
9f72ebecdSHerve Codinamaintainers:
10f72ebecdSHerve Codina  - Herve Codina <herve.codina@bootlin.com>
11f72ebecdSHerve Codina
12f72ebecdSHerve Codinadescription: |
13f72ebecdSHerve Codina  The QMC audio is an ASoC component which uses QMC (QUICC Multichannel
14f72ebecdSHerve Codina  Controller) channels to transfer the audio data.
15*fb601316SHerve Codina  It provides several DAIs. For each DAI, the DAI is working in interleaved mode
16*fb601316SHerve Codina  if only one QMC channel is used by the DAI or it is working in non-interleaved
17*fb601316SHerve Codina  mode if several QMC channels are used by the DAI.
18f72ebecdSHerve Codina
19f72ebecdSHerve CodinaallOf:
20f72ebecdSHerve Codina  - $ref: dai-common.yaml#
21f72ebecdSHerve Codina
22f72ebecdSHerve Codinaproperties:
23f72ebecdSHerve Codina  compatible:
24f72ebecdSHerve Codina    const: fsl,qmc-audio
25f72ebecdSHerve Codina
26f72ebecdSHerve Codina  '#address-cells':
27f72ebecdSHerve Codina    const: 1
28f72ebecdSHerve Codina  '#size-cells':
29f72ebecdSHerve Codina    const: 0
30f72ebecdSHerve Codina  '#sound-dai-cells':
31f72ebecdSHerve Codina    const: 1
32f72ebecdSHerve Codina
33f72ebecdSHerve CodinapatternProperties:
34f72ebecdSHerve Codina  '^dai@([0-9]|[1-5][0-9]|6[0-3])$':
35f72ebecdSHerve Codina    description:
36f72ebecdSHerve Codina      A DAI managed by this controller
37f72ebecdSHerve Codina    type: object
387b71da59SRob Herring    additionalProperties: false
39f72ebecdSHerve Codina
40f72ebecdSHerve Codina    properties:
41f72ebecdSHerve Codina      reg:
42f72ebecdSHerve Codina        minimum: 0
43f72ebecdSHerve Codina        maximum: 63
44f72ebecdSHerve Codina        description:
45f72ebecdSHerve Codina          The DAI number
46f72ebecdSHerve Codina
47f72ebecdSHerve Codina      fsl,qmc-chan:
48f72ebecdSHerve Codina        $ref: /schemas/types.yaml#/definitions/phandle-array
49f72ebecdSHerve Codina        items:
50*fb601316SHerve Codina          items:
51f72ebecdSHerve Codina            - description: phandle to QMC node
52f72ebecdSHerve Codina            - description: Channel number
53*fb601316SHerve Codina        minItems: 1
54f72ebecdSHerve Codina        description:
55*fb601316SHerve Codina          Should be a phandle/number pair list. The list of phandle to QMC node
56*fb601316SHerve Codina          and the QMC channel pair to use for this DAI.
57*fb601316SHerve Codina          If only one phandle/number pair is provided, this DAI works in
58*fb601316SHerve Codina          interleaved mode, i.e. audio channels for this DAI are interleaved in
59*fb601316SHerve Codina          the QMC channel. If more than one pair is provided, this DAI works
60*fb601316SHerve Codina          in non-interleave mode. In that case the first audio channel uses the
61*fb601316SHerve Codina          the first QMC channel, the second audio channel uses the second QMC
62*fb601316SHerve Codina          channel, etc...
63f72ebecdSHerve Codina
64f72ebecdSHerve Codina    required:
65f72ebecdSHerve Codina      - reg
66f72ebecdSHerve Codina      - fsl,qmc-chan
67f72ebecdSHerve Codina
68f72ebecdSHerve Codinarequired:
69f72ebecdSHerve Codina  - compatible
70f72ebecdSHerve Codina  - '#address-cells'
71f72ebecdSHerve Codina  - '#size-cells'
72f72ebecdSHerve Codina  - '#sound-dai-cells'
73f72ebecdSHerve Codina
74f72ebecdSHerve CodinaadditionalProperties: false
75f72ebecdSHerve Codina
76f72ebecdSHerve Codinaexamples:
77f72ebecdSHerve Codina  - |
78f72ebecdSHerve Codina    audio_controller: audio-controller {
79f72ebecdSHerve Codina        compatible = "fsl,qmc-audio";
80f72ebecdSHerve Codina        #address-cells = <1>;
81f72ebecdSHerve Codina        #size-cells = <0>;
82f72ebecdSHerve Codina        #sound-dai-cells = <1>;
83f72ebecdSHerve Codina        dai@16 {
84f72ebecdSHerve Codina            reg = <16>;
85f72ebecdSHerve Codina            fsl,qmc-chan = <&qmc 16>;
86f72ebecdSHerve Codina        };
87f72ebecdSHerve Codina        dai@17 {
88f72ebecdSHerve Codina            reg = <17>;
89f72ebecdSHerve Codina            fsl,qmc-chan = <&qmc 17>;
90f72ebecdSHerve Codina        };
91*fb601316SHerve Codina        dai@18 {
92*fb601316SHerve Codina            reg = <18>;
93*fb601316SHerve Codina            /* Non-interleaved mode */
94*fb601316SHerve Codina            fsl,qmc-chan = <&qmc 18>, <&qmc 19>;
95*fb601316SHerve Codina        };
96f72ebecdSHerve Codina    };
97f72ebecdSHerve Codina
98f72ebecdSHerve Codina    sound {
99f72ebecdSHerve Codina        compatible = "simple-audio-card";
100f72ebecdSHerve Codina        #address-cells = <1>;
101f72ebecdSHerve Codina        #size-cells = <0>;
102f72ebecdSHerve Codina        simple-audio-card,dai-link@0 {
103f72ebecdSHerve Codina            reg = <0>;
104f72ebecdSHerve Codina            format = "dsp_b";
105f72ebecdSHerve Codina            cpu {
106f72ebecdSHerve Codina                sound-dai = <&audio_controller 16>;
107f72ebecdSHerve Codina            };
108f72ebecdSHerve Codina            codec {
109f72ebecdSHerve Codina                sound-dai = <&codec1>;
110f72ebecdSHerve Codina                dai-tdm-slot-num = <4>;
111f72ebecdSHerve Codina                dai-tdm-slot-width = <8>;
112f72ebecdSHerve Codina                /* TS 3, 5, 7, 9 */
113f72ebecdSHerve Codina                dai-tdm-slot-tx-mask = <0 0 0 1 0 1 0 1 0 1>;
114f72ebecdSHerve Codina                dai-tdm-slot-rx-mask = <0 0 0 1 0 1 0 1 0 1>;
115f72ebecdSHerve Codina            };
116f72ebecdSHerve Codina        };
117f72ebecdSHerve Codina        simple-audio-card,dai-link@1 {
118f72ebecdSHerve Codina            reg = <1>;
119f72ebecdSHerve Codina            format = "dsp_b";
120f72ebecdSHerve Codina            cpu {
121f72ebecdSHerve Codina                sound-dai = <&audio_controller 17>;
122f72ebecdSHerve Codina            };
123f72ebecdSHerve Codina            codec {
124f72ebecdSHerve Codina                sound-dai = <&codec2>;
125f72ebecdSHerve Codina                dai-tdm-slot-num = <4>;
126f72ebecdSHerve Codina                dai-tdm-slot-width = <8>;
127f72ebecdSHerve Codina                /* TS 2, 4, 6, 8 */
128f72ebecdSHerve Codina                dai-tdm-slot-tx-mask = <0 0 1 0 1 0 1 0 1>;
129f72ebecdSHerve Codina                dai-tdm-slot-rx-mask = <0 0 1 0 1 0 1 0 1>;
130f72ebecdSHerve Codina            };
131f72ebecdSHerve Codina        };
132*fb601316SHerve Codina        simple-audio-card,dai-link@2 {
133*fb601316SHerve Codina            reg = <2>;
134*fb601316SHerve Codina            format = "dsp_b";
135*fb601316SHerve Codina            cpu {
136*fb601316SHerve Codina                sound-dai = <&audio_controller 18>;
137*fb601316SHerve Codina            };
138*fb601316SHerve Codina            codec {
139*fb601316SHerve Codina                sound-dai = <&codec3>;
140*fb601316SHerve Codina                dai-tdm-slot-num = <2>;
141*fb601316SHerve Codina                dai-tdm-slot-width = <8>;
142*fb601316SHerve Codina                /* TS 9, 10 */
143*fb601316SHerve Codina                dai-tdm-slot-tx-mask = <0 0 0 0 0 0 0 0 0 1 1>;
144*fb601316SHerve Codina                dai-tdm-slot-rx-mask = <0 0 0 0 0 0 0 0 0 1 1>;
145*fb601316SHerve Codina            };
146*fb601316SHerve Codina        };
147f72ebecdSHerve Codina    };
148