ALSA: usb-audio: Apply the control quirk to Plantronics headsets
authorTakashi Iwai <tiwai@suse.de>
Thu, 4 Mar 2021 08:50:09 +0000 (09:50 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 4 Mar 2021 08:50:55 +0000 (09:50 +0100)
Other Plantronics headset models seem requiring the same workaround as
C320-M to add the 20ms delay for the control messages, too.  Apply the
workaround generically for devices with the vendor ID 0x047f.

Note that the problem didn't surface before 5.11 just with luck.
Since 5.11 got a big code rewrite about the stream handling, the
parameter setup procedure has changed, and this seemed triggering the
problem more often.

BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1182552
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20210304085009.4770-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/quirks.c

index 6ef73af009138064316de3243babfa38399ececb..d3001fb18141fe02317a3056dd35e9b9b541db91 100644 (file)
@@ -1672,10 +1672,10 @@ void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,
                msleep(20);
 
        /*
-        * Plantronics C320-M needs a delay to avoid random
-        * microhpone failures.
+        * Plantronics headsets (C320, C320-M, etc) need a delay to avoid
+        * random microhpone failures.
         */
-       if (chip->usb_id == USB_ID(0x047f, 0xc025)  &&
+       if (USB_ID_VENDOR(chip->usb_id) == 0x047f &&
            (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
                msleep(20);