diff options
Diffstat (limited to 'drivers/ide/pci/atiixp.c')
-rw-r--r-- | drivers/ide/pci/atiixp.c | 33 |
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 | ||
132 | static void atiixp_tune_pio(ide_drive_t *drive, u8 pio) | 132 | static 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 | ||
156 | static 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 | ||
172 | static int atiixp_speedproc(ide_drive_t *drive, const u8 speed) | 165 | static 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 | ||