if ((status & USBSTS_HCH) && uhci->state > 0) { 
if ((status & USBSTS_HCH) && uhci->rh_state >= UHCI_RH_RUNNING) { 
static irqreturn_t uhci_irq(struct usb_hcd *hcd, struct pt_regs *regs){	struct uhci_hcd *uhci = hcd_to_uhci(hcd);	unsigned long io_addr = uhci->io_addr;	unsigned short status;	/*	 * Read the interrupt status, and write it back to clear the	 * interrupt cause.  Contrary to the UHCI specification, the	 * "HC Halted" status bit is persistent: it is RO, not R/WC.	 */	status = inw(io_addr + USBSTS);	if (!(status & ~USBSTS_HCH))	/* shared interrupt, not mine */		return IRQ_NONE;	outw(status, io_addr + USBSTS);		/* Clear it */	if (status & ~(USBSTS_USBINT | USBSTS_ERROR | USBSTS_RD)) {		if (status & USBSTS_HSE)			dev_err(uhci_dev(uhci), "host system error, "					"PCI problems?\n");		if (status & USBSTS_HCPE)			dev_err(uhci_dev(uhci), "host controller process "					"error, something bad happened!\n");		if ((status & USBSTS_HCH) && uhci->state > 0) {			dev_err(uhci_dev(uhci), "host controller halted, "					"very bad!\n");			/* FIXME: Reset the controller, fix the offending TD */		}	}	if (status & USBSTS_RD)		uhci->resume_detect = 1;	spin_lock(&uhci->lock);	uhci_scan_schedule(uhci, regs);	spin_unlock(&uhci->lock);	return IRQ_HANDLED;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c8f4fe4358c5e0a79b4bd47b814d19f1d1d06f21/uhci-hcd.c/clean/drivers/usb/host/uhci-hcd.c