1*f72ebecdSHerve Codina# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*f72ebecdSHerve Codina%YAML 1.2
3*f72ebecdSHerve Codina---
4*f72ebecdSHerve Codina$id: http://devicetree.org/schemas/sound/fsl,qmc-audio.yaml#
5*f72ebecdSHerve Codina$schema: http://devicetree.org/meta-schemas/core.yaml#
6*f72ebecdSHerve Codina
7*f72ebecdSHerve Codinatitle: QMC audio
8*f72ebecdSHerve Codina
9*f72ebecdSHerve Codinamaintainers:
10*f72ebecdSHerve Codina  - Herve Codina <herve.codina@bootlin.com>
11*f72ebecdSHerve Codina
12*f72ebecdSHerve Codinadescription: |
13*f72ebecdSHerve Codina  The QMC audio is an ASoC component which uses QMC (QUICC Multichannel
14*f72ebecdSHerve Codina  Controller) channels to transfer the audio data.
15*f72ebecdSHerve Codina  It provides as many DAI as the number of QMC channel used.
16*f72ebecdSHerve Codina
17*f72ebecdSHerve CodinaallOf:
18*f72ebecdSHerve Codina  - $ref: dai-common.yaml#
19*f72ebecdSHerve Codina
20*f72ebecdSHerve Codinaproperties:
21*f72ebecdSHerve Codina  compatible:
22*f72ebecdSHerve Codina    const: fsl,qmc-audio
23*f72ebecdSHerve Codina
24*f72ebecdSHerve Codina  '#address-cells':
25*f72ebecdSHerve Codina    const: 1
26*f72ebecdSHerve Codina  '#size-cells':
27*f72ebecdSHerve Codina    const: 0
28*f72ebecdSHerve Codina  '#sound-dai-cells':
29*f72ebecdSHerve Codina    const: 1
30*f72ebecdSHerve Codina
31*f72ebecdSHerve CodinapatternProperties:
32*f72ebecdSHerve Codina  '^dai@([0-9]|[1-5][0-9]|6[0-3])$':
33*f72ebecdSHerve Codina    description:
34*f72ebecdSHerve Codina      A DAI managed by this controller
35*f72ebecdSHerve Codina    type: object
36*f72ebecdSHerve Codina
37*f72ebecdSHerve Codina    properties:
38*f72ebecdSHerve Codina      reg:
39*f72ebecdSHerve Codina        minimum: 0
40*f72ebecdSHerve Codina        maximum: 63
41*f72ebecdSHerve Codina        description:
42*f72ebecdSHerve Codina          The DAI number
43*f72ebecdSHerve Codina
44*f72ebecdSHerve Codina      fsl,qmc-chan:
45*f72ebecdSHerve Codina        $ref: /schemas/types.yaml#/definitions/phandle-array
46*f72ebecdSHerve Codina        items:
47*f72ebecdSHerve Codina          - items:
48*f72ebecdSHerve Codina              - description: phandle to QMC node
49*f72ebecdSHerve Codina              - description: Channel number
50*f72ebecdSHerve Codina        description:
51*f72ebecdSHerve Codina          Should be a phandle/number pair. The phandle to QMC node and the QMC
52*f72ebecdSHerve Codina          channel to use for this DAI.
53*f72ebecdSHerve Codina
54*f72ebecdSHerve Codina    required:
55*f72ebecdSHerve Codina      - reg
56*f72ebecdSHerve Codina      - fsl,qmc-chan
57*f72ebecdSHerve Codina
58*f72ebecdSHerve Codinarequired:
59*f72ebecdSHerve Codina  - compatible
60*f72ebecdSHerve Codina  - '#address-cells'
61*f72ebecdSHerve Codina  - '#size-cells'
62*f72ebecdSHerve Codina  - '#sound-dai-cells'
63*f72ebecdSHerve Codina
64*f72ebecdSHerve CodinaadditionalProperties: false
65*f72ebecdSHerve Codina
66*f72ebecdSHerve Codinaexamples:
67*f72ebecdSHerve Codina  - |
68*f72ebecdSHerve Codina    audio_controller: audio-controller {
69*f72ebecdSHerve Codina        compatible = "fsl,qmc-audio";
70*f72ebecdSHerve Codina        #address-cells = <1>;
71*f72ebecdSHerve Codina        #size-cells = <0>;
72*f72ebecdSHerve Codina        #sound-dai-cells = <1>;
73*f72ebecdSHerve Codina        dai@16 {
74*f72ebecdSHerve Codina            reg = <16>;
75*f72ebecdSHerve Codina            fsl,qmc-chan = <&qmc 16>;
76*f72ebecdSHerve Codina        };
77*f72ebecdSHerve Codina        dai@17 {
78*f72ebecdSHerve Codina            reg = <17>;
79*f72ebecdSHerve Codina            fsl,qmc-chan = <&qmc 17>;
80*f72ebecdSHerve Codina        };
81*f72ebecdSHerve Codina    };
82*f72ebecdSHerve Codina
83*f72ebecdSHerve Codina    sound {
84*f72ebecdSHerve Codina        compatible = "simple-audio-card";
85*f72ebecdSHerve Codina        #address-cells = <1>;
86*f72ebecdSHerve Codina        #size-cells = <0>;
87*f72ebecdSHerve Codina        simple-audio-card,dai-link@0 {
88*f72ebecdSHerve Codina            reg = <0>;
89*f72ebecdSHerve Codina            format = "dsp_b";
90*f72ebecdSHerve Codina            cpu {
91*f72ebecdSHerve Codina                sound-dai = <&audio_controller 16>;
92*f72ebecdSHerve Codina            };
93*f72ebecdSHerve Codina            codec {
94*f72ebecdSHerve Codina                sound-dai = <&codec1>;
95*f72ebecdSHerve Codina                dai-tdm-slot-num = <4>;
96*f72ebecdSHerve Codina                dai-tdm-slot-width = <8>;
97*f72ebecdSHerve Codina                /* TS 3, 5, 7, 9 */
98*f72ebecdSHerve Codina                dai-tdm-slot-tx-mask = <0 0 0 1 0 1 0 1 0 1>;
99*f72ebecdSHerve Codina                dai-tdm-slot-rx-mask = <0 0 0 1 0 1 0 1 0 1>;
100*f72ebecdSHerve Codina            };
101*f72ebecdSHerve Codina        };
102*f72ebecdSHerve Codina        simple-audio-card,dai-link@1 {
103*f72ebecdSHerve Codina            reg = <1>;
104*f72ebecdSHerve Codina            format = "dsp_b";
105*f72ebecdSHerve Codina            cpu {
106*f72ebecdSHerve Codina                sound-dai = <&audio_controller 17>;
107*f72ebecdSHerve Codina            };
108*f72ebecdSHerve Codina            codec {
109*f72ebecdSHerve Codina                sound-dai = <&codec2>;
110*f72ebecdSHerve Codina                dai-tdm-slot-num = <4>;
111*f72ebecdSHerve Codina                dai-tdm-slot-width = <8>;
112*f72ebecdSHerve Codina                /* TS 2, 4, 6, 8 */
113*f72ebecdSHerve Codina                dai-tdm-slot-tx-mask = <0 0 1 0 1 0 1 0 1>;
114*f72ebecdSHerve Codina                dai-tdm-slot-rx-mask = <0 0 1 0 1 0 1 0 1>;
115*f72ebecdSHerve Codina            };
116*f72ebecdSHerve Codina        };
117*f72ebecdSHerve Codina    };
118