blob: 73bf314f7240483514db27980ef6aa63dd0298f2 [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
19 mclk.
Dylan Reid872bbb32014-10-03 10:06:08 -070020- simple-audio-card,hp-det-gpio : Reference to GPIO that signals when
Dylan Reid3fe24032014-10-01 14:25:20 -070021 headphones are attached.
Dylan Reid872bbb32014-10-03 10:06:08 -070022- simple-audio-card,mic-det-gpio : Reference to GPIO that signals when
Dylan Reid3fe24032014-10-01 14:25:20 -070023 a microphone is attached.
Andrew Lunn2942a0e2014-05-22 17:31:49 +020024
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020025Optional subnodes:
Xiubo Lid4c22092013-12-23 12:57:01 +080026
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020027- simple-audio-card,dai-link : Container for dai-link level
28 properties and the CPU and CODEC
29 sub-nodes. This container may be
30 omitted when the card has only one
31 DAI link. See the examples and the
32 section bellow.
Kuninori Morimotofa558c22013-11-20 15:25:02 +090033
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020034Dai-link subnode properties and subnodes:
Jean-Francois Moine015f6302014-03-20 11:04:16 +010035
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020036If dai-link subnode is omitted and the subnode properties are directly
37under "sound"-node the subnode property and subnode names have to be
38prefixed with "simple-audio-card,"-prefix.
39
40Required dai-link subnodes:
41
42- cpu : CPU sub-node
43- codec : CODEC sub-node
44
45Optional dai-link subnode properties:
46
47- format : CPU/CODEC common audio format.
48 "i2s", "right_j", "left_j" , "dsp_a"
49 "dsp_b", "ac97", "pdm", "msb", "lsb"
50- frame-master : Indicates dai-link frame master.
51 phandle to a cpu or codec subnode.
52- bitclock-master : Indicates dai-link bit clock master.
53 phandle to a cpu or codec subnode.
54- bitclock-inversion : bool property. Add this if the
55 dai-link uses bit clock inversion.
56- frame-inversion : bool property. Add this if the
57 dai-link uses frame clock inversion.
58
59For backward compatibility the frame-master and bitclock-master
60properties can be used as booleans in codec subnode to indicate if the
61codec is the dai-link frame or bit clock master. In this case there
62should be no dai-link node, the same properties should not be present
63at sound-node level, and the bitclock-inversion and frame-inversion
64properties should also be placed in the codec node if needed.
Kuninori Morimotofa558c22013-11-20 15:25:02 +090065
66Required CPU/CODEC subnodes properties:
67
68- sound-dai : phandle and port of CPU/CODEC
69
70Optional CPU/CODEC subnodes properties:
71
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020072- dai-tdm-slot-num : Please refer to tdm-slot.txt.
73- dai-tdm-slot-width : Please refer to tdm-slot.txt.
Kuninori Morimotofa558c22013-11-20 15:25:02 +090074- clocks / system-clock-frequency : specify subnode's clock if needed.
75 it can be specified via "clocks" if system has
76 clock node (= common clock), or "system-clock-frequency"
77 (if system doens't support common clock)
Jyri Sarhaf9911802015-01-13 21:16:34 +020078 If a clock is specified, it is
79 enabled with clk_prepare_enable()
80 in dai startup() and disabled with
81 clk_disable_unprepare() in dai
82 shutdown().
Kuninori Morimotofa558c22013-11-20 15:25:02 +090083
Jean-Francois Moine015f6302014-03-20 11:04:16 +010084Example 1 - single DAI link:
Kuninori Morimotofa558c22013-11-20 15:25:02 +090085
86sound {
87 compatible = "simple-audio-card";
Xiubo Li66841342014-02-08 15:59:55 +080088 simple-audio-card,name = "VF610-Tower-Sound-Card";
Kuninori Morimotofa558c22013-11-20 15:25:02 +090089 simple-audio-card,format = "left_j";
Jyri Sarhab3ca11f2014-03-24 12:15:25 +020090 simple-audio-card,bitclock-master = <&dailink0_master>;
91 simple-audio-card,frame-master = <&dailink0_master>;
Xiubo Li66841342014-02-08 15:59:55 +080092 simple-audio-card,widgets =
93 "Microphone", "Microphone Jack",
94 "Headphone", "Headphone Jack",
95 "Speaker", "External Speaker";
Xiubo Libb651b32014-01-10 13:17:27 +080096 simple-audio-card,routing =
Xiubo Li66841342014-02-08 15:59:55 +080097 "MIC_IN", "Microphone Jack",
Xiubo Lid4c22092013-12-23 12:57:01 +080098 "Headphone Jack", "HP_OUT",
Xiubo Li66841342014-02-08 15:59:55 +080099 "External Speaker", "LINE_OUT";
Kuninori Morimotofa558c22013-11-20 15:25:02 +0900100
Kuninori Morimotofa558c22013-11-20 15:25:02 +0900101 simple-audio-card,cpu {
102 sound-dai = <&sh_fsi2 0>;
103 };
104
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200105 dailink0_master: simple-audio-card,codec {
Kuninori Morimotofa558c22013-11-20 15:25:02 +0900106 sound-dai = <&ak4648>;
Kuninori Morimotofa558c22013-11-20 15:25:02 +0900107 clocks = <&osc>;
108 };
109};
110
111&i2c0 {
112 ak4648: ak4648@12 {
113 #sound-dai-cells = <0>;
114 compatible = "asahi-kasei,ak4648";
115 reg = <0x12>;
116 };
117};
118
119sh_fsi2: sh_fsi2@ec230000 {
120 #sound-dai-cells = <1>;
121 compatible = "renesas,sh_fsi2";
122 reg = <0xec230000 0x400>;
123 interrupt-parent = <&gic>;
124 interrupts = <0 146 0x4>;
125};
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100126
127Example 2 - many DAI links:
128
129sound {
130 compatible = "simple-audio-card";
131 simple-audio-card,name = "Cubox Audio";
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100132
133 simple-audio-card,dai-link@0 { /* I2S - HDMI */
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200134 format = "i2s";
135 cpu {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100136 sound-dai = <&audio1 0>;
137 };
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200138 codec {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100139 sound-dai = <&tda998x 0>;
140 };
141 };
142
143 simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200144 cpu {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100145 sound-dai = <&audio1 1>;
146 };
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200147 codec {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100148 sound-dai = <&tda998x 1>;
149 };
150 };
151
152 simple-audio-card,dai-link@2 { /* S/PDIF - S/PDIF */
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200153 cpu {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100154 sound-dai = <&audio1 1>;
155 };
Jyri Sarhab3ca11f2014-03-24 12:15:25 +0200156 codec {
Jean-Francois Moine015f6302014-03-20 11:04:16 +0100157 sound-dai = <&spdif_codec>;
158 };
159 };
160};