aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/atari_scsi.c
diff options
context:
space:
mode:
authorMichael Schmitz <schmitz@opal.biophys.uni-duesseldorf.de>2007-05-01 16:32:35 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-04 20:59:05 -0400
commitfb810d121bceb945c5e576356bccba11cbfad7e3 (patch)
tree0dcaf0ebdc97e059326ce152e621e04caf9ede12 /drivers/scsi/atari_scsi.c
parent8d41f0e8d51742aba5bbcab9acb5238a8578c917 (diff)
m68k: Atari SCSI revival
SCSI should be working on a TT (but someone should really try!) but causes trouble on a Falcon (as in: it ate a filesystem of mine) at least when used concurrently with IDE. I have the notion it's because locking of the ST-DMA interrupt by IDE is broken in 2.6 (the IDE driver always complains about trying to release an already-released ST-DMA). Needs more work, but that's on the IDE or m68k interrupt side rather than SCSI. Signed-off-by: Michael Schmitz <schmitz@debian.org> Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/scsi/atari_scsi.c')
-rw-r--r--drivers/scsi/atari_scsi.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/scsi/atari_scsi.c b/drivers/scsi/atari_scsi.c
index 642de7b2b7a2..85b8acc94034 100644
--- a/drivers/scsi/atari_scsi.c
+++ b/drivers/scsi/atari_scsi.c
@@ -395,7 +395,7 @@ static irqreturn_t scsi_tt_intr (int irq, void *dummy)
395 395
396#endif /* REAL_DMA */ 396#endif /* REAL_DMA */
397 397
398 NCR5380_intr (0, 0, 0); 398 NCR5380_intr(0, 0);
399 399
400#if 0 400#if 0
401 /* To be sure the int is not masked */ 401 /* To be sure the int is not masked */
@@ -461,7 +461,7 @@ static irqreturn_t scsi_falcon_intr (int irq, void *dummy)
461 461
462#endif /* REAL_DMA */ 462#endif /* REAL_DMA */
463 463
464 NCR5380_intr (0, 0, 0); 464 NCR5380_intr(0, 0);
465 return IRQ_HANDLED; 465 return IRQ_HANDLED;
466} 466}
467 467
@@ -557,11 +557,11 @@ static void falcon_get_lock( void )
557 557
558 local_irq_save(flags); 558 local_irq_save(flags);
559 559
560 while( !in_interrupt() && falcon_got_lock && stdma_others_waiting() ) 560 while (!in_irq() && falcon_got_lock && stdma_others_waiting())
561 sleep_on( &falcon_fairness_wait ); 561 sleep_on( &falcon_fairness_wait );
562 562
563 while (!falcon_got_lock) { 563 while (!falcon_got_lock) {
564 if (in_interrupt()) 564 if (in_irq())
565 panic( "Falcon SCSI hasn't ST-DMA lock in interrupt" ); 565 panic( "Falcon SCSI hasn't ST-DMA lock in interrupt" );
566 if (!falcon_trying_lock) { 566 if (!falcon_trying_lock) {
567 falcon_trying_lock = 1; 567 falcon_trying_lock = 1;
@@ -763,7 +763,6 @@ int atari_scsi_detect (struct scsi_host_template *host)
763 return( 1 ); 763 return( 1 );
764} 764}
765 765
766#ifdef MODULE
767int atari_scsi_release (struct Scsi_Host *sh) 766int atari_scsi_release (struct Scsi_Host *sh)
768{ 767{
769 if (IS_A_TT()) 768 if (IS_A_TT())
@@ -772,7 +771,6 @@ int atari_scsi_release (struct Scsi_Host *sh)
772 atari_stram_free (atari_dma_buffer); 771 atari_stram_free (atari_dma_buffer);
773 return 1; 772 return 1;
774} 773}
775#endif
776 774
777void __init atari_scsi_setup(char *str, int *ints) 775void __init atari_scsi_setup(char *str, int *ints)
778{ 776{