(void *) ap->ioaddr.cmd_addr + PDC_PKT_SUBMIT); readl((void *) ap->ioaddr.cmd_addr + PDC_PKT_SUBMIT); 
(void __iomem *) ap->ioaddr.cmd_addr + PDC_PKT_SUBMIT); readl((void __iomem *) ap->ioaddr.cmd_addr + PDC_PKT_SUBMIT); 
static inline unsigned int pdc20621_host_intr( struct ata_port *ap,                                          struct ata_queued_cmd *qc,					  unsigned int doing_hdma,					  void __iomem *mmio){	unsigned int port_no = ap->port_no;	unsigned int port_ofs =		PDC_20621_DIMM_BASE + (PDC_DIMM_WINDOW_STEP * port_no);	u8 status;	unsigned int handled = 0;	VPRINTK("ENTER\n");	if ((qc->tf.protocol == ATA_PROT_DMA) &&	/* read */	    (!(qc->tf.flags & ATA_TFLAG_WRITE))) {		/* step two - DMA from DIMM to host */		if (doing_hdma) {			VPRINTK("ata%u: read hdma, 0x%x 0x%x\n", ap->id,				readl(mmio + 0x104), readl(mmio + PDC_HDMA_CTLSTAT));			/* get drive status; clear intr; complete txn */			ata_qc_complete(qc, ata_wait_idle(ap));			pdc20621_pop_hdma(qc);		}		/* step one - exec ATA command */		else {			u8 seq = (u8) (port_no + 1 + 4);			VPRINTK("ata%u: read ata, 0x%x 0x%x\n", ap->id,				readl(mmio + 0x104), readl(mmio + PDC_HDMA_CTLSTAT));			/* submit hdma pkt */			pdc20621_dump_hdma(qc);			pdc20621_push_hdma(qc, seq,					   port_ofs + PDC_DIMM_HOST_PKT);		}		handled = 1;	} else if (qc->tf.protocol == ATA_PROT_DMA) {	/* write */		/* step one - DMA from host to DIMM */		if (doing_hdma) {			u8 seq = (u8) (port_no + 1);			VPRINTK("ata%u: write hdma, 0x%x 0x%x\n", ap->id,				readl(mmio + 0x104), readl(mmio + PDC_HDMA_CTLSTAT));			/* submit ata pkt */			writel(0x00000001, mmio + PDC_20621_SEQCTL + (seq * 4));			readl(mmio + PDC_20621_SEQCTL + (seq * 4));			writel(port_ofs + PDC_DIMM_ATA_PKT,			       (void *) ap->ioaddr.cmd_addr + PDC_PKT_SUBMIT);			readl((void *) ap->ioaddr.cmd_addr + PDC_PKT_SUBMIT);		}		/* step two - execute ATA command */		else {			VPRINTK("ata%u: write ata, 0x%x 0x%x\n", ap->id,				readl(mmio + 0x104), readl(mmio + PDC_HDMA_CTLSTAT));			/* get drive status; clear intr; complete txn */			ata_qc_complete(qc, ata_wait_idle(ap));			pdc20621_pop_hdma(qc);		}		handled = 1;	/* command completion, but no data xfer */	} else if (qc->tf.protocol == ATA_PROT_NODATA) {		status = ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 1000);		DPRINTK("BUS_NODATA (drv_stat 0x%X)\n", status);		ata_qc_complete(qc, status);		handled = 1;	} else {		ap->stats.idle_irq++;	}	return handled;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/a9afd7cd2f65ff85f5ffe931beb879ccf12540e0/sata_sx4.c/clean/drivers/scsi/sata_sx4.c