ChangeSet 1.1608.24.33, 2004/03/03 10:16:35-08:00, [EMAIL PROTECTED]
[PATCH] USB: USB OSS audio driver workaround for buggy descriptors
drivers/usb/class/audio.c | 22 +++++++++++++---------
1 files changed, 13 insertions(+), 9 deletions(-)
diff -Nru a/drivers/usb/class/audio.c b/drivers/usb/class/audio.c
--- a/drivers/usb/class/audio.c Tue Mar 16 15:04:50 2004
+++ b/drivers/usb/class/audio.c Tue Mar 16 15:04:50 2004
@@ -3,7 +3,7 @@
/*
* audio.c -- USB Audio Class driver
*
- * Copyright (C) 1999, 2000, 2001
+ * Copyright (C) 1999, 2000, 2001, 2003, 2004
* Alan Cox ([EMAIL PROTECTED])
* Thomas Sailer ([EMAIL PROTECTED])
*
@@ -101,6 +101,8 @@
* Fix SNDCTL_DSP_STEREO API violation
* 2003-04-08: Oliver Neukum ([EMAIL PROTECTED]):
* Setting a configuration is done by usbcore and must not be overridden
+ * 2004-02-27: Workaround for broken synch descriptors
+ *
*/
/*
@@ -1542,12 +1544,13 @@
alts->endpoint[1].desc.bmAttributes != 0x01 ||
alts->endpoint[1].desc.bSynchAddress != 0 ||
alts->endpoint[1].desc.bEndpointAddress !=
(alts->endpoint[0].desc.bSynchAddress & 0x7f)) {
- printk(KERN_ERR "usbaudio: device %d interface %d altsetting
%d invalid synch pipe\n",
+ printk(KERN_WARNING "usbaudio: device %d interface %d
altsetting %d claims adaptive in "
+ "but has invalid synch pipe; treating as asynchronous
in\n",
dev->devnum, u->interface, fmt->altsetting);
- return -1;
+ } else {
+ u->syncpipe = usb_sndisocpipe(dev,
alts->endpoint[1].desc.bEndpointAddress & 0xf);
+ u->syncinterval = alts->endpoint[1].desc.bRefresh;
}
- u->syncpipe = usb_sndisocpipe(dev,
alts->endpoint[1].desc.bEndpointAddress & 0xf);
- u->syncinterval = alts->endpoint[1].desc.bRefresh;
}
if (d->srate < fmt->sratelo)
d->srate = fmt->sratelo;
@@ -1637,12 +1640,13 @@
alts->endpoint[1].desc.bmAttributes != 0x01 ||
alts->endpoint[1].desc.bSynchAddress != 0 ||
alts->endpoint[1].desc.bEndpointAddress !=
(alts->endpoint[0].desc.bSynchAddress | 0x80)) {
- printk(KERN_ERR "usbaudio: device %d interface %d altsetting
%d invalid synch pipe\n",
+ printk(KERN_WARNING "usbaudio: device %d interface %d
altsetting %d claims asynch out "
+ "but has invalid synch pipe; treating as adaptive
out\n",
dev->devnum, u->interface, fmt->altsetting);
- return -1;
+ } else {
+ u->syncpipe = usb_rcvisocpipe(dev,
alts->endpoint[1].desc.bEndpointAddress & 0xf);
+ u->syncinterval = alts->endpoint[1].desc.bRefresh;
}
- u->syncpipe = usb_rcvisocpipe(dev,
alts->endpoint[1].desc.bEndpointAddress & 0xf);
- u->syncinterval = alts->endpoint[1].desc.bRefresh;
}
if (d->srate < fmt->sratelo)
d->srate = fmt->sratelo;
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id70&alloc_id638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel