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