summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/sound/fsl,qmc-audio.yaml
blob: a23e49198c3736bf0d53f2798c68dd11ed922ba1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/fsl,qmc-audio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: QMC audio

maintainers:
  - Herve Codina <herve.codina@bootlin.com>

description: |
  The QMC audio is an ASoC component which uses QMC (QUICC Multichannel
  Controller) channels to transfer the audio data.
  It provides several DAIs. For each DAI, the DAI is working in interleaved mode
  if only one QMC channel is used by the DAI or it is working in non-interleaved
  mode if several QMC channels are used by the DAI.

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    const: fsl,qmc-audio

  '#address-cells':
    const: 1
  '#size-cells':
    const: 0
  '#sound-dai-cells':
    const: 1

patternProperties:
  '^dai@([0-9]|[1-5][0-9]|6[0-3])$':
    description:
      A DAI managed by this controller
    type: object
    additionalProperties: false

    properties:
      reg:
        minimum: 0
        maximum: 63
        description:
          The DAI number

      fsl,qmc-chan:
        $ref: /schemas/types.yaml#/definitions/phandle-array
        items:
          items:
            - description: phandle to QMC node
            - description: Channel number
        minItems: 1
        description:
          Should be a phandle/number pair list. The list of phandle to QMC node
          and the QMC channel pair to use for this DAI.
          If only one phandle/number pair is provided, this DAI works in
          interleaved mode, i.e. audio channels for this DAI are interleaved in
          the QMC channel. If more than one pair is provided, this DAI works
          in non-interleave mode. In that case the first audio channel uses the
          the first QMC channel, the second audio channel uses the second QMC
          channel, etc...

    required:
      - reg
      - fsl,qmc-chan

required:
  - compatible
  - '#address-cells'
  - '#size-cells'
  - '#sound-dai-cells'

additionalProperties: false

examples:
  - |
    audio_controller: audio-controller {
        compatible = "fsl,qmc-audio";
        #address-cells = <1>;
        #size-cells = <0>;
        #sound-dai-cells = <1>;
        dai@16 {
            reg = <16>;
            fsl,qmc-chan = <&qmc 16>;
        };
        dai@17 {
            reg = <17>;
            fsl,qmc-chan = <&qmc 17>;
        };
        dai@18 {
            reg = <18>;
            /* Non-interleaved mode */
            fsl,qmc-chan = <&qmc 18>, <&qmc 19>;
        };
    };

    sound {
        compatible = "simple-audio-card";
        #address-cells = <1>;
        #size-cells = <0>;
        simple-audio-card,dai-link@0 {
            reg = <0>;
            format = "dsp_b";
            cpu {
                sound-dai = <&audio_controller 16>;
            };
            codec {
                sound-dai = <&codec1>;
                dai-tdm-slot-num = <4>;
                dai-tdm-slot-width = <8>;
                /* TS 3, 5, 7, 9 */
                dai-tdm-slot-tx-mask = <0 0 0 1 0 1 0 1 0 1>;
                dai-tdm-slot-rx-mask = <0 0 0 1 0 1 0 1 0 1>;
            };
        };
        simple-audio-card,dai-link@1 {
            reg = <1>;
            format = "dsp_b";
            cpu {
                sound-dai = <&audio_controller 17>;
            };
            codec {
                sound-dai = <&codec2>;
                dai-tdm-slot-num = <4>;
                dai-tdm-slot-width = <8>;
                /* TS 2, 4, 6, 8 */
                dai-tdm-slot-tx-mask = <0 0 1 0 1 0 1 0 1>;
                dai-tdm-slot-rx-mask = <0 0 1 0 1 0 1 0 1>;
            };
        };
        simple-audio-card,dai-link@2 {
            reg = <2>;
            format = "dsp_b";
            cpu {
                sound-dai = <&audio_controller 18>;
            };
            codec {
                sound-dai = <&codec3>;
                dai-tdm-slot-num = <2>;
                dai-tdm-slot-width = <8>;
                /* TS 9, 10 */
                dai-tdm-slot-tx-mask = <0 0 0 0 0 0 0 0 0 1 1>;
                dai-tdm-slot-rx-mask = <0 0 0 0 0 0 0 0 0 1 1>;
            };
        };
    };