]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OldMdePkg/Include/IndustryStandard/scsi.h
Moved the MdePkg to OldMdePkg so that new code in MdePkg does not break existing...
[mirror_edk2.git] / OldMdePkg / Include / IndustryStandard / scsi.h
diff --git a/OldMdePkg/Include/IndustryStandard/scsi.h b/OldMdePkg/Include/IndustryStandard/scsi.h
new file mode 100644 (file)
index 0000000..f3112ae
--- /dev/null
@@ -0,0 +1,282 @@
+/** @file\r
+  support for SCSI-2 standard\r
+\r
+  Copyright (c) 2006, Intel Corporation                                                         \r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+  Module Name:  scsi.h\r
+\r
+**/\r
+\r
+#ifndef _SCSI_H\r
+#define _SCSI_H\r
+\r
+//\r
+// SCSI command OP Code\r
+//\r
+//\r
+// Commands for all device types\r
+//\r
+#define EFI_SCSI_OP_CHANGE_DEFINITION 0x40\r
+#define EFI_SCSI_OP_COMPARE           0x39\r
+#define EFI_SCSI_OP_COPY              0x18\r
+#define EFI_SCSI_OP_COPY_VERIFY       0x3a\r
+#define EFI_SCSI_OP_INQUIRY           0x12\r
+#define EFI_SCSI_OP_LOG_SELECT        0x4c\r
+#define EFI_SCSI_OP_LOG_SENSE         0x4d\r
+#define EFI_SCSI_OP_MODE_SEL6         0x15\r
+#define EFI_SCSI_OP_MODE_SEL10        0x55\r
+#define EFI_SCSI_OP_MODE_SEN6         0x1a\r
+#define EFI_SCSI_OP_MODE_SEN10        0x5a\r
+#define EFI_SCSI_OP_READ_BUFFER       0x3c\r
+#define EFI_SCSI_OP_REQUEST_SENSE     0x03\r
+#define EFI_SCSI_OP_SEND_DIAG         0x1d\r
+#define EFI_SCSI_OP_TEST_UNIT_READY   0x00\r
+#define EFI_SCSI_OP_WRITE_BUFF        0x3b\r
+\r
+//\r
+// Commands unique to Direct Access Devices\r
+//\r
+#define EFI_SCSI_OP_COMPARE         0x39\r
+#define EFI_SCSI_OP_FORMAT          0x04\r
+#define EFI_SCSI_OP_LOCK_UN_CACHE   0x36\r
+#define EFI_SCSI_OP_PREFETCH        0x34\r
+#define EFI_SCSI_OP_MEDIA_REMOVAL   0x1e\r
+#define EFI_SCSI_OP_READ6           0x08\r
+#define EFI_SCSI_OP_READ10          0x28\r
+#define EFI_SCSI_OP_READ_CAPACITY   0x25\r
+#define EFI_SCSI_OP_READ_DEFECT     0x37\r
+#define EFI_SCSI_OP_READ_LONG       0x3e\r
+#define EFI_SCSI_OP_REASSIGN_BLK    0x07\r
+#define EFI_SCSI_OP_RECEIVE_DIAG    0x1c\r
+#define EFI_SCSI_OP_RELEASE         0x17\r
+#define EFI_SCSI_OP_REZERO          0x01\r
+#define EFI_SCSI_OP_SEARCH_DATA_E   0x31\r
+#define EFI_SCSI_OP_SEARCH_DATA_H   0x30\r
+#define EFI_SCSI_OP_SEARCH_DATA_L   0x32\r
+#define EFI_SCSI_OP_SEEK6           0x0b\r
+#define EFI_SCSI_OP_SEEK10          0x2b\r
+#define EFI_SCSI_OP_SEND_DIAG       0x1d\r
+#define EFI_SCSI_OP_SET_LIMIT       0x33\r
+#define EFI_SCSI_OP_START_STOP_UNIT 0x1b\r
+#define EFI_SCSI_OP_SYNC_CACHE      0x35\r
+#define EFI_SCSI_OP_VERIFY          0x2f\r
+#define EFI_SCSI_OP_WRITE6          0x0a\r
+#define EFI_SCSI_OP_WRITE10         0x2a\r
+#define EFI_SCSI_OP_WRITE_VERIFY    0x2e\r
+#define EFI_SCSI_OP_WRITE_LONG      0x3f\r
+#define EFI_SCSI_OP_WRITE_SAME      0x41\r
+\r
+//\r
+// Commands unique to Sequential Access Devices\r
+//\r
+#define EFI_SCSI_OP_ERASE             0x19\r
+#define EFI_SCSI_OP_LOAD_UNLOAD       0x1b\r
+#define EFI_SCSI_OP_LOCATE            0x2b\r
+#define EFI_SCSI_OP_READ_BLOCK_LIMIT  0x05\r
+#define EFI_SCSI_OP_READ_POS          0x34\r
+#define EFI_SCSI_OP_READ_REVERSE      0x0f\r
+#define EFI_SCSI_OP_RECOVER_BUF_DATA  0x14\r
+#define EFI_SCSI_OP_RESERVE_UNIT      0x16\r
+#define EFI_SCSI_OP_REWIND            0x01\r
+#define EFI_SCSI_OP_SPACE             0x11\r
+#define EFI_SCSI_OP_VERIFY_TAPE       0x13\r
+#define EFI_SCSI_OP_WRITE_FILEMARK    0x10\r
+\r
+//\r
+// Commands unique to Printer Devices\r
+//\r
+#define EFI_SCSI_OP_PRINT       0x0a\r
+#define EFI_SCSI_OP_SLEW_PRINT  0x0b\r
+#define EFI_SCSI_OP_STOP_PRINT  0x1b\r
+#define EFI_SCSI_OP_SYNC_BUFF   0x10\r
+\r
+//\r
+// Commands unique to Processor Devices\r
+//\r
+#define EFI_SCSI_OP_RECEIVE 0x08\r
+#define EFI_SCSI_OP_SEND    0x0a\r
+\r
+//\r
+// Commands unique to Write-Once Devices\r
+//\r
+#define EFI_SCSI_OP_MEDIUM_SCAN     0x38\r
+#define EFI_SCSI_OP_SEARCH_DAT_E10  0x31\r
+#define EFI_SCSI_OP_SEARCH_DAT_E12  0xb1\r
+#define EFI_SCSI_OP_SEARCH_DAT_H10  0x30\r
+#define EFI_SCSI_OP_SEARCH_DAT_H12  0xb0\r
+#define EFI_SCSI_OP_SEARCH_DAT_L10  0x32\r
+#define EFI_SCSI_OP_SEARCH_DAT_L12  0xb2\r
+#define EFI_SCSI_OP_SET_LIMIT10     0x33\r
+#define EFI_SCSI_OP_SET_LIMIT12     0xb3\r
+#define EFI_SCSI_OP_VERIFY10        0x2f\r
+#define EFI_SCSI_OP_VERIFY12        0xaf\r
+#define EFI_SCSI_OP_WRITE12         0xaa\r
+#define EFI_SCSI_OP_WRITE_VERIFY10  0x2e\r
+#define EFI_SCSI_OP_WRITE_VERIFY12  0xae\r
+\r
+//\r
+// Commands unique to CD-ROM Devices\r
+//\r
+#define EFI_SCSI_OP_PLAY_AUD_10       0x45\r
+#define EFI_SCSI_OP_PLAY_AUD_12       0xa5\r
+#define EFI_SCSI_OP_PLAY_AUD_MSF      0x47\r
+#define EFI_SCSI_OP_PLAY_AUD_TKIN     0x48\r
+#define EFI_SCSI_OP_PLAY_TK_REL10     0x49\r
+#define EFI_SCSI_OP_PLAY_TK_REL12     0xa9\r
+#define EFI_SCSI_OP_READ_CD_CAPACITY  0x25\r
+#define EFI_SCSI_OP_READ_HEADER       0x44\r
+#define EFI_SCSI_OP_READ_SUB_CHANNEL  0x42\r
+#define EFI_SCSI_OP_READ_TOC          0x43\r
+\r
+//\r
+// Commands unique to Scanner Devices\r
+//\r
+#define EFI_SCSI_OP_GET_DATABUFF_STAT 0x34\r
+#define EFI_SCSI_OP_GET_WINDOW        0x25\r
+#define EFI_SCSI_OP_OBJECT_POS        0x31\r
+#define EFI_SCSI_OP_SCAN              0x1b\r
+#define EFI_SCSI_OP_SET_WINDOW        0x24\r
+\r
+//\r
+// Commands unique to Optical Memory Devices\r
+//\r
+#define EFI_SCSI_OP_UPDATE_BLOCK  0x3d\r
+\r
+//\r
+// Commands unique to Medium Changer Devices\r
+//\r
+#define EFI_SCSI_OP_EXCHANGE_MEDIUM   0xa6\r
+#define EFI_SCSI_OP_INIT_ELEMENT_STAT 0x07\r
+#define EFI_SCSI_OP_POS_TO_ELEMENT    0x2b\r
+#define EFI_SCSI_OP_REQUEST_VE_ADDR   0xb5\r
+#define EFI_SCSI_OP_SEND_VOL_TAG      0xb6\r
+\r
+//\r
+// Commands unique to Communition Devices\r
+//\r
+#define EFI_SCSI_OP_GET_MESSAGE6    0x08\r
+#define EFI_SCSI_OP_GET_MESSAGE10   0x28\r
+#define EFI_SCSI_OP_GET_MESSAGE12   0xa8\r
+#define EFI_SCSI_OP_SEND_MESSAGE6   0x0a\r
+#define EFI_SCSI_OP_SEND_MESSAGE10  0x2a\r
+#define EFI_SCSI_OP_SEND_MESSAGE12  0xaa\r
+\r
+//\r
+// SCSI Data Transfer Direction\r
+//\r
+#define EFI_SCSI_DATA_IN  0\r
+#define EFI_SCSI_DATA_OUT 1\r
+\r
+//\r
+// Peripheral Device Type Definitions\r
+//\r
+#define EFI_SCSI_TYPE_DISK          0x00  // Disk device\r
+#define EFI_SCSI_TYPE_TAPE          0x01  // Tape device\r
+#define EFI_SCSI_TYPE_PRINTER       0x02  // Printer\r
+#define EFI_SCSI_TYPE_PROCESSOR     0x03  // Processor\r
+#define EFI_SCSI_TYPE_WORM          0x04  // Write-once read-multiple\r
+#define EFI_SCSI_TYPE_CDROM         0x05  // CD-ROM device\r
+#define EFI_SCSI_TYPE_SCANNER       0x06  // Scanner device\r
+#define EFI_SCSI_TYPE_OPTICAL       0x07  // Optical memory device\r
+#define EFI_SCSI_TYPE_MEDIUMCHANGER 0x08  // Medium Changer device\r
+#define EFI_SCSI_TYPE_COMMUNICATION 0x09  // Communications device\r
+#define EFI_SCSI_TYPE_RESERVED_LOW  0x0A  // Reserved (low)\r
+#define EFI_SCSI_TYPE_RESERVED_HIGH 0x1E  // Reserved (high)\r
+#define EFI_SCSI_TYPE_UNKNOWN       0x1F  // Unknown or no device type\r
+#pragma pack(1)\r
+//\r
+// Data structures for scsi command use\r
+//\r
+typedef struct {\r
+  UINT8 Peripheral_Type : 5;\r
+  UINT8 Peripheral_Qualifier : 3;\r
+  UINT8 DeviceType_Modifier : 7;\r
+  UINT8 RMB : 1;\r
+  UINT8 Version;\r
+  UINT8 Response_Data_Format;\r
+  UINT8 Addnl_Length;\r
+  UINT8 Reserved_5_95[95 - 5 + 1];\r
+} EFI_SCSI_INQUIRY_DATA;\r
+\r
+typedef struct {\r
+  UINT8 Error_Code : 7;\r
+  UINT8 Valid : 1;\r
+  UINT8 Segment_Number;\r
+  UINT8 Sense_Key : 4;\r
+  UINT8 Reserved_21 : 1;\r
+  UINT8 ILI : 1;\r
+  UINT8 Reserved_22 : 2;\r
+  UINT8 Information_3_6[4];\r
+  UINT8 Addnl_Sense_Length;           // n - 7\r
+  UINT8 Vendor_Specific_8_11[4];\r
+  UINT8 Addnl_Sense_Code;             // mandatory\r
+  UINT8 Addnl_Sense_Code_Qualifier;   // mandatory\r
+  UINT8 Field_Replaceable_Unit_Code;  // optional\r
+  UINT8 Reserved_15_17[3];\r
+} EFI_SCSI_SENSE_DATA;\r
+\r
+typedef struct {\r
+  UINT8 LastLba3;\r
+  UINT8 LastLba2;\r
+  UINT8 LastLba1;\r
+  UINT8 LastLba0;\r
+  UINT8 BlockSize3;\r
+  UINT8 BlockSize2;\r
+  UINT8 BlockSize1;\r
+  UINT8 BlockSize0;\r
+} EFI_SCSI_DISK_CAPACITY_DATA;\r
+\r
+#pragma pack()\r
+//\r
+// Sense Key\r
+//\r
+#define EFI_SCSI_REQUEST_SENSE_ERROR  (0x70)\r
+#define EFI_SCSI_SK_NO_SENSE          (0x0)\r
+#define EFI_SCSI_SK_RECOVERY_ERROR    (0x1)\r
+#define EFI_SCSI_SK_NOT_READY         (0x2)\r
+#define EFI_SCSI_SK_MEDIUM_ERROR      (0x3)\r
+#define EFI_SCSI_SK_HARDWARE_ERROR    (0x4)\r
+#define EFI_SCSI_SK_ILLEGAL_REQUEST   (0x5)\r
+#define EFI_SCSI_SK_UNIT_ATTENTION    (0x6)\r
+#define EFI_SCSI_SK_DATA_PROTECT      (0x7)\r
+#define EFI_SCSI_SK_BLANK_CHECK       (0x8)\r
+#define EFI_SCSI_SK_VENDOR_SPECIFIC   (0x9)\r
+#define EFI_SCSI_SK_RESERVED_A        (0xA)\r
+#define EFI_SCSI_SK_ABORT             (0xB)\r
+#define EFI_SCSI_SK_RESERVED_C        (0xC)\r
+#define EFI_SCSI_SK_OVERFLOW          (0xD)\r
+#define EFI_SCSI_SK_MISCOMPARE        (0xE)\r
+#define EFI_SCSI_SK_RESERVED_F        (0xF)\r
+\r
+//\r
+// Additional Sense Codes\r
+//\r
+#define EFI_SCSI_ASC_NOT_READY                    (0x04)\r
+#define EFI_SCSI_ASC_MEDIA_ERR1                   (0x10)\r
+#define EFI_SCSI_ASC_MEDIA_ERR2                   (0x11)\r
+#define EFI_SCSI_ASC_MEDIA_ERR3                   (0x14)\r
+#define EFI_SCSI_ASC_MEDIA_ERR4                   (0x30)\r
+#define EFI_SCSI_ASC_MEDIA_UPSIDE_DOWN            (0x06)\r
+#define EFI_SCSI_ASC_INVALID_CMD                  (0x20)\r
+#define EFI_SCSI_ASC_LBA_OUT_OF_RANGE             (0x21)\r
+#define EFI_SCSI_ASC_INVALID_FIELD                (0x24)\r
+#define EFI_SCSI_ASC_WRITE_PROTECTED              (0x27)\r
+#define EFI_SCSI_ASC_MEDIA_CHANGE                 (0x28)\r
+#define EFI_SCSI_ASC_RESET                        (0x29)  /* Power On Reset or Bus Reset occurred */\r
+#define EFI_SCSI_ASC_ILLEGAL_FIELD                (0x26)\r
+#define EFI_SCSI_ASC_NO_MEDIA                     (0x3A)\r
+#define EFI_SCSI_ASC_ILLEGAL_MODE_FOR_THIS_TRACK  (0x64)\r
+\r
+//\r
+// Additional Sense Code Qualifier\r
+//\r
+#define EFI_SCSI_ASCQ_IN_PROGRESS (0x01)\r
+\r
+#endif\r