]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/ata/pata_sc1200.c
libata: Fix a large collection of DMA mode mismatches
[linux-2.6-omap-h63xx.git] / drivers / ata / pata_sc1200.c
index cbab397e3db7a1cc5893d40de3d99d524d563383..0278fd2b8fb1cc8c80ba05bc1e638027a22d3a95 100644 (file)
@@ -167,10 +167,10 @@ static unsigned int sc1200_qc_issue(struct ata_queued_cmd *qc)
        struct ata_device *prev = ap->private_data;
 
        /* See if the DMA settings could be wrong */
-       if (adev->dma_mode != 0 && adev != prev && prev != NULL) {
+       if (ata_dma_enabled(adev) && adev != prev && prev != NULL) {
                /* Maybe, but do the channels match MWDMA/UDMA ? */
-               if ((adev->dma_mode >= XFER_UDMA_0 && prev->dma_mode < XFER_UDMA_0) ||
-                   (adev->dma_mode < XFER_UDMA_0 && prev->dma_mode >= XFER_UDMA_0))
+               if ((ata_using_udma(adev) && !ata_using_udma(prev)) ||
+                   (ata_using_udma(prev) && !ata_using_udma(adev)))
                        /* Switch the mode bits */
                        sc1200_set_dmamode(ap, adev);
        }