diff options
Diffstat (limited to 'drivers/ide/pci/slc90e66.c')
-rw-r--r-- | drivers/ide/pci/slc90e66.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/drivers/ide/pci/slc90e66.c b/drivers/ide/pci/slc90e66.c index ae8e91324577..ebac87f7200a 100644 --- a/drivers/ide/pci/slc90e66.c +++ b/drivers/ide/pci/slc90e66.c | |||
@@ -42,7 +42,7 @@ static u8 slc90e66_dma_2_pio (u8 xfer_rate) { | |||
42 | } | 42 | } |
43 | } | 43 | } |
44 | 44 | ||
45 | static void slc90e66_tune_pio (ide_drive_t *drive, u8 pio) | 45 | static void slc90e66_set_pio_mode(ide_drive_t *drive, const u8 pio) |
46 | { | 46 | { |
47 | ide_hwif_t *hwif = HWIF(drive); | 47 | ide_hwif_t *hwif = HWIF(drive); |
48 | struct pci_dev *dev = hwif->pci_dev; | 48 | struct pci_dev *dev = hwif->pci_dev; |
@@ -95,13 +95,7 @@ static void slc90e66_tune_pio (ide_drive_t *drive, u8 pio) | |||
95 | spin_unlock_irqrestore(&ide_lock, flags); | 95 | spin_unlock_irqrestore(&ide_lock, flags); |
96 | } | 96 | } |
97 | 97 | ||
98 | static void slc90e66_set_pio_mode(ide_drive_t *drive, const u8 pio) | 98 | static void slc90e66_set_dma_mode(ide_drive_t *drive, const u8 speed) |
99 | { | ||
100 | slc90e66_tune_pio(drive, pio); | ||
101 | (void) ide_config_drive_speed(drive, XFER_PIO_0 + pio); | ||
102 | } | ||
103 | |||
104 | static int slc90e66_tune_chipset(ide_drive_t *drive, const u8 speed) | ||
105 | { | 99 | { |
106 | ide_hwif_t *hwif = HWIF(drive); | 100 | ide_hwif_t *hwif = HWIF(drive); |
107 | struct pci_dev *dev = hwif->pci_dev; | 101 | struct pci_dev *dev = hwif->pci_dev; |
@@ -125,7 +119,7 @@ static int slc90e66_tune_chipset(ide_drive_t *drive, const u8 speed) | |||
125 | case XFER_MW_DMA_2: | 119 | case XFER_MW_DMA_2: |
126 | case XFER_MW_DMA_1: | 120 | case XFER_MW_DMA_1: |
127 | case XFER_SW_DMA_2: break; | 121 | case XFER_SW_DMA_2: break; |
128 | default: return -1; | 122 | default: return; |
129 | } | 123 | } |
130 | 124 | ||
131 | if (speed >= XFER_UDMA_0) { | 125 | if (speed >= XFER_UDMA_0) { |
@@ -144,9 +138,7 @@ static int slc90e66_tune_chipset(ide_drive_t *drive, const u8 speed) | |||
144 | pci_write_config_word(dev, 0x4a, reg4a & ~a_speed); | 138 | pci_write_config_word(dev, 0x4a, reg4a & ~a_speed); |
145 | } | 139 | } |
146 | 140 | ||
147 | slc90e66_tune_pio(drive, slc90e66_dma_2_pio(speed)); | 141 | slc90e66_set_pio_mode(drive, slc90e66_dma_2_pio(speed)); |
148 | |||
149 | return ide_config_drive_speed(drive, speed); | ||
150 | } | 142 | } |
151 | 143 | ||
152 | static int slc90e66_config_drive_xfer_rate (ide_drive_t *drive) | 144 | static int slc90e66_config_drive_xfer_rate (ide_drive_t *drive) |
@@ -172,8 +164,8 @@ static void __devinit init_hwif_slc90e66 (ide_hwif_t *hwif) | |||
172 | if (!hwif->irq) | 164 | if (!hwif->irq) |
173 | hwif->irq = hwif->channel ? 15 : 14; | 165 | hwif->irq = hwif->channel ? 15 : 14; |
174 | 166 | ||
175 | hwif->speedproc = &slc90e66_tune_chipset; | ||
176 | hwif->set_pio_mode = &slc90e66_set_pio_mode; | 167 | hwif->set_pio_mode = &slc90e66_set_pio_mode; |
168 | hwif->set_dma_mode = &slc90e66_set_dma_mode; | ||
177 | 169 | ||
178 | pci_read_config_byte(hwif->pci_dev, 0x47, ®47); | 170 | pci_read_config_byte(hwif->pci_dev, 0x47, ®47); |
179 | 171 | ||