aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/pci/atiixp.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/pci/atiixp.c')
-rw-r--r--drivers/ide/pci/atiixp.c33
1 files changed, 12 insertions, 21 deletions
diff --git a/drivers/ide/pci/atiixp.c b/drivers/ide/pci/atiixp.c
index 178876a3afca..0eb97f021d39 100644
--- a/drivers/ide/pci/atiixp.c
+++ b/drivers/ide/pci/atiixp.c
@@ -122,14 +122,14 @@ static void atiixp_dma_host_off(ide_drive_t *drive)
122} 122}
123 123
124/** 124/**
125 * atiixp_tune_pio - tune a drive attached to a ATIIXP 125 * atiixp_set_pio_mode - set host controller for PIO mode
126 * @drive: drive to tune 126 * @drive: drive
127 * @pio: desired PIO mode 127 * @pio: PIO mode number
128 * 128 *
129 * Set the interface PIO mode. 129 * Set the interface PIO mode.
130 */ 130 */
131 131
132static void atiixp_tune_pio(ide_drive_t *drive, u8 pio) 132static void atiixp_set_pio_mode(ide_drive_t *drive, const u8 pio)
133{ 133{
134 struct pci_dev *dev = drive->hwif->pci_dev; 134 struct pci_dev *dev = drive->hwif->pci_dev;
135 unsigned long flags; 135 unsigned long flags;
@@ -153,23 +153,16 @@ static void atiixp_tune_pio(ide_drive_t *drive, u8 pio)
153 spin_unlock_irqrestore(&atiixp_lock, flags); 153 spin_unlock_irqrestore(&atiixp_lock, flags);
154} 154}
155 155
156static void atiixp_set_pio_mode(ide_drive_t *drive, const u8 pio)
157{
158 atiixp_tune_pio(drive, pio);
159 (void)ide_config_drive_speed(drive, XFER_PIO_0 + pio);
160}
161
162/** 156/**
163 * atiixp_tune_chipset - tune a ATIIXP interface 157 * atiixp_set_dma_mode - set host controller for DMA mode
164 * @drive: IDE drive to tune 158 * @drive: drive
165 * @speed: speed to configure 159 * @speed: DMA mode
166 * 160 *
167 * Set a ATIIXP interface channel to the desired speeds. This involves 161 * Set a ATIIXP host controller to the desired DMA mode. This involves
168 * requires the right timing data into the ATIIXP configuration space 162 * programming the right timing data into the PCI configuration space.
169 * then setting the drive parameters appropriately
170 */ 163 */
171 164
172static int atiixp_speedproc(ide_drive_t *drive, const u8 speed) 165static void atiixp_set_dma_mode(ide_drive_t *drive, const u8 speed)
173{ 166{
174 struct pci_dev *dev = drive->hwif->pci_dev; 167 struct pci_dev *dev = drive->hwif->pci_dev;
175 unsigned long flags; 168 unsigned long flags;
@@ -204,9 +197,7 @@ static int atiixp_speedproc(ide_drive_t *drive, const u8 speed)
204 else 197 else
205 pio = speed - XFER_PIO_0; 198 pio = speed - XFER_PIO_0;
206 199
207 atiixp_tune_pio(drive, pio); 200 atiixp_set_pio_mode(drive, pio);
208
209 return ide_config_drive_speed(drive, speed);
210} 201}
211 202
212/** 203/**
@@ -249,7 +240,7 @@ static void __devinit init_hwif_atiixp(ide_hwif_t *hwif)
249 240
250 hwif->autodma = 0; 241 hwif->autodma = 0;
251 hwif->set_pio_mode = &atiixp_set_pio_mode; 242 hwif->set_pio_mode = &atiixp_set_pio_mode;
252 hwif->speedproc = &atiixp_speedproc; 243 hwif->set_dma_mode = &atiixp_set_dma_mode;
253 hwif->drives[0].autotune = 1; 244 hwif->drives[0].autotune = 1;
254 hwif->drives[1].autotune = 1; 245 hwif->drives[1].autotune = 1;
255 246