1Simple-Card:
2
3Simple-Card specifies audio DAI connections of SoC <-> codec.
4
5Required properties:
6
7- compatible				: "simple-audio-card"
8
9Optional properties:
10
11- simple-audio-card,name		: User specified audio sound card name, one string
12					  property.
13- simple-audio-card,widgets		: Please refer to widgets.txt.
14- simple-audio-card,routing		: A list of the connections between audio components.
15					  Each entry is a pair of strings, the first being the
16					  connection's sink, the second being the connection's
17					  source.
18- simple-audio-card,mclk-fs             : Multiplication factor between stream rate and codec
19					  mclk. When defined, mclk-fs property defined in
20					  dai-link sub nodes are ignored.
21- simple-audio-card,hp-det-gpio		: Reference to GPIO that signals when
22					  headphones are attached.
23- simple-audio-card,mic-det-gpio	: Reference to GPIO that signals when
24					  a microphone is attached.
25
26Optional subnodes:
27
28- simple-audio-card,dai-link		: Container for dai-link level
29					  properties and the CPU and CODEC
30					  sub-nodes. This container may be
31					  omitted when the card has only one
32					  DAI link. See the examples and the
33					  section bellow.
34
35Dai-link subnode properties and subnodes:
36
37If dai-link subnode is omitted and the subnode properties are directly
38under "sound"-node the subnode property and subnode names have to be
39prefixed with "simple-audio-card,"-prefix.
40
41Required dai-link subnodes:
42
43- cpu					: CPU   sub-node
44- codec					: CODEC sub-node
45
46Optional dai-link subnode properties:
47
48- format				: CPU/CODEC common audio format.
49					  "i2s", "right_j", "left_j" , "dsp_a"
50					  "dsp_b", "ac97", "pdm", "msb", "lsb"
51- frame-master				: Indicates dai-link frame master.
52					  phandle to a cpu or codec subnode.
53- bitclock-master			: Indicates dai-link bit clock master.
54					  phandle to a cpu or codec subnode.
55- bitclock-inversion			: bool property. Add this if the
56					  dai-link uses bit clock inversion.
57- frame-inversion			: bool property. Add this if the
58					  dai-link uses frame clock inversion.
59- mclk-fs             			: Multiplication factor between stream
60					  rate and codec mclk, applied only for
61					  the dai-link.
62
63For backward compatibility the frame-master and bitclock-master
64properties can be used as booleans in codec subnode to indicate if the
65codec is the dai-link frame or bit clock master. In this case there
66should be no dai-link node, the same properties should not be present
67at sound-node level, and the bitclock-inversion and frame-inversion
68properties should also be placed in the codec node if needed.
69
70Required CPU/CODEC subnodes properties:
71
72- sound-dai				: phandle and port of CPU/CODEC
73
74Optional CPU/CODEC subnodes properties:
75
76- dai-tdm-slot-num			: Please refer to tdm-slot.txt.
77- dai-tdm-slot-width			: Please refer to tdm-slot.txt.
78- clocks / system-clock-frequency	: specify subnode's clock if needed.
79					  it can be specified via "clocks" if system has
80					  clock node (= common clock), or "system-clock-frequency"
81					  (if system doens't support common clock)
82					  If a clock is specified, it is
83					  enabled with clk_prepare_enable()
84					  in dai startup() and disabled with
85					  clk_disable_unprepare() in dai
86					  shutdown().
87
88Example 1 - single DAI link:
89
90sound {
91	compatible = "simple-audio-card";
92	simple-audio-card,name = "VF610-Tower-Sound-Card";
93	simple-audio-card,format = "left_j";
94	simple-audio-card,bitclock-master = <&dailink0_master>;
95	simple-audio-card,frame-master = <&dailink0_master>;
96	simple-audio-card,widgets =
97		"Microphone", "Microphone Jack",
98		"Headphone", "Headphone Jack",
99		"Speaker", "External Speaker";
100	simple-audio-card,routing =
101		"MIC_IN", "Microphone Jack",
102		"Headphone Jack", "HP_OUT",
103		"External Speaker", "LINE_OUT";
104
105	simple-audio-card,cpu {
106		sound-dai = <&sh_fsi2 0>;
107	};
108
109	dailink0_master: simple-audio-card,codec {
110		sound-dai = <&ak4648>;
111		clocks = <&osc>;
112	};
113};
114
115&i2c0 {
116	ak4648: ak4648@12 {
117		#sound-dai-cells = <0>;
118		compatible = "asahi-kasei,ak4648";
119		reg = <0x12>;
120	};
121};
122
123sh_fsi2: sh_fsi2@ec230000 {
124	#sound-dai-cells = <1>;
125	compatible = "renesas,sh_fsi2";
126	reg = <0xec230000 0x400>;
127	interrupt-parent = <&gic>;
128	interrupts = <0 146 0x4>;
129};
130
131Example 2 - many DAI links:
132
133sound {
134	compatible = "simple-audio-card";
135	simple-audio-card,name = "Cubox Audio";
136
137	simple-audio-card,dai-link@0 {		/* I2S - HDMI */
138		format = "i2s";
139		cpu {
140			sound-dai = <&audio1 0>;
141		};
142		codec {
143			sound-dai = <&tda998x 0>;
144		};
145	};
146
147	simple-audio-card,dai-link@1 {		/* S/PDIF - HDMI */
148		cpu {
149			sound-dai = <&audio1 1>;
150		};
151		codec {
152			sound-dai = <&tda998x 1>;
153		};
154	};
155
156	simple-audio-card,dai-link@2 {		/* S/PDIF - S/PDIF */
157		cpu {
158			sound-dai = <&audio1 1>;
159		};
160		codec {
161			sound-dai = <&spdif_codec>;
162		};
163	};
164};
165