xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/sound/st,sti-asoc-card.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunSTMicroelectronics sti ASoC cards
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunThe sti ASoC Sound Card can be used, for all sti SoCs using internal sti-sas
4*4882a593Smuzhiyuncodec or external codecs.
5*4882a593Smuzhiyun
6*4882a593Smuzhiyunsti sound drivers allows to expose sti SoC audio interface through the
7*4882a593Smuzhiyungeneric ASoC simple card. For details about sound card declaration please refer to
8*4882a593SmuzhiyunDocumentation/devicetree/bindings/sound/simple-card.yaml.
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun1) sti-uniperiph-dai: audio dai device.
11*4882a593Smuzhiyun---------------------------------------
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunRequired properties:
14*4882a593Smuzhiyun  - compatible: "st,stih407-uni-player-hdmi", "st,stih407-uni-player-pcm-out",
15*4882a593Smuzhiyun		"st,stih407-uni-player-dac", "st,stih407-uni-player-spdif",
16*4882a593Smuzhiyun		"st,stih407-uni-reader-pcm_in", "st,stih407-uni-reader-hdmi",
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun  - st,syscfg: phandle to boot-device system configuration registers
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun  - clock-names: name of the clocks listed in clocks property in the same order
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun  - reg: CPU DAI IP Base address and size entries, listed  in same
23*4882a593Smuzhiyun	 order than the CPU_DAI properties.
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun  - reg-names: names of the mapped memory regions listed in regs property in
26*4882a593Smuzhiyun	       the same order.
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun  - interrupts: CPU_DAI interrupt line, listed in the same order than the
29*4882a593Smuzhiyun		CPU_DAI properties.
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun  - dma: CPU_DAI DMA controller phandle and DMA request line, listed in the same
32*4882a593Smuzhiyun	 order than the CPU_DAI properties.
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun  - dma-names: identifier string for each DMA request line in the dmas property.
35*4882a593Smuzhiyun	"tx" for "st,sti-uni-player" compatibility
36*4882a593Smuzhiyun	"rx" for "st,sti-uni-reader" compatibility
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunRequired properties ("st,sti-uni-player" compatibility only):
39*4882a593Smuzhiyun  - clocks: CPU_DAI IP clock source, listed in the same order than the
40*4882a593Smuzhiyun	    CPU_DAI properties.
41*4882a593Smuzhiyun
42*4882a593SmuzhiyunOptional properties:
43*4882a593Smuzhiyun  - pinctrl-0: defined for CPU_DAI@1 and CPU_DAI@4 to describe I2S PIOs for
44*4882a593Smuzhiyun	       external codecs connection.
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun  - pinctrl-names: should contain only one value - "default".
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun  - st,tdm-mode: to declare to set TDM mode for unireader and uniplayer IPs.
49*4882a593Smuzhiyun	Only compartible with IPs in charge of the external I2S/TDM bus.
50*4882a593Smuzhiyun	Should be declared depending on associated codec.
51*4882a593Smuzhiyun
52*4882a593SmuzhiyunExample:
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun	sti_uni_player1: sti-uni-player@8d81000 {
55*4882a593Smuzhiyun		compatible = "st,stih407-uni-player-hdmi";
56*4882a593Smuzhiyun		#sound-dai-cells = <0>;
57*4882a593Smuzhiyun		st,syscfg = <&syscfg_core>;
58*4882a593Smuzhiyun		clocks = <&clk_s_d0_flexgen CLK_PCM_1>;
59*4882a593Smuzhiyun		reg = <0x8D81000 0x158>;
60*4882a593Smuzhiyun		interrupts = <GIC_SPI 85 IRQ_TYPE_NONE>;
61*4882a593Smuzhiyun		dmas = <&fdma0 3 0 1>;
62*4882a593Smuzhiyun		dma-names = "tx";
63*4882a593Smuzhiyun		st,tdm-mode = <1>;
64*4882a593Smuzhiyun	};
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun	sti_uni_player2: sti-uni-player@8d82000 {
67*4882a593Smuzhiyun		compatible = "st,stih407-uni-player-pcm-out";
68*4882a593Smuzhiyun		#sound-dai-cells = <0>;
69*4882a593Smuzhiyun		st,syscfg = <&syscfg_core>;
70*4882a593Smuzhiyun		clocks = <&clk_s_d0_flexgen CLK_PCM_2>;
71*4882a593Smuzhiyun		reg = <0x8D82000 0x158>;
72*4882a593Smuzhiyun		interrupts = <GIC_SPI 86 IRQ_TYPE_NONE>;
73*4882a593Smuzhiyun		dmas = <&fdma0 4 0 1>;
74*4882a593Smuzhiyun		dma-names = "tx";
75*4882a593Smuzhiyun	};
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun	sti_uni_player3: sti-uni-player@8d85000 {
78*4882a593Smuzhiyun		compatible = "st,stih407-uni-player-spdif";
79*4882a593Smuzhiyun		#sound-dai-cells = <0>;
80*4882a593Smuzhiyun		st,syscfg = <&syscfg_core>;
81*4882a593Smuzhiyun		clocks = <&clk_s_d0_flexgen CLK_SPDIFF>;
82*4882a593Smuzhiyun		reg = <0x8D85000 0x158>;
83*4882a593Smuzhiyun		interrupts = <GIC_SPI 89 IRQ_TYPE_NONE>;
84*4882a593Smuzhiyun		dmas = <&fdma0 7 0 1>;
85*4882a593Smuzhiyun		dma-names = "tx";
86*4882a593Smuzhiyun	};
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun	sti_uni_reader1: sti-uni-reader@8d84000 {
89*4882a593Smuzhiyun		compatible = "st,stih407-uni-reader-hdmi";
90*4882a593Smuzhiyun		#sound-dai-cells = <0>;
91*4882a593Smuzhiyun		st,syscfg = <&syscfg_core>;
92*4882a593Smuzhiyun		reg = <0x8D84000 0x158>;
93*4882a593Smuzhiyun		interrupts = <GIC_SPI 88 IRQ_TYPE_NONE>;
94*4882a593Smuzhiyun		dmas = <&fdma0 6 0 1>;
95*4882a593Smuzhiyun		dma-names = "rx";
96*4882a593Smuzhiyun	};
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun2) sti-sas-codec: internal audio codec IPs driver
99*4882a593Smuzhiyun-------------------------------------------------
100*4882a593Smuzhiyun
101*4882a593SmuzhiyunRequired properties:
102*4882a593Smuzhiyun  - compatible: "st,sti<chip>-sas-codec" .
103*4882a593Smuzhiyun	Should be chip "st,stih416-sas-codec" or "st,stih407-sas-codec"
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun  - st,syscfg: phandle to boot-device system configuration registers.
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun  - pinctrl-0: SPDIF PIO description.
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun  - pinctrl-names: should contain only one value - "default".
110*4882a593Smuzhiyun
111*4882a593SmuzhiyunExample:
112*4882a593Smuzhiyun	sti_sas_codec: sti-sas-codec {
113*4882a593Smuzhiyun		compatible = "st,stih407-sas-codec";
114*4882a593Smuzhiyun		#sound-dai-cells = <1>;
115*4882a593Smuzhiyun		st,reg_audio = <&syscfg_core>;
116*4882a593Smuzhiyun		pinctrl-names = "default";
117*4882a593Smuzhiyun		pinctrl-0 = <&pinctrl_spdif_out >;
118*4882a593Smuzhiyun	};
119*4882a593Smuzhiyun
120*4882a593SmuzhiyunExample of audio card declaration:
121*4882a593Smuzhiyun	sound {
122*4882a593Smuzhiyun		compatible = "simple-audio-card";
123*4882a593Smuzhiyun		simple-audio-card,name = "sti audio card";
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun		simple-audio-card,dai-link@0 {
126*4882a593Smuzhiyun			/* DAC */
127*4882a593Smuzhiyun			format = "i2s";
128*4882a593Smuzhiyun			dai-tdm-slot-width = <32>;
129*4882a593Smuzhiyun			cpu {
130*4882a593Smuzhiyun				sound-dai = <&sti_uni_player2>;
131*4882a593Smuzhiyun			};
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun			codec {
134*4882a593Smuzhiyun				sound-dai = <&sti_sasg_codec 1>;
135*4882a593Smuzhiyun			};
136*4882a593Smuzhiyun		};
137*4882a593Smuzhiyun		simple-audio-card,dai-link@1 {
138*4882a593Smuzhiyun			/* SPDIF */
139*4882a593Smuzhiyun			format = "left_j";
140*4882a593Smuzhiyun			cpu {
141*4882a593Smuzhiyun				sound-dai = <&sti_uni_player3>;
142*4882a593Smuzhiyun			};
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun			codec {
145*4882a593Smuzhiyun				sound-dai = <&sti_sasg_codec 0>;
146*4882a593Smuzhiyun			};
147*4882a593Smuzhiyun		};
148*4882a593Smuzhiyun		simple-audio-card,dai-link@2 {
149*4882a593Smuzhiyun			/* TDM playback  */
150*4882a593Smuzhiyun			format = "left_j";
151*4882a593Smuzhiyun			frame-inversion = <1>;
152*4882a593Smuzhiyun			cpu {
153*4882a593Smuzhiyun				sound-dai = <&sti_uni_player1>;
154*4882a593Smuzhiyun				dai-tdm-slot-num = <16>;
155*4882a593Smuzhiyun				dai-tdm-slot-width = <16>;
156*4882a593Smuzhiyun				dai-tdm-slot-tx-mask =
157*4882a593Smuzhiyun					<1 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1>;
158*4882a593Smuzhiyun			};
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun			codec {
161*4882a593Smuzhiyun				sound-dai = <&sti_sasg_codec 3>;
162*4882a593Smuzhiyun			};
163*4882a593Smuzhiyun		};
164*4882a593Smuzhiyun	};
165