diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-02-16 20:40:25 -0500 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-02-16 20:40:25 -0500 |
commit | d8f4469d5f2c35e0b8272f254b42737a2b8ce877 (patch) | |
tree | 3528896358f9d707694ab470055a19dfe68b3a09 /drivers/ide | |
parent | 2ad1e558a2305c2b3d5099ee2f4a5929307c20ca (diff) |
ide: disable DMA in ->ide_dma_check for "no IORDY" case (v2)
If DMA is unsupported ->ide_dma_check should disable DMA.
v2:
* updated for scc_pata
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide')
-rw-r--r-- | drivers/ide/pci/aec62xx.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/atiixp.c | 5 | ||||
-rw-r--r-- | drivers/ide/pci/cmd64x.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/cs5535.c | 5 | ||||
-rw-r--r-- | drivers/ide/pci/hpt34x.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/hpt366.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/pdc202xx_new.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/pdc202xx_old.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/piix.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/serverworks.c | 9 | ||||
-rw-r--r-- | drivers/ide/pci/siimage.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/sis5513.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/slc90e66.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/tc86c001.c | 8 | ||||
-rw-r--r-- | drivers/ide/ppc/scc_pata.c | 7 |
15 files changed, 43 insertions, 71 deletions
diff --git a/drivers/ide/pci/aec62xx.c b/drivers/ide/pci/aec62xx.c index 30f8de6176dd..25892814b314 100644 --- a/drivers/ide/pci/aec62xx.c +++ b/drivers/ide/pci/aec62xx.c | |||
@@ -214,12 +214,10 @@ static int aec62xx_config_drive_xfer_rate (ide_drive_t *drive) | |||
214 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) | 214 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) |
215 | return hwif->ide_dma_on(drive); | 215 | return hwif->ide_dma_on(drive); |
216 | 216 | ||
217 | if (ide_use_fast_pio(drive)) { | 217 | if (ide_use_fast_pio(drive)) |
218 | aec62xx_tune_drive(drive, 5); | 218 | aec62xx_tune_drive(drive, 5); |
219 | return hwif->ide_dma_off_quietly(drive); | 219 | |
220 | } | 220 | return hwif->ide_dma_off_quietly(drive); |
221 | /* IORDY not supported */ | ||
222 | return 0; | ||
223 | } | 221 | } |
224 | 222 | ||
225 | static int aec62xx_irq_timeout (ide_drive_t *drive) | 223 | static int aec62xx_irq_timeout (ide_drive_t *drive) |
diff --git a/drivers/ide/pci/atiixp.c b/drivers/ide/pci/atiixp.c index dfc738c42228..6d372c4e1d81 100644 --- a/drivers/ide/pci/atiixp.c +++ b/drivers/ide/pci/atiixp.c | |||
@@ -264,10 +264,9 @@ static int atiixp_dma_check(ide_drive_t *drive) | |||
264 | tspeed = ide_get_best_pio_mode(drive, 255, 5, NULL); | 264 | tspeed = ide_get_best_pio_mode(drive, 255, 5, NULL); |
265 | speed = atiixp_dma_2_pio(XFER_PIO_0 + tspeed) + XFER_PIO_0; | 265 | speed = atiixp_dma_2_pio(XFER_PIO_0 + tspeed) + XFER_PIO_0; |
266 | hwif->speedproc(drive, speed); | 266 | hwif->speedproc(drive, speed); |
267 | return hwif->ide_dma_off_quietly(drive); | ||
268 | } | 267 | } |
269 | /* IORDY not supported */ | 268 | |
270 | return 0; | 269 | return hwif->ide_dma_off_quietly(drive); |
271 | } | 270 | } |
272 | 271 | ||
273 | /** | 272 | /** |
diff --git a/drivers/ide/pci/cmd64x.c b/drivers/ide/pci/cmd64x.c index a76451a074c6..28f580886693 100644 --- a/drivers/ide/pci/cmd64x.c +++ b/drivers/ide/pci/cmd64x.c | |||
@@ -479,12 +479,10 @@ static int cmd64x_config_drive_for_dma (ide_drive_t *drive) | |||
479 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) | 479 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) |
480 | return hwif->ide_dma_on(drive); | 480 | return hwif->ide_dma_on(drive); |
481 | 481 | ||
482 | if (ide_use_fast_pio(drive)) { | 482 | if (ide_use_fast_pio(drive)) |
483 | config_chipset_for_pio(drive, 1); | 483 | config_chipset_for_pio(drive, 1); |
484 | return hwif->ide_dma_off_quietly(drive); | 484 | |
485 | } | 485 | return hwif->ide_dma_off_quietly(drive); |
486 | /* IORDY not supported */ | ||
487 | return 0; | ||
488 | } | 486 | } |
489 | 487 | ||
490 | static int cmd64x_alt_dma_status (struct pci_dev *dev) | 488 | static int cmd64x_alt_dma_status (struct pci_dev *dev) |
diff --git a/drivers/ide/pci/cs5535.c b/drivers/ide/pci/cs5535.c index e47653f4d1dd..cd7c4190ad6e 100644 --- a/drivers/ide/pci/cs5535.c +++ b/drivers/ide/pci/cs5535.c | |||
@@ -206,10 +206,9 @@ static int cs5535_dma_check(ide_drive_t *drive) | |||
206 | if (ide_use_fast_pio(drive)) { | 206 | if (ide_use_fast_pio(drive)) { |
207 | speed = ide_get_best_pio_mode(drive, 255, 4, NULL); | 207 | speed = ide_get_best_pio_mode(drive, 255, 4, NULL); |
208 | cs5535_set_drive(drive, speed); | 208 | cs5535_set_drive(drive, speed); |
209 | return hwif->ide_dma_off_quietly(drive); | ||
210 | } | 209 | } |
211 | /* IORDY not supported */ | 210 | |
212 | return 0; | 211 | return hwif->ide_dma_off_quietly(drive); |
213 | } | 212 | } |
214 | 213 | ||
215 | static u8 __devinit cs5535_cable_detect(struct pci_dev *dev) | 214 | static u8 __devinit cs5535_cable_detect(struct pci_dev *dev) |
diff --git a/drivers/ide/pci/hpt34x.c b/drivers/ide/pci/hpt34x.c index 0830089c77fd..c65971d8d6ad 100644 --- a/drivers/ide/pci/hpt34x.c +++ b/drivers/ide/pci/hpt34x.c | |||
@@ -120,12 +120,10 @@ static int hpt34x_config_drive_xfer_rate (ide_drive_t *drive) | |||
120 | return hwif->ide_dma_on(drive); | 120 | return hwif->ide_dma_on(drive); |
121 | #endif | 121 | #endif |
122 | 122 | ||
123 | if (ide_use_fast_pio(drive)) { | 123 | if (ide_use_fast_pio(drive)) |
124 | hpt34x_tune_drive(drive, 255); | 124 | hpt34x_tune_drive(drive, 255); |
125 | return hwif->ide_dma_off_quietly(drive); | 125 | |
126 | } | 126 | return hwif->ide_dma_off_quietly(drive); |
127 | /* IORDY not supported */ | ||
128 | return 0; | ||
129 | } | 127 | } |
130 | 128 | ||
131 | /* | 129 | /* |
diff --git a/drivers/ide/pci/hpt366.c b/drivers/ide/pci/hpt366.c index eccf29f7f89d..752b6d6dde04 100644 --- a/drivers/ide/pci/hpt366.c +++ b/drivers/ide/pci/hpt366.c | |||
@@ -743,12 +743,10 @@ static int hpt366_config_drive_xfer_rate(ide_drive_t *drive) | |||
743 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) | 743 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) |
744 | return hwif->ide_dma_on(drive); | 744 | return hwif->ide_dma_on(drive); |
745 | 745 | ||
746 | if (ide_use_fast_pio(drive)) { | 746 | if (ide_use_fast_pio(drive)) |
747 | hpt3xx_tune_drive(drive, 255); | 747 | hpt3xx_tune_drive(drive, 255); |
748 | return hwif->ide_dma_off_quietly(drive); | 748 | |
749 | } | 749 | return hwif->ide_dma_off_quietly(drive); |
750 | /* IORDY not supported */ | ||
751 | return 0; | ||
752 | } | 750 | } |
753 | 751 | ||
754 | /* | 752 | /* |
diff --git a/drivers/ide/pci/pdc202xx_new.c b/drivers/ide/pci/pdc202xx_new.c index 32f37e4c1292..b780e15e9f32 100644 --- a/drivers/ide/pci/pdc202xx_new.c +++ b/drivers/ide/pci/pdc202xx_new.c | |||
@@ -288,12 +288,10 @@ static int pdcnew_config_drive_xfer_rate(ide_drive_t *drive) | |||
288 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) | 288 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) |
289 | return hwif->ide_dma_on(drive); | 289 | return hwif->ide_dma_on(drive); |
290 | 290 | ||
291 | if (ide_use_fast_pio(drive)) { | 291 | if (ide_use_fast_pio(drive)) |
292 | hwif->tuneproc(drive, 255); | 292 | hwif->tuneproc(drive, 255); |
293 | return hwif->ide_dma_off_quietly(drive); | 293 | |
294 | } | 294 | return hwif->ide_dma_off_quietly(drive); |
295 | /* IORDY not supported */ | ||
296 | return 0; | ||
297 | } | 295 | } |
298 | 296 | ||
299 | static int pdcnew_quirkproc(ide_drive_t *drive) | 297 | static int pdcnew_quirkproc(ide_drive_t *drive) |
diff --git a/drivers/ide/pci/pdc202xx_old.c b/drivers/ide/pci/pdc202xx_old.c index d3be342e5162..b2b8e6ea7e90 100644 --- a/drivers/ide/pci/pdc202xx_old.c +++ b/drivers/ide/pci/pdc202xx_old.c | |||
@@ -329,12 +329,10 @@ static int pdc202xx_config_drive_xfer_rate (ide_drive_t *drive) | |||
329 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) | 329 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) |
330 | return hwif->ide_dma_on(drive); | 330 | return hwif->ide_dma_on(drive); |
331 | 331 | ||
332 | if (ide_use_fast_pio(drive)) { | 332 | if (ide_use_fast_pio(drive)) |
333 | pdc202xx_tune_drive(drive, 255); | 333 | pdc202xx_tune_drive(drive, 255); |
334 | return hwif->ide_dma_off_quietly(drive); | 334 | |
335 | } | 335 | return hwif->ide_dma_off_quietly(drive); |
336 | /* IORDY not supported */ | ||
337 | return 0; | ||
338 | } | 336 | } |
339 | 337 | ||
340 | static int pdc202xx_quirkproc (ide_drive_t *drive) | 338 | static int pdc202xx_quirkproc (ide_drive_t *drive) |
diff --git a/drivers/ide/pci/piix.c b/drivers/ide/pci/piix.c index 85e8a78e10ad..caf606a1ee86 100644 --- a/drivers/ide/pci/piix.c +++ b/drivers/ide/pci/piix.c | |||
@@ -393,14 +393,12 @@ static int piix_config_drive_xfer_rate (ide_drive_t *drive) | |||
393 | if (ide_use_dma(drive) && piix_config_drive_for_dma(drive)) | 393 | if (ide_use_dma(drive) && piix_config_drive_for_dma(drive)) |
394 | return hwif->ide_dma_on(drive); | 394 | return hwif->ide_dma_on(drive); |
395 | 395 | ||
396 | if (ide_use_fast_pio(drive)) { | 396 | if (ide_use_fast_pio(drive)) |
397 | /* Find best PIO mode. */ | 397 | /* Find best PIO mode. */ |
398 | (void) hwif->speedproc(drive, XFER_PIO_0 + | 398 | (void) hwif->speedproc(drive, XFER_PIO_0 + |
399 | ide_get_best_pio_mode(drive, 255, 4, NULL)); | 399 | ide_get_best_pio_mode(drive, 255, 4, NULL)); |
400 | return hwif->ide_dma_off_quietly(drive); | 400 | |
401 | } | 401 | return hwif->ide_dma_off_quietly(drive); |
402 | /* IORDY not supported */ | ||
403 | return 0; | ||
404 | } | 402 | } |
405 | 403 | ||
406 | /** | 404 | /** |
diff --git a/drivers/ide/pci/serverworks.c b/drivers/ide/pci/serverworks.c index 36decbe3afcb..f44a5ab8fe00 100644 --- a/drivers/ide/pci/serverworks.c +++ b/drivers/ide/pci/serverworks.c | |||
@@ -322,13 +322,10 @@ static int svwks_config_drive_xfer_rate (ide_drive_t *drive) | |||
322 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) | 322 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) |
323 | return hwif->ide_dma_on(drive); | 323 | return hwif->ide_dma_on(drive); |
324 | 324 | ||
325 | if (ide_use_fast_pio(drive)) { | 325 | if (ide_use_fast_pio(drive)) |
326 | config_chipset_for_pio(drive); | 326 | config_chipset_for_pio(drive); |
327 | // hwif->tuneproc(drive, 5); | 327 | |
328 | return hwif->ide_dma_off_quietly(drive); | 328 | return hwif->ide_dma_off_quietly(drive); |
329 | } | ||
330 | /* IORDY not supported */ | ||
331 | return 0; | ||
332 | } | 329 | } |
333 | 330 | ||
334 | static unsigned int __devinit init_chipset_svwks (struct pci_dev *dev, const char *name) | 331 | static unsigned int __devinit init_chipset_svwks (struct pci_dev *dev, const char *name) |
diff --git a/drivers/ide/pci/siimage.c b/drivers/ide/pci/siimage.c index 40e992af0005..1e5b8b17e6d8 100644 --- a/drivers/ide/pci/siimage.c +++ b/drivers/ide/pci/siimage.c | |||
@@ -419,12 +419,10 @@ static int siimage_config_drive_for_dma (ide_drive_t *drive) | |||
419 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) | 419 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) |
420 | return hwif->ide_dma_on(drive); | 420 | return hwif->ide_dma_on(drive); |
421 | 421 | ||
422 | if (ide_use_fast_pio(drive)) { | 422 | if (ide_use_fast_pio(drive)) |
423 | config_chipset_for_pio(drive, 1); | 423 | config_chipset_for_pio(drive, 1); |
424 | return hwif->ide_dma_off_quietly(drive); | 424 | |
425 | } | 425 | return hwif->ide_dma_off_quietly(drive); |
426 | /* IORDY not supported */ | ||
427 | return 0; | ||
428 | } | 426 | } |
429 | 427 | ||
430 | /* returns 1 if dma irq issued, 0 otherwise */ | 428 | /* returns 1 if dma irq issued, 0 otherwise */ |
diff --git a/drivers/ide/pci/sis5513.c b/drivers/ide/pci/sis5513.c index 4fff663a6432..53ffeced06ff 100644 --- a/drivers/ide/pci/sis5513.c +++ b/drivers/ide/pci/sis5513.c | |||
@@ -678,12 +678,10 @@ static int sis5513_config_xfer_rate(ide_drive_t *drive) | |||
678 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) | 678 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) |
679 | return hwif->ide_dma_on(drive); | 679 | return hwif->ide_dma_on(drive); |
680 | 680 | ||
681 | if (ide_use_fast_pio(drive)) { | 681 | if (ide_use_fast_pio(drive)) |
682 | sis5513_tune_drive(drive, 5); | 682 | sis5513_tune_drive(drive, 5); |
683 | return hwif->ide_dma_off_quietly(drive); | 683 | |
684 | } | 684 | return hwif->ide_dma_off_quietly(drive); |
685 | /* IORDY not supported */ | ||
686 | return 0; | ||
687 | } | 685 | } |
688 | 686 | ||
689 | /* Chip detection and general config */ | 687 | /* Chip detection and general config */ |
diff --git a/drivers/ide/pci/slc90e66.c b/drivers/ide/pci/slc90e66.c index 4042fd8e2308..917cc8e61e47 100644 --- a/drivers/ide/pci/slc90e66.c +++ b/drivers/ide/pci/slc90e66.c | |||
@@ -186,13 +186,11 @@ static int slc90e66_config_drive_xfer_rate (ide_drive_t *drive) | |||
186 | if (ide_use_dma(drive) && slc90e66_config_drive_for_dma(drive)) | 186 | if (ide_use_dma(drive) && slc90e66_config_drive_for_dma(drive)) |
187 | return hwif->ide_dma_on(drive); | 187 | return hwif->ide_dma_on(drive); |
188 | 188 | ||
189 | if (ide_use_fast_pio(drive)) { | 189 | if (ide_use_fast_pio(drive)) |
190 | (void) hwif->speedproc(drive, XFER_PIO_0 + | 190 | (void) hwif->speedproc(drive, XFER_PIO_0 + |
191 | ide_get_best_pio_mode(drive, 255, 4, NULL)); | 191 | ide_get_best_pio_mode(drive, 255, 4, NULL)); |
192 | return hwif->ide_dma_off_quietly(drive); | 192 | |
193 | } | 193 | return hwif->ide_dma_off_quietly(drive); |
194 | /* IORDY not supported */ | ||
195 | return 0; | ||
196 | } | 194 | } |
197 | 195 | ||
198 | static void __devinit init_hwif_slc90e66 (ide_hwif_t *hwif) | 196 | static void __devinit init_hwif_slc90e66 (ide_hwif_t *hwif) |
diff --git a/drivers/ide/pci/tc86c001.c b/drivers/ide/pci/tc86c001.c index b408508a96ee..3703fc87d150 100644 --- a/drivers/ide/pci/tc86c001.c +++ b/drivers/ide/pci/tc86c001.c | |||
@@ -190,12 +190,10 @@ static int tc86c001_config_drive_xfer_rate(ide_drive_t *drive) | |||
190 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) | 190 | if (ide_use_dma(drive) && config_chipset_for_dma(drive)) |
191 | return hwif->ide_dma_on(drive); | 191 | return hwif->ide_dma_on(drive); |
192 | 192 | ||
193 | if (ide_use_fast_pio(drive)) { | 193 | if (ide_use_fast_pio(drive)) |
194 | tc86c001_tune_drive(drive, 255); | 194 | tc86c001_tune_drive(drive, 255); |
195 | return hwif->ide_dma_off_quietly(drive); | 195 | |
196 | } | 196 | return hwif->ide_dma_off_quietly(drive); |
197 | /* IORDY not supported */ | ||
198 | return 0; | ||
199 | } | 197 | } |
200 | 198 | ||
201 | static void __devinit init_hwif_tc86c001(ide_hwif_t *hwif) | 199 | static void __devinit init_hwif_tc86c001(ide_hwif_t *hwif) |
diff --git a/drivers/ide/ppc/scc_pata.c b/drivers/ide/ppc/scc_pata.c index f05117e8fdb9..7e3e93caafd0 100644 --- a/drivers/ide/ppc/scc_pata.c +++ b/drivers/ide/ppc/scc_pata.c | |||
@@ -376,11 +376,10 @@ static int scc_config_drive_for_dma(ide_drive_t *drive) | |||
376 | if (ide_use_dma(drive) && scc_config_chipset_for_dma(drive)) | 376 | if (ide_use_dma(drive) && scc_config_chipset_for_dma(drive)) |
377 | return hwif->ide_dma_on(drive); | 377 | return hwif->ide_dma_on(drive); |
378 | 378 | ||
379 | if (ide_use_fast_pio(drive)) { | 379 | if (ide_use_fast_pio(drive)) |
380 | hwif->tuneproc(drive, 4); | 380 | hwif->tuneproc(drive, 4); |
381 | hwif->ide_dma_off_quietly(drive); | 381 | |
382 | } | 382 | return hwif->ide_dma_off_quietly(drive); |
383 | return 1; /* DMA is not supported */ | ||
384 | } | 383 | } |
385 | 384 | ||
386 | /** | 385 | /** |