diff options
| -rw-r--r-- | sound/soc/codecs/wm8958-dsp2.c | 19 | 
1 files changed, 19 insertions, 0 deletions
| diff --git a/sound/soc/codecs/wm8958-dsp2.c b/sound/soc/codecs/wm8958-dsp2.c index 5d4bc7a21df7..ca26779bb6b2 100644 --- a/sound/soc/codecs/wm8958-dsp2.c +++ b/sound/soc/codecs/wm8958-dsp2.c @@ -508,6 +508,9 @@ static int wm8958_mbc_put(struct snd_kcontrol *kcontrol,  	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);  	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); +	if (wm8994->mbc_ena[mbc] == ucontrol->value.integer.value[0]) +		return 0; +  	if (ucontrol->value.integer.value[0] > 1)  		return -EINVAL; @@ -628,6 +631,9 @@ static int wm8958_vss_put(struct snd_kcontrol *kcontrol,  	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);  	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); +	if (wm8994->vss_ena[vss] == ucontrol->value.integer.value[0]) +		return 0; +  	if (ucontrol->value.integer.value[0] > 1)  		return -EINVAL; @@ -689,6 +695,16 @@ static int wm8958_hpf_put(struct snd_kcontrol *kcontrol,  	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);  	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); +	if (hpf < 3) { +		if (wm8994->hpf1_ena[hpf % 3] == +		    ucontrol->value.integer.value[0]) +			return 0; +	} else { +		if (wm8994->hpf2_ena[hpf % 3] == +		    ucontrol->value.integer.value[0]) +			return 0; +	} +  	if (ucontrol->value.integer.value[0] > 1)  		return -EINVAL; @@ -782,6 +798,9 @@ static int wm8958_enh_eq_put(struct snd_kcontrol *kcontrol,  	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);  	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); +	if (wm8994->enh_eq_ena[eq] == ucontrol->value.integer.value[0]) +		return 0; +  	if (ucontrol->value.integer.value[0] > 1)  		return -EINVAL; | 
