#ifndef __SCSI_DEFS_H #define __SCSI_DEFS_H /* Mode pages */ #define MODEPAGE_VENDOR_SPECIFIC 0x00 #define MODEPAGE_RW_ERROR_RECOVERY 0x01 #define MODEPAGE_DCRC_PARAMETERS 0x02 #define MODEPAGE_FORMAT_PARAMETERS 0x03 #define MODEPAGE_RIGID_GEOMETRY 0x04 #define MODEPAGE_FLEXIBLE_GEOMETRY 0x05 #define MODEPAGE_APPLE 0x30 #define MODEPAGE_ALL_PAGES 0x3F /* 6 Byte command opcodes */ #define CMD_TEST_UNIT_READY 0x00 #define CMD_REZERO_UNIT 0x01 #define CMD_REQUEST_SENSE 0x03 #define CMD_FORMAT_UNIT 0x04 #define CMD_READ_BLOCK_LIMITS 0x05 #define CMD_FORMAT_UNIT_ALT 0x06 #define CMD_REASSIGN_BLOCKS 0x07 #define CMD_READ6 0x08 #define CMD_WRITE6 0x0A /* Optional */ #define CMD_SEEK6 0x0B /* Optional */ #define CMD_WRITE_FILEMARKS 0x10 #define CMD_SPACE 0x11 #define CMD_INQUIRY 0x12 #define CMD_MODE_SELECT6 0x15 /* Optional */ #define CMD_RESERVE6 0x16 /* Optional */ #define CMD_RELEASE6 0x17 /* Optional */ #define CMD_ERASE 0x19 #define CMD_MODE_SENSE6 0x1A /* Optional */ #define CMD_START_STOP_UNIT 0x1B /* Optional */ #define CMD_RECV_DIAGNOSTIC 0x1C #define CMD_SEND_DIAGNOSTIC 0x1D #define CMD_PREVENT_REMOVAL 0x1E /* 10 Byte command opcodes */ #define CMD_READ_CAPACITY10 0x25 #define CMD_READ10 0x28 #define CMD_WRITE10 0x2A /* Optional */ #define CMD_SEEK10 0x2B /* Optional */ #define CMD_READUPDATEDBLOCK10 0x2D #define CMD_WRITEANDVERIFY10 0x2E /* Optional */ #define CMD_VERIFY10 0x2F #define CMD_SEARCH_DATA_EQUAL 0x31 /* Optional */ #define CMD_PREFETCH_CACHE10 0x34 /* Optional */ #define CMD_READPOSITION10 0x34 /* Optional */ #define CMD_SYNCHRONIZE_CACHE10 0x35 /* Optional */ #define CMD_LOCKUNLOCK_CACHE10 0x36 /* Optional */ #define CMD_READ_DEFECT_DATA 0x37 /* Optional */ #define CMD_WRITEBUFFER 0x3B /* Optional */ #define CMD_READBUFFER 0x3C /* Optional */ #define CMD_READLONG10 0x3E /* Optional */ #define CMD_WRITELONG10 0x3F /* Optional */ #define CMD_READ_TOC 0x43 #define CMD_READ_HEADER 0x44 #define CMD_GET_CONFIGURATION 0x46 #define CMD_GET_EVENT_STATUS_NOTIFICATION 0x4a #define CMD_READ_DISC_INFORMATION 0x51 #define CMD_MODE_SELECT10 0x55 #define CMD_RESERVE10 0x56 #define CMD_RELEASE10 0x57 #define CMD_MODE_SENSE10 0x5A /* Optional */ /* 12 Byte command opcodes */ #define CMD_REPORT_LUNS 0xA0 /* Optional */ #define CMD_SET_DRIVE_PARAMETER 0xC2 #define CMD_MAC_UNKNOWN 0xEE /* Unknown */ /* Dayna SCSI/Link Ethernet */ #define CMD_SCSILINK_STATS 0x09 #define CMD_SCSILINK_ENABLE 0x0E #define CMD_SCSILINK_SET 0x0C #define CMD_SCSILINK_SETMODE 0x80 #define CMD_SCSILINK_SETMAC 0x40 /* Cabletron Ethernet */ #define CMD_CABLETRON_SEND 0x0c01 #define CMD_CABLETRON_RECV 0xe1 #define CMD_CABLETRON_GET_ADDR 0x0c04 #define CMD_CABLETRON_ADD_PROTO 0x0d01 #define CMD_CABLETRON_REM_PROTO 0x0d02 #define CMD_CABLETRON_SET_MODE 0x0d03 #define CMD_CABLETRON_SET_MULTI 0x0d04 #define CMD_CABLETRON_REMOVE_MULTI 0x0d05 #define CMD_CABLETRON_GET_STATS 0x0d06 #define CMD_CABLETRON_SET_MEDIA 0x0d07 #define CMD_CABLETRON_GET_MEDIA 0x0d08 #define CMD_CABLETRON_LOAD_IMAGE 0x0d09 #define CMD_CABLETRON_SET_ADDR 0x0d0a /* * SCSI DEVICE CODES */ #define DEV_DISK 0x00 #define DEV_TAPE 0x01 #define DEV_PRINTER 0x02 #define DEV_PROCESSOR 0x03 #define DEV_WORM 0x04 #define DEV_OPTICAL 0x05 #define DEV_SCANNER 0x06 #define DEV_OMS 0x07 #define DEV_CHANGER 0x08 #define DEV_COMM 0x09 /* * SCSI MESSAGE CODES */ #define COMMAND_COMPLETE 0x00 #define EXTENDED_MESSAGE 0x01 #define EXTENDED_MODIFY_DATA_POINTER 0x00 #define EXTENDED_SDTR 0x01 #define EXTENDED_EXTENDED_IDENTIFY 0x02 /* SCSI-I only */ #define EXTENDED_WDTR 0x03 #define EXTENDED_PPR 0x04 #define EXTENDED_MODIFY_BIDI_DATA_PTR 0x05 #define SAVE_POINTERS 0x02 #define RESTORE_POINTERS 0x03 #define DISCONNECT 0x04 #define INITIATOR_ERROR 0x05 #define ABORT_TASK_SET 0x06 #define MESSAGE_REJECT 0x07 #define NOP 0x08 #define MSG_PARITY_ERROR 0x09 #define LINKED_CMD_COMPLETE 0x0a #define LINKED_FLG_CMD_COMPLETE 0x0b #define TARGET_RESET 0x0c #define ABORT_TASK 0x0d #define CLEAR_TASK_SET 0x0e #define INITIATE_RECOVERY 0x0f /* SCSI-II only */ #define RELEASE_RECOVERY 0x10 /* SCSI-II only */ #define CLEAR_ACA 0x16 #define LOGICAL_UNIT_RESET 0x17 #define SIMPLE_QUEUE_TAG 0x20 #define HEAD_OF_QUEUE_TAG 0x21 #define ORDERED_QUEUE_TAG 0x22 #define IGNORE_WIDE_RESIDUE 0x23 #define ACA 0x24 #define QAS_REQUEST 0x55 #define IDENTIFY 0x80 /* Task states */ #define ENDED 0x00 #define CURRENT 0x01 /* Status */ #define STATUS_GOOD 0x00 #define STATUS_CHECK 0x02 #define STATUS_BUSY 0x08 #define STATUS_INTERMEDIATE 0x10 #define STATUS_CONFLICT 0x18 /* 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 /* Additional Sense Information */ #define NO_ADDITIONAL_SENSE_INFORMATION 0x00 #define LUN_NOT_READY 0x04 #define INVALID_LBA 0x21 #define INVALID_FIELD_IN_CDB 0x24 #define NOTREADY_TO_READY_CHANGE 0x28 #define UNIT_POWERON_RESET 0x29 #define NO_MEDIA 0x3A #define ERROR_IN_OPCODE 0xC0 #if USE_DB2ID_TABLE extern const uint8_t db2scsiid[256]; #endif #define QUIRKS_SASI 0b00000001 #define QUIRKS_APPLE 0b00000010 #endif