aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/pci/sc1200.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/pci/sc1200.c')
-rw-r--r--drivers/ide/pci/sc1200.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/ide/pci/sc1200.c b/drivers/ide/pci/sc1200.c
index 8efaed16fea3..bdc1fed41260 100644
--- a/drivers/ide/pci/sc1200.c
+++ b/drivers/ide/pci/sc1200.c
@@ -14,7 +14,6 @@
14#include <linux/module.h> 14#include <linux/module.h>
15#include <linux/types.h> 15#include <linux/types.h>
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/hdreg.h>
18#include <linux/pci.h> 17#include <linux/pci.h>
19#include <linux/init.h> 18#include <linux/init.h>
20#include <linux/ide.h> 19#include <linux/ide.h>
@@ -104,17 +103,19 @@ static void sc1200_tunepio(ide_drive_t *drive, u8 pio)
104static u8 sc1200_udma_filter(ide_drive_t *drive) 103static u8 sc1200_udma_filter(ide_drive_t *drive)
105{ 104{
106 ide_hwif_t *hwif = drive->hwif; 105 ide_hwif_t *hwif = drive->hwif;
107 ide_drive_t *mate = &hwif->drives[(drive->dn & 1) ^ 1]; 106 ide_drive_t *mate = ide_get_pair_dev(drive);
108 struct hd_driveid *mateid = mate->id; 107 u16 *mateid = mate->id;
109 u8 mask = hwif->ultra_mask; 108 u8 mask = hwif->ultra_mask;
110 109
111 if (mate->present == 0) 110 if (mate == NULL)
112 goto out; 111 goto out;
113 112
114 if ((mateid->capability & 1) && __ide_dma_bad_drive(mate) == 0) { 113 if (ata_id_has_dma(mateid) && __ide_dma_bad_drive(mate) == 0) {
115 if ((mateid->field_valid & 4) && (mateid->dma_ultra & 7)) 114 if ((mateid[ATA_ID_FIELD_VALID] & 4) &&
115 (mateid[ATA_ID_UDMA_MODES] & 7))
116 goto out; 116 goto out;
117 if ((mateid->field_valid & 2) && (mateid->dma_mword & 7)) 117 if ((mateid[ATA_ID_FIELD_VALID] & 2) &&
118 (mateid[ATA_ID_MWDMA_MODES] & 7))
118 mask = 0; 119 mask = 0;
119 } 120 }
120out: 121out: