diff options
Diffstat (limited to 'drivers/ide/pci/aec62xx.c')
-rw-r--r-- | drivers/ide/pci/aec62xx.c | 28 |
1 files changed, 8 insertions, 20 deletions
diff --git a/drivers/ide/pci/aec62xx.c b/drivers/ide/pci/aec62xx.c index 99184be6a98c..794ac40ec90f 100644 --- a/drivers/ide/pci/aec62xx.c +++ b/drivers/ide/pci/aec62xx.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/drivers/ide/pci/aec62xx.c Version 0.23 May 23, 2007 | 2 | * linux/drivers/ide/pci/aec62xx.c Version 0.24 May 24, 2007 |
3 | * | 3 | * |
4 | * Copyright (C) 1999-2002 Andre Hedrick <andre@linux-ide.org> | 4 | * Copyright (C) 1999-2002 Andre Hedrick <andre@linux-ide.org> |
5 | * Copyright (C) 2007 MontaVista Software, Inc. <source@mvista.com> | 5 | * Copyright (C) 2007 MontaVista Software, Inc. <source@mvista.com> |
@@ -140,25 +140,10 @@ static int aec6260_tune_chipset (ide_drive_t *drive, u8 xferspeed) | |||
140 | return(ide_config_drive_speed(drive, speed)); | 140 | return(ide_config_drive_speed(drive, speed)); |
141 | } | 141 | } |
142 | 142 | ||
143 | static int aec62xx_tune_chipset (ide_drive_t *drive, u8 speed) | ||
144 | { | ||
145 | switch (HWIF(drive)->pci_dev->device) { | ||
146 | case PCI_DEVICE_ID_ARTOP_ATP865: | ||
147 | case PCI_DEVICE_ID_ARTOP_ATP865R: | ||
148 | case PCI_DEVICE_ID_ARTOP_ATP860: | ||
149 | case PCI_DEVICE_ID_ARTOP_ATP860R: | ||
150 | return ((int) aec6260_tune_chipset(drive, speed)); | ||
151 | case PCI_DEVICE_ID_ARTOP_ATP850UF: | ||
152 | return ((int) aec6210_tune_chipset(drive, speed)); | ||
153 | default: | ||
154 | return -1; | ||
155 | } | ||
156 | } | ||
157 | |||
158 | static void aec62xx_tune_drive (ide_drive_t *drive, u8 pio) | 143 | static void aec62xx_tune_drive (ide_drive_t *drive, u8 pio) |
159 | { | 144 | { |
160 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 145 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); |
161 | (void) aec62xx_tune_chipset(drive, pio + XFER_PIO_0); | 146 | (void) HWIF(drive)->speedproc(drive, pio + XFER_PIO_0); |
162 | } | 147 | } |
163 | 148 | ||
164 | static int aec62xx_config_drive_xfer_rate (ide_drive_t *drive) | 149 | static int aec62xx_config_drive_xfer_rate (ide_drive_t *drive) |
@@ -225,10 +210,13 @@ static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif) | |||
225 | unsigned long flags; | 210 | unsigned long flags; |
226 | 211 | ||
227 | hwif->tuneproc = &aec62xx_tune_drive; | 212 | hwif->tuneproc = &aec62xx_tune_drive; |
228 | hwif->speedproc = &aec62xx_tune_chipset; | ||
229 | 213 | ||
230 | if (dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF && hwif->mate) | 214 | if (dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF) { |
231 | hwif->mate->serialized = hwif->serialized = 1; | 215 | if(hwif->mate) |
216 | hwif->mate->serialized = hwif->serialized = 1; | ||
217 | hwif->speedproc = &aec6210_tune_chipset; | ||
218 | } else | ||
219 | hwif->speedproc = &aec6260_tune_chipset; | ||
232 | 220 | ||
233 | if (!hwif->dma_base) { | 221 | if (!hwif->dma_base) { |
234 | hwif->drives[0].autotune = hwif->drives[1].autotune = 1; | 222 | hwif->drives[0].autotune = hwif->drives[1].autotune = 1; |