Alan Stern wrote:
To learn more about how UHCI devices work, go to this page:
http://developer.intel.com/design/USB/UHCI11D.htm
Thanks for that it was very helpful.
The interrupts generally get sent to indicate that the controller has finished doing its work on the URB. When that happens it's time for the driver to take over.
The general outline is this:
Some program or driver submits an URB through uhci_urb_enqueue().
The UHCI driver takes the URB and adds it into the schedule, then returns.
The UHCI controller, seeing the URB now in the schedule, follows the commands listed in the schedule. It sends the URB out to the USB device and receives a response in return. The response is stored in the URB's transfer buffer.
The UHCI controller signals an interrupt request when the schedule tells it to do so (when the response to the URB has been received and stored).
The UHCI driver fields the interrupt (uhci_irq()), sees that the
controller is done with the URB, tidies everything up, and gives the URB back to the original submitter by calling the URB's completion routine.
After reading the uhci paper, I decided I couldn't do much more if the controller isn't sending out an interrupt at all. So I tried to trace back the call to uhci_irq(), which should happen if the controller is reponding at all. I found that handle_IRQ_event() in irq.c does get called after fsbr is set. Is it fair to assume that this interrupt is the one that should get past along to uhci_irq()? (but isn't in this case..)
The computer hangs in some timing code not too far down the track, so maybe this isn't (directly) a problem with usb?
Thanks, Malcolm.
------------------------------------------------------- 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_id=1470&alloc_id=3638&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
