diff options
-rw-r--r-- | drivers/ide/ide-lib.c | 15 | ||||
-rw-r--r-- | drivers/ide/ide-proc.c | 4 | ||||
-rw-r--r-- | drivers/ide/pci/aec62xx.c | 5 | ||||
-rw-r--r-- | drivers/ide/pci/amd74xx.c | 1 | ||||
-rw-r--r-- | drivers/ide/pci/cs5520.c | 3 | ||||
-rw-r--r-- | drivers/ide/pci/cs5535.c | 3 | ||||
-rw-r--r-- | drivers/ide/pci/hpt34x.c | 1 | ||||
-rw-r--r-- | drivers/ide/pci/hpt366.c | 1 | ||||
-rw-r--r-- | drivers/ide/pci/pdc202xx_old.c | 1 | ||||
-rw-r--r-- | drivers/ide/pci/serverworks.c | 4 | ||||
-rw-r--r-- | drivers/ide/pci/tc86c001.c | 3 | ||||
-rw-r--r-- | drivers/ide/pci/via82cxxx.c | 1 | ||||
-rw-r--r-- | include/linux/ide.h | 1 |
13 files changed, 8 insertions, 35 deletions
diff --git a/drivers/ide/ide-lib.c b/drivers/ide/ide-lib.c index 13af72f09ec4..7ac44d515470 100644 --- a/drivers/ide/ide-lib.c +++ b/drivers/ide/ide-lib.c | |||
@@ -266,22 +266,11 @@ int ide_set_xfer_rate(ide_drive_t *drive, u8 rate) | |||
266 | 266 | ||
267 | rate = ide_rate_filter(drive, rate); | 267 | rate = ide_rate_filter(drive, rate); |
268 | 268 | ||
269 | BUG_ON(rate < XFER_PIO_0); | ||
270 | |||
269 | if (rate >= XFER_PIO_0 && rate <= XFER_PIO_5) | 271 | if (rate >= XFER_PIO_0 && rate <= XFER_PIO_5) |
270 | return ide_set_pio_mode(drive, rate); | 272 | return ide_set_pio_mode(drive, rate); |
271 | 273 | ||
272 | /* | ||
273 | * TODO: transfer modes 0x00-0x07 passed from the user-space are | ||
274 | * currently handled here which needs fixing (please note that such | ||
275 | * case could happen iff the transfer mode has already been set on | ||
276 | * the device by ide-proc.c::set_xfer_rate()). | ||
277 | */ | ||
278 | if (rate < XFER_PIO_0) { | ||
279 | if (hwif->host_flags & IDE_HFLAG_ABUSE_SET_DMA_MODE) | ||
280 | return ide_set_dma_mode(drive, rate); | ||
281 | else | ||
282 | return ide_config_drive_speed(drive, rate); | ||
283 | } | ||
284 | |||
285 | return ide_set_dma_mode(drive, rate); | 274 | return ide_set_dma_mode(drive, rate); |
286 | } | 275 | } |
287 | 276 | ||
diff --git a/drivers/ide/ide-proc.c b/drivers/ide/ide-proc.c index 54d57a15d59e..151c91e933da 100644 --- a/drivers/ide/ide-proc.c +++ b/drivers/ide/ide-proc.c | |||
@@ -345,7 +345,7 @@ static int set_xfer_rate (ide_drive_t *drive, int arg) | |||
345 | ide_task_t task; | 345 | ide_task_t task; |
346 | int err; | 346 | int err; |
347 | 347 | ||
348 | if (arg < 0 || (arg > 1 && arg < XFER_PIO_0) || arg > XFER_UDMA_6) | 348 | if (arg < XFER_PIO_0 || arg > XFER_UDMA_6) |
349 | return -EINVAL; | 349 | return -EINVAL; |
350 | 350 | ||
351 | memset(&task, 0, sizeof(task)); | 351 | memset(&task, 0, sizeof(task)); |
@@ -357,7 +357,7 @@ static int set_xfer_rate (ide_drive_t *drive, int arg) | |||
357 | 357 | ||
358 | err = ide_no_data_taskfile(drive, &task); | 358 | err = ide_no_data_taskfile(drive, &task); |
359 | 359 | ||
360 | if (!err && arg) { | 360 | if (!err) { |
361 | ide_set_xfer_rate(drive, (u8) arg); | 361 | ide_set_xfer_rate(drive, (u8) arg); |
362 | ide_driveid_update(drive); | 362 | ide_driveid_update(drive); |
363 | } | 363 | } |
diff --git a/drivers/ide/pci/aec62xx.c b/drivers/ide/pci/aec62xx.c index ae7a4329a581..fbc43e121e6b 100644 --- a/drivers/ide/pci/aec62xx.c +++ b/drivers/ide/pci/aec62xx.c | |||
@@ -195,7 +195,6 @@ static const struct ide_port_info aec62xx_chipsets[] __devinitdata = { | |||
195 | .host_flags = IDE_HFLAG_SERIALIZE | | 195 | .host_flags = IDE_HFLAG_SERIALIZE | |
196 | IDE_HFLAG_NO_ATAPI_DMA | | 196 | IDE_HFLAG_NO_ATAPI_DMA | |
197 | IDE_HFLAG_NO_DSC | | 197 | IDE_HFLAG_NO_DSC | |
198 | IDE_HFLAG_ABUSE_SET_DMA_MODE | | ||
199 | IDE_HFLAG_OFF_BOARD, | 198 | IDE_HFLAG_OFF_BOARD, |
200 | .pio_mask = ATA_PIO4, | 199 | .pio_mask = ATA_PIO4, |
201 | .mwdma_mask = ATA_MWDMA2, | 200 | .mwdma_mask = ATA_MWDMA2, |
@@ -205,7 +204,6 @@ static const struct ide_port_info aec62xx_chipsets[] __devinitdata = { | |||
205 | .init_chipset = init_chipset_aec62xx, | 204 | .init_chipset = init_chipset_aec62xx, |
206 | .port_ops = &atp86x_port_ops, | 205 | .port_ops = &atp86x_port_ops, |
207 | .host_flags = IDE_HFLAG_NO_ATAPI_DMA | IDE_HFLAG_NO_AUTODMA | | 206 | .host_flags = IDE_HFLAG_NO_ATAPI_DMA | IDE_HFLAG_NO_AUTODMA | |
208 | IDE_HFLAG_ABUSE_SET_DMA_MODE | | ||
209 | IDE_HFLAG_OFF_BOARD, | 207 | IDE_HFLAG_OFF_BOARD, |
210 | .pio_mask = ATA_PIO4, | 208 | .pio_mask = ATA_PIO4, |
211 | .mwdma_mask = ATA_MWDMA2, | 209 | .mwdma_mask = ATA_MWDMA2, |
@@ -216,7 +214,6 @@ static const struct ide_port_info aec62xx_chipsets[] __devinitdata = { | |||
216 | .enablebits = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}}, | 214 | .enablebits = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}}, |
217 | .port_ops = &atp86x_port_ops, | 215 | .port_ops = &atp86x_port_ops, |
218 | .host_flags = IDE_HFLAG_NO_ATAPI_DMA | | 216 | .host_flags = IDE_HFLAG_NO_ATAPI_DMA | |
219 | IDE_HFLAG_ABUSE_SET_DMA_MODE | | ||
220 | IDE_HFLAG_NON_BOOTABLE, | 217 | IDE_HFLAG_NON_BOOTABLE, |
221 | .pio_mask = ATA_PIO4, | 218 | .pio_mask = ATA_PIO4, |
222 | .mwdma_mask = ATA_MWDMA2, | 219 | .mwdma_mask = ATA_MWDMA2, |
@@ -226,7 +223,6 @@ static const struct ide_port_info aec62xx_chipsets[] __devinitdata = { | |||
226 | .init_chipset = init_chipset_aec62xx, | 223 | .init_chipset = init_chipset_aec62xx, |
227 | .port_ops = &atp86x_port_ops, | 224 | .port_ops = &atp86x_port_ops, |
228 | .host_flags = IDE_HFLAG_NO_ATAPI_DMA | | 225 | .host_flags = IDE_HFLAG_NO_ATAPI_DMA | |
229 | IDE_HFLAG_ABUSE_SET_DMA_MODE | | ||
230 | IDE_HFLAG_OFF_BOARD, | 226 | IDE_HFLAG_OFF_BOARD, |
231 | .pio_mask = ATA_PIO4, | 227 | .pio_mask = ATA_PIO4, |
232 | .mwdma_mask = ATA_MWDMA2, | 228 | .mwdma_mask = ATA_MWDMA2, |
@@ -237,7 +233,6 @@ static const struct ide_port_info aec62xx_chipsets[] __devinitdata = { | |||
237 | .enablebits = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}}, | 233 | .enablebits = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}}, |
238 | .port_ops = &atp86x_port_ops, | 234 | .port_ops = &atp86x_port_ops, |
239 | .host_flags = IDE_HFLAG_NO_ATAPI_DMA | | 235 | .host_flags = IDE_HFLAG_NO_ATAPI_DMA | |
240 | IDE_HFLAG_ABUSE_SET_DMA_MODE | | ||
241 | IDE_HFLAG_OFF_BOARD, | 236 | IDE_HFLAG_OFF_BOARD, |
242 | .pio_mask = ATA_PIO4, | 237 | .pio_mask = ATA_PIO4, |
243 | .mwdma_mask = ATA_MWDMA2, | 238 | .mwdma_mask = ATA_MWDMA2, |
diff --git a/drivers/ide/pci/amd74xx.c b/drivers/ide/pci/amd74xx.c index 0bfcdd0e77b3..ef7d971031ee 100644 --- a/drivers/ide/pci/amd74xx.c +++ b/drivers/ide/pci/amd74xx.c | |||
@@ -218,7 +218,6 @@ static const struct ide_port_ops amd_port_ops = { | |||
218 | 218 | ||
219 | #define IDE_HFLAGS_AMD \ | 219 | #define IDE_HFLAGS_AMD \ |
220 | (IDE_HFLAG_PIO_NO_BLACKLIST | \ | 220 | (IDE_HFLAG_PIO_NO_BLACKLIST | \ |
221 | IDE_HFLAG_ABUSE_SET_DMA_MODE | \ | ||
222 | IDE_HFLAG_POST_SET_MODE | \ | 221 | IDE_HFLAG_POST_SET_MODE | \ |
223 | IDE_HFLAG_IO_32BIT | \ | 222 | IDE_HFLAG_IO_32BIT | \ |
224 | IDE_HFLAG_UNMASK_IRQS) | 223 | IDE_HFLAG_UNMASK_IRQS) |
diff --git a/drivers/ide/pci/cs5520.c b/drivers/ide/pci/cs5520.c index d30cb4d99c45..e8e7df1915bf 100644 --- a/drivers/ide/pci/cs5520.c +++ b/drivers/ide/pci/cs5520.c | |||
@@ -97,8 +97,7 @@ static const struct ide_port_ops cs5520_port_ops = { | |||
97 | .name = name_str, \ | 97 | .name = name_str, \ |
98 | .port_ops = &cs5520_port_ops, \ | 98 | .port_ops = &cs5520_port_ops, \ |
99 | .host_flags = IDE_HFLAG_ISA_PORTS | \ | 99 | .host_flags = IDE_HFLAG_ISA_PORTS | \ |
100 | IDE_HFLAG_CS5520 | \ | 100 | IDE_HFLAG_CS5520, \ |
101 | IDE_HFLAG_ABUSE_SET_DMA_MODE, \ | ||
102 | .pio_mask = ATA_PIO4, \ | 101 | .pio_mask = ATA_PIO4, \ |
103 | } | 102 | } |
104 | 103 | ||
diff --git a/drivers/ide/pci/cs5535.c b/drivers/ide/pci/cs5535.c index dc97c48623f3..5404fe4f701d 100644 --- a/drivers/ide/pci/cs5535.c +++ b/drivers/ide/pci/cs5535.c | |||
@@ -171,8 +171,7 @@ static const struct ide_port_ops cs5535_port_ops = { | |||
171 | static const struct ide_port_info cs5535_chipset __devinitdata = { | 171 | static const struct ide_port_info cs5535_chipset __devinitdata = { |
172 | .name = "CS5535", | 172 | .name = "CS5535", |
173 | .port_ops = &cs5535_port_ops, | 173 | .port_ops = &cs5535_port_ops, |
174 | .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_POST_SET_MODE | | 174 | .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_POST_SET_MODE, |
175 | IDE_HFLAG_ABUSE_SET_DMA_MODE, | ||
176 | .pio_mask = ATA_PIO4, | 175 | .pio_mask = ATA_PIO4, |
177 | .mwdma_mask = ATA_MWDMA2, | 176 | .mwdma_mask = ATA_MWDMA2, |
178 | .udma_mask = ATA_UDMA4, | 177 | .udma_mask = ATA_UDMA4, |
diff --git a/drivers/ide/pci/hpt34x.c b/drivers/ide/pci/hpt34x.c index 84c36c117194..9e1d1c4741da 100644 --- a/drivers/ide/pci/hpt34x.c +++ b/drivers/ide/pci/hpt34x.c | |||
@@ -123,7 +123,6 @@ static const struct ide_port_ops hpt34x_port_ops = { | |||
123 | #define IDE_HFLAGS_HPT34X \ | 123 | #define IDE_HFLAGS_HPT34X \ |
124 | (IDE_HFLAG_NO_ATAPI_DMA | \ | 124 | (IDE_HFLAG_NO_ATAPI_DMA | \ |
125 | IDE_HFLAG_NO_DSC | \ | 125 | IDE_HFLAG_NO_DSC | \ |
126 | IDE_HFLAG_ABUSE_SET_DMA_MODE | \ | ||
127 | IDE_HFLAG_NO_AUTODMA) | 126 | IDE_HFLAG_NO_AUTODMA) |
128 | 127 | ||
129 | static const struct ide_port_info hpt34x_chipsets[] __devinitdata = { | 128 | static const struct ide_port_info hpt34x_chipsets[] __devinitdata = { |
diff --git a/drivers/ide/pci/hpt366.c b/drivers/ide/pci/hpt366.c index e5651cefa395..1f1135ce7cd6 100644 --- a/drivers/ide/pci/hpt366.c +++ b/drivers/ide/pci/hpt366.c | |||
@@ -1409,7 +1409,6 @@ static int __devinit hpt36x_init(struct pci_dev *dev, struct pci_dev *dev2) | |||
1409 | 1409 | ||
1410 | #define IDE_HFLAGS_HPT3XX \ | 1410 | #define IDE_HFLAGS_HPT3XX \ |
1411 | (IDE_HFLAG_NO_ATAPI_DMA | \ | 1411 | (IDE_HFLAG_NO_ATAPI_DMA | \ |
1412 | IDE_HFLAG_ABUSE_SET_DMA_MODE | \ | ||
1413 | IDE_HFLAG_OFF_BOARD) | 1412 | IDE_HFLAG_OFF_BOARD) |
1414 | 1413 | ||
1415 | static const struct ide_port_ops hpt3xx_port_ops = { | 1414 | static const struct ide_port_ops hpt3xx_port_ops = { |
diff --git a/drivers/ide/pci/pdc202xx_old.c b/drivers/ide/pci/pdc202xx_old.c index 1c2f9df31129..e54dc653b8c4 100644 --- a/drivers/ide/pci/pdc202xx_old.c +++ b/drivers/ide/pci/pdc202xx_old.c | |||
@@ -312,7 +312,6 @@ static void __devinit pdc202ata4_fixup_irq(struct pci_dev *dev, | |||
312 | 312 | ||
313 | #define IDE_HFLAGS_PDC202XX \ | 313 | #define IDE_HFLAGS_PDC202XX \ |
314 | (IDE_HFLAG_ERROR_STOPS_FIFO | \ | 314 | (IDE_HFLAG_ERROR_STOPS_FIFO | \ |
315 | IDE_HFLAG_ABUSE_SET_DMA_MODE | \ | ||
316 | IDE_HFLAG_OFF_BOARD) | 315 | IDE_HFLAG_OFF_BOARD) |
317 | 316 | ||
318 | static const struct ide_port_ops pdc20246_port_ops = { | 317 | static const struct ide_port_ops pdc20246_port_ops = { |
diff --git a/drivers/ide/pci/serverworks.c b/drivers/ide/pci/serverworks.c index a1fb20826a5b..127ccb45e261 100644 --- a/drivers/ide/pci/serverworks.c +++ b/drivers/ide/pci/serverworks.c | |||
@@ -349,9 +349,7 @@ static const struct ide_port_ops svwks_port_ops = { | |||
349 | .cable_detect = svwks_cable_detect, | 349 | .cable_detect = svwks_cable_detect, |
350 | }; | 350 | }; |
351 | 351 | ||
352 | #define IDE_HFLAGS_SVWKS \ | 352 | #define IDE_HFLAGS_SVWKS IDE_HFLAG_LEGACY_IRQS |
353 | (IDE_HFLAG_LEGACY_IRQS | \ | ||
354 | IDE_HFLAG_ABUSE_SET_DMA_MODE) | ||
355 | 353 | ||
356 | static const struct ide_port_info serverworks_chipsets[] __devinitdata = { | 354 | static const struct ide_port_info serverworks_chipsets[] __devinitdata = { |
357 | { /* 0 */ | 355 | { /* 0 */ |
diff --git a/drivers/ide/pci/tc86c001.c b/drivers/ide/pci/tc86c001.c index a81d47c55ce1..477e19790102 100644 --- a/drivers/ide/pci/tc86c001.c +++ b/drivers/ide/pci/tc86c001.c | |||
@@ -206,8 +206,7 @@ static const struct ide_port_info tc86c001_chipset __devinitdata = { | |||
206 | .init_hwif = init_hwif_tc86c001, | 206 | .init_hwif = init_hwif_tc86c001, |
207 | .port_ops = &tc86c001_port_ops, | 207 | .port_ops = &tc86c001_port_ops, |
208 | .dma_ops = &tc86c001_dma_ops, | 208 | .dma_ops = &tc86c001_dma_ops, |
209 | .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_OFF_BOARD | | 209 | .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_OFF_BOARD, |
210 | IDE_HFLAG_ABUSE_SET_DMA_MODE, | ||
211 | .pio_mask = ATA_PIO4, | 210 | .pio_mask = ATA_PIO4, |
212 | .mwdma_mask = ATA_MWDMA2, | 211 | .mwdma_mask = ATA_MWDMA2, |
213 | .udma_mask = ATA_UDMA4, | 212 | .udma_mask = ATA_UDMA4, |
diff --git a/drivers/ide/pci/via82cxxx.c b/drivers/ide/pci/via82cxxx.c index e47384c70c40..09dc4803ef9d 100644 --- a/drivers/ide/pci/via82cxxx.c +++ b/drivers/ide/pci/via82cxxx.c | |||
@@ -425,7 +425,6 @@ static const struct ide_port_info via82cxxx_chipset __devinitdata = { | |||
425 | .enablebits = { { 0x40, 0x02, 0x02 }, { 0x40, 0x01, 0x01 } }, | 425 | .enablebits = { { 0x40, 0x02, 0x02 }, { 0x40, 0x01, 0x01 } }, |
426 | .port_ops = &via_port_ops, | 426 | .port_ops = &via_port_ops, |
427 | .host_flags = IDE_HFLAG_PIO_NO_BLACKLIST | | 427 | .host_flags = IDE_HFLAG_PIO_NO_BLACKLIST | |
428 | IDE_HFLAG_ABUSE_SET_DMA_MODE | | ||
429 | IDE_HFLAG_POST_SET_MODE | | 428 | IDE_HFLAG_POST_SET_MODE | |
430 | IDE_HFLAG_IO_32BIT, | 429 | IDE_HFLAG_IO_32BIT, |
431 | .pio_mask = ATA_PIO5, | 430 | .pio_mask = ATA_PIO5, |
diff --git a/include/linux/ide.h b/include/linux/ide.h index 3f2889400250..260e871ae880 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -1085,7 +1085,6 @@ enum { | |||
1085 | IDE_HFLAG_IO_32BIT = (1 << 24), | 1085 | IDE_HFLAG_IO_32BIT = (1 << 24), |
1086 | /* unmask IRQs */ | 1086 | /* unmask IRQs */ |
1087 | IDE_HFLAG_UNMASK_IRQS = (1 << 25), | 1087 | IDE_HFLAG_UNMASK_IRQS = (1 << 25), |
1088 | IDE_HFLAG_ABUSE_SET_DMA_MODE = (1 << 26), | ||
1089 | /* serialize ports if DMA is possible (for sl82c105) */ | 1088 | /* serialize ports if DMA is possible (for sl82c105) */ |
1090 | IDE_HFLAG_SERIALIZE_DMA = (1 << 27), | 1089 | IDE_HFLAG_SERIALIZE_DMA = (1 << 27), |
1091 | /* force host out of "simplex" mode */ | 1090 | /* force host out of "simplex" mode */ |