|
@@ -327,15 +327,15 @@ static int tx4939ide_dma_end(ide_drive_t *drive)
|
|
|
/* read and clear the INTR & ERROR bits */
|
|
|
dma_stat = tx4939ide_clear_dma_status(base);
|
|
|
|
|
|
- wmb();
|
|
|
+#define CHECK_DMA_MASK (ATA_DMA_ACTIVE | ATA_DMA_ERR | ATA_DMA_INTR)
|
|
|
|
|
|
/* verify good DMA status */
|
|
|
- if ((dma_stat & (ATA_DMA_INTR | ATA_DMA_ERR | ATA_DMA_ACTIVE)) == 0 &&
|
|
|
+ if ((dma_stat & CHECK_DMA_MASK) == 0 &&
|
|
|
(ctl & (TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST)) ==
|
|
|
(TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST))
|
|
|
/* INT_IDE lost... bug? */
|
|
|
return 0;
|
|
|
- return ((dma_stat & (ATA_DMA_INTR | ATA_DMA_ERR | ATA_DMA_ACTIVE)) !=
|
|
|
+ return ((dma_stat & CHECK_DMA_MASK) !=
|
|
|
ATA_DMA_INTR) ? 0x10 | dma_stat : 0;
|
|
|
}
|
|
|
|