summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/sound/simple-card.txt
blob: 131aa2ad7f1a3120d6ebeef6492c466f87ab461b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Simple-Card:

Simple-Card specifies audio DAI connection of SoC <-> codec.

Required properties:

- compatible				: "simple-audio-card"

Optional properties:

- simple-audio-card,name		: User specified audio sound card name, one string
					  property.
- simple-audio-card,format		: CPU/CODEC common audio format.
					  "i2s", "right_j", "left_j" , "dsp_a"
					  "dsp_b", "ac97", "pdm", "msb", "lsb"
- simple-audio-card,widgets		: Please refer to widgets.txt.
- simple-audio-card,routing		: A list of the connections between audio components.
					  Each entry is a pair of strings, the first being the
					  connection's sink, the second being the connection's
					  source.
- dai-tdm-slot-num			: Please refer to tdm-slot.txt.
- dai-tdm-slot-width			: Please refer to tdm-slot.txt.

Required subnodes:

- simple-audio-card,dai-link		: container for the CPU and CODEC sub-nodes
					  This container may be omitted when the
					  card has only one DAI link.
					  See the examples.

- simple-audio-card,cpu			: CPU   sub-node
- simple-audio-card,codec		: CODEC sub-node

Required CPU/CODEC subnodes properties:

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

Optional CPU/CODEC subnodes properties:

- format				: CPU/CODEC specific audio format if needed.
					  see simple-audio-card,format
- frame-master				: bool property. add this if subnode is frame master
- bitclock-master			: bool property. add this if subnode is bitclock master
- bitclock-inversion			: bool property. add this if subnode has clock inversion
- frame-inversion			: bool property. add this if subnode has frame inversion
- 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)

Note:
 * For 'format', 'frame-master', 'bitclock-master', 'bitclock-inversion' and
   'frame-inversion', the simple card will use the settings of CODEC for both
   CPU and CODEC sides as we need to keep the settings identical for both ends
   of the link.

Example 1 - single DAI link:

sound {
	compatible = "simple-audio-card";
	simple-audio-card,name = "VF610-Tower-Sound-Card";
	simple-audio-card,format = "left_j";
	simple-audio-card,widgets =
		"Microphone", "Microphone Jack",
		"Headphone", "Headphone Jack",
		"Speaker", "External Speaker";
	simple-audio-card,routing =
		"MIC_IN", "Microphone Jack",
		"Headphone Jack", "HP_OUT",
		"External Speaker", "LINE_OUT";

	dai-tdm-slot-num = <2>;
	dai-tdm-slot-width = <8>;

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

	simple-audio-card,codec {
		sound-dai = <&ak4648>;
		bitclock-master;
		frame-master;
		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>;
};

Example 2 - many DAI links:

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

	simple-audio-card,dai-link@0 {		/* I2S - HDMI */
		simple-audio-card,cpu {
			sound-dai = <&audio1 0>;
		};
		simple-audio-card,codec {
			sound-dai = <&tda998x 0>;
		};
	};

	simple-audio-card,dai-link@1 {		/* S/PDIF - HDMI */
		simple-audio-card,cpu {
			sound-dai = <&audio1 1>;
		};
		simple-audio-card,codec {
			sound-dai = <&tda998x 1>;
		};
	};

	simple-audio-card,dai-link@2 {		/* S/PDIF - S/PDIF */
		simple-audio-card,cpu {
			sound-dai = <&audio1 1>;
		};
		simple-audio-card,codec {
			sound-dai = <&spdif_codec>;
		};
	};
};