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