ASoC: msm: send gain info for all channels mask
- currently gain is added for only number of channels and clip channel count is send to dsp. - but it is possible that channel mask that driver has is different than what dsp discovers after decoding the codec config data - volume will not be applied to channels that differ between driver and dsp and device volume will not apply on these channels - change is to control multi-channel volume using master gain Change-Id: Icd8ca4e935d9095dd9ef8b65eff34629326fb563 Signed-off-by: vivek mehta <mvivek@codeaurora.org>
This commit is contained in:
parent
be8713afec
commit
092ca0fe36
1 changed files with 4 additions and 7 deletions
|
@ -211,7 +211,7 @@ static int msm_compr_set_volume(struct snd_compr_stream *cstream,
|
||||||
uint32_t volume_l, uint32_t volume_r)
|
uint32_t volume_l, uint32_t volume_r)
|
||||||
{
|
{
|
||||||
struct msm_compr_audio *prtd;
|
struct msm_compr_audio *prtd;
|
||||||
int rc = 0, i;
|
int rc = 0;
|
||||||
uint32_t avg_vol, gain_list[VOLUME_CONTROL_MAX_CHANNELS];
|
uint32_t avg_vol, gain_list[VOLUME_CONTROL_MAX_CHANNELS];
|
||||||
uint32_t num_channels;
|
uint32_t num_channels;
|
||||||
struct snd_soc_pcm_runtime *rtd;
|
struct snd_soc_pcm_runtime *rtd;
|
||||||
|
@ -255,9 +255,7 @@ static int msm_compr_set_volume(struct snd_compr_stream *cstream,
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
avg_vol = (volume_l + volume_r) / 2;
|
avg_vol = (volume_l + volume_r) / 2;
|
||||||
for (i = 0; i < prtd->num_channels; i++)
|
rc = q6asm_set_volume(prtd->audio_client, avg_vol);
|
||||||
gain_list[i] = avg_vol;
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
gain_list[0] = volume_l;
|
gain_list[0] = volume_l;
|
||||||
gain_list[1] = volume_r;
|
gain_list[1] = volume_r;
|
||||||
|
@ -267,11 +265,10 @@ static int msm_compr_set_volume(struct snd_compr_stream *cstream,
|
||||||
num_channels = 3;
|
num_channels = 3;
|
||||||
use_default = true;
|
use_default = true;
|
||||||
}
|
}
|
||||||
|
rc = q6asm_set_multich_gain(prtd->audio_client, num_channels,
|
||||||
|
gain_list, chmap, use_default);
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = q6asm_set_multich_gain(prtd->audio_client, num_channels,
|
|
||||||
gain_list, chmap, use_default);
|
|
||||||
|
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
pr_err("%s: Send vol gain command failed rc=%d\n",
|
pr_err("%s: Send vol gain command failed rc=%d\n",
|
||||||
__func__, rc);
|
__func__, rc);
|
||||||
|
|
Loading…
Add table
Reference in a new issue