diff options
Diffstat (limited to 'drivers/ide/pci/piix.c')
-rw-r--r-- | drivers/ide/pci/piix.c | 46 |
1 files changed, 15 insertions, 31 deletions
diff --git a/drivers/ide/pci/piix.c b/drivers/ide/pci/piix.c index fd8214a7ab98..38c91ba6497b 100644 --- a/drivers/ide/pci/piix.c +++ b/drivers/ide/pci/piix.c | |||
@@ -137,13 +137,14 @@ static u8 piix_dma_2_pio (u8 xfer_rate) { | |||
137 | } | 137 | } |
138 | 138 | ||
139 | /** | 139 | /** |
140 | * piix_tune_pio - tune PIIX for PIO mode | 140 | * piix_set_pio_mode - set host controller for PIO mode |
141 | * @drive: drive to tune | 141 | * @drive: drive |
142 | * @pio: desired PIO mode | 142 | * @pio: PIO mode number |
143 | * | 143 | * |
144 | * Set the interface PIO mode based upon the settings done by AMI BIOS. | 144 | * Set the interface PIO mode based upon the settings done by AMI BIOS. |
145 | */ | 145 | */ |
146 | static void piix_tune_pio (ide_drive_t *drive, u8 pio) | 146 | |
147 | static void piix_set_pio_mode(ide_drive_t *drive, const u8 pio) | ||
147 | { | 148 | { |
148 | ide_hwif_t *hwif = HWIF(drive); | 149 | ide_hwif_t *hwif = HWIF(drive); |
149 | struct pci_dev *dev = hwif->pci_dev; | 150 | struct pci_dev *dev = hwif->pci_dev; |
@@ -204,31 +205,15 @@ static void piix_tune_pio (ide_drive_t *drive, u8 pio) | |||
204 | } | 205 | } |
205 | 206 | ||
206 | /** | 207 | /** |
207 | * piix_set_pio_mode - set PIO mode | 208 | * piix_set_dma_mode - set host controller for DMA mode |
208 | * @drive: drive to tune | 209 | * @drive: drive |
209 | * @pio: desired PIO mode | 210 | * @speed: DMA mode |
210 | * | ||
211 | * Set the drive's PIO mode (might be useful if drive is not registered | ||
212 | * in CMOS for any reason). | ||
213 | */ | ||
214 | |||
215 | static void piix_set_pio_mode(ide_drive_t *drive, const u8 pio) | ||
216 | { | ||
217 | piix_tune_pio(drive, pio); | ||
218 | (void) ide_config_drive_speed(drive, XFER_PIO_0 + pio); | ||
219 | } | ||
220 | |||
221 | /** | ||
222 | * piix_tune_chipset - tune a PIIX interface | ||
223 | * @drive: IDE drive to tune | ||
224 | * @speed: speed to configure | ||
225 | * | 211 | * |
226 | * Set a PIIX interface channel to the desired speeds. This involves | 212 | * Set a PIIX host controller to the desired DMA mode. This involves |
227 | * requires the right timing data into the PIIX configuration space | 213 | * programming the right timing data into the PCI configuration space. |
228 | * then setting the drive parameters appropriately | ||
229 | */ | 214 | */ |
230 | 215 | ||
231 | static int piix_tune_chipset(ide_drive_t *drive, const u8 speed) | 216 | static void piix_set_dma_mode(ide_drive_t *drive, const u8 speed) |
232 | { | 217 | { |
233 | ide_hwif_t *hwif = HWIF(drive); | 218 | ide_hwif_t *hwif = HWIF(drive); |
234 | struct pci_dev *dev = hwif->pci_dev; | 219 | struct pci_dev *dev = hwif->pci_dev; |
@@ -259,7 +244,7 @@ static int piix_tune_chipset(ide_drive_t *drive, const u8 speed) | |||
259 | case XFER_MW_DMA_2: | 244 | case XFER_MW_DMA_2: |
260 | case XFER_MW_DMA_1: | 245 | case XFER_MW_DMA_1: |
261 | case XFER_SW_DMA_2: break; | 246 | case XFER_SW_DMA_2: break; |
262 | default: return -1; | 247 | default: return; |
263 | } | 248 | } |
264 | 249 | ||
265 | if (speed >= XFER_UDMA_0) { | 250 | if (speed >= XFER_UDMA_0) { |
@@ -288,9 +273,7 @@ static int piix_tune_chipset(ide_drive_t *drive, const u8 speed) | |||
288 | pci_write_config_byte(dev, 0x55, (u8) reg55 & ~w_flag); | 273 | pci_write_config_byte(dev, 0x55, (u8) reg55 & ~w_flag); |
289 | } | 274 | } |
290 | 275 | ||
291 | piix_tune_pio(drive, piix_dma_2_pio(speed)); | 276 | piix_set_pio_mode(drive, piix_dma_2_pio(speed)); |
292 | |||
293 | return ide_config_drive_speed(drive, speed); | ||
294 | } | 277 | } |
295 | 278 | ||
296 | /** | 279 | /** |
@@ -448,7 +431,8 @@ static void __devinit init_hwif_piix(ide_hwif_t *hwif) | |||
448 | hwif->autodma = 0; | 431 | hwif->autodma = 0; |
449 | 432 | ||
450 | hwif->set_pio_mode = &piix_set_pio_mode; | 433 | hwif->set_pio_mode = &piix_set_pio_mode; |
451 | hwif->speedproc = &piix_tune_chipset; | 434 | hwif->set_dma_mode = &piix_set_dma_mode; |
435 | |||
452 | hwif->drives[0].autotune = 1; | 436 | hwif->drives[0].autotune = 1; |
453 | hwif->drives[1].autotune = 1; | 437 | hwif->drives[1].autotune = 1; |
454 | 438 | ||