aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-02-16 20:40:25 -0500
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-02-16 20:40:25 -0500
commitd8f4469d5f2c35e0b8272f254b42737a2b8ce877 (patch)
tree3528896358f9d707694ab470055a19dfe68b3a09
parent2ad1e558a2305c2b3d5099ee2f4a5929307c20ca (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>
-rw-r--r--drivers/ide/pci/aec62xx.c8
-rw-r--r--drivers/ide/pci/atiixp.c5
-rw-r--r--drivers/ide/pci/cmd64x.c8
-rw-r--r--drivers/ide/pci/cs5535.c5
-rw-r--r--drivers/ide/pci/hpt34x.c8
-rw-r--r--drivers/ide/pci/hpt366.c8
-rw-r--r--drivers/ide/pci/pdc202xx_new.c8
-rw-r--r--drivers/ide/pci/pdc202xx_old.c8
-rw-r--r--drivers/ide/pci/piix.c8
-rw-r--r--drivers/ide/pci/serverworks.c9
-rw-r--r--drivers/ide/pci/siimage.c8
-rw-r--r--drivers/ide/pci/sis5513.c8
-rw-r--r--drivers/ide/pci/slc90e66.c8
-rw-r--r--drivers/ide/pci/tc86c001.c8
-rw-r--r--drivers/ide/ppc/scc_pata.c7
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
225static int aec62xx_irq_timeout (ide_drive_t *drive) 223static 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
490static int cmd64x_alt_dma_status (struct pci_dev *dev) 488static 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
215static u8 __devinit cs5535_cable_detect(struct pci_dev *dev) 214static 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
299static int pdcnew_quirkproc(ide_drive_t *drive) 297static 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
340static int pdc202xx_quirkproc (ide_drive_t *drive) 338static 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
334static unsigned int __devinit init_chipset_svwks (struct pci_dev *dev, const char *name) 331static 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
198static void __devinit init_hwif_slc90e66 (ide_hwif_t *hwif) 196static 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
201static void __devinit init_hwif_tc86c001(ide_hwif_t *hwif) 199static 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/**