diff --git a/asoc/codecs/wsa884x/wsa884x.c b/asoc/codecs/wsa884x/wsa884x.c index 1d12c48b16..9326097572 100644 --- a/asoc/codecs/wsa884x/wsa884x.c +++ b/asoc/codecs/wsa884x/wsa884x.c @@ -798,7 +798,12 @@ static int wsa_dev_mode_put(struct snd_kcontrol *kcontrol, int dev_mode; int wsa_dev_index; - dev_mode = ucontrol->value.integer.value[0]; + if ((ucontrol->value.integer.value[0] >= SPEAKER) && + (ucontrol->value.integer.value[0] < MAX_DEV_MODE)) + dev_mode = ucontrol->value.integer.value[0]; + else + return -EINVAL; + dev_dbg(component->dev, "%s: Dev Mode current: %d, new: %d\n", __func__, wsa884x->dev_mode, dev_mode);