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