simple-card.txt 5.8 KB
Newer Older
1 2
Simple-Card:

3
Simple-Card specifies audio DAI connections of SoC <-> codec.
4 5 6 7 8 9 10

Required properties:

- compatible				: "simple-audio-card"

Optional properties:

11 12 13
- simple-audio-card,name		: User specified audio sound card name, one string
					  property.
- simple-audio-card,widgets		: Please refer to widgets.txt.
14
- simple-audio-card,routing		: A list of the connections between audio components.
15 16 17
					  Each entry is a pair of strings, the first being the
					  connection's sink, the second being the connection's
					  source.
18
- simple-audio-card,mclk-fs             : Multiplication factor between stream rate and codec
19 20
					  mclk. When defined, mclk-fs property defined in
					  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 26
- simple-audio-card,aux-devs		: List of phandles pointing to auxiliary devices, such
					  as amplifiers, to be added to the sound card.
27

28 29 30 31 32 33 34
Optional subnodes:

- simple-audio-card,dai-link		: Container for dai-link level
					  properties and the CPU and CODEC
					  sub-nodes. This container may be
					  omitted when the card has only one
					  DAI link. See the examples and the
35
					  section below.
36 37 38 39 40 41

Dai-link subnode properties and subnodes:

If dai-link subnode is omitted and the subnode properties are directly
under "sound"-node the subnode property and subnode names have to be
prefixed with "simple-audio-card,"-prefix.
42

43
Required dai-link subnodes:
44

45 46
- cpu					: CPU   sub-node
- codec					: CODEC sub-node
47

48 49 50 51 52 53 54 55 56 57 58 59 60
Optional dai-link subnode properties:

- format				: CPU/CODEC common audio format.
					  "i2s", "right_j", "left_j" , "dsp_a"
					  "dsp_b", "ac97", "pdm", "msb", "lsb"
- frame-master				: Indicates dai-link frame master.
					  phandle to a cpu or codec subnode.
- bitclock-master			: Indicates dai-link bit clock master.
					  phandle to a cpu or codec subnode.
- bitclock-inversion			: bool property. Add this if the
					  dai-link uses bit clock inversion.
- frame-inversion			: bool property. Add this if the
					  dai-link uses frame clock inversion.
61 62 63
- mclk-fs             			: Multiplication factor between stream
					  rate and codec mclk, applied only for
					  the dai-link.
64 65 66 67 68 69 70

For backward compatibility the frame-master and bitclock-master
properties can be used as booleans in codec subnode to indicate if the
codec is the dai-link frame or bit clock master. In this case there
should be no dai-link node, the same properties should not be present
at sound-node level, and the bitclock-inversion and frame-inversion
properties should also be placed in the codec node if needed.
71 72 73 74 75 76 77

Required CPU/CODEC subnodes properties:

- sound-dai				: phandle and port of CPU/CODEC

Optional CPU/CODEC subnodes properties:

78 79
- dai-tdm-slot-num			: Please refer to tdm-slot.txt.
- dai-tdm-slot-width			: Please refer to tdm-slot.txt.
80 81 82 83
- clocks / system-clock-frequency	: specify subnode's clock if needed.
					  it can be specified via "clocks" if system has
					  clock node (= common clock), or "system-clock-frequency"
					  (if system doens't support common clock)
84 85 86 87 88
					  If a clock is specified, it is
					  enabled with clk_prepare_enable()
					  in dai startup() and disabled with
					  clk_disable_unprepare() in dai
					  shutdown().
89 90 91 92 93
					  If a clock is specified and a
					  multiplication factor is given with
					  mclk-fs, the clock will be set to the
					  calculated mclk frequency when the
					  stream starts.
94 95 96
- system-clock-direction-out		: specifies clock direction as 'out' on
					  initialization. It is useful for some aCPUs with
					  fixed clocks.
97

98
Example 1 - single DAI link:
99 100 101

sound {
	compatible = "simple-audio-card";
102
	simple-audio-card,name = "VF610-Tower-Sound-Card";
103
	simple-audio-card,format = "left_j";
104 105
	simple-audio-card,bitclock-master = <&dailink0_master>;
	simple-audio-card,frame-master = <&dailink0_master>;
106 107 108 109
	simple-audio-card,widgets =
		"Microphone", "Microphone Jack",
		"Headphone", "Headphone Jack",
		"Speaker", "External Speaker";
110
	simple-audio-card,routing =
111
		"MIC_IN", "Microphone Jack",
112
		"Headphone Jack", "HP_OUT",
113
		"External Speaker", "LINE_OUT";
114 115 116 117 118

	simple-audio-card,cpu {
		sound-dai = <&sh_fsi2 0>;
	};

119
	dailink0_master: simple-audio-card,codec {
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
		sound-dai = <&ak4648>;
		clocks = <&osc>;
	};
};

&i2c0 {
	ak4648: ak4648@12 {
		#sound-dai-cells = <0>;
		compatible = "asahi-kasei,ak4648";
		reg = <0x12>;
	};
};

sh_fsi2: sh_fsi2@ec230000 {
	#sound-dai-cells = <1>;
	compatible = "renesas,sh_fsi2";
	reg = <0xec230000 0x400>;
	interrupt-parent = <&gic>;
	interrupts = <0 146 0x4>;
};
140 141 142 143 144 145 146 147

Example 2 - many DAI links:

sound {
	compatible = "simple-audio-card";
	simple-audio-card,name = "Cubox Audio";

	simple-audio-card,dai-link@0 {		/* I2S - HDMI */
148
		reg = <0>;
149 150
		format = "i2s";
		cpu {
151 152
			sound-dai = <&audio1 0>;
		};
153
		codec {
154 155 156 157 158
			sound-dai = <&tda998x 0>;
		};
	};

	simple-audio-card,dai-link@1 {		/* S/PDIF - HDMI */
159
		reg = <1>;
160
		cpu {
161 162
			sound-dai = <&audio1 1>;
		};
163
		codec {
164 165 166 167 168
			sound-dai = <&tda998x 1>;
		};
	};

	simple-audio-card,dai-link@2 {		/* S/PDIF - S/PDIF */
169
		reg = <2>;
170
		cpu {
171 172
			sound-dai = <&audio1 1>;
		};
173
		codec {
174 175 176 177
			sound-dai = <&spdif_codec>;
		};
	};
};
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212

Example 3 - route audio from IMX6 SSI2 through TLV320DAC3100 codec
through TPA6130A2 amplifier to headphones:

&i2c0 {
	codec: tlv320dac3100@18 {
		compatible = "ti,tlv320dac3100";
		...
	}

	amp: tpa6130a2@60 {
		compatible = "ti,tpa6130a2";
		...
	}
}

sound {
	compatible = "simple-audio-card";
	...
	simple-audio-card,widgets =
		"Headphone", "Headphone Jack";
	simple-audio-card,routing =
		"Headphone Jack", "HPLEFT",
		"Headphone Jack", "HPRIGHT",
		"LEFTIN", "HPL",
		"RIGHTIN", "HPR";
	simple-audio-card,aux-devs = <&amp>;
	simple-audio-card,cpu {
		sound-dai = <&ssi2>;
	};
	simple-audio-card,codec {
		sound-dai = <&codec>;
		clocks = ...
	};
};