ide: call udma_filter() before resorting to the UltraDMA mask
authorSergei Shtylyov <sshtylyov@ru.mvista.com>
Thu, 11 Oct 2007 21:53:59 +0000 (23:53 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Thu, 11 Oct 2007 21:53:59 +0000 (23:53 +0200)
Give the udma_filter() method call precedence over using the mode masks.

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-dma.c

index 097d6e9865bc3c5a2411591e7affe7e2771c7965..f073ea35da000f9799abf710f9bf94fb9a9afe5b 100644 (file)
@@ -664,10 +664,11 @@ static unsigned int ide_get_mode_mask(ide_drive_t *drive, u8 base)
                if ((id->field_valid & 4) == 0)
                        break;
 
-               mask = id->dma_ultra & hwif->ultra_mask;
-
                if (hwif->udma_filter)
-                       mask &= hwif->udma_filter(drive);
+                       mask = hwif->udma_filter(drive);
+               else
+                       mask = hwif->ultra_mask;
+               mask &= id->dma_ultra;
 
                if ((mask & 0x78) && (eighty_ninty_three(drive) == 0))
                        mask &= 0x07;