| From 9fcd0ab130579d9742538340edda3225f2b49a3e Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Fri, 19 Aug 2011 08:30:53 +0200 |
| Subject: ALSA: usb-audio - Check the dB-range validity in the later read, too |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| commit 9fcd0ab130579d9742538340edda3225f2b49a3e upstream. |
| |
| When the initial check of dB-range failed due to the read error, try to |
| check again at the later read, too. When an invalid dB range is found, |
| remove TLV flags and notify the mixer info change. |
| |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| sound/usb/mixer.c | 13 +++++++++++-- |
| 1 file changed, 11 insertions(+), 2 deletions(-) |
| |
| --- a/sound/usb/mixer.c |
| +++ b/sound/usb/mixer.c |
| @@ -881,8 +881,17 @@ static int mixer_ctl_feature_info(struct |
| uinfo->value.integer.min = 0; |
| uinfo->value.integer.max = 1; |
| } else { |
| - if (! cval->initialized) |
| - get_min_max(cval, 0); |
| + if (!cval->initialized) { |
| + get_min_max(cval, 0); |
| + if (cval->initialized && cval->dBmin >= cval->dBmax) { |
| + kcontrol->vd[0].access &= |
| + ~(SNDRV_CTL_ELEM_ACCESS_TLV_READ | |
| + SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK); |
| + snd_ctl_notify(cval->mixer->chip->card, |
| + SNDRV_CTL_EVENT_MASK_INFO, |
| + &kcontrol->id); |
| + } |
| + } |
| uinfo->value.integer.min = 0; |
| uinfo->value.integer.max = |
| (cval->max - cval->min + cval->res - 1) / cval->res; |