summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/sound/st,sti-asoc-card.txt
blob: 16bcdfb6760e83aecae47135180df8b437f6f486 (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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
STMicroelectronics sti ASoC cards

The sti ASoC Sound Card can be used, for all sti SoCs using internal sti-sas
codec or external codecs.

sti sound drivers allows to expose sti SoC audio interface through the
generic ASoC simple card. For details about sound card declaration please refer to
Documentation/devicetree/bindings/sound/simple-card.txt.

1) sti-uniperiph-dai: audio dai device.
---------------------------------------

Required properties:
  - compatible: "st,sti-uni-player" or "st,sti-uni-reader"

  - st,syscfg: phandle to boot-device system configuration registers

  - clock-names: name of the clocks listed in clocks property in the same order

  - reg: CPU DAI IP Base address and size entries, listed  in same
	 order than the CPU_DAI properties.

  - reg-names: names of the mapped memory regions listed in regs property in
	       the same order.

  - interrupts: CPU_DAI interrupt line, listed in the same order than the
		CPU_DAI properties.

  - dma: CPU_DAI DMA controller phandle and DMA request line, listed in the same
	 order than the CPU_DAI properties.

  - dma-names: identifier string for each DMA request line in the dmas property.
	"tx" for "st,sti-uni-player" compatibility
	"rx" for "st,sti-uni-reader" compatibility

  - st,version: IP version integrated in SOC.

  - dai-name: DAI name that describes the IP.

  - st,mode: IP working mode depending on associated codec.
	"HDMI" connected to HDMI codec and support IEC HDMI formats (player only).
	"SPDIF" connected to SPDIF codec and support SPDIF formats (player only).
	"PCM" PCM standard mode for I2S or TDM bus.
	"TDM" TDM mode for TDM bus.

Required properties ("st,sti-uni-player" compatibility only):
  - clocks: CPU_DAI IP clock source, listed in the same order than the
	    CPU_DAI properties.

  - st,uniperiph-id: internal SOC IP instance ID.

Optional properties:
  - pinctrl-0: defined for CPU_DAI@1 and CPU_DAI@4 to describe I2S PIOs for
	       external codecs connection.

  - pinctrl-names: should contain only one value - "default".

Example:

	sti_uni_player1: sti-uni-player@1 {
		compatible = "st,sti-uni-player";
		status = "okay";
		#sound-dai-cells = <0>;
		st,syscfg = <&syscfg_core>;
		clocks = <&clk_s_d0_flexgen CLK_PCM_1>;
		reg = <0x8D81000 0x158>;
		interrupts = <GIC_SPI 85 IRQ_TYPE_NONE>;
		dmas = <&fdma0 3 0 1>;
		st,dai-name = "Uni Player #1 (I2S)";
		dma-names = "tx";
		st,uniperiph-id = <1>;
		st,version = <5>;
		st,mode = "TDM";
	};

	sti_uni_player2: sti-uni-player@2 {
		compatible = "st,sti-uni-player";
		status = "okay";
		#sound-dai-cells = <0>;
		st,syscfg = <&syscfg_core>;
		clocks = <&clk_s_d0_flexgen CLK_PCM_2>;
		reg = <0x8D82000 0x158>;
		interrupts = <GIC_SPI 86 IRQ_TYPE_NONE>;
		dmas = <&fdma0 4 0 1>;
		dai-name = "Uni Player #2 (DAC)";
		dma-names = "tx";
		st,uniperiph-id = <2>;
		st,version = <5>;
		st,mode = "PCM";
	};

	sti_uni_player3: sti-uni-player@3 {
		compatible = "st,sti-uni-player";
		status = "okay";
		#sound-dai-cells = <0>;
		st,syscfg = <&syscfg_core>;
		clocks = <&clk_s_d0_flexgen CLK_SPDIFF>;
		reg = <0x8D85000 0x158>;
		interrupts = <GIC_SPI 89 IRQ_TYPE_NONE>;
		dmas = <&fdma0 7 0 1>;
		dma-names = "tx";
		dai-name = "Uni Player #3 (SPDIF)";
		st,uniperiph-id = <3>;
		st,version = <5>;
		st,mode = "SPDIF";
	};

	sti_uni_reader1: sti-uni-reader@1 {
		compatible = "st,sti-uni-reader";
		status = "disabled";
		#sound-dai-cells = <0>;
		st,syscfg = <&syscfg_core>;
		reg = <0x8D84000 0x158>;
		interrupts = <GIC_SPI 88 IRQ_TYPE_NONE>;
		dmas = <&fdma0 6 0 1>;
		dma-names = "rx";
		dai-name = "Uni Reader #1 (HDMI RX)";
		st,version = <3>;
		st,mode = "PCM";
	};

2) sti-sas-codec: internal audio codec IPs driver
-------------------------------------------------

Required properties:
  - compatible: "st,sti<chip>-sas-codec" .
	Should be chip "st,stih416-sas-codec" or "st,stih407-sas-codec"

  - st,syscfg: phandle to boot-device system configuration registers.

  - pinctrl-0: SPDIF PIO description.

  - pinctrl-names: should contain only one value - "default".

Example:
	sti_sas_codec: sti-sas-codec {
		compatible = "st,stih407-sas-codec";
		#sound-dai-cells = <1>;
		st,reg_audio = <&syscfg_core>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_spdif_out >;
	};

Example of audio card declaration:
	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "sti audio card";
		status = "okay";

		simple-audio-card,dai-link@0 {
			/* DAC */
			format = "i2s";
			dai-tdm-slot-width = <32>;
			cpu {
				sound-dai = <&sti_uni_player2>;
			};

			codec {
				sound-dai = <&sti_sasg_codec 1>;
			};
		};
		simple-audio-card,dai-link@1 {
			/* SPDIF */
			format = "left_j";
			cpu {
				sound-dai = <&sti_uni_player3>;
			};

			codec {
				sound-dai = <&sti_sasg_codec 0>;
			};
		};
		simple-audio-card,dai-link@2 {
			/* TDM playback  */
			format = "left_j";
			frame-inversion = <1>;
			cpu {
				sound-dai = <&sti_uni_player1>;
				dai-tdm-slot-num = <16>;
				dai-tdm-slot-width = <16>;
				dai-tdm-slot-tx-mask =
					<1 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1>;
			};

			codec {
				sound-dai = <&sti_sasg_codec 3>;
			};
		};
	};