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/alim15x3.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/alim15x3.c')
-rw-r--r-- | drivers/ide/pci/alim15x3.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/ide/pci/alim15x3.c b/drivers/ide/pci/alim15x3.c index 27525ec2e19a..d52c54bb6a78 100644 --- a/drivers/ide/pci/alim15x3.c +++ b/drivers/ide/pci/alim15x3.c | |||
@@ -594,7 +594,7 @@ out: | |||
594 | * FIXME: frobs bits that are not defined on newer ALi devicea | 594 | * FIXME: frobs bits that are not defined on newer ALi devicea |
595 | */ | 595 | */ |
596 | 596 | ||
597 | static unsigned int __devinit ata66_ali15x3 (ide_hwif_t *hwif) | 597 | static u8 __devinit ata66_ali15x3(ide_hwif_t *hwif) |
598 | { | 598 | { |
599 | struct pci_dev *dev = hwif->pci_dev; | 599 | struct pci_dev *dev = hwif->pci_dev; |
600 | unsigned int ata66 = 0; | 600 | unsigned int ata66 = 0; |
@@ -657,7 +657,7 @@ static unsigned int __devinit ata66_ali15x3 (ide_hwif_t *hwif) | |||
657 | 657 | ||
658 | local_irq_restore(flags); | 658 | local_irq_restore(flags); |
659 | 659 | ||
660 | return(ata66); | 660 | return ata66 ? ATA_CBL_PATA80 : ATA_CBL_PATA40; |
661 | } | 661 | } |
662 | 662 | ||
663 | /** | 663 | /** |
@@ -708,8 +708,9 @@ static void __devinit init_hwif_common_ali15x3 (ide_hwif_t *hwif) | |||
708 | hwif->dma_setup = &ali15x3_dma_setup; | 708 | hwif->dma_setup = &ali15x3_dma_setup; |
709 | if (!noautodma) | 709 | if (!noautodma) |
710 | hwif->autodma = 1; | 710 | hwif->autodma = 1; |
711 | if (!(hwif->udma_four)) | 711 | |
712 | hwif->udma_four = ata66_ali15x3(hwif); | 712 | if (hwif->cbl != ATA_CBL_PATA40_SHORT) |
713 | hwif->cbl = ata66_ali15x3(hwif); | ||
713 | } | 714 | } |
714 | hwif->drives[0].autodma = hwif->autodma; | 715 | hwif->drives[0].autodma = hwif->autodma; |
715 | hwif->drives[1].autodma = hwif->autodma; | 716 | hwif->drives[1].autodma = hwif->autodma; |