simple-card.txt 4.5 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 19
- simple-audio-card,mclk-fs             : Multiplication factor between stream rate and codec
  					  mclk.
20
- simple-audio-card,hp-det-gpio		: Reference to GPIO that signals when
21
					  headphones are attached.
22
- simple-audio-card,mic-det-gpio	: Reference to GPIO that signals when
23
					  a microphone is attached.
24

25 26 27 28 29 30 31 32 33 34 35 36 37 38
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
					  section bellow.

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.
39

40
Required dai-link subnodes:
41

42 43
- cpu					: CPU   sub-node
- codec					: CODEC sub-node
44

45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
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.

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.
65 66 67 68 69 70 71

Required CPU/CODEC subnodes properties:

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

Optional CPU/CODEC subnodes properties:

72 73
- dai-tdm-slot-num			: Please refer to tdm-slot.txt.
- dai-tdm-slot-width			: Please refer to tdm-slot.txt.
74 75 76 77
- 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)
78 79 80 81 82
					  If a clock is specified, it is
					  enabled with clk_prepare_enable()
					  in dai startup() and disabled with
					  clk_disable_unprepare() in dai
					  shutdown().
83

84
Example 1 - single DAI link:
85 86 87

sound {
	compatible = "simple-audio-card";
88
	simple-audio-card,name = "VF610-Tower-Sound-Card";
89
	simple-audio-card,format = "left_j";
90 91
	simple-audio-card,bitclock-master = <&dailink0_master>;
	simple-audio-card,frame-master = <&dailink0_master>;
92 93 94 95
	simple-audio-card,widgets =
		"Microphone", "Microphone Jack",
		"Headphone", "Headphone Jack",
		"Speaker", "External Speaker";
96
	simple-audio-card,routing =
97
		"MIC_IN", "Microphone Jack",
98
		"Headphone Jack", "HP_OUT",
99
		"External Speaker", "LINE_OUT";
100 101 102 103 104

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

105
	dailink0_master: simple-audio-card,codec {
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
		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>;
};
126 127 128 129 130 131 132 133

Example 2 - many DAI links:

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

	simple-audio-card,dai-link@0 {		/* I2S - HDMI */
134 135
		format = "i2s";
		cpu {
136 137
			sound-dai = <&audio1 0>;
		};
138
		codec {
139 140 141 142 143
			sound-dai = <&tda998x 0>;
		};
	};

	simple-audio-card,dai-link@1 {		/* S/PDIF - HDMI */
144
		cpu {
145 146
			sound-dai = <&audio1 1>;
		};
147
		codec {
148 149 150 151 152
			sound-dai = <&tda998x 1>;
		};
	};

	simple-audio-card,dai-link@2 {		/* S/PDIF - S/PDIF */
153
		cpu {
154 155
			sound-dai = <&audio1 1>;
		};
156
		codec {
157 158 159 160
			sound-dai = <&spdif_codec>;
		};
	};
};