ALSA: usb-audio: Apply async workaround for Scarlett 2i4 2nd gen
authorAlexander Tsoy <alexander@tsoy.me>
Tue, 21 Apr 2020 19:09:08 +0000 (22:09 +0300)
committerTakashi Iwai <tiwai@suse.de>
Tue, 21 Apr 2020 19:30:28 +0000 (21:30 +0200)
Due to rounding error driver sometimes incorrectly calculate next packet
size, which results in audible clicks on devices with synchronous playback
endpoints. For example on a high speed bus and a sample rate 44.1 kHz it
loses one sample every ~40.9 seconds. Fortunately playback interface on
Scarlett 2i4 2nd gen has a working explicit feedback endpoint, so we can
switch playback data endpoint to asynchronous mode as a workaround.

Signed-off-by: Alexander Tsoy <alexander@tsoy.me>
Link: https://lore.kernel.org/r/20200421190908.462860-1-alexander@tsoy.me
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/quirks.c

index 6c2dfd3..351ba21 100644 (file)
@@ -1806,6 +1806,7 @@ void snd_usb_audioformat_attributes_quirk(struct snd_usb_audio *chip,
                 */
                fp->attributes &= ~UAC_EP_CS_ATTR_FILL_MAX;
                break;
+       case USB_ID(0x1235, 0x8200):  /* Focusrite Scarlett 2i4 2nd gen */
        case USB_ID(0x1235, 0x8202):  /* Focusrite Scarlett 2i2 2nd gen */
        case USB_ID(0x1235, 0x8205):  /* Focusrite Scarlett Solo 2nd gen */
                /*