ALSA: usb-audio: fix Corsair Virtuoso mixer label collision
authorChris Boyle <chris@boyle.name>
Fri, 27 Dec 2019 09:40:53 +0000 (10:40 +0100)
committerTakashi Iwai <tiwai@suse.de>
Sat, 28 Dec 2019 13:17:57 +0000 (14:17 +0100)
The Corsair Virtuoso RGB Wireless is a USB headset with a mic and a
sidetone feature. Label its mixer appropriately instead of all
"Headset", so that applications such as Pulseaudio don't just move
the sidetone control when they intend the main Headset control.

Signed-off-by: Chris Boyle <chris@boyle.name>
Link: https://lore.kernel.org/r/20191227094053.GA12167@nova.chris.boyle.name
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/mixer_maps.c

index 73baf39..d094934 100644 (file)
@@ -349,6 +349,16 @@ static const struct usbmix_name_map dell_alc4020_map[] = {
        { 0 }
 };
 
        { 0 }
 };
 
+/*
+ * Corsair Virtuoso calls everything "Headset" without this, leading to
+ * applications moving the sidetone control instead of the main one.
+ */
+static const struct usbmix_name_map corsair_virtuoso_map[] = {
+       { 3, "Mic Capture" },
+       { 6, "Sidetone Playback" },
+       { 0 }
+};
+
 /*
  * Control map entries
  */
 /*
  * Control map entries
  */
@@ -468,6 +478,16 @@ static struct usbmix_ctl_map usbmix_ctl_maps[] = {
                .id = USB_ID(0x05a7, 0x1020),
                .map = bose_companion5_map,
        },
                .id = USB_ID(0x05a7, 0x1020),
                .map = bose_companion5_map,
        },
+       {
+               /* Corsair Virtuoso (wired mode) */
+               .id = USB_ID(0x1b1c, 0x0a41),
+               .map = corsair_virtuoso_map,
+       },
+       {
+               /* Corsair Virtuoso (wireless mode) */
+               .id = USB_ID(0x1b1c, 0x0a42),
+               .map = corsair_virtuoso_map,
+       },
        { 0 } /* terminator */
 };
 
        { 0 } /* terminator */
 };