{
        struct ata_port *ap = qc->ap;
        struct pci_dev *pdev = to_pci_dev(ap->host->dev);
-       u8 dma_stat = ioread8(ap->ioaddr.bmdma_addr + 2);
-       u8 dma_cmd;
        void __iomem *bmdma = ap->ioaddr.bmdma_addr;
+       u8 dma_stat = ioread8(bmdma + ATA_DMA_STATUS);
+       u8 dma_cmd;
 
-       if (dma_stat & 0x01) {
+       if (dma_stat & ATA_DMA_ACTIVE) {
                udelay(20);
-               dma_stat = ioread8(bmdma + 2);
+               dma_stat = ioread8(bmdma + ATA_DMA_STATUS);
        }
-       if (dma_stat & 0x01) {
+       if (dma_stat & ATA_DMA_ACTIVE) {
                /* Clear the engine */
                pci_write_config_byte(pdev, 0x50 + 4 * ap->port_no, 0x37);
                udelay(10);
                /* Stop DMA */
-               dma_cmd = ioread8(bmdma );
-               iowrite8(dma_cmd & 0xFE, bmdma);
+               dma_cmd = ioread8(bmdma + ATA_DMA_CMD);
+               iowrite8(dma_cmd & ~ATA_DMA_START, bmdma + ATA_DMA_CMD);
                /* Clear Error */
-               dma_stat = ioread8(bmdma + 2);
-               iowrite8(dma_stat | 0x06 , bmdma + 2);
+               dma_stat = ioread8(bmdma + ATA_DMA_STATUS);
+               iowrite8(dma_stat | ATA_DMA_INTR | ATA_DMA_ERR,
+                        bmdma + ATA_DMA_STATUS);
                /* Clear the engine */
                pci_write_config_byte(pdev, 0x50 + 4 * ap->port_no, 0x37);
                udelay(10);