blob: c7a93931fad27c7d88069925ae5125434f3e8f74 [file] [log] [blame]
Kuninori Morimotofa558c22013-11-20 15:25:02 +09001Simple-Card:
2
Jyri Sarhab3ca11f2014-03-24 12:15:25 +02003Simple-Card specifies audio DAI connections of SoC <-> codec.
Kuninori Morimotofa558c22013-11-20 15:25:02 +09004
5Required properties:
6
7- compatible : "simple-audio-card"
8
9Optional properties:
10
Xiubo Li66841342014-02-08 15:59:55 +080011- simple-audio-card,name : User specified audio sound card name, one string
12 property.
Xiubo Li66841342014-02-08 15:59:55 +080013- simple-audio-card,widgets : Please refer to widgets.txt.
Xiubo Li8c0b8232014-01-07 09:15:16 +080014- simple-audio-card,routing : A list of the connections between audio components.
Xiubo Lid4c22092013-12-23 12:57:01 +080015 Each entry is a pair of strings, the first being the
16 connection's sink, the second being the connection's
17 source.
Andrew Lunn2942a0e2014-05-22 17:31:49 +020018- simple-audio-card,mclk-fs : Multiplication factor between stream rate and codec
Arnaud Pouliquen85a4bfd2015-06-05 10:19:05 +020019 mclk. When defined, mclk-fs property defined in
20 dai-link sub nodes are ignored.
Dylan Reid872bbb32014-10-03 10:06:08 -070021- simple-audio-card,hp-det-gpio : Reference to GPIO that signals when
Dylan Reid3fe24032014-10-01 14:25:20 -070022 headphones are attached.
Dylan Reid872bbb32014-10-03 10:06:08 -070023- simple-audio-card,mic-det-gpio : Reference to GPIO that signals when
Dylan Reid3fe24032014-10-01 14:25:20 -070024 a microphone is attached.
Nikita Yushchenko899a2472016-09-26 12:56:51 +030025- simple-audio-card,aux-devs : List of phandles pointing to auxiliary devices, such
26 as amplifiers, to be added to the sound card.
Andrew Lunn2942a0e2014-05-22 17:31:49 +020027
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020028Optional subnodes:
Xiubo Lid4c22092013-12-23 12:57:01 +080029
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020030- simple-audio-card,dai-link : Container for dai-link level
31 properties and the CPU and CODEC
32 sub-nodes. This container may be
33 omitted when the card has only one
34 DAI link. See the examples and the
Otto Kekäläinen7587eb12016-07-13 21:08:07 +030035 section below.
Kuninori Morimotofa558c22013-11-20 15:25:02 +090036
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020037Dai-link subnode properties and subnodes:
Jean-Francois Moine015f6302014-03-20 11:04:16 +010038
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020039If dai-link subnode is omitted and the subnode properties are directly
40under "sound"-node the subnode property and subnode names have to be
41prefixed with "simple-audio-card,"-prefix.
42
43Required dai-link subnodes:
44
45- cpu : CPU sub-node
46- codec : CODEC sub-node
47
48Optional dai-link subnode properties:
49
50- format : CPU/CODEC common audio format.
51 "i2s", "right_j", "left_j" , "dsp_a"
52 "dsp_b", "ac97", "pdm", "msb", "lsb"
53- frame-master : Indicates dai-link frame master.
54 phandle to a cpu or codec subnode.
55- bitclock-master : Indicates dai-link bit clock master.
56 phandle to a cpu or codec subnode.
57- bitclock-inversion : bool property. Add this if the
58 dai-link uses bit clock inversion.
59- frame-inversion : bool property. Add this if the
60 dai-link uses frame clock inversion.
Arnaud Pouliquen85a4bfd2015-06-05 10:19:05 +020061- mclk-fs : Multiplication factor between stream
62 rate and codec mclk, applied only for
63 the dai-link.
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020064
65For backward compatibility the frame-master and bitclock-master
66properties can be used as booleans in codec subnode to indicate if the
67codec is the dai-link frame or bit clock master. In this case there
68should be no dai-link node, the same properties should not be present
69at sound-node level, and the bitclock-inversion and frame-inversion
70properties should also be placed in the codec node if needed.
Kuninori Morimotofa558c22013-11-20 15:25:02 +090071
72Required CPU/CODEC subnodes properties:
73
74- sound-dai : phandle and port of CPU/CODEC
75
76Optional CPU/CODEC subnodes properties:
77
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020078- dai-tdm-slot-num : Please refer to tdm-slot.txt.
79- dai-tdm-slot-width : Please refer to tdm-slot.txt.
Kuninori Morimotofa558c22013-11-20 15:25:02 +090080- clocks / system-clock-frequency : specify subnode's clock if needed.
81 it can be specified via "clocks" if system has
82 clock node (= common clock), or "system-clock-frequency"
83 (if system doens't support common clock)
Jyri Sarhaf9911802015-01-13 21:16:34 +020084 If a clock is specified, it is
85 enabled with clk_prepare_enable()
86 in dai startup() and disabled with
87 clk_disable_unprepare() in dai
88 shutdown().
Kuninori Morimotofa558c22013-11-20 15:25:02 +090089
Jean-Francois Moine015f6302014-03-20 11:04:16 +010090Example 1 - single DAI link:
Kuninori Morimotofa558c22013-11-20 15:25:02 +090091
92sound {
93 compatible = "simple-audio-card";
Xiubo Li66841342014-02-08 15:59:55 +080094 simple-audio-card,name = "VF610-Tower-Sound-Card";
Kuninori Morimotofa558c22013-11-20 15:25:02 +090095 simple-audio-card,format = "left_j";
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020096 simple-audio-card,bitclock-master = <&dailink0_master>;
97 simple-audio-card,frame-master = <&dailink0_master>;
Xiubo Li66841342014-02-08 15:59:55 +080098 simple-audio-card,widgets =
99 "Microphone", "Microphone Jack",
100 "Headphone", "Headphone Jack",
101 "Speaker", "External Speaker";
Xiubo Libb651b32014-01-10 13:17:27 +0800102 simple-audio-card,routing =
Xiubo Li66841342014-02-08 15:59:55 +0800103 "MIC_IN", "Microphone Jack",
Xiubo Lid4c22092013-12-23 12:57:01 +0800104 "Headphone Jack", "HP_OUT",
Xiubo Li66841342014-02-08 15:59:55 +0800105 "External Speaker", "LINE_OUT";
Kuninori Morimotofa558c22013-11-20 15:25:02 +0900106
Kuninori Morimotofa558c22013-11-20 15:25:02 +0900107 simple-audio-card,cpu {
108 sound-dai = <&sh_fsi2 0>;
109 };
110
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200111 dailink0_master: simple-audio-card,codec {
Kuninori Morimotofa558c22013-11-20 15:25:02 +0900112 sound-dai = <&ak4648>;
Kuninori Morimotofa558c22013-11-20 15:25:02 +0900113 clocks = <&osc>;
114 };
115};
116
117&i2c0 {
118 ak4648: ak4648@12 {
119 #sound-dai-cells = <0>;
120 compatible = "asahi-kasei,ak4648";
121 reg = <0x12>;
122 };
123};
124
125sh_fsi2: sh_fsi2@ec230000 {
126 #sound-dai-cells = <1>;
127 compatible = "renesas,sh_fsi2";
128 reg = <0xec230000 0x400>;
129 interrupt-parent = <&gic>;
130 interrupts = <0 146 0x4>;
131};
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100132
133Example 2 - many DAI links:
134
135sound {
136 compatible = "simple-audio-card";
137 simple-audio-card,name = "Cubox Audio";
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100138
139 simple-audio-card,dai-link@0 { /* I2S - HDMI */
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200140 format = "i2s";
141 cpu {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100142 sound-dai = <&audio1 0>;
143 };
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200144 codec {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100145 sound-dai = <&tda998x 0>;
146 };
147 };
148
149 simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200150 cpu {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100151 sound-dai = <&audio1 1>;
152 };
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200153 codec {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100154 sound-dai = <&tda998x 1>;
155 };
156 };
157
158 simple-audio-card,dai-link@2 { /* S/PDIF - S/PDIF */
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200159 cpu {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100160 sound-dai = <&audio1 1>;
161 };
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200162 codec {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100163 sound-dai = <&spdif_codec>;
164 };
165 };
166};
Nikita Yushchenko899a2472016-09-26 12:56:51 +0300167
168Example 3 - route audio from IMX6 SSI2 through TLV320DAC3100 codec
169through TPA6130A2 amplifier to headphones:
170
171&i2c0 {
172 codec: tlv320dac3100@18 {
173 compatible = "ti,tlv320dac3100";
174 ...
175 }
176
177 amp: tpa6130a2@60 {
178 compatible = "ti,tpa6130a2";
179 ...
180 }
181}
182
183sound {
184 compatible = "simple-audio-card";
185 ...
186 simple-audio-card,widgets =
187 "Headphone", "Headphone Jack";
188 simple-audio-card,routing =
189 "Headphone Jack", "HPLEFT",
190 "Headphone Jack", "HPRIGHT",
191 "LEFTIN", "HPL",
192 "RIGHTIN", "HPR";
193 simple-audio-card,aux-devs = <&amp>;
194 simple-audio-card,cpu {
195 sound-dai = <&ssi2>;
196 };
197 simple-audio-card,codec {
198 sound-dai = <&codec>;
199 clocks = ...
200 };
201};