--- zzzz-none-000/linux-2.6.19.2/drivers/usb/host/ohci-hcd.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/drivers/usb/host/ohci-hcd.c 2007-01-11 07:38:19.000000000 +0000 @@ -715,6 +715,13 @@ return IRQ_NOTMINE; } + if (ints & OHCI_INTR_RHSC) { + ohci_vdbg (ohci, "rhsc\n"); + ohci->next_statechange = jiffies + STATECHANGE_DELAY; + ohci_writel (ohci, OHCI_INTR_RHSC, ®s->intrstatus); + usb_hcd_poll_rh_status(hcd); + } + if (ints & OHCI_INTR_UE) { disable (ohci); ohci_err (ohci, "OHCI Unrecoverable Error, disabled\n"); @@ -724,21 +731,9 @@ ohci_usb_reset (ohci); } - if (ints & OHCI_INTR_RHSC) { - ohci_vdbg(ohci, "rhsc\n"); - ohci->next_statechange = jiffies + STATECHANGE_DELAY; - ohci_writel(ohci, OHCI_INTR_RD | OHCI_INTR_RHSC, - ®s->intrstatus); - usb_hcd_poll_rh_status(hcd); - } - - /* For connect and disconnect events, we expect the controller - * to turn on RHSC along with RD. But for remote wakeup events - * this might not happen. - */ - else if (ints & OHCI_INTR_RD) { - ohci_vdbg(ohci, "resume detect\n"); - ohci_writel(ohci, OHCI_INTR_RD, ®s->intrstatus); + if (ints & OHCI_INTR_RD) { + ohci_vdbg (ohci, "resume detect\n"); + ohci_writel (ohci, OHCI_INTR_RD, ®s->intrstatus); hcd->poll_rh = 1; if (ohci->autostop) { spin_lock (&ohci->lock);