ALSA: vmaster: use position offset macro of TLV data
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sun, 13 May 2018 22:09:51 +0000 (07:09 +0900)
committerTakashi Iwai <tiwai@suse.de>
Mon, 14 May 2018 15:47:48 +0000 (17:47 +0200)
A series of SNDRV_CTL_TLVO_XXX macro was introduced for position offset
of TLV data. This commit applies a code optimization.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/vmaster.c

index 9e96186742d0fe26cc215de0e00ee0536d72fbab..58fa3f94722a41d4e89e7d33f00ba7b8f5b4ed14 100644 (file)
@@ -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;