 /* Make sure we see the port again * after the resuming period is over. */ mod_timer(&uhci_to_hcd(uhci)->rh_timer, uhci->ports_timeout); 
static void uhci_check_ports(struct uhci_hcd *uhci){	unsigned int port;	unsigned long port_addr;	int status;	for (port = 0; port < uhci->rh_numports; ++port) {		port_addr = uhci->io_addr + USBPORTSC1 + 2 * port;		status = inw(port_addr);		if (unlikely(status & USBPORTSC_PR)) {			if (time_after_eq(jiffies, uhci->ports_timeout)) {				CLR_RH_PORTSTAT(USBPORTSC_PR);				udelay(10);				/* If the port was enabled before, turning				 * reset on caused a port enable change.				 * Turning reset off causes a port connect				 * status change.  Clear these changes. */				CLR_RH_PORTSTAT(USBPORTSC_CSC | USBPORTSC_PEC);				SET_RH_PORTSTAT(USBPORTSC_PE);			}		}		if (unlikely(status & USBPORTSC_RD)) {			if (!test_bit(port, &uhci->resuming_ports)) {				/* Port received a wakeup request */				set_bit(port, &uhci->resuming_ports);				uhci->ports_timeout = jiffies +						msecs_to_jiffies(20);			} else if (time_after_eq(jiffies,						uhci->ports_timeout)) {				uhci_finish_suspend(uhci, port, port_addr);			}		}	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6c1b445c226dd82d0961725dec8051b95003723a/uhci-hub.c/clean/drivers/usb/host/uhci-hub.c