timeout = data->timeout_clks + ((unsigned long long)data->timeout_ns * host->cclk) / 1000000000ULL; 
clks = (unsigned long long)data->timeout_ns * host->cclk; do_div(clks, 1000000000UL);  timeout = data->timeout_clks + (unsigned int)clks; 
static void mmci_start_data(struct mmci_host *host, struct mmc_data *data){	unsigned int datactrl, timeout, irqmask;	void __iomem *base;	DBG(host, "blksz %04x blks %04x flags %08x\n",	    1 << data->blksz_bits, data->blocks, data->flags);	host->data = data;	host->size = data->blocks << data->blksz_bits;	host->data_xfered = 0;	mmci_init_sg(host, data);	timeout = data->timeout_clks +		  ((unsigned long long)data->timeout_ns * host->cclk) /		   1000000000ULL;	base = host->base;	writel(timeout, base + MMCIDATATIMER);	writel(host->size, base + MMCIDATALENGTH);	datactrl = MCI_DPSM_ENABLE | data->blksz_bits << 4;	if (data->flags & MMC_DATA_READ) {		datactrl |= MCI_DPSM_DIRECTION;		irqmask = MCI_RXFIFOHALFFULLMASK;	} else {		/*		 * We don't actually need to include "FIFO empty" here		 * since its implicit in "FIFO half empty".		 */		irqmask = MCI_TXFIFOHALFEMPTYMASK;	}	writel(datactrl, base + MMCIDATACTRL);	writel(readl(base + MMCIMASK0) & ~MCI_DATAENDMASK, base + MMCIMASK0);	writel(irqmask, base + MMCIMASK1);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/7b09cdac5af1e13ab4b30421ae5c4b7953c26841/mmci.c/buggy/drivers/mmc/mmci.c