|
|
1.1 root 1: /*
2: * Written by Julian Elischer ([email protected])
3: * for TRW Financial Systems for use under the MACH(2.5) operating system.
4: *
5: * TRW Financial Systems, in accordance with their agreement with Carnegie
6: * Mellon University, makes this software available to CMU to distribute
7: * or use in any manner that they see fit as long as this message is kept with
8: * the software. For this reason TFS also grants any other persons or
9: * organisations permission to use or modify this software.
10: *
11: * TFS supplies this software to be publicly redistributed
12: * on the understanding that TFS is not responsible for the correct
13: * functioning of this software in any circumstances.
14: *
15: * PATCHES MAGIC LEVEL PATCH THAT GOT US HERE
16: * -------------------- ----- ----------------------
17: * CURRENT PATCH LEVEL: 1 00098
18: * -------------------- ----- ----------------------
19: *
20: * 16 Feb 93 Julian Elischer ADDED for SCSI system
21: *
22: */
23:
24: /*
25: * Ported to run under 386BSD by Julian Elischer ([email protected]) Sept 1992
26: */
27:
28: /***********************************************\
29: * these calls are called by the high-end *
30: * drivers to get services from whatever low-end *
31: * drivers they are attached to *
32: \***********************************************/
33: struct scsi_switch
34: {
35: int (*scsi_cmd)();
36: void (*scsi_minphys)();
37: int (*open_target_lu)();
38: int (*close_target_lu)();
39: long int (*adapter_info)(); /* see definitions below */
40: u_long spare[3];
41: };
42: #define AD_INF_MAX_CMDS 0x000000FF /* maximum number of entries
43: queuable to a device by
44: the adapter */
45: /* 24 bits of other adapter charcteristics go here */
46:
47: /***********************************************\
48: * The scsi debug control bits *
49: \***********************************************/
50: extern int scsi_debug;
51: #define PRINTROUTINES 0x01
52: #define TRACEOPENS 0x02
53: #define TRACEINTERRUPTS 0x04
54: #define SHOWREQUESTS 0x08
55: #define SHOWSCATGATH 0x10
56: #define SHOWINQUIRY 0x20
57: #define SHOWCOMMANDS 0x40
58:
59:
60: /********************************/
61: /* return values for scsi_cmd() */
62: /********************************/
63: #define SUCCESSFULLY_QUEUED 0
64: #define TRY_AGAIN_LATER 1
65: #define COMPLETE 2
66: #define HAD_ERROR 3
67:
68: struct scsi_xfer
69: {
70: struct scsi_xfer *next; /* when free */
71: int flags;
72: u_char adapter;
73: u_char targ;
74: u_char lu;
75: u_char retries; /* the number of times to retry */
76: long int timeout; /* in miliseconds */
77: struct scsi_generic *cmd;
78: int cmdlen;
79: u_char *data; /* either the dma address OR a uio address */
80: int datalen; /* data len (blank if uio) */
81: int resid;
82: int (*when_done)();
83: int done_arg;
84: int done_arg2;
85: int error;
86: struct buf *bp;
87: struct scsi_sense_data sense;
88: };
89: /********************************/
90: /* Flag values */
91: /********************************/
92: #define SCSI_NOSLEEP 0x01 /* Not a user... don't sleep */
93: #define SCSI_NOMASK 0x02 /* dont allow interrupts.. booting */
94: #define SCSI_NOSTART 0x04 /* left over from ancient history */
95: #define ITSDONE 0x10 /* the transfer is as done as it gets */
96: #define INUSE 0x20 /* The scsi_xfer block is in use */
97: #define SCSI_SILENT 0x40 /* Don't report errors to console */
98: #define SCSI_ERR_OK 0x80 /* An error on this operation is OK. */
99: #define SCSI_RESET 0x100 /* Reset the device in question */
100: #define SCSI_DATA_UIO 0x200 /* The data address refers to a UIO */
101: #define SCSI_DATA_IN 0x400 /* expect data to come INTO memory */
102: #define SCSI_DATA_OUT 0x800 /* expect data to flow OUT of memory */
103: #define SCSI_TARGET 0x1000 /* This defines a TARGET mode op. */
104: /********************************/
105: /* Error values */
106: /********************************/
107: #define XS_NOERROR 0x0 /* there is no error, (sense is invalid) */
108: #define XS_SENSE 0x1 /* Check the returned sense for the error */
109: #define XS_DRIVER_STUFFUP 0x2 /* Driver failed to perform operation */
110: #define XS_TIMEOUT 0x03 /* The device timed out.. turned off? */
111: #define XS_SWTIMEOUT 0x04 /* The Timeout reported was caught by SW */
112: #define XS_BUSY 0x08 /* The device busy, try again later? */
113:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.