blob: a23e49198c3736bf0d53f2798c68dd11ed922ba1 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# 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.
Tom Rini6b642ac2024-10-01 12:20:28 -060015 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.
Tom Rini53633a82024-02-29 12:33:36 -050018
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:
Tom Rini6b642ac2024-10-01 12:20:28 -060050 items:
51 - description: phandle to QMC node
52 - description: Channel number
53 minItems: 1
Tom Rini53633a82024-02-29 12:33:36 -050054 description:
Tom Rini6b642ac2024-10-01 12:20:28 -060055 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...
Tom Rini53633a82024-02-29 12:33:36 -050063
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 };
Tom Rini6b642ac2024-10-01 12:20:28 -060091 dai@18 {
92 reg = <18>;
93 /* Non-interleaved mode */
94 fsl,qmc-chan = <&qmc 18>, <&qmc 19>;
95 };
Tom Rini53633a82024-02-29 12:33:36 -050096 };
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 };
Tom Rini6b642ac2024-10-01 12:20:28 -0600132 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 };
Tom Rini53633a82024-02-29 12:33:36 -0500147 };