Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83e3acd4 authored by Eldad Zack's avatar Eldad Zack Committed by Takashi Iwai
Browse files

ALSA: usb-audio: M-Audio FT C400 skip packet quirk



Attain constant real-world latency by skipping 16 data packets.
The number of packets to be skipped was found by trial and error.

Signed-off-by: default avatarEldad Zack <eldad@fogrefinery.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 2aad272b
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -861,6 +861,17 @@ void snd_usb_endpoint_start_quirk(struct snd_usb_endpoint *ep)
	if ((le16_to_cpu(ep->chip->dev->descriptor.idVendor) == 0x23ba) &&
	    ep->type == SND_USB_ENDPOINT_TYPE_SYNC)
		ep->skip_packets = 4;

	/*
	 * M-Audio Fast Track C400 - when packets are not skipped, real world
	 * latency varies by approx. +/- 50 frames (at 96KHz) each time the
	 * stream is (re)started. When skipping packets 16 at endpoint start
	 * up, the real world latency is stable within +/- 1 frame (also
	 * across power cycles).
	 */
	if (ep->chip->usb_id == USB_ID(0x0763, 0x2030) &&
	    ep->type == SND_USB_ENDPOINT_TYPE_DATA)
		ep->skip_packets = 16;
}

void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,