xref: /linux/Documentation/devicetree/bindings/sound/fsl,qmc-audio.yaml (revision c771600c6af14749609b49565ffb4cac2959710d)
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.
15fb601316SHerve Codina  It provides several DAIs. For each DAI, the DAI is working in interleaved mode
16fb601316SHerve Codina  if only one QMC channel is used by the DAI or it is working in non-interleaved
17fb601316SHerve 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:
50fb601316SHerve Codina          items:
51f72ebecdSHerve Codina            - description: phandle to QMC node
52f72ebecdSHerve Codina            - description: Channel number
53fb601316SHerve Codina        minItems: 1
54f72ebecdSHerve Codina        description:
55fb601316SHerve Codina          Should be a phandle/number pair list. The list of phandle to QMC node
56fb601316SHerve Codina          and the QMC channel pair to use for this DAI.
57fb601316SHerve Codina          If only one phandle/number pair is provided, this DAI works in
58fb601316SHerve Codina          interleaved mode, i.e. audio channels for this DAI are interleaved in
59fb601316SHerve Codina          the QMC channel. If more than one pair is provided, this DAI works
60fb601316SHerve Codina          in non-interleave mode. In that case the first audio channel uses the
61fb601316SHerve Codina          the first QMC channel, the second audio channel uses the second QMC
62fb601316SHerve 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        };
91fb601316SHerve Codina        dai@18 {
92fb601316SHerve Codina            reg = <18>;
93fb601316SHerve Codina            /* Non-interleaved mode */
94fb601316SHerve Codina            fsl,qmc-chan = <&qmc 18>, <&qmc 19>;
95fb601316SHerve 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        };
132fb601316SHerve Codina        simple-audio-card,dai-link@2 {
133fb601316SHerve Codina            reg = <2>;
134fb601316SHerve Codina            format = "dsp_b";
135fb601316SHerve Codina            cpu {
136fb601316SHerve Codina                sound-dai = <&audio_controller 18>;
137fb601316SHerve Codina            };
138fb601316SHerve Codina            codec {
139fb601316SHerve Codina                sound-dai = <&codec3>;
140fb601316SHerve Codina                dai-tdm-slot-num = <2>;
141fb601316SHerve Codina                dai-tdm-slot-width = <8>;
142fb601316SHerve Codina                /* TS 9, 10 */
143fb601316SHerve Codina                dai-tdm-slot-tx-mask = <0 0 0 0 0 0 0 0 0 1 1>;
144fb601316SHerve Codina                dai-tdm-slot-rx-mask = <0 0 0 0 0 0 0 0 0 1 1>;
145fb601316SHerve Codina            };
146fb601316SHerve Codina        };
147f72ebecdSHerve Codina    };
148