162306a36Sopenharmony_ciSTMicroelectronics sti ASoC cards
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciThe sti ASoC Sound Card can be used, for all sti SoCs using internal sti-sas
462306a36Sopenharmony_cicodec or external codecs.
562306a36Sopenharmony_ci
662306a36Sopenharmony_cisti sound drivers allows to expose sti SoC audio interface through the
762306a36Sopenharmony_cigeneric ASoC simple card. For details about sound card declaration please refer to
862306a36Sopenharmony_ciDocumentation/devicetree/bindings/sound/simple-card.yaml.
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci1) sti-uniperiph-dai: audio dai device.
1162306a36Sopenharmony_ci---------------------------------------
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciRequired properties:
1462306a36Sopenharmony_ci  - compatible: "st,stih407-uni-player-hdmi", "st,stih407-uni-player-pcm-out",
1562306a36Sopenharmony_ci		"st,stih407-uni-player-dac", "st,stih407-uni-player-spdif",
1662306a36Sopenharmony_ci		"st,stih407-uni-reader-pcm_in", "st,stih407-uni-reader-hdmi",
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci  - st,syscfg: phandle to boot-device system configuration registers
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci  - clock-names: name of the clocks listed in clocks property in the same order
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci  - reg: CPU DAI IP Base address and size entries, listed  in same
2362306a36Sopenharmony_ci	 order than the CPU_DAI properties.
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  - reg-names: names of the mapped memory regions listed in regs property in
2662306a36Sopenharmony_ci	       the same order.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  - interrupts: CPU_DAI interrupt line, listed in the same order than the
2962306a36Sopenharmony_ci		CPU_DAI properties.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  - dma: CPU_DAI DMA controller phandle and DMA request line, listed in the same
3262306a36Sopenharmony_ci	 order than the CPU_DAI properties.
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci  - dma-names: identifier string for each DMA request line in the dmas property.
3562306a36Sopenharmony_ci	"tx" for "st,sti-uni-player" compatibility
3662306a36Sopenharmony_ci	"rx" for "st,sti-uni-reader" compatibility
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciRequired properties ("st,sti-uni-player" compatibility only):
3962306a36Sopenharmony_ci  - clocks: CPU_DAI IP clock source, listed in the same order than the
4062306a36Sopenharmony_ci	    CPU_DAI properties.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciOptional properties:
4362306a36Sopenharmony_ci  - pinctrl-0: defined for CPU_DAI@1 and CPU_DAI@4 to describe I2S PIOs for
4462306a36Sopenharmony_ci	       external codecs connection.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  - pinctrl-names: should contain only one value - "default".
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  - st,tdm-mode: to declare to set TDM mode for unireader and uniplayer IPs.
4962306a36Sopenharmony_ci	Only compartible with IPs in charge of the external I2S/TDM bus.
5062306a36Sopenharmony_ci	Should be declared depending on associated codec.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciExample:
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci	sti_uni_player1: sti-uni-player@8d81000 {
5562306a36Sopenharmony_ci		compatible = "st,stih407-uni-player-hdmi";
5662306a36Sopenharmony_ci		#sound-dai-cells = <0>;
5762306a36Sopenharmony_ci		st,syscfg = <&syscfg_core>;
5862306a36Sopenharmony_ci		clocks = <&clk_s_d0_flexgen CLK_PCM_1>;
5962306a36Sopenharmony_ci		reg = <0x8D81000 0x158>;
6062306a36Sopenharmony_ci		interrupts = <GIC_SPI 85 IRQ_TYPE_NONE>;
6162306a36Sopenharmony_ci		dmas = <&fdma0 3 0 1>;
6262306a36Sopenharmony_ci		dma-names = "tx";
6362306a36Sopenharmony_ci		st,tdm-mode = <1>;
6462306a36Sopenharmony_ci	};
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci	sti_uni_player2: sti-uni-player@8d82000 {
6762306a36Sopenharmony_ci		compatible = "st,stih407-uni-player-pcm-out";
6862306a36Sopenharmony_ci		#sound-dai-cells = <0>;
6962306a36Sopenharmony_ci		st,syscfg = <&syscfg_core>;
7062306a36Sopenharmony_ci		clocks = <&clk_s_d0_flexgen CLK_PCM_2>;
7162306a36Sopenharmony_ci		reg = <0x8D82000 0x158>;
7262306a36Sopenharmony_ci		interrupts = <GIC_SPI 86 IRQ_TYPE_NONE>;
7362306a36Sopenharmony_ci		dmas = <&fdma0 4 0 1>;
7462306a36Sopenharmony_ci		dma-names = "tx";
7562306a36Sopenharmony_ci	};
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci	sti_uni_player3: sti-uni-player@8d85000 {
7862306a36Sopenharmony_ci		compatible = "st,stih407-uni-player-spdif";
7962306a36Sopenharmony_ci		#sound-dai-cells = <0>;
8062306a36Sopenharmony_ci		st,syscfg = <&syscfg_core>;
8162306a36Sopenharmony_ci		clocks = <&clk_s_d0_flexgen CLK_SPDIFF>;
8262306a36Sopenharmony_ci		reg = <0x8D85000 0x158>;
8362306a36Sopenharmony_ci		interrupts = <GIC_SPI 89 IRQ_TYPE_NONE>;
8462306a36Sopenharmony_ci		dmas = <&fdma0 7 0 1>;
8562306a36Sopenharmony_ci		dma-names = "tx";
8662306a36Sopenharmony_ci	};
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci	sti_uni_reader1: sti-uni-reader@8d84000 {
8962306a36Sopenharmony_ci		compatible = "st,stih407-uni-reader-hdmi";
9062306a36Sopenharmony_ci		#sound-dai-cells = <0>;
9162306a36Sopenharmony_ci		st,syscfg = <&syscfg_core>;
9262306a36Sopenharmony_ci		reg = <0x8D84000 0x158>;
9362306a36Sopenharmony_ci		interrupts = <GIC_SPI 88 IRQ_TYPE_NONE>;
9462306a36Sopenharmony_ci		dmas = <&fdma0 6 0 1>;
9562306a36Sopenharmony_ci		dma-names = "rx";
9662306a36Sopenharmony_ci	};
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci2) sti-sas-codec: internal audio codec IPs driver
9962306a36Sopenharmony_ci-------------------------------------------------
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ciRequired properties:
10262306a36Sopenharmony_ci  - compatible: "st,sti<chip>-sas-codec" .
10362306a36Sopenharmony_ci	Should be chip "st,stih416-sas-codec" or "st,stih407-sas-codec"
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci  - st,syscfg: phandle to boot-device system configuration registers.
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci  - pinctrl-0: SPDIF PIO description.
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci  - pinctrl-names: should contain only one value - "default".
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ciExample:
11262306a36Sopenharmony_ci	sti_sas_codec: sti-sas-codec {
11362306a36Sopenharmony_ci		compatible = "st,stih407-sas-codec";
11462306a36Sopenharmony_ci		#sound-dai-cells = <1>;
11562306a36Sopenharmony_ci		st,reg_audio = <&syscfg_core>;
11662306a36Sopenharmony_ci		pinctrl-names = "default";
11762306a36Sopenharmony_ci		pinctrl-0 = <&pinctrl_spdif_out >;
11862306a36Sopenharmony_ci	};
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ciExample of audio card declaration:
12162306a36Sopenharmony_ci	sound {
12262306a36Sopenharmony_ci		compatible = "simple-audio-card";
12362306a36Sopenharmony_ci		simple-audio-card,name = "sti audio card";
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci		simple-audio-card,dai-link@0 {
12662306a36Sopenharmony_ci			/* DAC */
12762306a36Sopenharmony_ci			format = "i2s";
12862306a36Sopenharmony_ci			dai-tdm-slot-width = <32>;
12962306a36Sopenharmony_ci			cpu {
13062306a36Sopenharmony_ci				sound-dai = <&sti_uni_player2>;
13162306a36Sopenharmony_ci			};
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci			codec {
13462306a36Sopenharmony_ci				sound-dai = <&sti_sasg_codec 1>;
13562306a36Sopenharmony_ci			};
13662306a36Sopenharmony_ci		};
13762306a36Sopenharmony_ci		simple-audio-card,dai-link@1 {
13862306a36Sopenharmony_ci			/* SPDIF */
13962306a36Sopenharmony_ci			format = "left_j";
14062306a36Sopenharmony_ci			cpu {
14162306a36Sopenharmony_ci				sound-dai = <&sti_uni_player3>;
14262306a36Sopenharmony_ci			};
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci			codec {
14562306a36Sopenharmony_ci				sound-dai = <&sti_sasg_codec 0>;
14662306a36Sopenharmony_ci			};
14762306a36Sopenharmony_ci		};
14862306a36Sopenharmony_ci		simple-audio-card,dai-link@2 {
14962306a36Sopenharmony_ci			/* TDM playback  */
15062306a36Sopenharmony_ci			format = "left_j";
15162306a36Sopenharmony_ci			frame-inversion = <1>;
15262306a36Sopenharmony_ci			cpu {
15362306a36Sopenharmony_ci				sound-dai = <&sti_uni_player1>;
15462306a36Sopenharmony_ci				dai-tdm-slot-num = <16>;
15562306a36Sopenharmony_ci				dai-tdm-slot-width = <16>;
15662306a36Sopenharmony_ci				dai-tdm-slot-tx-mask =
15762306a36Sopenharmony_ci					<1 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1>;
15862306a36Sopenharmony_ci			};
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci			codec {
16162306a36Sopenharmony_ci				sound-dai = <&sti_sasg_codec 3>;
16262306a36Sopenharmony_ci			};
16362306a36Sopenharmony_ci		};
16462306a36Sopenharmony_ci	};
165