1 /* $NetBSD: scsi_cmd_codes.h,v 1.3 2009/06/30 02:44:52 agc Exp $ */ 2 3 /* 4 * Copyright � 2006 Alistair Crooks. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 3. The name of the author may not be used to endorse or promote 15 * products derived from this software without specific prior written 16 * permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 19 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 24 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 26 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 27 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 #ifndef SCSI_CMD_CODES_H_ 31 #define SCSI_CMD_CODES_H_ 32 33 /* information taken from SPC3, T10/1416-D Revision 23, from www.t10.org */ 34 35 enum { 36 TEST_UNIT_READY = 0x00, 37 READ_6 = 0x08, 38 WRITE_6 = 0x0a, 39 INQUIRY = 0x12, 40 MODE_SELECT_6 = 0x15, 41 RESERVE_6 = 0x16, 42 RELEASE_6 = 0x17, 43 MODE_SENSE_6 = 0x1a, 44 STOP_START_UNIT = 0x1b, 45 READ_CAPACITY = 0x25, 46 READ_10 = 0x28, 47 WRITE_10 = 0x2a, 48 WRITE_VERIFY = 0x2e, 49 VERIFY = 0x2f, 50 SYNC_CACHE = 0x35, 51 LOG_SENSE = 0x4d, 52 MODE_SELECT_10 = 0x55, 53 RESERVE_10 = 0x56, 54 RELEASE_10 = 0x57, 55 MODE_SENSE_10 = 0x5a, 56 PERSISTENT_RESERVE_IN = 0x5e, 57 PERSISTENT_RESERVE_OUT = 0x5f, 58 REPORT_LUNS = 0xa0 59 }; 60 61 #define SIX_BYTE_COMMAND(op) ((op) <= 0x1f) 62 #define TEN_BYTE_COMMAND(op) ((op) > 0x1f && (op) <= 0x5f) 63 64 enum { 65 ISCSI_MODE_SENSE_LEN = 11 66 }; 67 68 /* miscellaneous definitions */ 69 enum { 70 DISK_PERIPHERAL_DEVICE = 0x0, 71 72 INQUIRY_EVPD_BIT = 0x01, 73 74 INQUIRY_UNIT_SERIAL_NUMBER_VPD = 0x80, 75 INQUIRY_DEVICE_IDENTIFICATION_VPD = 0x83, 76 INQUIRY_SUPPORTED_VPD_PAGES = 0x0, 77 INQUIRY_DEVICE_PIV = 0x1, 78 79 INQUIRY_IDENTIFIER_TYPE_T10 = 0x1, 80 INQUIRY_IDENTIFIER_TYPE_EUI64 = 0x2, 81 INQUIRY_IDENTIFIER_TYPE_NAA = 0x3, 82 83 INQUIRY_DEVICE_ASSOCIATION_LOGICAL_UNIT = 0x0, 84 INQUIRY_DEVICE_ASSOCIATION_TARGET_PORT = 0x1, 85 INQUIRY_DEVICE_ASSOCIATION_TARGET_DEVICE = 0x2, 86 87 INQUIRY_DEVICE_CODESET_UTF8 = 0x3, 88 INQUIRY_DEVICE_ISCSI_PROTOCOL = 0x5, 89 INQUIRY_DEVICE_T10_VENDOR = 0x1, 90 INQUIRY_DEVICE_IDENTIFIER_SCSI_NAME = 0x8, 91 92 EXTENDED_INQUIRY_DATA_VPD = 0x86, 93 EXTENDED_INQUIRY_REF_TAG_OWNER = 0x08, 94 EXTENDED_INQUIRY_GUARD_CHECK = 0x04, 95 EXTENDED_INQUIRY_APPLICATION_CHECK = 0x02, 96 EXTENDED_INQUIRY_REFERENCE_CHECK = 0x01, 97 98 EXTENDED_INQUIRY_GROUP_SUPPORT = 0x10, 99 EXTENDED_INQUIRY_PRIORITY_SUPPORT = 0x8, 100 EXTENDED_INQUIRY_QUEUE_HEAD_SUPPORT = 0x4, 101 EXTENDED_INQUIRY_ORDERED_SUPPORT = 0x2, 102 EXTENDED_INQUIRY_SIMPLE_SUPPORT = 0x1, 103 104 PERSISTENT_RESERVE_IN_SERVICE_ACTION_MASK = 0x1f, 105 PERSISTENT_RESERVE_IN_READ_KEYS = 0x0, 106 PERSISTENT_RESERVE_IN_READ_RESERVATION = 0x1, 107 PERSISTENT_RESERVE_IN_REPORT_CAPABILITIES = 0x2, 108 PERSISTENT_RESERVE_IN_READ_FULL_STATUS = 0x3, 109 110 PERSISTENT_RESERVE_IN_CRH = 0x10, 111 PERSISTENT_RESERVE_IN_SIP_C = 0x8, 112 PERSISTENT_RESERVE_IN_ATP_C = 0x4, 113 PERSISTENT_RESERVE_IN_PTPL_C = 0x1, /* persistence through power loss */ 114 PERSISTENT_RESERVE_IN_TMV = 0x80, /* Type Mask Valid */ 115 PERSISTENT_RESERVE_IN_PTPL_A = 0x01, /* persistence through power loss activated */ 116 117 PERSISTENT_RESERVE_IN_WR_EX_AR = 0x80, 118 PERSISTENT_RESERVE_IN_EX_AC_RD = 0x40, 119 PERSISTENT_RESERVE_IN_WR_AC_RD = 0x20, 120 PERSISTENT_RESERVE_IN_EX_AC = 0x08, 121 PERSISTENT_RESERVE_IN_WR_EX = 0x02, 122 PERSISTENT_RESERVE_IN_EX_AC_AR = 0x01, 123 124 WIDE_BUS_16 = 0x20, 125 WIDE_BUS_32 = 0x40, 126 127 SCSI_VERSION_SPC = 0x03, 128 SCSI_VERSION_SPC2 = 0x04, 129 SCSI_VERSION_SPC3 = 0x05, 130 131 /* used in MODE_SENSE_10 */ 132 DISABLE_BLOCK_DESCRIPTORS = 0x08, 133 LONG_LBA_ACCEPTED = 0x10, 134 PAGE_CONTROL_MASK = 0xc0, 135 PAGE_CONTROL_CURRENT_VALUES = 0x0, 136 PAGE_CONTROL_CHANGEABLE_VALUES = 0x40, 137 PAGE_CONTROL_DEFAULT_VALUES = 0x80, 138 PAGE_CONTROL_SAVAED_VALUES = 0xc0, 139 PAGE_CODE_MASK = 0x3f, 140 141 ASC_LUN_UNSUPPORTED = 0x25, 142 ASCQ_LUN_UNSUPPORTED = 0x0, 143 144 SCSI_SKEY_ILLEGAL_REQUEST = 0x05 145 }; 146 147 /* device return codes */ 148 enum { 149 SCSI_SUCCESS = 0x0, 150 SCSI_CHECK_CONDITION = 0x02 151 }; 152 153 #endif /* !SCSI_CMD_CODES_H_ */ 154