psource += dist; 
psource += dist; 
static void pdc20621_put_to_dimm(struct ata_probe_ent *pe, void *psource, 				 u32 offset, u32 size){	u32 window_size;	u16 idx;	u8 page_mask;	long dist;	void *mmio = pe->mmio_base;	struct pdc_host_priv *hpriv = pe->private_data;	void *dimm_mmio = hpriv->dimm_mmio;	/* hard-code chip #0 */   	mmio += PDC_CHIP0_OFS;	page_mask = 0x00;	   	window_size = 0x2000 * 4;       /* 32K byte uchar size */  	idx = (u16) (offset / window_size);	writel(((idx) << page_mask), mmio + PDC_DIMM_WINDOW_CTLR);	readl(mmio + PDC_DIMM_WINDOW_CTLR);	offset -= (idx * window_size); 	idx++;	dist = ((long)(s32)(window_size - (offset + size))) >= 0 ? size :		(long) (window_size - offset);	memcpy_toio((char *) (dimm_mmio + offset / 4), (char *) psource, dist);	writel(0x01, mmio + PDC_GENERAL_CTLR);	readl(mmio + PDC_GENERAL_CTLR);	psource += dist;    	size -= dist;	for (; (long) size >= (long) window_size ;) {		writel(((idx) << page_mask), mmio + PDC_DIMM_WINDOW_CTLR);		readl(mmio + PDC_DIMM_WINDOW_CTLR);		memcpy_toio((char *) (dimm_mmio), (char *) psource, 			    window_size / 4);		writel(0x01, mmio + PDC_GENERAL_CTLR);		readl(mmio + PDC_GENERAL_CTLR);		psource += window_size;		size -= window_size;		idx ++;	}    	if (size) {		writel(((idx) << page_mask), mmio + PDC_DIMM_WINDOW_CTLR);		readl(mmio + PDC_DIMM_WINDOW_CTLR);		memcpy_toio((char *) (dimm_mmio), (char *) psource, size / 4);		writel(0x01, mmio + PDC_GENERAL_CTLR);		readl(mmio + PDC_GENERAL_CTLR);	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/8a60a07129fad60bba779a2a4038c7518b167fc7/sata_sx4.c/buggy/drivers/scsi/sata_sx4.c