ide_hwif_t *hwif = drive->hwif;
        int rc;
 
-       rc = ide_dma_check(drive);
+       /*
+        * Force DMAing for the beginning of the check.
+        * Some chipsets appear to do interesting
+        * things, if not checked and cleared.
+        *   PARANOIA!!!
+        */
+       hwif->dma_off_quietly(drive);
 
-       switch(rc) {
-       case -1: /* DMA needs to be disabled */
-               hwif->dma_off_quietly(drive);
-               return -1;
-       case  0: /* DMA needs to be enabled */
-               return hwif->ide_dma_on(drive);
-       case  1: /* DMA setting cannot be changed */
-               break;
-       default:
-               BUG();
-               break;
-       }
+       rc = ide_dma_check(drive);
+       if (rc)
+               return rc;
 
-       return rc;
+       return hwif->ide_dma_on(drive);
 }
 
 #ifdef CONFIG_BLK_DEV_IDEDMA_PCI
 
 
                        drive->nice1 = 1;
 
-                       if (hwif->ide_dma_on) {
-                               /*
-                                * Force DMAing for the beginning of the check.
-                                * Some chipsets appear to do interesting
-                                * things, if not checked and cleared.
-                                *   PARANOIA!!!
-                                */
-                               hwif->dma_off_quietly(drive);
+                       if (hwif->ide_dma_on)
                                ide_set_dma(drive);
-                       }
                }
        }