diff options
author | rgrimes <rgrimes@FreeBSD.org> | 1993-06-12 14:58:17 +0000 |
---|---|---|
committer | rgrimes <rgrimes@FreeBSD.org> | 1993-06-12 14:58:17 +0000 |
commit | 25062ba061871945759b3baa833fe64969383e40 (patch) | |
tree | 2d1c31051ed0dbaad984013c9fe695b1a01e1c39 /sys/scsi/scsiconf.h | |
parent | f078b88a160c467761b3f3641f05dfd0aa3f7753 (diff) | |
download | FreeBSD-src-25062ba061871945759b3baa833fe64969383e40.zip FreeBSD-src-25062ba061871945759b3baa833fe64969383e40.tar.gz |
Initial import, 0.1 + pk 0.2.4-B1
Diffstat (limited to 'sys/scsi/scsiconf.h')
-rw-r--r-- | sys/scsi/scsiconf.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/sys/scsi/scsiconf.h b/sys/scsi/scsiconf.h new file mode 100644 index 0000000..c36efde --- /dev/null +++ b/sys/scsi/scsiconf.h @@ -0,0 +1,113 @@ +/* + * Written by Julian Elischer (julian@tfs.com) + * for TRW Financial Systems for use under the MACH(2.5) operating system. + * + * TRW Financial Systems, in accordance with their agreement with Carnegie + * Mellon University, makes this software available to CMU to distribute + * or use in any manner that they see fit as long as this message is kept with + * the software. For this reason TFS also grants any other persons or + * organisations permission to use or modify this software. + * + * TFS supplies this software to be publicly redistributed + * on the understanding that TFS is not responsible for the correct + * functioning of this software in any circumstances. + * + * PATCHES MAGIC LEVEL PATCH THAT GOT US HERE + * -------------------- ----- ---------------------- + * CURRENT PATCH LEVEL: 1 00098 + * -------------------- ----- ---------------------- + * + * 16 Feb 93 Julian Elischer ADDED for SCSI system + * + */ + +/* + * Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992 + */ + +/***********************************************\ +* these calls are called by the high-end * +* drivers to get services from whatever low-end * +* drivers they are attached to * +\***********************************************/ +struct scsi_switch +{ + int (*scsi_cmd)(); + void (*scsi_minphys)(); + int (*open_target_lu)(); + int (*close_target_lu)(); + long int (*adapter_info)(); /* see definitions below */ + u_long spare[3]; +}; +#define AD_INF_MAX_CMDS 0x000000FF /* maximum number of entries + queuable to a device by + the adapter */ +/* 24 bits of other adapter charcteristics go here */ + +/***********************************************\ +* The scsi debug control bits * +\***********************************************/ +extern int scsi_debug; +#define PRINTROUTINES 0x01 +#define TRACEOPENS 0x02 +#define TRACEINTERRUPTS 0x04 +#define SHOWREQUESTS 0x08 +#define SHOWSCATGATH 0x10 +#define SHOWINQUIRY 0x20 +#define SHOWCOMMANDS 0x40 + + +/********************************/ +/* return values for scsi_cmd() */ +/********************************/ +#define SUCCESSFULLY_QUEUED 0 +#define TRY_AGAIN_LATER 1 +#define COMPLETE 2 +#define HAD_ERROR 3 + +struct scsi_xfer +{ + struct scsi_xfer *next; /* when free */ + int flags; + u_char adapter; + u_char targ; + u_char lu; + u_char retries; /* the number of times to retry */ + long int timeout; /* in miliseconds */ + struct scsi_generic *cmd; + int cmdlen; + u_char *data; /* either the dma address OR a uio address */ + int datalen; /* data len (blank if uio) */ + int resid; + int (*when_done)(); + int done_arg; + int done_arg2; + int error; + struct buf *bp; + struct scsi_sense_data sense; +}; +/********************************/ +/* Flag values */ +/********************************/ +#define SCSI_NOSLEEP 0x01 /* Not a user... don't sleep */ +#define SCSI_NOMASK 0x02 /* dont allow interrupts.. booting */ +#define SCSI_NOSTART 0x04 /* left over from ancient history */ +#define ITSDONE 0x10 /* the transfer is as done as it gets */ +#define INUSE 0x20 /* The scsi_xfer block is in use */ +#define SCSI_SILENT 0x40 /* Don't report errors to console */ +#define SCSI_ERR_OK 0x80 /* An error on this operation is OK. */ +#define SCSI_RESET 0x100 /* Reset the device in question */ +#define SCSI_DATA_UIO 0x200 /* The data address refers to a UIO */ +#define SCSI_DATA_IN 0x400 /* expect data to come INTO memory */ +#define SCSI_DATA_OUT 0x800 /* expect data to flow OUT of memory */ +#define SCSI_TARGET 0x1000 /* This defines a TARGET mode op. */ +/********************************/ +/* Error values */ +/********************************/ +#define XS_NOERROR 0x0 /* there is no error, (sense is invalid) */ +#define XS_SENSE 0x1 /* Check the returned sense for the error */ +#define XS_DRIVER_STUFFUP 0x2 /* Driver failed to perform operation */ +#define XS_TIMEOUT 0x03 /* The device timed out.. turned off? */ +#define XS_SWTIMEOUT 0x04 /* The Timeout reported was caught by SW */ +#define XS_BUSY 0x08 /* The device busy, try again later? */ + |