Home | History | Annotate | Line # | Download | only in include
      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