set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout(50*HZ/1000); 
schedule_timeout_uninterruptible(msecs_to_jiffies(50)); 
prism54_bring_down(islpci_private *priv){	void __iomem *device_base = priv->device_base;	u32 reg;	/* we are going to shutdown the device */	islpci_set_state(priv, PRV_STATE_PREBOOT);	/* disable all device interrupts in case they weren't */	isl38xx_disable_interrupts(priv->device_base);  	/* For safety reasons, we may want to ensure that no DMA transfer is	 * currently in progress by emptying the TX and RX queues. */	/* wait until interrupts have finished executing on other CPUs */	synchronize_irq(priv->pdev->irq);	reg = readl(device_base + ISL38XX_CTRL_STAT_REG);	reg &= ~(ISL38XX_CTRL_STAT_RESET | ISL38XX_CTRL_STAT_RAMBOOT);	writel(reg, device_base + ISL38XX_CTRL_STAT_REG);	wmb();	udelay(ISL38XX_WRITEIO_DELAY);	reg |= ISL38XX_CTRL_STAT_RESET;	writel(reg, device_base + ISL38XX_CTRL_STAT_REG);	wmb();	udelay(ISL38XX_WRITEIO_DELAY);	/* clear the Reset bit */	reg &= ~ISL38XX_CTRL_STAT_RESET;	writel(reg, device_base + ISL38XX_CTRL_STAT_REG);	wmb();	/* wait a while for the device to reset */	set_current_state(TASK_UNINTERRUPTIBLE);	schedule_timeout(50*HZ/1000);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3173c8907ffb2c64456142da3df2bd0500bd59e0/islpci_dev.c/buggy/drivers/net/wireless/prism54/islpci_dev.c