#ifndef __SCSI_H__ #define __SCSI_H__ /* For documentation on the OPCODES, MESSAGES, and SENSE values, please consult the SCSI standard. */ /* SCSI opcodes */ #define TEST_UNIT_READY 0x00 #define REZERO_UNIT 0x01 #define REQUEST_SENSE 0x03 #define FORMAT_UNIT 0x04 #define REASSIGN_BLOCKS 0x07 #define READ_6 0x08 #define WRITE_6 0x0a #define SEEK 0x0b #define INQUIRY 0x12 #define MODE_SELECT 0x15 #define RESERVE 0x16 #define RELEASE 0x17 #define COPY 0x18 #define MODE_SENSE 0x1a #define START_STOP 0x1b #define RECIEVE_DAIGNOSTIC 0x1c #define SEND_DIAGNOSTIC 0x1d #define ALLOW_MEDIUM_REMOVAL 0x1e #define READ_CAPACITY 0x25 #define READ_10 0x28 #define WRITE_10 0x2a #define SEEK_10 0x2b #define WRITE_VERIFY 0x2e #define VERIFY 0x2f #define SEARCH_HIGH 0x30 #define SEARCH_EQUAL 0x31 #define SEARCH_LOW 0x32 #define SET_LIMITS 0x33 #define COMPARE 0x39 #define COPY_VERIFY 0x3a /* MESSAGE CODES */ #define COMMAND_COMPLETE 0x00 #define EXTENDED_MESSAGE 0x01 #define SAVE_POINTERS 0x02 #define RESTORE_POINTERS 0x03 #define DISCONNECT 0x04 #define INITIATOR_ERROR 0x05 #define ABORT 0x06 #define MESAGE_REJECT 0x07 #define NOP 0x08 #define MSG_PARITY_ERROR 0x09 #define LINKED_CMD_COMPLETE 0x0a #define LINKED_FLG_CMD_COMPLETE 0x0b #define BUS_DEVICE_RESET 0x0c #define IDENTIFY 0x80 /* Our errors returned by OUR driver, NOT SCSI message. Orr'd with SCSI message passed back to driver . */ /* NO error */ #define DID_OK 0x0000 /* Couldn't connect before timeout period */ #define DID_NO_CONNECT 0x0100 /* BUS stayed busy through time out period */ #define DID_BUS_BUSY 0x0200 /* TIMED OUT for other reason */ #define DID_TIME_OUT 0x0300 /* ERROR from TARGET */ #define DID_TERROR 0x0400 /* TARGET was busy */ #define DID_TBUSY 0x0500 /* TARGET disconnected prematurely */ #define DID_TDISCONNECT 0x0600 /* TARGET was off line */ #define DID_TOFFLINE 0x0700 /* TARGET wants US to send IT a message */ #defibe DID_TREQ_MSG_OUT 0x0800 /* TARGET parity error */ #define DID_TPARITY 0x0900 /* TARGET requested reselect */ #define DID_TRESELECT 0x0A00 /* TARGET was not in the range 0-6 inlclusive */ #define DID_BAD_TARGET 0x0B00 /* SENSE KEYS */ #define NO_SENSE 0x00 #define RECOVERED_ERROR 0x01 #define NOT_READY 0x02 #define MEDIUM_ERROR 0x03 #define HARDWARE_ERROR 0x04 #define ILLEGAL_REQUEST 0x05 #define UNIT_ATTENTION 0x06 #define DATA_PROTECT 0x07 #define BLANK_CHECK 0x08 #define COPY_ABORTED 0x0a #define ABORTED_COMMAND 0x0b #define VOLUME_OVERFLOW 0x0d #define MISCOMPARE 0x0e /* DEVICE TYPES */ #define TYPE_DISK 0x00 #define TYPE_TAPE 0x01 #define TYPE_WORM 0x04 /* Treated as ROM by our system */ #define TYPE_ROM 0x05 #define TYPE_NO_LUN 0x7f /* Every SCSI command starts with a one byte OP-code. The next byte's high three bits are the LUN of the device. Any multi-byte quantities are stored high byte first, and may have a 5 bit MSB in the same byte as the LUN. */ #endif