1 /* $NetBSD: scsi_cmd_codes.h,v 1.4 2025/07/05 06:50:12 mlelstv 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_CAPACITY_16 = 0x9e, 47 READ_10 = 0x28, 48 WRITE_10 = 0x2a, 49 WRITE_VERIFY = 0x2e, 50 READ_16 = 0x88, 51 WRITE_16 = 0x8a, 52 WRITE_VERIFY_16 = 0x8e, 53 VERIFY = 0x2f, 54 SYNC_CACHE = 0x35, 55 LOG_SENSE = 0x4d, 56 MODE_SELECT_10 = 0x55, 57 RESERVE_10 = 0x56, 58 RELEASE_10 = 0x57, 59 MODE_SENSE_10 = 0x5a, 60 PERSISTENT_RESERVE_IN = 0x5e, 61 PERSISTENT_RESERVE_OUT = 0x5f, 62 REPORT_LUNS = 0xa0 63 }; 64 65 #define SIX_BYTE_COMMAND(op) ((op) <= 0x1f) 66 #define TEN_BYTE_COMMAND(op) ((op) > 0x1f && (op) <= 0x5f) 67 68 enum { 69 ISCSI_MODE_SENSE_LEN = 11 70 }; 71 72 /* miscellaneous definitions */ 73 enum { 74 DISK_PERIPHERAL_DEVICE = 0x0, 75 76 INQUIRY_EVPD_BIT = 0x01, 77 78 INQUIRY_UNIT_SERIAL_NUMBER_VPD = 0x80, 79 INQUIRY_DEVICE_IDENTIFICATION_VPD = 0x83, 80 INQUIRY_SUPPORTED_VPD_PAGES = 0x0, 81 INQUIRY_DEVICE_PIV = 0x1, 82 83 INQUIRY_IDENTIFIER_TYPE_T10 = 0x1, 84 INQUIRY_IDENTIFIER_TYPE_EUI64 = 0x2, 85 INQUIRY_IDENTIFIER_TYPE_NAA = 0x3, 86 87 INQUIRY_DEVICE_ASSOCIATION_LOGICAL_UNIT = 0x0, 88 INQUIRY_DEVICE_ASSOCIATION_TARGET_PORT = 0x1, 89 INQUIRY_DEVICE_ASSOCIATION_TARGET_DEVICE = 0x2, 90 91 INQUIRY_DEVICE_CODESET_UTF8 = 0x3, 92 INQUIRY_DEVICE_ISCSI_PROTOCOL = 0x5, 93 INQUIRY_DEVICE_T10_VENDOR = 0x1, 94 INQUIRY_DEVICE_IDENTIFIER_SCSI_NAME = 0x8, 95 96 EXTENDED_INQUIRY_DATA_VPD = 0x86, 97 EXTENDED_INQUIRY_REF_TAG_OWNER = 0x08, 98 EXTENDED_INQUIRY_GUARD_CHECK = 0x04, 99 EXTENDED_INQUIRY_APPLICATION_CHECK = 0x02, 100 EXTENDED_INQUIRY_REFERENCE_CHECK = 0x01, 101 102 EXTENDED_INQUIRY_GROUP_SUPPORT = 0x10, 103 EXTENDED_INQUIRY_PRIORITY_SUPPORT = 0x8, 104 EXTENDED_INQUIRY_QUEUE_HEAD_SUPPORT = 0x4, 105 EXTENDED_INQUIRY_ORDERED_SUPPORT = 0x2, 106 EXTENDED_INQUIRY_SIMPLE_SUPPORT = 0x1, 107 108 PERSISTENT_RESERVE_IN_SERVICE_ACTION_MASK = 0x1f, 109 PERSISTENT_RESERVE_IN_READ_KEYS = 0x0, 110 PERSISTENT_RESERVE_IN_READ_RESERVATION = 0x1, 111 PERSISTENT_RESERVE_IN_REPORT_CAPABILITIES = 0x2, 112 PERSISTENT_RESERVE_IN_READ_FULL_STATUS = 0x3, 113 114 PERSISTENT_RESERVE_IN_CRH = 0x10, 115 PERSISTENT_RESERVE_IN_SIP_C = 0x8, 116 PERSISTENT_RESERVE_IN_ATP_C = 0x4, 117 PERSISTENT_RESERVE_IN_PTPL_C = 0x1, /* persistence through power loss */ 118 PERSISTENT_RESERVE_IN_TMV = 0x80, /* Type Mask Valid */ 119 PERSISTENT_RESERVE_IN_PTPL_A = 0x01, /* persistence through power loss activated */ 120 121 PERSISTENT_RESERVE_IN_WR_EX_AR = 0x80, 122 PERSISTENT_RESERVE_IN_EX_AC_RD = 0x40, 123 PERSISTENT_RESERVE_IN_WR_AC_RD = 0x20, 124 PERSISTENT_RESERVE_IN_EX_AC = 0x08, 125 PERSISTENT_RESERVE_IN_WR_EX = 0x02, 126 PERSISTENT_RESERVE_IN_EX_AC_AR = 0x01, 127 128 WIDE_BUS_16 = 0x20, 129 WIDE_BUS_32 = 0x40, 130 131 SCSI_VERSION_SPC = 0x03, 132 SCSI_VERSION_SPC2 = 0x04, 133 SCSI_VERSION_SPC3 = 0x05, 134 135 /* used in MODE_SENSE_10 */ 136 DISABLE_BLOCK_DESCRIPTORS = 0x08, 137 LONG_LBA_ACCEPTED = 0x10, 138 PAGE_CONTROL_MASK = 0xc0, 139 PAGE_CONTROL_CURRENT_VALUES = 0x0, 140 PAGE_CONTROL_CHANGEABLE_VALUES = 0x40, 141 PAGE_CONTROL_DEFAULT_VALUES = 0x80, 142 PAGE_CONTROL_SAVAED_VALUES = 0xc0, 143 PAGE_CODE_MASK = 0x3f, 144 145 ASC_LUN_UNSUPPORTED = 0x25, 146 ASCQ_LUN_UNSUPPORTED = 0x0, 147 148 SCSI_SKEY_ILLEGAL_REQUEST = 0x05 149 }; 150 151 /* device return codes */ 152 enum { 153 SCSI_SUCCESS = 0x0, 154 SCSI_CHECK_CONDITION = 0x02 155 }; 156 157 #endif /* !SCSI_CMD_CODES_H_ */ 158