ide: rework the code for selecting the best DMA transfer mode (v3)
[linux-2.6-block.git] / drivers / ide / pci / slc90e66.c
index 852ccb36da1df943045b9b7775ec13ebfe235170..9e95a5cbf984c9789b855db62cafbb8cc2332302 100644 (file)
 
 #include <asm/io.h>
 
-static u8 slc90e66_ratemask (ide_drive_t *drive)
-{
-       u8 mode = 2;
-
-       if (!eighty_ninty_three(drive))
-               mode = min_t(u8, mode, 1);
-       return mode;
-}
-
 static u8 slc90e66_dma_2_pio (u8 xfer_rate) {
        switch(xfer_rate) {
                case XFER_UDMA_4:
@@ -122,7 +113,7 @@ static int slc90e66_tune_chipset (ide_drive_t *drive, u8 xferspeed)
        ide_hwif_t *hwif        = HWIF(drive);
        struct pci_dev *dev     = hwif->pci_dev;
        u8 maslave              = hwif->channel ? 0x42 : 0x40;
-       u8 speed        = ide_rate_filter(slc90e66_ratemask(drive), xferspeed);
+       u8 speed                = ide_rate_filter(drive, xferspeed);
        int sitre = 0, a_speed  = 7 << (drive->dn * 4);
        int u_speed = 0, u_flag = 1 << drive->dn;
        u16                     reg4042, reg44, reg48, reg4a;
@@ -171,7 +162,7 @@ static int slc90e66_tune_chipset (ide_drive_t *drive, u8 xferspeed)
 
 static int slc90e66_config_drive_for_dma (ide_drive_t *drive)
 {
-       u8 speed = ide_dma_speed(drive, slc90e66_ratemask(drive));
+       u8 speed = ide_max_dma_mode(drive);
 
        if (!speed)
                return 0;