[ALSA] usb audio: Fix another Dallas quirk

Dallas USB speakers are buggy in more than one way. One of configs
they offer does not work at all.

Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Pavel Machek 2008-04-14 13:12:47 +02:00 committed by Takashi Iwai
parent eaa9985b4e
commit b9d43bcd06

View File

@ -2676,12 +2676,23 @@ static int parse_audio_endpoints(struct snd_usb_audio *chip, int iface_no)
int format; int format;
struct audioformat *fp; struct audioformat *fp;
unsigned char *fmt, *csep; unsigned char *fmt, *csep;
int num;
dev = chip->dev; dev = chip->dev;
/* parse the interface's altsettings */ /* parse the interface's altsettings */
iface = usb_ifnum_to_if(dev, iface_no); iface = usb_ifnum_to_if(dev, iface_no);
for (i = 0; i < iface->num_altsetting; i++) {
num = iface->num_altsetting;
/*
* Dallas DS4201 workaround: It presents 5 altsettings, but the last
* one misses syncpipe, and does not produce any sound.
*/
if (chip->usb_id == USB_ID(0x04fa, 0x4201))
num = 4;
for (i = 0; i < num; i++) {
alts = &iface->altsetting[i]; alts = &iface->altsetting[i];
altsd = get_iface_desc(alts); altsd = get_iface_desc(alts);
/* skip invalid one */ /* skip invalid one */