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);

Reply via email to