ASoC: sound: soc: fix incorrect max value

The max value stands for maximum number of levels in SX control.
The value was adjusted inappropriately, which causes inconsistency
between max and min value. While calculating the max number of levels,
the code assumes negative value of mc->min. Positive mc->min leads
to incorrect number of levels.
This fix covers the risk.

CRs-Fixed: 1053735
Change-Id: I71bd8f11ff9faff9252129d84c1a80845fc2fe2a
Signed-off-by: Xiaojun Sang <xsang@codeaurora.org>
Signed-off-by: Banajit Goswami <bgoswami@codeaurora.org>
diff --git a/sound/soc/soc-ops.c b/sound/soc/soc-ops.c
index d072074..19d6af8 100644
--- a/sound/soc/soc-ops.c
+++ b/sound/soc/soc-ops.c
@@ -201,7 +201,7 @@
 
 	uinfo->count = snd_soc_volsw_is_stereo(mc) ? 2 : 1;
 	uinfo->value.integer.min = 0;
-	if (mc->min < 0 && (uinfo->type == SNDRV_CTL_ELEM_TYPE_INTEGER))
+	if (uinfo->type == SNDRV_CTL_ELEM_TYPE_INTEGER)
 		uinfo->value.integer.max = platform_max - mc->min;
 	else
 		uinfo->value.integer.max = platform_max;
@@ -224,14 +224,12 @@
 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;
 }