diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-05-09 18:01:10 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-05-09 18:01:10 -0400 |
commit | 7f8f48af0861c38c28d4abd550102643e0ea9e6a (patch) | |
tree | 6ec47ace87afbd96cc1144d423854b09d9f21d75 /drivers/ide/pci/pdc202xx_new.c | |
parent | 7662d046df09e80680b77b68de896beab45e675e (diff) |
ide: cable detection fixes (take 2)
Tejun's recent eighty_ninty_three() fix has inspired me to do more thorough
review of the cable detection code...
* print user-friendly warning about limiting the maximum transfer speed
to UDMA33 (and the reason behind it) when 80-wire cable is not detected,
also while at it cleanup eighty_ninty_three() a bit
* use eighty_ninty_three() in ide_ata66_check(), this actually fixes 3 bugs:
- bit 14 (word 93 validity check) == 1 && bit 13 (80-wire cable test) == 1
were used as 80-wire cable present test for CONFIG_IDEDMA_IVB=n case
(please see FIXME comment in eighty_ninty_three() for more details)
- CONFIG_IDEDMA_IVB=y/n cases were interchanged
- check for SATA devices was missing
* remove private cable warnings from pdc_202xx{old,new} drivers now that core
code provides this functionality (plus, in pdc202xx_new case the test could
give false warnings for ATAPI devices because pdc202xx_new driver doesn't
even support ATAPI DMA)
Cc: Tejun Heo <htejun@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/pci/pdc202xx_new.c')
-rw-r--r-- | drivers/ide/pci/pdc202xx_new.c | 16 |
1 files changed, 0 insertions, 16 deletions
diff --git a/drivers/ide/pci/pdc202xx_new.c b/drivers/ide/pci/pdc202xx_new.c index 772ca4007de4..65b1e124edf7 100644 --- a/drivers/ide/pci/pdc202xx_new.c +++ b/drivers/ide/pci/pdc202xx_new.c | |||
@@ -37,8 +37,6 @@ | |||
37 | #include <asm/pci-bridge.h> | 37 | #include <asm/pci-bridge.h> |
38 | #endif | 38 | #endif |
39 | 39 | ||
40 | #define PDC202_DEBUG_CABLE 0 | ||
41 | |||
42 | #undef DEBUG | 40 | #undef DEBUG |
43 | 41 | ||
44 | #ifdef DEBUG | 42 | #ifdef DEBUG |
@@ -234,17 +232,8 @@ static int config_chipset_for_dma(ide_drive_t *drive) | |||
234 | { | 232 | { |
235 | struct hd_driveid *id = drive->id; | 233 | struct hd_driveid *id = drive->id; |
236 | ide_hwif_t *hwif = HWIF(drive); | 234 | ide_hwif_t *hwif = HWIF(drive); |
237 | u8 ultra_66 = (id->dma_ultra & 0x0078) ? 1 : 0; | ||
238 | u8 cable = pdcnew_cable_detect(hwif); | ||
239 | u8 speed; | 235 | u8 speed; |
240 | 236 | ||
241 | if (ultra_66 && cable) { | ||
242 | printk(KERN_WARNING "Warning: %s channel " | ||
243 | "requires an 80-pin cable for operation.\n", | ||
244 | hwif->channel ? "Secondary" : "Primary"); | ||
245 | printk(KERN_WARNING "%s reduced to Ultra33 mode.\n", drive->name); | ||
246 | } | ||
247 | |||
248 | if (id->capability & 4) { | 237 | if (id->capability & 4) { |
249 | /* | 238 | /* |
250 | * Set IORDY_EN & PREFETCH_EN (this seems to have | 239 | * Set IORDY_EN & PREFETCH_EN (this seems to have |
@@ -547,11 +536,6 @@ static void __devinit init_hwif_pdc202new(ide_hwif_t *hwif) | |||
547 | if (!noautodma) | 536 | if (!noautodma) |
548 | hwif->autodma = 1; | 537 | hwif->autodma = 1; |
549 | hwif->drives[0].autodma = hwif->drives[1].autodma = hwif->autodma; | 538 | hwif->drives[0].autodma = hwif->drives[1].autodma = hwif->autodma; |
550 | |||
551 | #if PDC202_DEBUG_CABLE | ||
552 | printk(KERN_DEBUG "%s: %s-pin cable\n", | ||
553 | hwif->name, hwif->udma_four ? "80" : "40"); | ||
554 | #endif /* PDC202_DEBUG_CABLE */ | ||
555 | } | 539 | } |
556 | 540 | ||
557 | static int __devinit init_setup_pdcnew(struct pci_dev *dev, ide_pci_device_t *d) | 541 | static int __devinit init_setup_pdcnew(struct pci_dev *dev, ide_pci_device_t *d) |