ATA_DMA_START
dmactl &= ~(ATA_DMA_WR | ATA_DMA_START);
iowrite8(dmactl | ATA_DMA_START, ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
iowrite8(ioread8(mmio + ATA_DMA_CMD) & ~ATA_DMA_START,
iowrite8(dma_cmd & ~ATA_DMA_START, bmdma + ATA_DMA_CMD);
iowrite8(ioread8(mmio + ATA_DMA_CMD) & ~ ATA_DMA_START,
dmactl &= ~(ATA_DMA_WR | ATA_DMA_START);
u32 cmd = (rw ? 0 : ATA_DMA_WR) | ATA_DMA_START;
if (cmd & ATA_DMA_START) {
cmd &= ~ATA_DMA_START;
iowrite8(dmactl | ATA_DMA_START, ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
u8 dmactl = ATA_DMA_START;
if (dmactl & ATA_DMA_START) {
dmactl &= ~ATA_DMA_START;
if (dmactl & ATA_DMA_START) {
dmactl &= ~ATA_DMA_START;
dmactl &= ~(ATA_DMA_WR | ATA_DMA_START);
writeb(dmactl | ATA_DMA_START, mmio + ATA_DMA_CMD);