diff options
Diffstat (limited to 'drivers/ide/pci/sl82c105.c')
-rw-r--r-- | drivers/ide/pci/sl82c105.c | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/drivers/ide/pci/sl82c105.c b/drivers/ide/pci/sl82c105.c index f492318ba797..2ef26e3f7be4 100644 --- a/drivers/ide/pci/sl82c105.c +++ b/drivers/ide/pci/sl82c105.c | |||
@@ -75,7 +75,7 @@ static unsigned int get_pio_timings(ide_drive_t *drive, u8 pio) | |||
75 | /* | 75 | /* |
76 | * Configure the chipset for PIO mode. | 76 | * Configure the chipset for PIO mode. |
77 | */ | 77 | */ |
78 | static void sl82c105_tune_pio(ide_drive_t *drive, const u8 pio) | 78 | static void sl82c105_set_pio_mode(ide_drive_t *drive, const u8 pio) |
79 | { | 79 | { |
80 | struct pci_dev *dev = HWIF(drive)->pci_dev; | 80 | struct pci_dev *dev = HWIF(drive)->pci_dev; |
81 | int reg = 0x44 + drive->dn * 4; | 81 | int reg = 0x44 + drive->dn * 4; |
@@ -105,9 +105,9 @@ static void sl82c105_tune_pio(ide_drive_t *drive, const u8 pio) | |||
105 | } | 105 | } |
106 | 106 | ||
107 | /* | 107 | /* |
108 | * Configure the drive and chipset for a new transfer speed. | 108 | * Configure the chipset for DMA mode. |
109 | */ | 109 | */ |
110 | static int sl82c105_tune_chipset(ide_drive_t *drive, const u8 speed) | 110 | static void sl82c105_set_dma_mode(ide_drive_t *drive, const u8 speed) |
111 | { | 111 | { |
112 | static u16 mwdma_timings[] = {0x0707, 0x0201, 0x0200}; | 112 | static u16 mwdma_timings[] = {0x0707, 0x0201, 0x0200}; |
113 | u16 drv_ctrl; | 113 | u16 drv_ctrl; |
@@ -140,10 +140,8 @@ static int sl82c105_tune_chipset(ide_drive_t *drive, const u8 speed) | |||
140 | } | 140 | } |
141 | break; | 141 | break; |
142 | default: | 142 | default: |
143 | return -1; | 143 | return; |
144 | } | 144 | } |
145 | |||
146 | return ide_config_drive_speed(drive, speed); | ||
147 | } | 145 | } |
148 | 146 | ||
149 | /* | 147 | /* |
@@ -306,17 +304,6 @@ static void sl82c105_resetproc(ide_drive_t *drive) | |||
306 | pci_read_config_dword(dev, 0x40, &val); | 304 | pci_read_config_dword(dev, 0x40, &val); |
307 | pci_set_drvdata(dev, (void *)val); | 305 | pci_set_drvdata(dev, (void *)val); |
308 | } | 306 | } |
309 | |||
310 | /* | ||
311 | * We only deal with PIO mode here - DMA mode 'using_dma' is not | ||
312 | * initialised at the point that this function is called. | ||
313 | */ | ||
314 | static void sl82c105_set_pio_mode(ide_drive_t *drive, const u8 pio) | ||
315 | { | ||
316 | sl82c105_tune_pio(drive, pio); | ||
317 | |||
318 | (void) ide_config_drive_speed(drive, XFER_PIO_0 + pio); | ||
319 | } | ||
320 | 307 | ||
321 | /* | 308 | /* |
322 | * Return the revision of the Winbond bridge | 309 | * Return the revision of the Winbond bridge |
@@ -383,7 +370,7 @@ static void __devinit init_hwif_sl82c105(ide_hwif_t *hwif) | |||
383 | DBG(("init_hwif_sl82c105(hwif: ide%d)\n", hwif->index)); | 370 | DBG(("init_hwif_sl82c105(hwif: ide%d)\n", hwif->index)); |
384 | 371 | ||
385 | hwif->set_pio_mode = &sl82c105_set_pio_mode; | 372 | hwif->set_pio_mode = &sl82c105_set_pio_mode; |
386 | hwif->speedproc = &sl82c105_tune_chipset; | 373 | hwif->set_dma_mode = &sl82c105_set_dma_mode; |
387 | hwif->selectproc = &sl82c105_selectproc; | 374 | hwif->selectproc = &sl82c105_selectproc; |
388 | hwif->resetproc = &sl82c105_resetproc; | 375 | hwif->resetproc = &sl82c105_resetproc; |
389 | 376 | ||