diff options
Diffstat (limited to 'drivers/ide/pci/sc1200.c')
-rw-r--r-- | drivers/ide/pci/sc1200.c | 15 |
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) | |||
104 | static u8 sc1200_udma_filter(ide_drive_t *drive) | 103 | static 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 | } |
120 | out: | 121 | out: |