set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout(30*HZ/100); 
msleep(300); 
static int __init elp_sense(struct net_device *dev){	int addr = dev->base_addr;	const char *name = dev->name;	byte orig_HSR;	if (!request_region(addr, ELP_IO_EXTENT, "3c505"))		return -ENODEV;	orig_HSR = inb_status(addr);	if (elp_debug > 0)		printk(search_msg, name, addr);	if (orig_HSR == 0xff) {		if (elp_debug > 0)			printk(notfound_msg, 1);		goto out;	}	/* Wait for a while; the adapter may still be booting up */	if (elp_debug > 0)		printk(stilllooking_msg);	if (orig_HSR & DIR) {		/* If HCR.DIR is up, we pull it down. HSR.DIR should follow. */		outb(0, dev->base_addr + PORT_CONTROL);		set_current_state(TASK_UNINTERRUPTIBLE);		schedule_timeout(30*HZ/100);		if (inb_status(addr) & DIR) {			if (elp_debug > 0)				printk(notfound_msg, 2);			goto out;		}	} else {		/* If HCR.DIR is down, we pull it up. HSR.DIR should follow. */		outb(DIR, dev->base_addr + PORT_CONTROL);		set_current_state(TASK_UNINTERRUPTIBLE);		schedule_timeout(30*HZ/100);		if (!(inb_status(addr) & DIR)) {			if (elp_debug > 0)				printk(notfound_msg, 3);			goto out;		}	}	/*	 * It certainly looks like a 3c505.	 */	if (elp_debug > 0)		printk(found_msg);	return 0;out:	release_region(addr, ELP_IO_EXTENT);	return -ENODEV;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c56943e655b0778d3a8517ae165ad4db15557b97/3c505.c/clean/drivers/net/3c505.c