[PATCH v5 18/23] ASoC: qdsp6: q6routing: Add support to MI2S Mixers

2018-04-18 Thread srinivas . kandagatla
From: Srinivas Kandagatla 

This patch add support to MI2S mixers required to select path between
ASM stream and AFE ports.

Signed-off-by: Srinivas Kandagatla 
Reviewed-and-tested-by: Rohit kumar 
---
 sound/soc/qcom/qdsp6/q6routing.c | 329 +++
 1 file changed, 329 insertions(+)

diff --git a/sound/soc/qcom/qdsp6/q6routing.c b/sound/soc/qcom/qdsp6/q6routing.c
index c6be775167b8..710c2ae652c7 100644
--- a/sound/soc/qcom/qdsp6/q6routing.c
+++ b/sound/soc/qcom/qdsp6/q6routing.c
@@ -232,6 +232,103 @@ static const struct snd_kcontrol_new 
hdmi_mixer_controls[] = {
   msm_routing_put_audio_mixer),
 };
 
+static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
+   SOC_SINGLE_EXT("MultiMedia1", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia2", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia3", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia4", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia5", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia6", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia7", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia8", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+};
+
+static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
+   SOC_SINGLE_EXT("MultiMedia1", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia2", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia3", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia4", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia5", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia6", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia7", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia8", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+};
+
+static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
+   SOC_SINGLE_EXT("MultiMedia1", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia2", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia3", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia4", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia5", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia6", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia7", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia8", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
+   

[PATCH v5 18/23] ASoC: qdsp6: q6routing: Add support to MI2S Mixers

2018-04-18 Thread srinivas . kandagatla
From: Srinivas Kandagatla 

This patch add support to MI2S mixers required to select path between
ASM stream and AFE ports.

Signed-off-by: Srinivas Kandagatla 
Reviewed-and-tested-by: Rohit kumar 
---
 sound/soc/qcom/qdsp6/q6routing.c | 329 +++
 1 file changed, 329 insertions(+)

diff --git a/sound/soc/qcom/qdsp6/q6routing.c b/sound/soc/qcom/qdsp6/q6routing.c
index c6be775167b8..710c2ae652c7 100644
--- a/sound/soc/qcom/qdsp6/q6routing.c
+++ b/sound/soc/qcom/qdsp6/q6routing.c
@@ -232,6 +232,103 @@ static const struct snd_kcontrol_new 
hdmi_mixer_controls[] = {
   msm_routing_put_audio_mixer),
 };
 
+static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
+   SOC_SINGLE_EXT("MultiMedia1", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia2", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia3", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia4", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia5", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia6", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia7", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia8", PRIMARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+};
+
+static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
+   SOC_SINGLE_EXT("MultiMedia1", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia2", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia3", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia4", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia5", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia6", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia7", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia8", SECONDARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+};
+
+static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
+   SOC_SINGLE_EXT("MultiMedia1", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia2", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia3", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia4", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia5", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia6", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia7", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+   SOC_SINGLE_EXT("MultiMedia8", QUATERNARY_MI2S_RX,
+   MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
+   msm_routing_put_audio_mixer),
+};
+
+static const struct snd_kcontrol_new