diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-07-09 17:17:58 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-07-09 17:17:58 -0400 |
commit | 49521f97ccd3c2bf6e71a91cea8fe65d170fa4fb (patch) | |
tree | f61c34da6092f2f1a97a78da567afc59ad40850b /drivers/ide/pci/piix.c | |
parent | 75b1d97535327d0428c6bffd9d5407e65546fd5d (diff) |
ide: add short cables support
This patch allows users to override both host and device side cable detection
with "ideX=ata66" kernel parameter. Thanks to this it should be now possible
to use UDMA > 2 modes on systems (laptops mainly) which use short 40-pin cable
instead of 80-pin one.
Next patches add automatic detection of some systems using short cables.
Changes:
* Rename hwif->udma_four to hwif->cbl and make it u8.
* Convert all existing users accordingly (use ATA_CBL_* defines while at it).
* Add ATA_CBL_PATA40_SHORT support to ide-iops.c:eighty_ninty_three().
* Use ATA_CBL_PATA40_SHORT for "ideX=ata66" kernel parameter.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Reviewed-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Diffstat (limited to 'drivers/ide/pci/piix.c')
-rw-r--r-- | drivers/ide/pci/piix.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/ide/pci/piix.c b/drivers/ide/pci/piix.c index 8b219dd63024..1547c37f3332 100644 --- a/drivers/ide/pci/piix.c +++ b/drivers/ide/pci/piix.c | |||
@@ -394,14 +394,14 @@ static void piix_dma_clear_irq(ide_drive_t *drive) | |||
394 | hwif->OUTB(dma_stat, hwif->dma_status); | 394 | hwif->OUTB(dma_stat, hwif->dma_status); |
395 | } | 395 | } |
396 | 396 | ||
397 | static int __devinit piix_cable_detect(ide_hwif_t *hwif) | 397 | static u8 __devinit piix_cable_detect(ide_hwif_t *hwif) |
398 | { | 398 | { |
399 | struct pci_dev *dev = hwif->pci_dev; | 399 | struct pci_dev *dev = hwif->pci_dev; |
400 | u8 reg54h = 0, mask = hwif->channel ? 0xc0 : 0x30; | 400 | u8 reg54h = 0, mask = hwif->channel ? 0xc0 : 0x30; |
401 | 401 | ||
402 | pci_read_config_byte(dev, 0x54, ®54h); | 402 | pci_read_config_byte(dev, 0x54, ®54h); |
403 | 403 | ||
404 | return (reg54h & mask) ? 1 : 0; | 404 | return (reg54h & mask) ? ATA_CBL_PATA80 : ATA_CBL_PATA40; |
405 | } | 405 | } |
406 | 406 | ||
407 | /** | 407 | /** |
@@ -444,8 +444,8 @@ static void __devinit init_hwif_piix(ide_hwif_t *hwif) | |||
444 | hwif->swdma_mask = 0x04; | 444 | hwif->swdma_mask = 0x04; |
445 | 445 | ||
446 | if (hwif->ultra_mask & 0x78) { | 446 | if (hwif->ultra_mask & 0x78) { |
447 | if (!hwif->udma_four) | 447 | if (hwif->cbl != ATA_CBL_PATA40_SHORT) |
448 | hwif->udma_four = piix_cable_detect(hwif); | 448 | hwif->cbl = piix_cable_detect(hwif); |
449 | } | 449 | } |
450 | 450 | ||
451 | if (no_piix_dma) | 451 | if (no_piix_dma) |