diff options
Diffstat (limited to 'drivers/ide/pci/scc_pata.c')
-rw-r--r-- | drivers/ide/pci/scc_pata.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/drivers/ide/pci/scc_pata.c b/drivers/ide/pci/scc_pata.c index 66a526e0ece4..67f06dd11b34 100644 --- a/drivers/ide/pci/scc_pata.c +++ b/drivers/ide/pci/scc_pata.c | |||
@@ -190,15 +190,15 @@ scc_ide_outsl(unsigned long port, void *addr, u32 count) | |||
190 | } | 190 | } |
191 | 191 | ||
192 | /** | 192 | /** |
193 | * scc_tune_pio - tune a drive PIO mode | 193 | * scc_set_pio_mode - set host controller for PIO mode |
194 | * @drive: drive to tune | 194 | * @drive: drive |
195 | * @mode_wanted: the target operating mode | 195 | * @pio: PIO mode number |
196 | * | 196 | * |
197 | * Load the timing settings for this device mode into the | 197 | * Load the timing settings for this device mode into the |
198 | * controller. | 198 | * controller. |
199 | */ | 199 | */ |
200 | 200 | ||
201 | static void scc_tune_pio(ide_drive_t *drive, const u8 pio) | 201 | static void scc_set_pio_mode(ide_drive_t *drive, const u8 pio) |
202 | { | 202 | { |
203 | ide_hwif_t *hwif = HWIF(drive); | 203 | ide_hwif_t *hwif = HWIF(drive); |
204 | struct scc_ports *ports = ide_get_hwifdata(hwif); | 204 | struct scc_ports *ports = ide_get_hwifdata(hwif); |
@@ -221,22 +221,16 @@ static void scc_tune_pio(ide_drive_t *drive, const u8 pio) | |||
221 | out_be32((void __iomem *)pioct_port, reg); | 221 | out_be32((void __iomem *)pioct_port, reg); |
222 | } | 222 | } |
223 | 223 | ||
224 | static void scc_set_pio_mode(ide_drive_t *drive, const u8 pio) | ||
225 | { | ||
226 | scc_tune_pio(drive, pio); | ||
227 | ide_config_drive_speed(drive, XFER_PIO_0 + pio); | ||
228 | } | ||
229 | |||
230 | /** | 224 | /** |
231 | * scc_tune_chipset - tune a drive DMA mode | 225 | * scc_set_dma_mode - set host controller for DMA mode |
232 | * @drive: Drive to set up | 226 | * @drive: drive |
233 | * @speed: speed we want to achieve | 227 | * @speed: DMA mode |
234 | * | 228 | * |
235 | * Load the timing settings for this device mode into the | 229 | * Load the timing settings for this device mode into the |
236 | * controller. | 230 | * controller. |
237 | */ | 231 | */ |
238 | 232 | ||
239 | static int scc_tune_chipset(ide_drive_t *drive, const u8 speed) | 233 | static void scc_set_dma_mode(ide_drive_t *drive, const u8 speed) |
240 | { | 234 | { |
241 | ide_hwif_t *hwif = HWIF(drive); | 235 | ide_hwif_t *hwif = HWIF(drive); |
242 | struct scc_ports *ports = ide_get_hwifdata(hwif); | 236 | struct scc_ports *ports = ide_get_hwifdata(hwif); |
@@ -271,7 +265,7 @@ static int scc_tune_chipset(ide_drive_t *drive, const u8 speed) | |||
271 | idx = speed - XFER_UDMA_0; | 265 | idx = speed - XFER_UDMA_0; |
272 | break; | 266 | break; |
273 | default: | 267 | default: |
274 | return 1; | 268 | return; |
275 | } | 269 | } |
276 | 270 | ||
277 | jcactsel = JCACTSELtbl[offset][idx]; | 271 | jcactsel = JCACTSELtbl[offset][idx]; |
@@ -287,8 +281,6 @@ static int scc_tune_chipset(ide_drive_t *drive, const u8 speed) | |||
287 | } | 281 | } |
288 | reg = JCTSStbl[offset][idx] << 16 | JCENVTtbl[offset][idx]; | 282 | reg = JCTSStbl[offset][idx] << 16 | JCENVTtbl[offset][idx]; |
289 | out_be32((void __iomem *)udenvt_port, reg); | 283 | out_be32((void __iomem *)udenvt_port, reg); |
290 | |||
291 | return ide_config_drive_speed(drive, speed); | ||
292 | } | 284 | } |
293 | 285 | ||
294 | /** | 286 | /** |
@@ -708,8 +700,8 @@ static void __devinit init_hwif_scc(ide_hwif_t *hwif) | |||
708 | 700 | ||
709 | hwif->dma_setup = scc_dma_setup; | 701 | hwif->dma_setup = scc_dma_setup; |
710 | hwif->ide_dma_end = scc_ide_dma_end; | 702 | hwif->ide_dma_end = scc_ide_dma_end; |
711 | hwif->speedproc = scc_tune_chipset; | ||
712 | hwif->set_pio_mode = scc_set_pio_mode; | 703 | hwif->set_pio_mode = scc_set_pio_mode; |
704 | hwif->set_dma_mode = scc_set_dma_mode; | ||
713 | hwif->ide_dma_check = scc_config_drive_for_dma; | 705 | hwif->ide_dma_check = scc_config_drive_for_dma; |
714 | hwif->ide_dma_test_irq = scc_dma_test_irq; | 706 | hwif->ide_dma_test_irq = scc_dma_test_irq; |
715 | hwif->udma_filter = scc_udma_filter; | 707 | hwif->udma_filter = scc_udma_filter; |