1 ============================================== 2 Creating codec to codec dai link for ALSA dapm 3 ============================================== 4 5 Mostly the flow of audio is always from CPU to 6 will look as below: 7 :: 8 9 --------- --------- 10 | | dai | | 11 CPU -------> codec 12 | | | | 13 --------- --------- 14 15 In case your system looks as below: 16 :: 17 18 --------- 19 | | 20 codec-2 21 | | 22 --------- 23 | 24 dai-2 25 | 26 ---------- --------- 27 | | dai-1 | | 28 CPU -------> codec-1 29 | | | | 30 ---------- --------- 31 | 32 dai-3 33 | 34 --------- 35 | | 36 codec-3 37 | | 38 --------- 39 40 Suppose codec-2 is a bluetooth chip and codec- 41 a speaker and you have a below scenario: 42 codec-2 will receive the audio data and the us 43 audio through codec-3 without involving the CP 44 aforementioned case is the ideal case when cod 45 connection should be used. 46 47 Your dai_link should appear as below in your m 48 file: 49 :: 50 51 /* 52 * this pcm stream only supports 24 bit, 2 ch 53 * 48k sampling rate. 54 */ 55 static const struct snd_soc_pcm_stream dsp_co 56 .formats = SNDRV_PCM_FMTBIT_S24_LE, 57 .rate_min = 48000, 58 .rate_max = 48000, 59 .channels_min = 2, 60 .channels_max = 2, 61 }; 62 63 { 64 .name = "CPU-DSP", 65 .stream_name = "CPU-DSP", 66 .cpu_dai_name = "samsung-i2s.0", 67 .codec_name = "codec-2, 68 .codec_dai_name = "codec-2-dai_name", 69 .platform_name = "samsung-i2s.0", 70 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DA 71 | SND_SOC_DAIFMT_CBM_CFM, 72 .ignore_suspend = 1, 73 .c2c_params = &dsp_codec_params, 74 .num_c2c_params = 1, 75 }, 76 { 77 .name = "DSP-CODEC", 78 .stream_name = "DSP-CODEC", 79 .cpu_dai_name = "wm0010-sdi2", 80 .codec_name = "codec-3, 81 .codec_dai_name = "codec-3-dai_name", 82 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DA 83 | SND_SOC_DAIFMT_CBM_CFM, 84 .ignore_suspend = 1, 85 .c2c_params = &dsp_codec_params, 86 .num_c2c_params = 1, 87 }, 88 89 Above code snippet is motivated from sound/soc 90 91 Note the "c2c_params" callback which lets the 92 dai_link is a codec to codec connection. 93 94 In dapm core a route is created between cpu_da 95 and codec_dai capture widget for playback path 96 true for capture path. In order for this afore 97 triggered, DAPM needs to find a valid endpoint 98 a sink or source widget corresponding to playb 99 respectively. 100 101 In order to trigger this dai_link widget, a th 102 the speaker amp can be created as demonstrated 103 sets appropriate constraints for the device ev 104 105 Make sure to name your corresponding cpu and c 106 dai names ending with "Playback" and "Capture" 107 will link and power those dais based on the na 108 109 A dai_link in a "simple-audio-card" will autom 110 codec to codec when all DAIs on the link belon 111 The dai_link will be initialized with the subs 112 (channels, format, sample rate) supported by a 113 there is no way to provide these parameters in 114 mostly useful for communication with simple fi 115 as a Bluetooth controller or cellular modem.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.