Hello,
I'm currently attempting to get TLV320AIC3104 audio working on our board (Qualcomm mdm9615).
hardware: mdm9615 + TLV320AIC3104
software: yocto 1.6 (linux kernel 3.4.91)
I want to add both platform info and codec info into machine file (linux/sound/soc/msm/mdm9615.c) in linux way. but there are too many snd_soc_dai_link structure . I don't know which one to choose for adding codec info or every one should been changed. hope for your advice , Tks!
specific code as follow.
/* Digital audio interface glue - connects codec <---> CPU */ static struct snd_soc_dai_link mdm9615_dai_ar7[] = { /* FrontEnd DAI Links */ { .name = "MDM9615 Media1", .stream_name = "MultiMedia1", .cpu_dai_name = "MultiMedia1", .platform_name = "msm-pcm-dsp", .dynamic = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .ignore_suspend = 1, .be_id = MSM_FRONTEND_DAI_MULTIMEDIA1 }, { .name = "MDM9615 Media2", .stream_name = "MultiMedia2", .cpu_dai_name = "MultiMedia2", .platform_name = "msm-pcm-dsp", .dynamic = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .ignore_suspend = 1, .be_id = MSM_FRONTEND_DAI_MULTIMEDIA2, }, { .name = "Circuit-Switch Voice", .stream_name = "CS-Voice", .cpu_dai_name = "CS-VOICE", .platform_name = "msm-pcm-voice", .dynamic = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .ignore_suspend = 1, .be_id = MSM_FRONTEND_DAI_CS_VOICE, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, }, { .name = "MSM VoIP", .stream_name = "VoIP", .cpu_dai_name = "VoIP", .platform_name = "msm-voip-dsp", .dynamic = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .ignore_suspend = 1, .be_id = MSM_FRONTEND_DAI_VOIP, }, { .name = "MSM AFE-PCM RX", .stream_name = "AFE-PROXY RX", .cpu_dai_name = "msm-dai-q6.241", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .platform_name = "msm-pcm-afe", .ignore_suspend = 1, }, { .name = "MSM AFE-PCM TX", .stream_name = "AFE-PROXY TX", .cpu_dai_name = "msm-dai-q6.240", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-tx", .platform_name = "msm-pcm-afe", .ignore_suspend = 1, }, { .name = "SLIMBUS_0 Hostless", .stream_name = "SLIMBUS_0 Hostless", .cpu_dai_name = "SLIMBUS0_HOSTLESS", .platform_name = "msm-pcm-hostless", .dynamic = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, /* .be_id = do not care */ }, { .name = "AUXPCM Hostless", .stream_name = "AUXPCM Hostless", .cpu_dai_name = "AUXPCM_HOSTLESS", .platform_name = "msm-pcm-hostless", .dynamic = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, }, { .name = "VoLTE", .stream_name = "VoLTE", .cpu_dai_name = "VoLTE", .platform_name = "msm-pcm-voice", .dynamic = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .be_id = MSM_FRONTEND_DAI_VOLTE, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, }, { .name = "DTMF RX Hostless", .stream_name = "DTMF RX Hostless", .cpu_dai_name = "DTMF_RX_HOSTLESS", .platform_name = "msm-pcm-dtmf", .dynamic = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .ignore_suspend = 1, .be_id = MSM_FRONTEND_DAI_DTMF_RX, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, }, { .name = "DTMF TX", .stream_name = "DTMF TX", .cpu_dai_name = "msm-dai-stub", .platform_name = "msm-pcm-dtmf", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-tx", .ignore_suspend = 1, }, { .name = "CS-VOICE HOST RX CAPTURE", .stream_name = "CS-VOICE HOST RX CAPTURE", .cpu_dai_name = "msm-dai-stub", .platform_name = "msm-host-pcm-voice", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-tx", .ignore_suspend = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, }, { .name = "CS-VOICE HOST RX PLAYBACK", .stream_name = "CS-VOICE HOST RX PLAYBACK", .cpu_dai_name = "msm-dai-stub", .platform_name = "msm-host-pcm-voice", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .ignore_suspend = 1, }, { .name = "CS-VOICE HOST TX CAPTURE", .stream_name = "CS-VOICE HOST TX CAPTURE", .cpu_dai_name = "msm-dai-stub", .platform_name = "msm-host-pcm-voice", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-tx", .ignore_suspend = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, }, { .name = "CS-VOICE HOST TX PLAYBACK", .stream_name = "CS-VOICE HOST TX PLAYBACK", .cpu_dai_name = "msm-dai-stub", .platform_name = "msm-host-pcm-voice", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .ignore_suspend = 1, }, /* Backend AFE DAI Links */ { .name = LPASS_BE_AFE_PCM_RX, .stream_name = "AFE Playback", .cpu_dai_name = "msm-dai-q6.224", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_AFE_PCM_RX, }, { .name = LPASS_BE_AFE_PCM_TX, .stream_name = "AFE Capture", .cpu_dai_name = "msm-dai-q6.225", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-tx", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_AFE_PCM_TX, }, /* Incall Music BACK END DAI Link */ { .name = LPASS_BE_VOICE_PLAYBACK_TX, .stream_name = "Voice Farend Playback", .cpu_dai_name = "msm-dai-q6.32773", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_VOICE_PLAYBACK_TX, .be_hw_params_fixup = mdm9615_be_hw_params_fixup, }, /* Incall Record Uplink BACK END DAI Link */ { .name = LPASS_BE_INCALL_RECORD_TX, .stream_name = "Voice Uplink Capture", .cpu_dai_name = "msm-dai-q6.32772", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-tx", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_VOICE_PLAYBACK_TX, .be_id = MSM_BACKEND_DAI_INCALL_RECORD_TX, .be_hw_params_fixup = mdm9615_be_hw_params_fixup, }, /* Incall Record Downlink BACK END DAI Link */ { .name = LPASS_BE_INCALL_RECORD_RX, .stream_name = "Voice Downlink Capture", .cpu_dai_name = "msm-dai-q6.32771", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-tx", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_INCALL_RECORD_RX, .be_hw_params_fixup = mdm9615_be_hw_params_fixup, .ignore_pmdown_time = 1, /* this dailink has playback support */ }, /* SECONDARY AUX PCM Backend DAI Links */ { .name = LPASS_BE_SEC_AUXPCM_RX, .stream_name = "SEC AUX PCM Playback", .cpu_dai_name = "msm-dai-q6.12", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .init = &mdm9615_ar7_sec_auxpcm_init, .no_pcm = 1, .be_id = MSM_BACKEND_DAI_SEC_AUXPCM_RX, .be_hw_params_fixup = mdm9615_ar7_sec_auxpcm_be_params_fixup, .ops = &mdm9615_ar7_sec_auxpcm_be_ops, }, { .name = LPASS_BE_SEC_AUXPCM_TX, .stream_name = "SEC AUX PCM Capture", .cpu_dai_name = "msm-dai-q6.13", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-tx", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_SEC_AUXPCM_TX, .be_hw_params_fixup = mdm9615_ar7_sec_auxpcm_be_params_fixup, .ops = &mdm9615_ar7_sec_auxpcm_be_ops, }, { .name = LPASS_BE_SEC_I2S_RX, .stream_name = "Secondary I2S Playback", .cpu_dai_name = "msm-dai-q6.4", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .init = &mdm9615_ar7_sec_i2s_audrx_init, .no_pcm = 1, .be_id = MSM_BACKEND_DAI_SEC_I2S_RX, .be_hw_params_fixup = msm9615_i2s_rx_be_hw_params_fixup, .ops = &msm9615_i2s_be_ops, }, { .name = LPASS_BE_SEC_I2S_TX, .stream_name = "Secondary I2S Capture", .cpu_dai_name = "msm-dai-q6.5", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-tx", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_SEC_I2S_TX, .be_hw_params_fixup = msm9615_i2s_tx_be_hw_params_fixup, .ops = &msm9615_i2s_be_ops, }, /* Backend SlimBus DAI Links */ /* SWISTART */ #if !defined(CONFIG_SIERRA_INTERNAL_CODEC) && !defined(CONFIG_SIERRA_EXTERNAL_CODEC) { .name = LPASS_BE_SLIMBUS_0_RX, .stream_name = "Slimbus Playback", .cpu_dai_name = "msm-dai-q6.16384", .platform_name = "msm-pcm-routing", .codec_name = "tabla_codec", .codec_dai_name = "tabla_rx1", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_SLIMBUS_0_RX, .init = &mdm9615_audrx_init, .be_hw_params_fixup = mdm9615_slim_0_rx_be_hw_params_fixup, .ops = &mdm9615_be_ops, }, { .name = LPASS_BE_SLIMBUS_0_TX, .stream_name = "Slimbus Capture", .cpu_dai_name = "msm-dai-q6.16385", .platform_name = "msm-pcm-routing", .codec_name = "tabla_codec", .codec_dai_name = "tabla_tx1", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_SLIMBUS_0_TX, .be_hw_params_fixup = mdm9615_slim_0_tx_be_hw_params_fixup, .ops = &mdm9615_be_ops, }, #else #ifdef CONFIG_WCD9310_CODEC { .name = LPASS_BE_SLIMBUS_0_RX, .stream_name = "Slimbus Playback", .cpu_dai_name = "msm-dai-q6.16384", .platform_name = "msm-pcm-routing", .codec_name = "tabla_codec", .codec_dai_name = "tabla_rx1", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_SLIMBUS_0_RX, .init = &mdm9615_audrx_init, .be_hw_params_fixup = mdm9615_slim_0_rx_be_hw_params_fixup, .ops = &mdm9615_be_ops, }, { .name = LPASS_BE_SLIMBUS_0_TX, .stream_name = "Slimbus Capture", .cpu_dai_name = "msm-dai-q6.16385", .platform_name = "msm-pcm-routing", .codec_name = "tabla_codec", .codec_dai_name = "tabla_tx1", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_SLIMBUS_0_TX, .be_hw_params_fixup = mdm9615_slim_0_tx_be_hw_params_fixup, .ops = &mdm9615_be_ops, }, #elif defined(CONFIG_WCD9304_CODEC) { .name = LPASS_BE_SLIMBUS_0_RX, .stream_name = "Slimbus Playback", .cpu_dai_name = "msm-dai-q6.16384", .platform_name = "msm-pcm-routing", .codec_name = "sitar_codec", .codec_dai_name = "sitar_rx1", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_SLIMBUS_0_RX, .init = &mdm9615_audrx_init, .be_hw_params_fixup = mdm9615_slim_0_rx_be_hw_params_fixup, .ops = &mdm9615_be_ops, }, { .name = LPASS_BE_SLIMBUS_0_TX, .stream_name = "Slimbus Capture", .cpu_dai_name = "msm-dai-q6.16385", .platform_name = "msm-pcm-routing", .codec_name = "sitar_codec", .codec_dai_name = "sitar_tx1", .no_pcm = 1, .be_id = MSM_BACKEND_DAI_SLIMBUS_0_TX, .be_hw_params_fixup = mdm9615_slim_0_tx_be_hw_params_fixup, .ops = &mdm9615_be_ops, }, #endif #endif /* SWISTOP */ };