Skip to content

Commit

Permalink
ALSA: usb-audio: M-Audio FT C400 skip packet quirk
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Eldad Zack authored and Takashi Iwai committed Jan 14, 2013
1 parent 2aad272 commit 83e3acd
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions sound/usb/quirks.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 83e3acd

Please sign in to comment.