xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/sound/simple-card.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun%YAML 1.2
3*4882a593Smuzhiyun---
4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/sound/simple-card.yaml#
5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuntitle: Simple Audio Card Driver Device Tree Bindings
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunmaintainers:
10*4882a593Smuzhiyun  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
11*4882a593Smuzhiyun
12*4882a593Smuzhiyundefinitions:
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun  frame-master:
15*4882a593Smuzhiyun    description: Indicates dai-link frame master.
16*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/phandle-array
17*4882a593Smuzhiyun    maxItems: 1
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun  bitclock-master:
20*4882a593Smuzhiyun    description: Indicates dai-link bit clock master
21*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/phandle-array
22*4882a593Smuzhiyun    maxItems: 1
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun  frame-inversion:
25*4882a593Smuzhiyun    description: dai-link uses frame clock inversion
26*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/flag
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun  bitclock-inversion:
29*4882a593Smuzhiyun    description: dai-link uses bit clock inversion
30*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/flag
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun  dai-tdm-slot-num:
33*4882a593Smuzhiyun    description: see tdm-slot.txt.
34*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/uint32
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun  dai-tdm-slot-width:
37*4882a593Smuzhiyun    description: see tdm-slot.txt.
38*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/uint32
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun  system-clock-frequency:
41*4882a593Smuzhiyun    description: |
42*4882a593Smuzhiyun      If a clock is specified and a multiplication factor is given with
43*4882a593Smuzhiyun      mclk-fs, the clock will be set to the calculated mclk frequency
44*4882a593Smuzhiyun      when the stream starts.
45*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/uint32
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun  system-clock-direction-out:
48*4882a593Smuzhiyun    description: |
49*4882a593Smuzhiyun      specifies clock direction as 'out' on initialization.
50*4882a593Smuzhiyun      It is useful for some aCPUs with fixed clocks.
51*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/flag
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun  mclk-fs:
54*4882a593Smuzhiyun    description: |
55*4882a593Smuzhiyun      Multiplication factor between stream rate and codec mclk.
56*4882a593Smuzhiyun      When defined, mclk-fs property defined in dai-link sub nodes are ignored.
57*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/uint32
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun  aux-devs:
60*4882a593Smuzhiyun    description: |
61*4882a593Smuzhiyun      List of phandles pointing to auxiliary devices, such
62*4882a593Smuzhiyun      as amplifiers, to be added to the sound card.
63*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/phandle-array
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun  convert-rate:
66*4882a593Smuzhiyun    description: CPU to Codec rate convert.
67*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/uint32
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun  convert-channels:
70*4882a593Smuzhiyun    description: CPU to Codec rate channels.
71*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/uint32
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun  prefix:
74*4882a593Smuzhiyun    description: "device name prefix"
75*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/string
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun  label:
78*4882a593Smuzhiyun    maxItems: 1
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun  routing:
81*4882a593Smuzhiyun    description: |
82*4882a593Smuzhiyun      A list of the connections between audio components.
83*4882a593Smuzhiyun      Each entry is a pair of strings, the first being the
84*4882a593Smuzhiyun      connection's sink, the second being the connection's source.
85*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun  widgets:
88*4882a593Smuzhiyun    description: User specified audio sound widgets.
89*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun  pin-switches:
92*4882a593Smuzhiyun    description: the widget names for which pin switches must be created.
93*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/string-array
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun  format:
96*4882a593Smuzhiyun    description: audio format.
97*4882a593Smuzhiyun    items:
98*4882a593Smuzhiyun      enum:
99*4882a593Smuzhiyun        - i2s
100*4882a593Smuzhiyun        - right_j
101*4882a593Smuzhiyun        - left_j
102*4882a593Smuzhiyun        - dsp_a
103*4882a593Smuzhiyun        - dsp_b
104*4882a593Smuzhiyun        - ac97
105*4882a593Smuzhiyun        - pdm
106*4882a593Smuzhiyun        - msb
107*4882a593Smuzhiyun        - lsb
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun  dai:
110*4882a593Smuzhiyun    type: object
111*4882a593Smuzhiyun    properties:
112*4882a593Smuzhiyun      sound-dai:
113*4882a593Smuzhiyun        maxItems: 1
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun      # common properties
116*4882a593Smuzhiyun      mclk-fs:
117*4882a593Smuzhiyun        $ref: "#/definitions/mclk-fs"
118*4882a593Smuzhiyun      prefix:
119*4882a593Smuzhiyun        $ref: "#/definitions/prefix"
120*4882a593Smuzhiyun      frame-inversion:
121*4882a593Smuzhiyun        $ref: "#/definitions/frame-inversion"
122*4882a593Smuzhiyun      bitclock-inversion:
123*4882a593Smuzhiyun        $ref: "#/definitions/bitclock-inversion"
124*4882a593Smuzhiyun      frame-master:
125*4882a593Smuzhiyun        $ref: /schemas/types.yaml#/definitions/flag
126*4882a593Smuzhiyun      bitclock-master:
127*4882a593Smuzhiyun        $ref: /schemas/types.yaml#/definitions/flag
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun      dai-tdm-slot-num:
130*4882a593Smuzhiyun        $ref: "#/definitions/dai-tdm-slot-num"
131*4882a593Smuzhiyun      dai-tdm-slot-width:
132*4882a593Smuzhiyun        $ref: "#/definitions/dai-tdm-slot-width"
133*4882a593Smuzhiyun      clocks:
134*4882a593Smuzhiyun        maxItems: 1
135*4882a593Smuzhiyun      system-clock-frequency:
136*4882a593Smuzhiyun        $ref: "#/definitions/system-clock-frequency"
137*4882a593Smuzhiyun      system-clock-direction-out:
138*4882a593Smuzhiyun        $ref: "#/definitions/system-clock-direction-out"
139*4882a593Smuzhiyun    required:
140*4882a593Smuzhiyun      - sound-dai
141*4882a593Smuzhiyun
142*4882a593Smuzhiyunproperties:
143*4882a593Smuzhiyun  compatible:
144*4882a593Smuzhiyun    contains:
145*4882a593Smuzhiyun      enum:
146*4882a593Smuzhiyun        - simple-audio-card
147*4882a593Smuzhiyun        - simple-scu-audio-card
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun  "#address-cells":
150*4882a593Smuzhiyun    const: 1
151*4882a593Smuzhiyun  "#size-cells":
152*4882a593Smuzhiyun    const: 0
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun  label:
155*4882a593Smuzhiyun    $ref: "#/definitions/label"
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun  simple-audio-card,name:
158*4882a593Smuzhiyun    description: User specified audio sound card name.
159*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/string
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun# use patternProperties to avoid naming "xxx,yyy" issue
162*4882a593SmuzhiyunpatternProperties:
163*4882a593Smuzhiyun  "^simple-audio-card,widgets$":
164*4882a593Smuzhiyun    $ref: "#/definitions/widgets"
165*4882a593Smuzhiyun  "^simple-audio-card,routing$":
166*4882a593Smuzhiyun    $ref: "#/definitions/routing"
167*4882a593Smuzhiyun  "^simple-audio-card,cpu(@[0-9a-f]+)?":
168*4882a593Smuzhiyun    $ref: "#/definitions/dai"
169*4882a593Smuzhiyun  "^simple-audio-card,codec(@[0-9a-f]+)?":
170*4882a593Smuzhiyun    $ref: "#/definitions/dai"
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun  # common properties
173*4882a593Smuzhiyun  "^simple-audio-card,frame-master$":
174*4882a593Smuzhiyun    $ref: "#/definitions/frame-master"
175*4882a593Smuzhiyun  "^simple-audio-card,bitclock-master$":
176*4882a593Smuzhiyun    $ref: "#/definitions/bitclock-master"
177*4882a593Smuzhiyun  "^simple-audio-card,frame-inversion$":
178*4882a593Smuzhiyun    $ref: "#/definitions/frame-inversion"
179*4882a593Smuzhiyun  "^simple-audio-card,bitclock-inversion$":
180*4882a593Smuzhiyun    $ref: "#/definitions/bitclock-inversion"
181*4882a593Smuzhiyun  "^simple-audio-card,format$":
182*4882a593Smuzhiyun    $ref: "#/definitions/format"
183*4882a593Smuzhiyun  "^simple-audio-card,mclk-fs$":
184*4882a593Smuzhiyun    $ref: "#/definitions/mclk-fs"
185*4882a593Smuzhiyun  "^simple-audio-card,aux-devs$":
186*4882a593Smuzhiyun    $ref: "#/definitions/aux-devs"
187*4882a593Smuzhiyun  "^simple-audio-card,convert-rate$":
188*4882a593Smuzhiyun    $ref: "#/definitions/convert-rate"
189*4882a593Smuzhiyun  "^simple-audio-card,convert-channels$":
190*4882a593Smuzhiyun    $ref: "#/definitions/convert-channels"
191*4882a593Smuzhiyun  "^simple-audio-card,prefix$":
192*4882a593Smuzhiyun    $ref: "#/definitions/prefix"
193*4882a593Smuzhiyun  "^simple-audio-card,pin-switches$":
194*4882a593Smuzhiyun    $ref: "#/definitions/pin-switches"
195*4882a593Smuzhiyun  "^simple-audio-card,hp-det-gpio$":
196*4882a593Smuzhiyun    maxItems: 1
197*4882a593Smuzhiyun  "^simple-audio-card,mic-det-gpio$":
198*4882a593Smuzhiyun    maxItems: 1
199*4882a593Smuzhiyun
200*4882a593Smuzhiyun  "^simple-audio-card,dai-link(@[0-9a-f]+)?$":
201*4882a593Smuzhiyun    description: |
202*4882a593Smuzhiyun      Container for dai-link level properties and the CPU and CODEC sub-nodes.
203*4882a593Smuzhiyun      This container may be omitted when the card has only one DAI link.
204*4882a593Smuzhiyun    type: object
205*4882a593Smuzhiyun    properties:
206*4882a593Smuzhiyun      reg:
207*4882a593Smuzhiyun        maxItems: 1
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun      # common properties
210*4882a593Smuzhiyun      frame-master:
211*4882a593Smuzhiyun        $ref: "#/definitions/frame-master"
212*4882a593Smuzhiyun      bitclock-master:
213*4882a593Smuzhiyun        $ref: "#/definitions/bitclock-master"
214*4882a593Smuzhiyun      frame-inversion:
215*4882a593Smuzhiyun        $ref: "#/definitions/frame-inversion"
216*4882a593Smuzhiyun      bitclock-inversion:
217*4882a593Smuzhiyun        $ref: "#/definitions/bitclock-inversion"
218*4882a593Smuzhiyun      format:
219*4882a593Smuzhiyun        $ref: "#/definitions/format"
220*4882a593Smuzhiyun      mclk-fs:
221*4882a593Smuzhiyun        $ref: "#/definitions/mclk-fs"
222*4882a593Smuzhiyun      aux-devs:
223*4882a593Smuzhiyun        $ref: "#/definitions/aux-devs"
224*4882a593Smuzhiyun      convert-rate:
225*4882a593Smuzhiyun        $ref: "#/definitions/convert-rate"
226*4882a593Smuzhiyun      convert-channels:
227*4882a593Smuzhiyun        $ref: "#/definitions/convert-channels"
228*4882a593Smuzhiyun      prefix:
229*4882a593Smuzhiyun        $ref: "#/definitions/prefix"
230*4882a593Smuzhiyun      pin-switches:
231*4882a593Smuzhiyun        $ref: "#/definitions/pin-switches"
232*4882a593Smuzhiyun      hp-det-gpio:
233*4882a593Smuzhiyun        maxItems: 1
234*4882a593Smuzhiyun      mic-det-gpio:
235*4882a593Smuzhiyun        maxItems: 1
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun    patternProperties:
238*4882a593Smuzhiyun      "^cpu(@[0-9a-f]+)?":
239*4882a593Smuzhiyun        $ref: "#/definitions/dai"
240*4882a593Smuzhiyun      "^codec(@[0-9a-f]+)?":
241*4882a593Smuzhiyun        $ref: "#/definitions/dai"
242*4882a593Smuzhiyun    additionalProperties: false
243*4882a593Smuzhiyun
244*4882a593Smuzhiyunrequired:
245*4882a593Smuzhiyun  - compatible
246*4882a593Smuzhiyun
247*4882a593SmuzhiyunadditionalProperties: false
248*4882a593Smuzhiyun
249*4882a593Smuzhiyunexamples:
250*4882a593Smuzhiyun#--------------------
251*4882a593Smuzhiyun# single DAI link
252*4882a593Smuzhiyun#--------------------
253*4882a593Smuzhiyun  - |
254*4882a593Smuzhiyun    sound {
255*4882a593Smuzhiyun        compatible = "simple-audio-card";
256*4882a593Smuzhiyun        simple-audio-card,name = "VF610-Tower-Sound-Card";
257*4882a593Smuzhiyun        simple-audio-card,format = "left_j";
258*4882a593Smuzhiyun        simple-audio-card,bitclock-master = <&dailink0_master>;
259*4882a593Smuzhiyun        simple-audio-card,frame-master = <&dailink0_master>;
260*4882a593Smuzhiyun        simple-audio-card,widgets =
261*4882a593Smuzhiyun                "Microphone", "Microphone Jack",
262*4882a593Smuzhiyun                "Headphone", "Headphone Jack",
263*4882a593Smuzhiyun                "Speaker", "External Speaker";
264*4882a593Smuzhiyun        simple-audio-card,routing =
265*4882a593Smuzhiyun                "MIC_IN", "Microphone Jack",
266*4882a593Smuzhiyun                "Headphone Jack", "HP_OUT",
267*4882a593Smuzhiyun                "External Speaker", "LINE_OUT";
268*4882a593Smuzhiyun
269*4882a593Smuzhiyun        simple-audio-card,cpu {
270*4882a593Smuzhiyun            sound-dai = <&sh_fsi2 0>;
271*4882a593Smuzhiyun        };
272*4882a593Smuzhiyun
273*4882a593Smuzhiyun        dailink0_master: simple-audio-card,codec {
274*4882a593Smuzhiyun            sound-dai = <&ak4648>;
275*4882a593Smuzhiyun            clocks = <&osc>;
276*4882a593Smuzhiyun        };
277*4882a593Smuzhiyun    };
278*4882a593Smuzhiyun
279*4882a593Smuzhiyun#--------------------
280*4882a593Smuzhiyun# Multi DAI links
281*4882a593Smuzhiyun#--------------------
282*4882a593Smuzhiyun  - |
283*4882a593Smuzhiyun    sound {
284*4882a593Smuzhiyun        compatible = "simple-audio-card";
285*4882a593Smuzhiyun        simple-audio-card,name = "Cubox Audio";
286*4882a593Smuzhiyun
287*4882a593Smuzhiyun        #address-cells = <1>;
288*4882a593Smuzhiyun        #size-cells = <0>;
289*4882a593Smuzhiyun
290*4882a593Smuzhiyun        simple-audio-card,dai-link@0 {		/* I2S - HDMI */
291*4882a593Smuzhiyun            reg = <0>;
292*4882a593Smuzhiyun            format = "i2s";
293*4882a593Smuzhiyun            cpu {
294*4882a593Smuzhiyun                sound-dai = <&audio0>;
295*4882a593Smuzhiyun            };
296*4882a593Smuzhiyun            codec {
297*4882a593Smuzhiyun                sound-dai = <&tda998x0>;
298*4882a593Smuzhiyun            };
299*4882a593Smuzhiyun        };
300*4882a593Smuzhiyun
301*4882a593Smuzhiyun        simple-audio-card,dai-link@1 {		/* S/PDIF - HDMI */
302*4882a593Smuzhiyun            reg = <1>;
303*4882a593Smuzhiyun            cpu {
304*4882a593Smuzhiyun                sound-dai = <&audio1>;
305*4882a593Smuzhiyun            };
306*4882a593Smuzhiyun            codec {
307*4882a593Smuzhiyun                sound-dai = <&tda998x1>;
308*4882a593Smuzhiyun            };
309*4882a593Smuzhiyun        };
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun        simple-audio-card,dai-link@2 {		/* S/PDIF - S/PDIF */
312*4882a593Smuzhiyun            reg = <2>;
313*4882a593Smuzhiyun            cpu {
314*4882a593Smuzhiyun                sound-dai = <&audio2>;
315*4882a593Smuzhiyun            };
316*4882a593Smuzhiyun            codec {
317*4882a593Smuzhiyun                sound-dai = <&spdif_codec>;
318*4882a593Smuzhiyun            };
319*4882a593Smuzhiyun        };
320*4882a593Smuzhiyun    };
321*4882a593Smuzhiyun
322*4882a593Smuzhiyun#--------------------
323*4882a593Smuzhiyun# route audio from IMX6 SSI2 through TLV320DAC3100 codec
324*4882a593Smuzhiyun# through TPA6130A2 amplifier to headphones:
325*4882a593Smuzhiyun#--------------------
326*4882a593Smuzhiyun  - |
327*4882a593Smuzhiyun    sound {
328*4882a593Smuzhiyun        compatible = "simple-audio-card";
329*4882a593Smuzhiyun
330*4882a593Smuzhiyun        simple-audio-card,widgets =
331*4882a593Smuzhiyun            "Headphone", "Headphone Jack";
332*4882a593Smuzhiyun        simple-audio-card,routing =
333*4882a593Smuzhiyun            "Headphone Jack", "HPLEFT",
334*4882a593Smuzhiyun            "Headphone Jack", "HPRIGHT",
335*4882a593Smuzhiyun            "LEFTIN", "HPL",
336*4882a593Smuzhiyun            "RIGHTIN", "HPR";
337*4882a593Smuzhiyun        simple-audio-card,aux-devs = <&amp>;
338*4882a593Smuzhiyun        simple-audio-card,cpu {
339*4882a593Smuzhiyun            sound-dai = <&ssi2>;
340*4882a593Smuzhiyun        };
341*4882a593Smuzhiyun        simple-audio-card,codec {
342*4882a593Smuzhiyun            sound-dai = <&codec>;
343*4882a593Smuzhiyun            clocks = <&clocks>;
344*4882a593Smuzhiyun        };
345*4882a593Smuzhiyun    };
346*4882a593Smuzhiyun
347*4882a593Smuzhiyun#--------------------
348*4882a593Smuzhiyun# Sampling Rate Conversion
349*4882a593Smuzhiyun#--------------------
350*4882a593Smuzhiyun  - |
351*4882a593Smuzhiyun    sound {
352*4882a593Smuzhiyun        compatible = "simple-audio-card";
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun        simple-audio-card,name = "rsnd-ak4643";
355*4882a593Smuzhiyun        simple-audio-card,format = "left_j";
356*4882a593Smuzhiyun        simple-audio-card,bitclock-master = <&sndcodec>;
357*4882a593Smuzhiyun        simple-audio-card,frame-master = <&sndcodec>;
358*4882a593Smuzhiyun
359*4882a593Smuzhiyun        simple-audio-card,convert-rate = <48000>;
360*4882a593Smuzhiyun
361*4882a593Smuzhiyun        simple-audio-card,prefix = "ak4642";
362*4882a593Smuzhiyun        simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
363*4882a593Smuzhiyun                                    "DAI0 Capture", "ak4642 Capture";
364*4882a593Smuzhiyun
365*4882a593Smuzhiyun        sndcpu: simple-audio-card,cpu {
366*4882a593Smuzhiyun            sound-dai = <&rcar_sound>;
367*4882a593Smuzhiyun        };
368*4882a593Smuzhiyun
369*4882a593Smuzhiyun        sndcodec: simple-audio-card,codec {
370*4882a593Smuzhiyun            sound-dai = <&ak4643>;
371*4882a593Smuzhiyun            system-clock-frequency = <11289600>;
372*4882a593Smuzhiyun        };
373*4882a593Smuzhiyun    };
374*4882a593Smuzhiyun
375*4882a593Smuzhiyun#--------------------
376*4882a593Smuzhiyun# 2 CPU 1 Codec (Mixing)
377*4882a593Smuzhiyun#--------------------
378*4882a593Smuzhiyun  - |
379*4882a593Smuzhiyun    sound {
380*4882a593Smuzhiyun        compatible = "simple-audio-card";
381*4882a593Smuzhiyun        #address-cells = <1>;
382*4882a593Smuzhiyun        #size-cells = <0>;
383*4882a593Smuzhiyun
384*4882a593Smuzhiyun        simple-audio-card,name = "rsnd-ak4643";
385*4882a593Smuzhiyun        simple-audio-card,format = "left_j";
386*4882a593Smuzhiyun        simple-audio-card,bitclock-master = <&dpcmcpu>;
387*4882a593Smuzhiyun        simple-audio-card,frame-master = <&dpcmcpu>;
388*4882a593Smuzhiyun
389*4882a593Smuzhiyun        simple-audio-card,convert-rate = <48000>;
390*4882a593Smuzhiyun        simple-audio-card,convert-channels = <2>;
391*4882a593Smuzhiyun
392*4882a593Smuzhiyun        simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
393*4882a593Smuzhiyun                                    "ak4642 Playback", "DAI1 Playback";
394*4882a593Smuzhiyun
395*4882a593Smuzhiyun        dpcmcpu: simple-audio-card,cpu@0 {
396*4882a593Smuzhiyun            reg = <0>;
397*4882a593Smuzhiyun            sound-dai = <&rcar_sound 0>;
398*4882a593Smuzhiyun        };
399*4882a593Smuzhiyun
400*4882a593Smuzhiyun        simple-audio-card,cpu@1 {
401*4882a593Smuzhiyun            reg = <1>;
402*4882a593Smuzhiyun            sound-dai = <&rcar_sound 1>;
403*4882a593Smuzhiyun        };
404*4882a593Smuzhiyun
405*4882a593Smuzhiyun        simple-audio-card,codec {
406*4882a593Smuzhiyun            prefix = "ak4642";
407*4882a593Smuzhiyun            sound-dai = <&ak4643>;
408*4882a593Smuzhiyun            clocks = <&audio_clock>;
409*4882a593Smuzhiyun        };
410*4882a593Smuzhiyun    };
411*4882a593Smuzhiyun
412*4882a593Smuzhiyun#--------------------
413*4882a593Smuzhiyun# Multi DAI links with DPCM:
414*4882a593Smuzhiyun#
415*4882a593Smuzhiyun# CPU0 ------ ak4613
416*4882a593Smuzhiyun# CPU1 ------ PCM3168A-p  /* DPCM 1ch/2ch */
417*4882a593Smuzhiyun# CPU2 --/                /* DPCM 3ch/4ch */
418*4882a593Smuzhiyun# CPU3 --/                /* DPCM 5ch/6ch */
419*4882a593Smuzhiyun# CPU4 --/                /* DPCM 7ch/8ch */
420*4882a593Smuzhiyun# CPU5 ------ PCM3168A-c
421*4882a593Smuzhiyun#--------------------
422*4882a593Smuzhiyun  - |
423*4882a593Smuzhiyun    sound {
424*4882a593Smuzhiyun        compatible = "simple-audio-card";
425*4882a593Smuzhiyun        #address-cells = <1>;
426*4882a593Smuzhiyun        #size-cells = <0>;
427*4882a593Smuzhiyun
428*4882a593Smuzhiyun        simple-audio-card,routing =
429*4882a593Smuzhiyun            "pcm3168a Playback", "DAI1 Playback",
430*4882a593Smuzhiyun            "pcm3168a Playback", "DAI2 Playback",
431*4882a593Smuzhiyun            "pcm3168a Playback", "DAI3 Playback",
432*4882a593Smuzhiyun            "pcm3168a Playback", "DAI4 Playback";
433*4882a593Smuzhiyun
434*4882a593Smuzhiyun        simple-audio-card,dai-link@0 {
435*4882a593Smuzhiyun            reg = <0>;
436*4882a593Smuzhiyun            format = "left_j";
437*4882a593Smuzhiyun            bitclock-master = <&sndcpu0>;
438*4882a593Smuzhiyun            frame-master = <&sndcpu0>;
439*4882a593Smuzhiyun
440*4882a593Smuzhiyun            sndcpu0: cpu {
441*4882a593Smuzhiyun                sound-dai = <&rcar_sound 0>;
442*4882a593Smuzhiyun            };
443*4882a593Smuzhiyun            codec {
444*4882a593Smuzhiyun                sound-dai = <&ak4613>;
445*4882a593Smuzhiyun            };
446*4882a593Smuzhiyun        };
447*4882a593Smuzhiyun
448*4882a593Smuzhiyun        simple-audio-card,dai-link@1 {
449*4882a593Smuzhiyun            reg = <1>;
450*4882a593Smuzhiyun            format = "i2s";
451*4882a593Smuzhiyun            bitclock-master = <&sndcpu1>;
452*4882a593Smuzhiyun            frame-master = <&sndcpu1>;
453*4882a593Smuzhiyun
454*4882a593Smuzhiyun            convert-channels = <8>; /* TDM Split */
455*4882a593Smuzhiyun
456*4882a593Smuzhiyun            sndcpu1: cpu0 {
457*4882a593Smuzhiyun                sound-dai = <&rcar_sound 1>;
458*4882a593Smuzhiyun            };
459*4882a593Smuzhiyun            cpu1 {
460*4882a593Smuzhiyun                sound-dai = <&rcar_sound 2>;
461*4882a593Smuzhiyun            };
462*4882a593Smuzhiyun            cpu2 {
463*4882a593Smuzhiyun                sound-dai = <&rcar_sound 3>;
464*4882a593Smuzhiyun            };
465*4882a593Smuzhiyun            cpu3 {
466*4882a593Smuzhiyun                sound-dai = <&rcar_sound 4>;
467*4882a593Smuzhiyun            };
468*4882a593Smuzhiyun            codec {
469*4882a593Smuzhiyun                mclk-fs = <512>;
470*4882a593Smuzhiyun                prefix = "pcm3168a";
471*4882a593Smuzhiyun                dai-tdm-slot-num = <8>;
472*4882a593Smuzhiyun                sound-dai = <&pcm3168a 0>;
473*4882a593Smuzhiyun            };
474*4882a593Smuzhiyun        };
475*4882a593Smuzhiyun
476*4882a593Smuzhiyun        simple-audio-card,dai-link@2 {
477*4882a593Smuzhiyun            reg = <2>;
478*4882a593Smuzhiyun            format = "i2s";
479*4882a593Smuzhiyun            bitclock-master = <&sndcpu2>;
480*4882a593Smuzhiyun            frame-master = <&sndcpu2>;
481*4882a593Smuzhiyun
482*4882a593Smuzhiyun            sndcpu2: cpu {
483*4882a593Smuzhiyun                sound-dai = <&rcar_sound 5>;
484*4882a593Smuzhiyun            };
485*4882a593Smuzhiyun            codec {
486*4882a593Smuzhiyun                mclk-fs = <512>;
487*4882a593Smuzhiyun                prefix = "pcm3168a";
488*4882a593Smuzhiyun                sound-dai = <&pcm3168a 1>;
489*4882a593Smuzhiyun            };
490*4882a593Smuzhiyun        };
491*4882a593Smuzhiyun    };
492