{
        ide_hwif_t *hwif = drive->hwif;
        u8 unit = drive->dn & 1;
-       u8 dma_stat = scc_ide_inb(hwif->dma_base + 4);
+       u8 dma_stat = scc_dma_sff_read_status(hwif);
 
        if (on)
                dma_stat |= (1 << (5 + unit));
        out_be32((void __iomem *)hwif->dma_base, reading);
 
        /* read DMA status for INTR & ERROR flags */
-       dma_stat = in_be32((void __iomem *)(hwif->dma_base + 4));
+       dma_stat = scc_dma_sff_read_status(hwif);
 
        /* clear INTR & ERROR flags */
        out_be32((void __iomem *)(hwif->dma_base + 4), dma_stat | 6);
        /* stop DMA */
        scc_ide_outb(dma_cmd & ~1, hwif->dma_base);
        /* get DMA status */
-       dma_stat = scc_ide_inb(hwif->dma_base + 4);
+       dma_stat = scc_dma_sff_read_status(hwif);
        /* clear the INTR & ERROR bits */
        scc_ide_outb(dma_stat | 6, hwif->dma_base + 4);
        /* purge DMA mappings */