diff options
Diffstat (limited to 'drivers/ide/pci/serverworks.c')
-rw-r--r-- | drivers/ide/pci/serverworks.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/ide/pci/serverworks.c b/drivers/ide/pci/serverworks.c index 0351cf210427..49ec0ac64a4b 100644 --- a/drivers/ide/pci/serverworks.c +++ b/drivers/ide/pci/serverworks.c | |||
@@ -124,7 +124,7 @@ static u8 svwks_csb_check (struct pci_dev *dev) | |||
124 | return 0; | 124 | return 0; |
125 | } | 125 | } |
126 | 126 | ||
127 | static void svwks_tune_pio(ide_drive_t *drive, const u8 pio) | 127 | static void svwks_set_pio_mode(ide_drive_t *drive, const u8 pio) |
128 | { | 128 | { |
129 | static const u8 pio_modes[] = { 0x5d, 0x47, 0x34, 0x22, 0x20 }; | 129 | static const u8 pio_modes[] = { 0x5d, 0x47, 0x34, 0x22, 0x20 }; |
130 | static const u8 drive_pci[] = { 0x41, 0x40, 0x43, 0x42 }; | 130 | static const u8 drive_pci[] = { 0x41, 0x40, 0x43, 0x42 }; |
@@ -145,7 +145,7 @@ static void svwks_tune_pio(ide_drive_t *drive, const u8 pio) | |||
145 | } | 145 | } |
146 | } | 146 | } |
147 | 147 | ||
148 | static int svwks_tune_chipset(ide_drive_t *drive, const u8 speed) | 148 | static void svwks_set_dma_mode(ide_drive_t *drive, const u8 speed) |
149 | { | 149 | { |
150 | static const u8 udma_modes[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 }; | 150 | static const u8 udma_modes[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 }; |
151 | static const u8 dma_modes[] = { 0x77, 0x21, 0x20 }; | 151 | static const u8 dma_modes[] = { 0x77, 0x21, 0x20 }; |
@@ -193,14 +193,6 @@ static int svwks_tune_chipset(ide_drive_t *drive, const u8 speed) | |||
193 | pci_write_config_byte(dev, drive_pci2[drive->dn], dma_timing); | 193 | pci_write_config_byte(dev, drive_pci2[drive->dn], dma_timing); |
194 | pci_write_config_byte(dev, (0x56|hwif->channel), ultra_timing); | 194 | pci_write_config_byte(dev, (0x56|hwif->channel), ultra_timing); |
195 | pci_write_config_byte(dev, 0x54, ultra_enable); | 195 | pci_write_config_byte(dev, 0x54, ultra_enable); |
196 | |||
197 | return (ide_config_drive_speed(drive, speed)); | ||
198 | } | ||
199 | |||
200 | static void svwks_set_pio_mode(ide_drive_t *drive, const u8 pio) | ||
201 | { | ||
202 | svwks_tune_pio(drive, pio); | ||
203 | (void)ide_config_drive_speed(drive, XFER_PIO_0 + pio); | ||
204 | } | 196 | } |
205 | 197 | ||
206 | static int svwks_config_drive_xfer_rate (ide_drive_t *drive) | 198 | static int svwks_config_drive_xfer_rate (ide_drive_t *drive) |
@@ -384,7 +376,7 @@ static void __devinit init_hwif_svwks (ide_hwif_t *hwif) | |||
384 | hwif->irq = hwif->channel ? 15 : 14; | 376 | hwif->irq = hwif->channel ? 15 : 14; |
385 | 377 | ||
386 | hwif->set_pio_mode = &svwks_set_pio_mode; | 378 | hwif->set_pio_mode = &svwks_set_pio_mode; |
387 | hwif->speedproc = &svwks_tune_chipset; | 379 | hwif->set_dma_mode = &svwks_set_dma_mode; |
388 | hwif->udma_filter = &svwks_udma_filter; | 380 | hwif->udma_filter = &svwks_udma_filter; |
389 | 381 | ||
390 | hwif->atapi_dma = 1; | 382 | hwif->atapi_dma = 1; |