|
@@ -421,13 +421,15 @@ struct snd_kcontrol *snd_ctl_make_virtual_master(char *name,
|
|
|
kctl->private_free = master_free;
|
|
|
|
|
|
/* additional (constant) TLV read */
|
|
|
- if (tlv &&
|
|
|
- (tlv[0] == SNDRV_CTL_TLVT_DB_SCALE ||
|
|
|
- tlv[0] == SNDRV_CTL_TLVT_DB_MINMAX ||
|
|
|
- tlv[0] == SNDRV_CTL_TLVT_DB_MINMAX_MUTE)) {
|
|
|
- kctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_TLV_READ;
|
|
|
- memcpy(master->tlv, tlv, sizeof(master->tlv));
|
|
|
- kctl->tlv.p = master->tlv;
|
|
|
+ if (tlv) {
|
|
|
+ unsigned int type = tlv[SNDRV_CTL_TLVO_TYPE];
|
|
|
+ if (type == SNDRV_CTL_TLVT_DB_SCALE ||
|
|
|
+ type == SNDRV_CTL_TLVT_DB_MINMAX ||
|
|
|
+ type == SNDRV_CTL_TLVT_DB_MINMAX_MUTE) {
|
|
|
+ kctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_TLV_READ;
|
|
|
+ memcpy(master->tlv, tlv, sizeof(master->tlv));
|
|
|
+ kctl->tlv.p = master->tlv;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return kctl;
|