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.h | |
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.h')
-rw-r--r-- | drivers/scsi/atari_scsi.h | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/drivers/scsi/atari_scsi.h b/drivers/scsi/atari_scsi.h index f917bdd09b41..75b549b2dfc1 100644 --- a/drivers/scsi/atari_scsi.h +++ b/drivers/scsi/atari_scsi.h | |||
@@ -21,11 +21,7 @@ | |||
21 | int atari_scsi_detect (struct scsi_host_template *); | 21 | int atari_scsi_detect (struct scsi_host_template *); |
22 | const char *atari_scsi_info (struct Scsi_Host *); | 22 | const char *atari_scsi_info (struct Scsi_Host *); |
23 | int atari_scsi_reset (Scsi_Cmnd *, unsigned int); | 23 | int atari_scsi_reset (Scsi_Cmnd *, unsigned int); |
24 | #ifdef MODULE | ||
25 | int atari_scsi_release (struct Scsi_Host *); | 24 | int atari_scsi_release (struct Scsi_Host *); |
26 | #else | ||
27 | #define atari_scsi_release NULL | ||
28 | #endif | ||
29 | 25 | ||
30 | /* The values for CMD_PER_LUN and CAN_QUEUE are somehow arbitrary. Higher | 26 | /* The values for CMD_PER_LUN and CAN_QUEUE are somehow arbitrary. Higher |
31 | * values should work, too; try it! (but cmd_per_lun costs memory!) */ | 27 | * values should work, too; try it! (but cmd_per_lun costs memory!) */ |
@@ -63,6 +59,32 @@ int atari_scsi_release (struct Scsi_Host *); | |||
63 | #define NCR5380_dma_xfer_len(i,cmd,phase) \ | 59 | #define NCR5380_dma_xfer_len(i,cmd,phase) \ |
64 | atari_dma_xfer_len(cmd->SCp.this_residual,cmd,((phase) & SR_IO) ? 0 : 1) | 60 | atari_dma_xfer_len(cmd->SCp.this_residual,cmd,((phase) & SR_IO) ? 0 : 1) |
65 | 61 | ||
62 | /* former generic SCSI error handling stuff */ | ||
63 | |||
64 | #define SCSI_ABORT_SNOOZE 0 | ||
65 | #define SCSI_ABORT_SUCCESS 1 | ||
66 | #define SCSI_ABORT_PENDING 2 | ||
67 | #define SCSI_ABORT_BUSY 3 | ||
68 | #define SCSI_ABORT_NOT_RUNNING 4 | ||
69 | #define SCSI_ABORT_ERROR 5 | ||
70 | |||
71 | #define SCSI_RESET_SNOOZE 0 | ||
72 | #define SCSI_RESET_PUNT 1 | ||
73 | #define SCSI_RESET_SUCCESS 2 | ||
74 | #define SCSI_RESET_PENDING 3 | ||
75 | #define SCSI_RESET_WAKEUP 4 | ||
76 | #define SCSI_RESET_NOT_RUNNING 5 | ||
77 | #define SCSI_RESET_ERROR 6 | ||
78 | |||
79 | #define SCSI_RESET_SYNCHRONOUS 0x01 | ||
80 | #define SCSI_RESET_ASYNCHRONOUS 0x02 | ||
81 | #define SCSI_RESET_SUGGEST_BUS_RESET 0x04 | ||
82 | #define SCSI_RESET_SUGGEST_HOST_RESET 0x08 | ||
83 | |||
84 | #define SCSI_RESET_BUS_RESET 0x100 | ||
85 | #define SCSI_RESET_HOST_RESET 0x200 | ||
86 | #define SCSI_RESET_ACTION 0xff | ||
87 | |||
66 | /* Debugging printk definitions: | 88 | /* Debugging printk definitions: |
67 | * | 89 | * |
68 | * ARB -> arbitration | 90 | * ARB -> arbitration |