schedule_work(&ohci->rh_resume); 
usb_hcd_resume_root_hub(hcd); 
static irqreturn_t ohci_irq (struct usb_hcd *hcd, struct pt_regs *ptregs){	struct ohci_hcd		*ohci = hcd_to_ohci (hcd);	struct ohci_regs __iomem *regs = ohci->regs; 	int			ints; 	/* we can eliminate a (slow) ohci_readl()	   if _only_ WDH caused this irq */	if ((ohci->hcca->done_head != 0)			&& ! (hc32_to_cpup (ohci, &ohci->hcca->done_head)				& 0x01)) {		ints =  OHCI_INTR_WDH;	/* cardbus/... hardware gone before remove() */	} else if ((ints = ohci_readl (ohci, &regs->intrstatus)) == ~(u32)0) {		disable (ohci);		ohci_dbg (ohci, "device removed!\n");		return IRQ_HANDLED;	/* interrupt for some other device? */	} else if ((ints &= ohci_readl (ohci, &regs->intrenable)) == 0) {		return IRQ_NOTMINE;	} 	if (ints & OHCI_INTR_UE) {		disable (ohci);		ohci_err (ohci, "OHCI Unrecoverable Error, disabled\n");		// e.g. due to PCI Master/Target Abort		ohci_dump (ohci, 1);		ohci_usb_reset (ohci);	}	if (ints & OHCI_INTR_RD) {		ohci_vdbg (ohci, "resume detect\n");		ohci_writel (ohci, OHCI_INTR_RD, &regs->intrstatus);		if (hcd->state != HC_STATE_QUIESCING)			schedule_work(&ohci->rh_resume);	}	if (ints & OHCI_INTR_WDH) {		if (HC_IS_RUNNING(hcd->state))			ohci_writel (ohci, OHCI_INTR_WDH, &regs->intrdisable);			spin_lock (&ohci->lock);		dl_done_list (ohci, ptregs);		spin_unlock (&ohci->lock);		if (HC_IS_RUNNING(hcd->state))			ohci_writel (ohci, OHCI_INTR_WDH, &regs->intrenable); 	}  	/* could track INTR_SO to reduce available PCI/... bandwidth */	/* handle any pending URB/ED unlinks, leaving INTR_SF enabled	 * when there's still unlinking to be done (next frame).	 */	spin_lock (&ohci->lock);	if (ohci->ed_rm_list)		finish_unlinks (ohci, ohci_frame_no(ohci), ptregs);	if ((ints & OHCI_INTR_SF) != 0 && !ohci->ed_rm_list			&& HC_IS_RUNNING(hcd->state))		ohci_writel (ohci, OHCI_INTR_SF, &regs->intrdisable);		spin_unlock (&ohci->lock);	if (HC_IS_RUNNING(hcd->state)) {		ohci_writel (ohci, ints, &regs->intrstatus);		ohci_writel (ohci, OHCI_INTR_MIE, &regs->intrenable);			// flush those writes		(void) ohci_readl (ohci, &ohci->regs->control);	}	return IRQ_HANDLED;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f197b2c54b9d9a133a9a8ff92f35cadf8945ea14/ohci-hcd.c/clean/drivers/usb/host/ohci-hcd.c