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: Eldad Zack <eldad@fogrefinery.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Eldad Zack 2013-01-13 23:02:03 +01:00 коммит произвёл Takashi Iwai
Родитель 2aad272b3f
Коммит 83e3acd494
1 изменённых файлов: 11 добавлений и 0 удалений

Просмотреть файл

@ -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,