A long standing problem has existed with usb-ohci handling of one-shot
interrupt transfers (they never worked). Attached is a fix which was
originally proposed by P.C. Chan and subsequently modified and
re-presented by Frode Isaksen. The Lego USB driver does not work with
ohci without this fix and so I would really appreciate it being applied.
The patch is against 2.4.22-pre1.
david
--
David Glance <[EMAIL PROTECTED]>
--- linux-2.4.22-pre1/drivers/usb/host/usb-ohci.c 2003-06-21 08:40:01.000000000
+0800
+++ linux-new/drivers/usb/host/usb-ohci.c 2003-06-21 16:21:10.000000000 +0800
@@ -490,13 +490,20 @@
usb_pipeout (urb->pipe)
? PCI_DMA_TODEVICE
: PCI_DMA_FROMDEVICE);
- urb->complete (urb);
- /* implicitly requeued */
- urb->actual_length = 0;
- urb->status = -EINPROGRESS;
- td_submit_urb (urb);
- break;
+ if (urb->interval) {
+ urb->complete (urb);
+
+ /* implicitly requeued */
+ urb->actual_length = 0;
+ urb->status = -EINPROGRESS;
+ td_submit_urb (urb);
+ } else {
+ urb_rm_priv(urb);
+ urb->complete (urb);
+ }
+ break;
+
case PIPE_ISOCHRONOUS:
for (urbt = urb->next; urbt && (urbt != urb); urbt =
urbt->next);