OSDN Git Service

ASoC: msm: Implement HFP tx mute get function
authorDhanalakshmi Siddani <dsiddani@codeaurora.org>
Fri, 22 Jul 2016 09:45:05 +0000 (15:15 +0530)
committerGerrit - the friendly Code Review server <code-review@localhost>
Thu, 28 Jul 2016 08:18:31 +0000 (01:18 -0700)
Implement function to get HFP Tx mute status.

CRs-Fixed: 1045063
Change-Id: I64931decb9948ed47f046c0b6267150fe512a3dc
Signed-off-by: Dhanalakshmi Siddani <dsiddani@codeaurora.org>
sound/soc/msm/qdsp6v2/msm-pcm-loopback-v2.c

index 3c75e30..a75a02b 100644 (file)
@@ -65,6 +65,8 @@ static struct fe_dai_session_map session_map[LOOPBACK_SESSION_MAX] = {
        { {}, NULL},
 };
 
+static u32 hfp_tx_mute;
+
 static void stop_pcm(struct msm_pcm_loopback *pcm);
 static int msm_pcm_loopback_get_session(struct snd_soc_pcm_runtime *rtd,
                                        struct msm_pcm_loopback **pcm);
@@ -109,6 +111,13 @@ static void msm_pcm_loopback_event_handler(uint32_t opcode, uint32_t token,
        }
 }
 
+static int msm_loopback_session_mute_get(struct snd_kcontrol *kcontrol,
+                                        struct snd_ctl_elem_value *ucontrol)
+{
+       ucontrol->value.integer.value[0] = hfp_tx_mute;
+       return 0;
+}
+
 static int msm_loopback_session_mute_put(struct snd_kcontrol *kcontrol,
                                         struct snd_ctl_elem_value *ucontrol)
 {
@@ -123,7 +132,7 @@ static int msm_loopback_session_mute_put(struct snd_kcontrol *kcontrol,
        }
 
        pr_debug("%s: mute=%d\n", __func__, mute);
-
+       hfp_tx_mute = mute;
        for (n = 0; n < LOOPBACK_SESSION_MAX; n++) {
                if (!strcmp(session_map[n].stream_name, "MultiMedia6"))
                        pcm = session_map[n].loopback_priv;
@@ -140,7 +149,8 @@ done:
 
 static struct snd_kcontrol_new msm_loopback_controls[] = {
        SOC_SINGLE_EXT("HFP TX Mute", SND_SOC_NOPM, 0, 1, 0,
-                       NULL, msm_loopback_session_mute_put),
+                       msm_loopback_session_mute_get,
+                       msm_loopback_session_mute_put),
 };
 
 static int msm_pcm_loopback_probe(struct snd_soc_platform *platform)