The follow stops my Palmax from hanging on resume. It seems the OHCI irq
line comes back floating high and kills us totally otherwise


--- linux.vanilla/drivers/usb/usb-ohci.c        Sat Mar 11 13:59:12 2000
+++ linux.ac/drivers/usb/usb-ohci.c     Fri Mar 17 23:00:05 2000
@@ -1747,16 +1747,27 @@
        ohci_t * ohci = (ohci_t*) dev->data;
        if (ohci) {
                switch (rqst) {
+               /*
+                *      We have to disable the OHCI irq. This sucks because we'd rather
+                *      not disable a potentially shared IRQ since the other user might
+                *      want an IRQ event during suspend. Unfortunately at least some
+                *      machines come back with the IRQ floating and if we don't do
+                *      this we are dead, defunct, pushing up the silicon daisies.
+                */
                case PM_SUSPEND:
                        dbg("USB-Bus suspend: %p", ohci);
                        writel (ohci->hc_control = 0xFF, &ohci->regs->control);
                        wait_ms (10);
+                       if(ohci->irq > 0)
+                               disable_irq(ohci->irq);
                        break;
                case PM_RESUME:
                        dbg("USB-Bus resume: %p", ohci);
                        writel (ohci->hc_control = 0x7F, &ohci->regs->control);
                        wait_ms (20);
                        writel (ohci->hc_control = 0xBF, &ohci->regs->control);
+                       if(ohci->irq > 0)
+                               enable_irq(ohci->irq);
                        break;
                }
        }

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to