|
@@ -881,8 +881,17 @@ static int mixer_ctl_feature_info(struct snd_kcontrol *kcontrol, struct snd_ctl_
|
|
|
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;
|