ASoC: Update the Max value of integer controls

When control value is queried, framework is returning the
min value as zero even if min is negative.
This change will make sure that frame work will update
the max value in cases where min is negative.

Change-Id: I4e5c70a659ded61c4094f1622611f82994df86b0
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
Signed-off-by: Banajit Goswami <bgoswami@codeaurora.org>
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Meng Wang <mwang@codeaurora.org>
This commit is contained in:
Sudheer Papothi 2016-01-29 01:37:55 +05:30 • committed by Meng Wang
commit 5c0b877358

View file

@ -196,7 +196,10 @@ int snd_soc_info_volsw(struct snd_kcontrol *kcontrol,
uinfo->count = snd_soc_volsw_is_stereo(mc) ? 2 : 1;
uinfo->value.integer.min = 0;
uinfo->value.integer.max = platform_max - mc->min;
if (uinfo->type == SNDRV_CTL_ELEM_TYPE_INTEGER)
uinfo->value.integer.max = platform_max - mc->min;
else
uinfo->value.integer.max = platform_max;
return 0;
}
EXPORT_SYMBOL_GPL(snd_soc_info_volsw);
@ -216,15 +219,11 @@ EXPORT_SYMBOL_GPL(snd_soc_info_volsw);
int snd_soc_info_volsw_sx(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo)
{
struct soc_mixer_control *mc =
(struct soc_mixer_control *)kcontrol->private_value;
snd_soc_info_volsw(kcontrol, uinfo);
/* Max represents the number of levels in an SX control not the
* maximum value, so add the minimum value back on
* maximum value, uinfo->value.integer.max is set to number of levels
* in snd_soc_info_volsw. No further adjustment is necessary.
*/
uinfo->value.integer.max += mc->min;
return 0;
}
EXPORT_SYMBOL_GPL(snd_soc_info_volsw_sx);