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