ASoC: msm: qdsp6v2: Add capture support to a frontend
Add capture support to MultiMedia3 frontend. CRs-Fixed: 992798 Change-Id: Ie21a1c4a73c354a6dc1e733e6d2ac653f85f7647 Signed-off-by: Haynes Mathew George <hgeorge@codeaurora.org>
This commit is contained in:
parent
c5461c1aa1
commit
c8e67d5ba5
3 changed files with 88 additions and 0 deletions
|
@ -209,6 +209,18 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
|
|||
.rate_min = 8000,
|
||||
.rate_max = 192000,
|
||||
},
|
||||
.capture = {
|
||||
.stream_name = "MultiMedia3 Capture",
|
||||
.aif_name = "MM_UL3",
|
||||
.rates = (SNDRV_PCM_RATE_8000_192000|
|
||||
SNDRV_PCM_RATE_KNOT),
|
||||
.formats = (SNDRV_PCM_FMTBIT_S16_LE |
|
||||
SNDRV_PCM_FMTBIT_S24_LE),
|
||||
.channels_min = 1,
|
||||
.channels_max = 8,
|
||||
.rate_min = 8000,
|
||||
.rate_max = 48000,
|
||||
},
|
||||
.ops = &msm_fe_Multimedia_dai_ops,
|
||||
.name = "MultiMedia3",
|
||||
.probe = fe_dai_probe,
|
||||
|
|
|
@ -2270,6 +2270,7 @@ static struct snd_soc_dai_link msm8996_common_dai_links[] = {
|
|||
.dynamic = 1,
|
||||
.async_ops = ASYNC_DPCM_SND_SOC_PREPARE,
|
||||
.dpcm_playback = 1,
|
||||
.dpcm_capture = 1,
|
||||
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
|
||||
SND_SOC_DPCM_TRIGGER_POST},
|
||||
.codec_dai_name = "snd-soc-dummy-dai",
|
||||
|
|
|
@ -3787,6 +3787,60 @@ static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
|
|||
msm_routing_put_audio_mixer),
|
||||
};
|
||||
|
||||
static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
|
||||
SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
|
||||
msm_routing_put_audio_mixer),
|
||||
};
|
||||
|
||||
static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
|
||||
SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
|
||||
MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
|
||||
|
@ -6858,6 +6912,7 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
|
|||
SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
|
||||
SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
|
||||
SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
|
||||
SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
|
||||
SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
|
||||
SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
|
||||
SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
|
||||
|
@ -7496,6 +7551,8 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
|
|||
mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
|
||||
SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
|
||||
mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
|
||||
SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
|
||||
mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
|
||||
SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
|
||||
mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
|
||||
SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
|
||||
|
@ -7930,6 +7987,7 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
||||
{"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
||||
{"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
||||
{"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
||||
{"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
||||
{"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
|
||||
{"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
|
||||
|
@ -8188,6 +8246,7 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
|
||||
{"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
|
||||
{"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
|
||||
{"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
|
||||
{"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
|
||||
{"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
|
||||
{"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
|
||||
|
@ -8197,8 +8256,10 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
||||
{"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
||||
{"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
|
||||
{"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
|
||||
{"MultiMedia5 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
|
||||
{"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
|
||||
{"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
|
||||
{"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
|
||||
{"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
||||
{"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
|
||||
|
@ -8206,6 +8267,7 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
||||
{"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
||||
{"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
||||
{"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
||||
{"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
||||
{"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
||||
{"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
|
||||
|
@ -8229,6 +8291,15 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
|
||||
{"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
|
||||
|
||||
{"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
|
||||
{"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
|
||||
{"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
|
||||
{"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
|
||||
{"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
|
||||
{"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
|
||||
{"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
|
||||
{"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
|
||||
|
||||
{"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
|
||||
{"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
|
||||
{"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
|
||||
|
@ -8347,6 +8418,7 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
|
||||
|
||||
{"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
||||
{"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
||||
{"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
||||
{"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
||||
{"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
||||
|
@ -8357,12 +8429,14 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
|
||||
|
||||
{"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
||||
{"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
||||
{"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
||||
{"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
||||
{"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
||||
{"MM_UL1", NULL, "MultiMedia1 Mixer"},
|
||||
{"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
|
||||
{"MM_UL2", NULL, "MultiMedia2 Mixer"},
|
||||
{"MM_UL3", NULL, "MultiMedia3 Mixer"},
|
||||
{"MM_UL4", NULL, "MultiMedia4 Mixer"},
|
||||
{"MM_UL5", NULL, "MultiMedia5 Mixer"},
|
||||
{"MM_UL6", NULL, "MultiMedia6 Mixer"},
|
||||
|
@ -8669,6 +8743,7 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
|
||||
{"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
|
||||
{"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
|
||||
{"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
|
||||
{"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
|
||||
{"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
|
||||
{"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
|
||||
|
|
Loading…
Add table
Reference in a new issue