Dear Alan, If I add the following code to usb/host/ohci-hcd.c or define the flag OHCI_VERBOSE_DEBUG, then the usb subsystem will work and there are no errors. But it's very slowly. :( If the delay value is smaller than 350, system will hang up. So I think this problem is a timing problem, I don't know how to fix the problem. Could you give me some suggestions? static int ohci_urb_enqueue ( struct usb_hcd *hcd, struct usb_host_endpoint *ep, struct urb *urb, gfp_t mem_flags ) { struct ohci_hcd *ohci = hcd_to_ohci (hcd); struct ed *ed; urb_priv_t *urb_priv; unsigned int pipe = urb->pipe; int i, size = 0; unsigned long flags; int retval = 0;
mdelay(350); //delay 350 ms. This code will make the code worked. #ifdef OHCI_VERBOSE_DEBUG urb_print (urb, "SUB", usb_pipein (pipe)); #endif /* every endpoint has a ed, locate and maybe (re)initialize it */ if (! (ed = ed_get (ohci, ep, urb->dev, pipe, urb->interval))) return -ENOMEM; Darwin Chen <[EMAIL PROTECTED]> > What should I do in next steps? > > Try to find out what's wrong with the way your device or driver handles > bulk-IN endpoints. For example, you might add a printk statement to > ohci_irq, so you can see if the controller sends an interrupt request. > You might print out the values stored in the TD when the URB is > unlinked, so you can see if the controller received any bulk data. > > Alan Stern ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Linux-usb-users@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-users