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:
81fac71e4eSEmmanuel 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
151*aa1a8ff2SEmmanuel Vadot  additional-devs:
152*aa1a8ff2SEmmanuel Vadot    type: object
153*aa1a8ff2SEmmanuel Vadot    description:
154*aa1a8ff2SEmmanuel Vadot      Additional devices used by the simple audio card.
155*aa1a8ff2SEmmanuel Vadot    patternProperties:
156*aa1a8ff2SEmmanuel Vadot      '^iio-aux(-.+)?$':
157*aa1a8ff2SEmmanuel Vadot        type: object
158*aa1a8ff2SEmmanuel Vadot        $ref: audio-iio-aux.yaml#
159*aa1a8ff2SEmmanuel Vadot
160c66ec88fSEmmanuel Vadotproperties:
161c66ec88fSEmmanuel Vadot  compatible:
162c66ec88fSEmmanuel Vadot    contains:
163c66ec88fSEmmanuel Vadot      enum:
164c66ec88fSEmmanuel Vadot        - simple-audio-card
165c66ec88fSEmmanuel Vadot        - simple-scu-audio-card
166c66ec88fSEmmanuel Vadot
167c66ec88fSEmmanuel Vadot  "#address-cells":
168c66ec88fSEmmanuel Vadot    const: 1
169c66ec88fSEmmanuel Vadot  "#size-cells":
170c66ec88fSEmmanuel Vadot    const: 0
171c66ec88fSEmmanuel Vadot
172c66ec88fSEmmanuel Vadot  label:
173c66ec88fSEmmanuel Vadot    $ref: "#/definitions/label"
174c66ec88fSEmmanuel Vadot
175c66ec88fSEmmanuel Vadot  simple-audio-card,name:
176c66ec88fSEmmanuel Vadot    description: User specified audio sound card name.
177c66ec88fSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/string
178c66ec88fSEmmanuel Vadot
179c9ccf3a3SEmmanuel Vadot  simple-audio-card,widgets:
180c66ec88fSEmmanuel Vadot    $ref: "#/definitions/widgets"
181c9ccf3a3SEmmanuel Vadot  simple-audio-card,routing:
182c66ec88fSEmmanuel Vadot    $ref: "#/definitions/routing"
183c66ec88fSEmmanuel Vadot
184c66ec88fSEmmanuel Vadot  # common properties
185c9ccf3a3SEmmanuel Vadot  simple-audio-card,frame-master:
186c66ec88fSEmmanuel Vadot    $ref: "#/definitions/frame-master"
187c9ccf3a3SEmmanuel Vadot  simple-audio-card,bitclock-master:
188c66ec88fSEmmanuel Vadot    $ref: "#/definitions/bitclock-master"
189c9ccf3a3SEmmanuel Vadot  simple-audio-card,frame-inversion:
190c66ec88fSEmmanuel Vadot    $ref: "#/definitions/frame-inversion"
191c9ccf3a3SEmmanuel Vadot  simple-audio-card,bitclock-inversion:
192c66ec88fSEmmanuel Vadot    $ref: "#/definitions/bitclock-inversion"
193c9ccf3a3SEmmanuel Vadot  simple-audio-card,format:
194c66ec88fSEmmanuel Vadot    $ref: "#/definitions/format"
195c9ccf3a3SEmmanuel Vadot  simple-audio-card,mclk-fs:
196c66ec88fSEmmanuel Vadot    $ref: "#/definitions/mclk-fs"
197c9ccf3a3SEmmanuel Vadot  simple-audio-card,aux-devs:
198c66ec88fSEmmanuel Vadot    $ref: "#/definitions/aux-devs"
199*aa1a8ff2SEmmanuel Vadot  simple-audio-card,additional-devs:
200*aa1a8ff2SEmmanuel Vadot    $ref: "#/definitions/additional-devs"
201c9ccf3a3SEmmanuel Vadot  simple-audio-card,convert-rate:
202c66ec88fSEmmanuel Vadot    $ref: "#/definitions/convert-rate"
203c9ccf3a3SEmmanuel Vadot  simple-audio-card,convert-channels:
204c66ec88fSEmmanuel Vadot    $ref: "#/definitions/convert-channels"
205c9ccf3a3SEmmanuel Vadot  simple-audio-card,prefix:
206c66ec88fSEmmanuel Vadot    $ref: "#/definitions/prefix"
207c9ccf3a3SEmmanuel Vadot  simple-audio-card,pin-switches:
208c66ec88fSEmmanuel Vadot    $ref: "#/definitions/pin-switches"
209c9ccf3a3SEmmanuel Vadot  simple-audio-card,hp-det-gpio:
210c66ec88fSEmmanuel Vadot    maxItems: 1
211c9ccf3a3SEmmanuel Vadot  simple-audio-card,mic-det-gpio:
212c66ec88fSEmmanuel Vadot    maxItems: 1
213c66ec88fSEmmanuel Vadot
214c9ccf3a3SEmmanuel VadotpatternProperties:
215c9ccf3a3SEmmanuel Vadot  "^simple-audio-card,cpu(@[0-9a-f]+)?$":
216c9ccf3a3SEmmanuel Vadot    $ref: "#/definitions/dai"
217c9ccf3a3SEmmanuel Vadot  "^simple-audio-card,codec(@[0-9a-f]+)?$":
218c9ccf3a3SEmmanuel Vadot    $ref: "#/definitions/dai"
219cb7aa33aSEmmanuel Vadot  "^simple-audio-card,plat(@[0-9a-f]+)?$":
220cb7aa33aSEmmanuel Vadot    $ref: "#/definitions/dai"
221c9ccf3a3SEmmanuel Vadot
222c66ec88fSEmmanuel Vadot  "^simple-audio-card,dai-link(@[0-9a-f]+)?$":
223c66ec88fSEmmanuel Vadot    description: |
224c66ec88fSEmmanuel Vadot      Container for dai-link level properties and the CPU and CODEC sub-nodes.
225c66ec88fSEmmanuel Vadot      This container may be omitted when the card has only one DAI link.
226c66ec88fSEmmanuel Vadot    type: object
227c66ec88fSEmmanuel Vadot    properties:
228c66ec88fSEmmanuel Vadot      reg:
229c66ec88fSEmmanuel Vadot        maxItems: 1
230c66ec88fSEmmanuel Vadot
231cb7aa33aSEmmanuel Vadot      "#address-cells":
232cb7aa33aSEmmanuel Vadot        const: 1
233cb7aa33aSEmmanuel Vadot      "#size-cells":
234cb7aa33aSEmmanuel Vadot        const: 0
235c66ec88fSEmmanuel Vadot      # common properties
236c66ec88fSEmmanuel Vadot      frame-master:
237c66ec88fSEmmanuel Vadot        $ref: "#/definitions/frame-master"
238c66ec88fSEmmanuel Vadot      bitclock-master:
239c66ec88fSEmmanuel Vadot        $ref: "#/definitions/bitclock-master"
240c66ec88fSEmmanuel Vadot      frame-inversion:
241c66ec88fSEmmanuel Vadot        $ref: "#/definitions/frame-inversion"
242c66ec88fSEmmanuel Vadot      bitclock-inversion:
243c66ec88fSEmmanuel Vadot        $ref: "#/definitions/bitclock-inversion"
244c66ec88fSEmmanuel Vadot      format:
245c66ec88fSEmmanuel Vadot        $ref: "#/definitions/format"
246c66ec88fSEmmanuel Vadot      mclk-fs:
247c66ec88fSEmmanuel Vadot        $ref: "#/definitions/mclk-fs"
248c66ec88fSEmmanuel Vadot      aux-devs:
249c66ec88fSEmmanuel Vadot        $ref: "#/definitions/aux-devs"
250c66ec88fSEmmanuel Vadot      convert-rate:
251c66ec88fSEmmanuel Vadot        $ref: "#/definitions/convert-rate"
252c66ec88fSEmmanuel Vadot      convert-channels:
253c66ec88fSEmmanuel Vadot        $ref: "#/definitions/convert-channels"
254c66ec88fSEmmanuel Vadot      prefix:
255c66ec88fSEmmanuel Vadot        $ref: "#/definitions/prefix"
256c66ec88fSEmmanuel Vadot      pin-switches:
257c66ec88fSEmmanuel Vadot        $ref: "#/definitions/pin-switches"
258c66ec88fSEmmanuel Vadot      hp-det-gpio:
259c66ec88fSEmmanuel Vadot        maxItems: 1
260c66ec88fSEmmanuel Vadot      mic-det-gpio:
261c66ec88fSEmmanuel Vadot        maxItems: 1
262c66ec88fSEmmanuel Vadot
263c66ec88fSEmmanuel Vadot    patternProperties:
264cb7aa33aSEmmanuel Vadot      "^cpu(-[0-9]+)?$":
265c66ec88fSEmmanuel Vadot        $ref: "#/definitions/dai"
266cb7aa33aSEmmanuel Vadot      "^codec(-[0-9]+)?$":
267c66ec88fSEmmanuel Vadot        $ref: "#/definitions/dai"
268c66ec88fSEmmanuel Vadot    additionalProperties: false
269c66ec88fSEmmanuel Vadot
270c66ec88fSEmmanuel Vadotrequired:
271c66ec88fSEmmanuel Vadot  - compatible
272c66ec88fSEmmanuel Vadot
273c66ec88fSEmmanuel VadotadditionalProperties: false
274c66ec88fSEmmanuel Vadot
275c66ec88fSEmmanuel Vadotexamples:
276c66ec88fSEmmanuel Vadot# --------------------
277c66ec88fSEmmanuel Vadot# single DAI link
278c66ec88fSEmmanuel Vadot# --------------------
279c66ec88fSEmmanuel Vadot  - |
280c66ec88fSEmmanuel Vadot    sound {
281c66ec88fSEmmanuel Vadot        compatible = "simple-audio-card";
282c66ec88fSEmmanuel Vadot        simple-audio-card,name = "VF610-Tower-Sound-Card";
283c66ec88fSEmmanuel Vadot        simple-audio-card,format = "left_j";
284c66ec88fSEmmanuel Vadot        simple-audio-card,bitclock-master = <&dailink0_master>;
285c66ec88fSEmmanuel Vadot        simple-audio-card,frame-master = <&dailink0_master>;
286c66ec88fSEmmanuel Vadot        simple-audio-card,widgets =
287c66ec88fSEmmanuel Vadot                "Microphone", "Microphone Jack",
288c66ec88fSEmmanuel Vadot                "Headphone", "Headphone Jack",
289c66ec88fSEmmanuel Vadot                "Speaker", "External Speaker";
290c66ec88fSEmmanuel Vadot        simple-audio-card,routing =
291c66ec88fSEmmanuel Vadot                "MIC_IN", "Microphone Jack",
292c66ec88fSEmmanuel Vadot                "Headphone Jack", "HP_OUT",
293c66ec88fSEmmanuel Vadot                "External Speaker", "LINE_OUT";
294c66ec88fSEmmanuel Vadot
295c66ec88fSEmmanuel Vadot        simple-audio-card,cpu {
296c66ec88fSEmmanuel Vadot            sound-dai = <&sh_fsi2 0>;
297c66ec88fSEmmanuel Vadot        };
298c66ec88fSEmmanuel Vadot
299c66ec88fSEmmanuel Vadot        dailink0_master: simple-audio-card,codec {
300c66ec88fSEmmanuel Vadot            sound-dai = <&ak4648>;
301c66ec88fSEmmanuel Vadot            clocks = <&osc>;
302c66ec88fSEmmanuel Vadot        };
303c66ec88fSEmmanuel Vadot    };
304c66ec88fSEmmanuel Vadot
305c66ec88fSEmmanuel Vadot# --------------------
306c66ec88fSEmmanuel Vadot# Multi DAI links
307c66ec88fSEmmanuel Vadot# --------------------
308c66ec88fSEmmanuel Vadot  - |
309c66ec88fSEmmanuel Vadot    sound {
310c66ec88fSEmmanuel Vadot        compatible = "simple-audio-card";
311c66ec88fSEmmanuel Vadot        simple-audio-card,name = "Cubox Audio";
312c66ec88fSEmmanuel Vadot
313c66ec88fSEmmanuel Vadot        #address-cells = <1>;
314c66ec88fSEmmanuel Vadot        #size-cells = <0>;
315c66ec88fSEmmanuel Vadot
316c66ec88fSEmmanuel Vadot        simple-audio-card,dai-link@0 {		/* I2S - HDMI */
317c66ec88fSEmmanuel Vadot            reg = <0>;
318c66ec88fSEmmanuel Vadot            format = "i2s";
319c66ec88fSEmmanuel Vadot            cpu {
320c66ec88fSEmmanuel Vadot                sound-dai = <&audio0>;
321c66ec88fSEmmanuel Vadot            };
322c66ec88fSEmmanuel Vadot            codec {
323c66ec88fSEmmanuel Vadot                sound-dai = <&tda998x0>;
324c66ec88fSEmmanuel Vadot            };
325c66ec88fSEmmanuel Vadot        };
326c66ec88fSEmmanuel Vadot
327c66ec88fSEmmanuel Vadot        simple-audio-card,dai-link@1 {		/* S/PDIF - HDMI */
328c66ec88fSEmmanuel Vadot            reg = <1>;
329c66ec88fSEmmanuel Vadot            cpu {
330c66ec88fSEmmanuel Vadot                sound-dai = <&audio1>;
331c66ec88fSEmmanuel Vadot            };
332c66ec88fSEmmanuel Vadot            codec {
333c66ec88fSEmmanuel Vadot                sound-dai = <&tda998x1>;
334c66ec88fSEmmanuel Vadot            };
335c66ec88fSEmmanuel Vadot        };
336c66ec88fSEmmanuel Vadot
337c66ec88fSEmmanuel Vadot        simple-audio-card,dai-link@2 {		/* S/PDIF - S/PDIF */
338c66ec88fSEmmanuel Vadot            reg = <2>;
339c66ec88fSEmmanuel Vadot            cpu {
340c66ec88fSEmmanuel Vadot                sound-dai = <&audio2>;
341c66ec88fSEmmanuel Vadot            };
342c66ec88fSEmmanuel Vadot            codec {
343c66ec88fSEmmanuel Vadot                sound-dai = <&spdif_codec>;
344c66ec88fSEmmanuel Vadot            };
345c66ec88fSEmmanuel Vadot        };
346c66ec88fSEmmanuel Vadot    };
347c66ec88fSEmmanuel Vadot
348c66ec88fSEmmanuel Vadot# --------------------
349c66ec88fSEmmanuel Vadot# route audio from IMX6 SSI2 through TLV320DAC3100 codec
350c66ec88fSEmmanuel Vadot# through TPA6130A2 amplifier to headphones:
351c66ec88fSEmmanuel Vadot# --------------------
352c66ec88fSEmmanuel Vadot  - |
353c66ec88fSEmmanuel Vadot    sound {
354c66ec88fSEmmanuel Vadot        compatible = "simple-audio-card";
355c66ec88fSEmmanuel Vadot
356c66ec88fSEmmanuel Vadot        simple-audio-card,widgets =
357c66ec88fSEmmanuel Vadot            "Headphone", "Headphone Jack";
358c66ec88fSEmmanuel Vadot        simple-audio-card,routing =
359c66ec88fSEmmanuel Vadot            "Headphone Jack", "HPLEFT",
360c66ec88fSEmmanuel Vadot            "Headphone Jack", "HPRIGHT",
361c66ec88fSEmmanuel Vadot            "LEFTIN", "HPL",
362c66ec88fSEmmanuel Vadot            "RIGHTIN", "HPR";
363c66ec88fSEmmanuel Vadot        simple-audio-card,aux-devs = <&amp>;
364c66ec88fSEmmanuel Vadot        simple-audio-card,cpu {
365c66ec88fSEmmanuel Vadot            sound-dai = <&ssi2>;
366c66ec88fSEmmanuel Vadot        };
367c66ec88fSEmmanuel Vadot        simple-audio-card,codec {
368c66ec88fSEmmanuel Vadot            sound-dai = <&codec>;
369c66ec88fSEmmanuel Vadot            clocks = <&clocks>;
370c66ec88fSEmmanuel Vadot        };
371c66ec88fSEmmanuel Vadot    };
372c66ec88fSEmmanuel Vadot
373c66ec88fSEmmanuel Vadot# --------------------
374*aa1a8ff2SEmmanuel Vadot# route audio to/from a codec through an amplifier
375*aa1a8ff2SEmmanuel Vadot# designed with a potentiometer driven by IIO:
376*aa1a8ff2SEmmanuel Vadot# --------------------
377*aa1a8ff2SEmmanuel Vadot  - |
378*aa1a8ff2SEmmanuel Vadot    sound {
379*aa1a8ff2SEmmanuel Vadot        compatible = "simple-audio-card";
380*aa1a8ff2SEmmanuel Vadot
381*aa1a8ff2SEmmanuel Vadot        simple-audio-card,aux-devs = <&amp_in>, <&amp_out>;
382*aa1a8ff2SEmmanuel Vadot        simple-audio-card,routing =
383*aa1a8ff2SEmmanuel Vadot            "CODEC LEFTIN", "AMP_IN LEFT OUT",
384*aa1a8ff2SEmmanuel Vadot            "CODEC RIGHTIN", "AMP_IN RIGHT OUT",
385*aa1a8ff2SEmmanuel Vadot            "AMP_OUT LEFT IN", "CODEC LEFTOUT",
386*aa1a8ff2SEmmanuel Vadot            "AMP_OUT RIGHT IN", "CODEC RIGHTOUT";
387*aa1a8ff2SEmmanuel Vadot
388*aa1a8ff2SEmmanuel Vadot        simple-audio-card,additional-devs {
389*aa1a8ff2SEmmanuel Vadot            amp_out: iio-aux-out {
390*aa1a8ff2SEmmanuel Vadot                compatible = "audio-iio-aux";
391*aa1a8ff2SEmmanuel Vadot                io-channels = <&pot_out 0>, <&pot_out 1>;
392*aa1a8ff2SEmmanuel Vadot                io-channel-names = "LEFT", "RIGHT";
393*aa1a8ff2SEmmanuel Vadot                snd-control-invert-range = <1 1>;
394*aa1a8ff2SEmmanuel Vadot                sound-name-prefix = "AMP_OUT";
395*aa1a8ff2SEmmanuel Vadot            };
396*aa1a8ff2SEmmanuel Vadot
397*aa1a8ff2SEmmanuel Vadot            amp_in: iio_aux-in {
398*aa1a8ff2SEmmanuel Vadot                compatible = "audio-iio-aux";
399*aa1a8ff2SEmmanuel Vadot                io-channels = <&pot_in 0>, <&pot_in 1>;
400*aa1a8ff2SEmmanuel Vadot                io-channel-names = "LEFT", "RIGHT";
401*aa1a8ff2SEmmanuel Vadot                sound-name-prefix = "AMP_IN";
402*aa1a8ff2SEmmanuel Vadot            };
403*aa1a8ff2SEmmanuel Vadot        };
404*aa1a8ff2SEmmanuel Vadot
405*aa1a8ff2SEmmanuel Vadot        simple-audio-card,cpu {
406*aa1a8ff2SEmmanuel Vadot            sound-dai = <&cpu>;
407*aa1a8ff2SEmmanuel Vadot        };
408*aa1a8ff2SEmmanuel Vadot
409*aa1a8ff2SEmmanuel Vadot        simple-audio-card,codec {
410*aa1a8ff2SEmmanuel Vadot            sound-dai = <&codec>;
411*aa1a8ff2SEmmanuel Vadot            clocks = <&clocks>;
412*aa1a8ff2SEmmanuel Vadot        };
413*aa1a8ff2SEmmanuel Vadot    };
414*aa1a8ff2SEmmanuel Vadot
415*aa1a8ff2SEmmanuel Vadot# --------------------
416c66ec88fSEmmanuel Vadot# Sampling Rate Conversion
417c66ec88fSEmmanuel Vadot# --------------------
418c66ec88fSEmmanuel Vadot  - |
419c66ec88fSEmmanuel Vadot    sound {
420c66ec88fSEmmanuel Vadot        compatible = "simple-audio-card";
421c66ec88fSEmmanuel Vadot
422c66ec88fSEmmanuel Vadot        simple-audio-card,name = "rsnd-ak4643";
423c66ec88fSEmmanuel Vadot        simple-audio-card,format = "left_j";
424c66ec88fSEmmanuel Vadot        simple-audio-card,bitclock-master = <&sndcodec>;
425c66ec88fSEmmanuel Vadot        simple-audio-card,frame-master = <&sndcodec>;
426c66ec88fSEmmanuel Vadot
427c66ec88fSEmmanuel Vadot        simple-audio-card,convert-rate = <48000>;
428c66ec88fSEmmanuel Vadot
429c66ec88fSEmmanuel Vadot        simple-audio-card,prefix = "ak4642";
430c66ec88fSEmmanuel Vadot        simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
431c66ec88fSEmmanuel Vadot                                    "DAI0 Capture", "ak4642 Capture";
432c66ec88fSEmmanuel Vadot
433c66ec88fSEmmanuel Vadot        sndcpu: simple-audio-card,cpu {
434c66ec88fSEmmanuel Vadot            sound-dai = <&rcar_sound>;
435c66ec88fSEmmanuel Vadot        };
436c66ec88fSEmmanuel Vadot
437c66ec88fSEmmanuel Vadot        sndcodec: simple-audio-card,codec {
438c66ec88fSEmmanuel Vadot            sound-dai = <&ak4643>;
439c66ec88fSEmmanuel Vadot            system-clock-frequency = <11289600>;
440c66ec88fSEmmanuel Vadot        };
441c66ec88fSEmmanuel Vadot    };
442c66ec88fSEmmanuel Vadot
443c66ec88fSEmmanuel Vadot# --------------------
444c66ec88fSEmmanuel Vadot# 2 CPU 1 Codec (Mixing)
445c66ec88fSEmmanuel Vadot# --------------------
446c66ec88fSEmmanuel Vadot  - |
447c66ec88fSEmmanuel Vadot    sound {
448c66ec88fSEmmanuel Vadot        compatible = "simple-audio-card";
449c66ec88fSEmmanuel Vadot        #address-cells = <1>;
450c66ec88fSEmmanuel Vadot        #size-cells = <0>;
451c66ec88fSEmmanuel Vadot
452c66ec88fSEmmanuel Vadot        simple-audio-card,name = "rsnd-ak4643";
453c66ec88fSEmmanuel Vadot        simple-audio-card,format = "left_j";
454c66ec88fSEmmanuel Vadot        simple-audio-card,bitclock-master = <&dpcmcpu>;
455c66ec88fSEmmanuel Vadot        simple-audio-card,frame-master = <&dpcmcpu>;
456c66ec88fSEmmanuel Vadot
457c66ec88fSEmmanuel Vadot        simple-audio-card,convert-rate = <48000>;
458c66ec88fSEmmanuel Vadot        simple-audio-card,convert-channels = <2>;
459c66ec88fSEmmanuel Vadot
460c66ec88fSEmmanuel Vadot        simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
461c66ec88fSEmmanuel Vadot                                    "ak4642 Playback", "DAI1 Playback";
462c66ec88fSEmmanuel Vadot
463c66ec88fSEmmanuel Vadot        dpcmcpu: simple-audio-card,cpu@0 {
464c66ec88fSEmmanuel Vadot            reg = <0>;
465c66ec88fSEmmanuel Vadot            sound-dai = <&rcar_sound 0>;
466c66ec88fSEmmanuel Vadot        };
467c66ec88fSEmmanuel Vadot
468c66ec88fSEmmanuel Vadot        simple-audio-card,cpu@1 {
469c66ec88fSEmmanuel Vadot            reg = <1>;
470c66ec88fSEmmanuel Vadot            sound-dai = <&rcar_sound 1>;
471c66ec88fSEmmanuel Vadot        };
472c66ec88fSEmmanuel Vadot
473c66ec88fSEmmanuel Vadot        simple-audio-card,codec {
474c66ec88fSEmmanuel Vadot            prefix = "ak4642";
475c66ec88fSEmmanuel Vadot            sound-dai = <&ak4643>;
476c66ec88fSEmmanuel Vadot            clocks = <&audio_clock>;
477c66ec88fSEmmanuel Vadot        };
478c66ec88fSEmmanuel Vadot    };
479c66ec88fSEmmanuel Vadot
480c66ec88fSEmmanuel Vadot# --------------------
481c66ec88fSEmmanuel Vadot# Multi DAI links with DPCM:
482c66ec88fSEmmanuel Vadot#
483c66ec88fSEmmanuel Vadot# CPU0 ------ ak4613
484c66ec88fSEmmanuel Vadot# CPU1 ------ PCM3168A-p  /* DPCM 1ch/2ch */
485c66ec88fSEmmanuel Vadot# CPU2 --/                /* DPCM 3ch/4ch */
486c66ec88fSEmmanuel Vadot# CPU3 --/                /* DPCM 5ch/6ch */
487c66ec88fSEmmanuel Vadot# CPU4 --/                /* DPCM 7ch/8ch */
488c66ec88fSEmmanuel Vadot# CPU5 ------ PCM3168A-c
489c66ec88fSEmmanuel Vadot# --------------------
490c66ec88fSEmmanuel Vadot  - |
491c66ec88fSEmmanuel Vadot    sound {
492c66ec88fSEmmanuel Vadot        compatible = "simple-audio-card";
493c66ec88fSEmmanuel Vadot        #address-cells = <1>;
494c66ec88fSEmmanuel Vadot        #size-cells = <0>;
495c66ec88fSEmmanuel Vadot
496c66ec88fSEmmanuel Vadot        simple-audio-card,routing =
497c66ec88fSEmmanuel Vadot            "pcm3168a Playback", "DAI1 Playback",
498c66ec88fSEmmanuel Vadot            "pcm3168a Playback", "DAI2 Playback",
499c66ec88fSEmmanuel Vadot            "pcm3168a Playback", "DAI3 Playback",
500c66ec88fSEmmanuel Vadot            "pcm3168a Playback", "DAI4 Playback";
501c66ec88fSEmmanuel Vadot
502c66ec88fSEmmanuel Vadot        simple-audio-card,dai-link@0 {
503c66ec88fSEmmanuel Vadot            reg = <0>;
504c66ec88fSEmmanuel Vadot            format = "left_j";
505c66ec88fSEmmanuel Vadot            bitclock-master = <&sndcpu0>;
506c66ec88fSEmmanuel Vadot            frame-master = <&sndcpu0>;
507c66ec88fSEmmanuel Vadot
508c66ec88fSEmmanuel Vadot            sndcpu0: cpu {
509c66ec88fSEmmanuel Vadot                sound-dai = <&rcar_sound 0>;
510c66ec88fSEmmanuel Vadot            };
511c66ec88fSEmmanuel Vadot            codec {
512c66ec88fSEmmanuel Vadot                sound-dai = <&ak4613>;
513c66ec88fSEmmanuel Vadot            };
514c66ec88fSEmmanuel Vadot        };
515c66ec88fSEmmanuel Vadot
516c66ec88fSEmmanuel Vadot        simple-audio-card,dai-link@1 {
517c66ec88fSEmmanuel Vadot            reg = <1>;
518c66ec88fSEmmanuel Vadot            format = "i2s";
519c66ec88fSEmmanuel Vadot            bitclock-master = <&sndcpu1>;
520c66ec88fSEmmanuel Vadot            frame-master = <&sndcpu1>;
521c66ec88fSEmmanuel Vadot
522c66ec88fSEmmanuel Vadot            convert-channels = <8>; /* TDM Split */
523c66ec88fSEmmanuel Vadot
524cb7aa33aSEmmanuel Vadot            sndcpu1: cpu-0 {
525c66ec88fSEmmanuel Vadot                sound-dai = <&rcar_sound 1>;
526c66ec88fSEmmanuel Vadot            };
527cb7aa33aSEmmanuel Vadot            cpu-1 {
528c66ec88fSEmmanuel Vadot                sound-dai = <&rcar_sound 2>;
529c66ec88fSEmmanuel Vadot            };
530cb7aa33aSEmmanuel Vadot            cpu-2 {
531c66ec88fSEmmanuel Vadot                sound-dai = <&rcar_sound 3>;
532c66ec88fSEmmanuel Vadot            };
533cb7aa33aSEmmanuel Vadot            cpu-3 {
534c66ec88fSEmmanuel Vadot                sound-dai = <&rcar_sound 4>;
535c66ec88fSEmmanuel Vadot            };
536c66ec88fSEmmanuel Vadot            codec {
537c66ec88fSEmmanuel Vadot                mclk-fs = <512>;
538c66ec88fSEmmanuel Vadot                prefix = "pcm3168a";
539c66ec88fSEmmanuel Vadot                dai-tdm-slot-num = <8>;
540c66ec88fSEmmanuel Vadot                sound-dai = <&pcm3168a 0>;
541c66ec88fSEmmanuel Vadot            };
542c66ec88fSEmmanuel Vadot        };
543c66ec88fSEmmanuel Vadot
544c66ec88fSEmmanuel Vadot        simple-audio-card,dai-link@2 {
545c66ec88fSEmmanuel Vadot            reg = <2>;
546c66ec88fSEmmanuel Vadot            format = "i2s";
547c66ec88fSEmmanuel Vadot            bitclock-master = <&sndcpu2>;
548c66ec88fSEmmanuel Vadot            frame-master = <&sndcpu2>;
549c66ec88fSEmmanuel Vadot
550c66ec88fSEmmanuel Vadot            sndcpu2: cpu {
551c66ec88fSEmmanuel Vadot                sound-dai = <&rcar_sound 5>;
552c66ec88fSEmmanuel Vadot            };
553c66ec88fSEmmanuel Vadot            codec {
554c66ec88fSEmmanuel Vadot                mclk-fs = <512>;
555c66ec88fSEmmanuel Vadot                prefix = "pcm3168a";
556c66ec88fSEmmanuel Vadot                sound-dai = <&pcm3168a 1>;
557c66ec88fSEmmanuel Vadot            };
558c66ec88fSEmmanuel Vadot        };
559c66ec88fSEmmanuel Vadot    };
560