On Tue, 9 Sep 2003, Arkadiusz Miskiewicz wrote:

> On Monday 08 of September 2003 18:38, David Brownell wrote:
> > Try changing uhci_reset() so it calls hc_reset() first,
> > and then does the config space write to get rid of "legacy
> > support mode".   That's the sequence it used before, which
> > seems odd because it's resetting hardware that it's not yet
> > responsible for.  Maybe the hc_reset() code should turn off
> > that legacy mode, and do some IRQ blocking.
> Unfortunately that didn't change a thing. Still I see ,,disable irq #xx'' and 
> usb is not working properly here.

reset_hc() doesn't do very much; it turns the controller off but doesn't
disable interrupts.  If the problem is extraneous interrupts arriving
during this time, maybe disabling them is the answer.  Try the patch
below.

Alan Stern


===== uhci-hcd.c 1.65 vs edited =====
--- 1.65/drivers/usb/host/uhci-hcd.c    Wed Sep  3 11:47:18 2003
+++ edited/drivers/usb/host/uhci-hcd.c  Tue Sep  9 10:05:38 2003
@@ -1960,8 +1960,9 @@
 {
        unsigned int io_addr = uhci->io_addr;
 
-       /* Global reset for 50ms */
+       /* Disable interrupts and global reset for 50ms */
        uhci->state = UHCI_RESET;
+       outw(0, io_addr + USBINTR);
        outw(USBCMD_GRESET, io_addr + USBCMD);
        set_current_state(TASK_UNINTERRUPTIBLE);
        schedule_timeout((HZ*50+999) / 1000);




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to