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