diff options
author | Michael Schmitz <schmitz@opal.biophys.uni-duesseldorf.de> | 2007-05-01 16:32:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-04 20:59:05 -0400 |
commit | fb810d121bceb945c5e576356bccba11cbfad7e3 (patch) | |
tree | 0dcaf0ebdc97e059326ce152e621e04caf9ede12 /drivers/scsi/atari_scsi.c | |
parent | 8d41f0e8d51742aba5bbcab9acb5238a8578c917 (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.c | 10 |
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 | ||
767 | int atari_scsi_release (struct Scsi_Host *sh) | 766 | int 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 | ||
777 | void __init atari_scsi_setup(char *str, int *ints) | 775 | void __init atari_scsi_setup(char *str, int *ints) |
778 | { | 776 | { |