asoc: Add support for soft volume for mmap playback
Send command for soft volume config during pcm prepare of mmap
no irq stream
Change-Id: Iacd4c95633d53ccfe78e8abb11baeedd8b854f26
Signed-off-by: Arun Mirpuri <amirpuri@codeaurora.org>
diff --git a/asoc/msm-pcm-q6-noirq.c b/asoc/msm-pcm-q6-noirq.c
index 5b97831..6d1d30d 100644
--- a/asoc/msm-pcm-q6-noirq.c
+++ b/asoc/msm-pcm-q6-noirq.c
@@ -600,13 +600,26 @@
static int msm_pcm_prepare(struct snd_pcm_substream *substream)
{
+ int rc = 0;
struct snd_pcm_runtime *runtime = substream->runtime;
struct msm_audio *prtd = runtime->private_data;
+ struct asm_softvolume_params softvol = {
+ .period = SOFT_VOLUME_PERIOD,
+ .step = SOFT_VOLUME_STEP,
+ .rampingcurve = SOFT_VOLUME_CURVE_LINEAR,
+ };
if (!prtd || !prtd->mmap_flag)
return -EIO;
- return 0;
+ if (prtd->audio_client) {
+ rc = q6asm_set_softvolume_v2(prtd->audio_client,
+ &softvol, SOFT_VOLUME_INSTANCE_1);
+ if (rc < 0)
+ pr_err("%s: Send SoftVolume command failed rc=%d\n",
+ __func__, rc);
+ }
+ return rc;
}
static int msm_pcm_close(struct snd_pcm_substream *substream)