1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright (c) 1990, 2010, Oracle and/or its affiliates. All rights reserved.
  24  *
  25  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  26  */
  27 
  28 #ifndef _SYS_SCSI_GENERIC_COMMANDS_H
  29 #define _SYS_SCSI_GENERIC_COMMANDS_H
  30 
  31 #ifdef  __cplusplus
  32 extern "C" {
  33 #endif
  34 
  35 /*
  36  * Standard SCSI Command Definitions
  37  *
  38  * Macros to determine known command sizes
  39  */
  40 #define CDB_GROUPID(cmd)        ((cmd >> 5) & 0x7)
  41 #define CDB_GROUPID_0   0
  42 #define CDB_GROUPID_1   1
  43 #define CDB_GROUPID_2   2
  44 #define CDB_GROUPID_3   3
  45 #define CDB_GROUPID_4   4
  46 #define CDB_GROUPID_5   5
  47 #define CDB_GROUPID_6   6
  48 #define CDB_GROUPID_7   7
  49 
  50 #define CDB_GROUP0      6       /*  6-byte cdb's */
  51 #define CDB_GROUP1      10      /* 10-byte cdb's */
  52 #define CDB_GROUP2      10      /* 10-byte cdb's */
  53 #define CDB_GROUP3      0       /* reserved */
  54 #define CDB_GROUP4      16      /* 16-byte cdb's */
  55 #define CDB_GROUP5      12      /* 12-byte cdb's */
  56 #define CDB_GROUP6      0       /* reserved */
  57 #define CDB_GROUP7      0       /* reserved */
  58 
  59 /*
  60  * Generic Command Definitions
  61  * NOTE: CDROM commands are defined in cdio.h
  62  */
  63 
  64 /*
  65  * Group 0 Commands (CDB range 0x00 - 0x1F)
  66  */
  67 #define SCMD_GROUP0             0x00
  68 
  69 /*
  70  * Group 0 commands, All Devices
  71  */
  72 #define SCMD_TEST_UNIT_READY    0x00
  73 #define SCMD_REQUEST_SENSE      0x03
  74 #define SCMD_INQUIRY            0x12
  75 #define SCMD_COPY               0x18
  76 #define SCMD_GDIAG              0x1C    /* receive diagnostic results */
  77 #define SCMD_SDIAG              0x1D    /* send diagnostic results */
  78 
  79 /*
  80  * Group 0 commands, Direct Access Devices
  81  */
  82 /*      SCMD_TEST_UNIT_READY    0x00    */
  83 #define SCMD_REZERO_UNIT        0x01
  84 /*      SCMD_REQUEST_SENSE      0x03    */
  85 #define SCMD_FORMAT             0x04
  86 #define SCMD_REASSIGN_BLOCK     0x07
  87 #define SCMD_READ               0x08
  88 #define SCMD_WRITE              0x0a
  89 #define SCMD_SEEK               0x0b
  90 /*      SCMD_INQUIRY            0x12    */
  91 #define SCMD_MODE_SELECT        0x15
  92 #define SCMD_RESERVE            0x16
  93 #define SCMD_RELEASE            0x17
  94 /*      SCMD_COPY               0x18    */
  95 #define SCMD_MODE_SENSE         0x1a
  96 #define SCMD_START_STOP         0x1b
  97 /*      SCMD_GDIAG              0x1C    */
  98 /*      SCMD_SDIAG              0x1D    */
  99 #define SCMD_DOORLOCK           0x1E    /* Prevent/Allow Medium Removal */
 100 
 101 /*
 102  * Group 0 commands, Sequential Access Devices
 103  */
 104 /*      SCMD_TEST_UNIT_READY    0x00    */
 105 #define SCMD_REWIND             0x01    /* Note similarity to SCMD_REZERO */
 106 /*      SCMD_REQUEST_SENSE      0x03    */
 107 #define SCMD_READ_BLKLIM        0x05
 108 /*      SCMD_READ               0x08    */
 109 /*      SCMD_WRITE              0x0a    */
 110 #define SCMD_TRK_SEL            0x0b    /* Note similarity to SCMD_SEEK */
 111 #define SCMD_READ_REVERSE       0x0f
 112 #define SCMD_WRITE_FILE_MARK    0x10
 113 #define SCMD_SPACE              0x11
 114 /*      SCMD_INQUIRY            0x12    */
 115 #define SCMD_VERIFY_G0          0x13
 116 #define SCMD_RECOVER_BUF        0x14
 117 /*      SCMD_MODE_SELECT        0x15    */
 118 /*      SCMD_RESERVE            0x16    */
 119 /*      SCMD_RELEASE            0x17    */
 120 /*      SCMD_COPY               0x18    */
 121 #define SCMD_ERASE              0x19
 122 /*      SCMD_MODE_SENSE         0x1a    */
 123 #define SCMD_LOAD               0x1b    /* Note similarity to SCMD_START_STOP */
 124 /*      SCMD_GDIAG              0x1c    */
 125 /*      SCMD_SDIAG              0x1d    */
 126 /*      SCMD_DOORLOCK           0x1e    */
 127 
 128 
 129 /*
 130  * Group 0 commands, Printer Devices
 131  */
 132 /*      SCMD_TEST_UNIT_READY    0x00    */
 133 /*      SCMD_REQUEST_SENSE      0x03    */
 134 /*      SCMD_FORMAT             0x04    */
 135 #define SCMD_PRINT              0x0a    /* Note similarity to SCMD_WRITE */
 136 #define SCMD_SLEW_PRINT         0x0b    /* ? similar to SCMD_SEEK ? */
 137 #define SCMD_FLUSH_PRINT_BUF    0x10    /* ? similar to SCMD_WRITE_FILE_MARK */
 138 /*      SCMD_INQUIRY            0x12    */
 139 /*      SCMD_RECOVER_BUF        0x14    */
 140 /*      SCMD_MODE_SELECT        0x15    */
 141 /*      SCMD_RESERVE            0x16    */
 142 /*      SCMD_RELEASE            0x17    */
 143 /*      SCMD_COPY               0x18    */
 144 /*      SCMD_MODE_SENSE         0x1a    */
 145 #define SCMD_STOP_PRINT         0x1b    /* Note similarity to SCMD_START_STOP */
 146 /*      SCMD_GDIAG              0x1c    */
 147 /*      SCMD_SDIAG              0x1d    */
 148 
 149 /*
 150  * Group 0 commands, Processor Devices
 151  */
 152 /*      SCMD_TEST_UNIT_READY    0x00    */
 153 /*      SCMD_REQUEST_SENSE      0x03    */
 154 #define SCMD_RECEIVE            0x08    /* Note similarity to SCMD_READ */
 155 #define SCMD_SEND               0x0a    /* Note similarity to SCMD_WRITE */
 156 /*      SCMD_INQUIRY            0x12    */
 157 /*      SCMD_COPY               0x18    */
 158 /*      SCMD_MODE_SENSE         0x1a    */
 159 /*      SCMD_GDIAG              0x1c    */
 160 /*      SCMD_SDIAG              0x1d    */
 161 
 162 /*
 163  * Group 0 commands, WORM Devices
 164  */
 165 /*      SCMD_TEST_UNIT_READY    0x00    */
 166 /*      SCMD_REZERO_UNIT        0x01    */
 167 /*      SCMD_REQUEST_SENSE      0x03    */
 168 /*      SCMD_REASSIGN_BLOCK     0x07    */
 169 /*      SCMD_READ               0x08    */
 170 /*      SCMD_WRITE              0x0a    */
 171 /*      SCMD_SEEK               0x0b    */
 172 /*      SCMD_INQUIRY            0x12    */
 173 /*      SCMD_MODE_SELECT        0x15    */
 174 /*      SCMD_RESERVE            0x16    */
 175 /*      SCMD_RELEASE            0x17    */
 176 /*      SCMD_COPY               0x18    */
 177 /*      SCMD_MODE_SENSE         0x1a    */
 178 /*      SCMD_START_STOP         0x1b    */
 179 /*      SCMD_GDIAG              0x1C    */
 180 /*      SCMD_SDIAG              0x1D    */
 181 /*      SCMD_DOORLOCK           0x1E    */
 182 
 183 /*
 184  * Group 0 commands, Read Only Devices
 185  */
 186 /*      SCMD_TEST_UNIT_READY    0x00    */
 187 /*      SCMD_REZERO_UNIT        0x01    */
 188 /*      SCMD_REQUEST_SENSE      0x03    */
 189 /*      SCMD_REASSIGN_BLOCK     0x07    */
 190 /*      SCMD_READ               0x08    */
 191 /*      SCMD_SEEK               0x0b    */
 192 /*      SCMD_INQUIRY            0x12    */
 193 /*      SCMD_MODE_SELECT        0x15    */
 194 /*      SCMD_RESERVE            0x16    */
 195 /*      SCMD_RELEASE            0x17    */
 196 /*      SCMD_COPY               0x18    */
 197 /*      SCMD_MODE_SENSE         0x1a    */
 198 /*      SCMD_START_STOP         0x1b    */
 199 /*      SCMD_GDIAG              0x1C    */
 200 /*      SCMD_SDIAG              0x1D    */
 201 /*      SCMD_DOORLOCK           0x1E    */
 202 
 203 /*
 204  * Group 1 Commands (CDB range 0x20 - 0x3F)
 205  */
 206 #define SCMD_GROUP1             0x20
 207 
 208 /*
 209  * Group 1 Commands, All Devices
 210  */
 211 #define SCMD_COMPARE            0x39
 212 #define SCMD_COPY_VERIFY        0x3A
 213 #define SCMD_PERSISTENT_RESERVE_IN              0x5E
 214 #define SCMD_PERSISTENT_RESERVE_OUT             0x5F
 215 #define SCMD_PRIN               SCMD_PERSISTENT_RESERVE_IN
 216 #define SCMD_PROUT              SCMD_PERSISTENT_RESERVE_OUT
 217 
 218 /*
 219  * Group 1 Commands, Direct Access Devices
 220  */
 221 #define SCMD_READ_FORMAT_CAP    0x23
 222 #define SCMD_READ_CAPACITY      0x25
 223 #define SCMD_READ_G1            0x28    /* Note that only the group changed */
 224 #define SCMD_WRITE_G1           0x2a    /* Note that only the group changed */
 225 #define SCMD_SEEK_G1            0x2b    /* Note that only the group changed */
 226 #define SCMD_WRITE_VERIFY       0x2e
 227 #define SCMD_VERIFY             0x2f
 228 #define SCMD_SEARCH_HIGH        0x30
 229 #define SCMD_SEARCH_EQUAL       0x31
 230 #define SCMD_SEARCH_LOW         0x32
 231 #define SCMD_SET_LIMITS         0x33
 232 #define SCMD_SYNCHRONIZE_CACHE  0x35
 233 #define SCMD_READ_DEFECT_LIST   0x37
 234 #define SCMD_WRITE_BUFFER       0x3B
 235 #define SCMD_READ_BUFFER        0x3c
 236 #define SCMD_READ_LONG          0x3E
 237 #define SCMD_WRITE_LONG         0x3F
 238 #define SCMD_WRITE_SAME_G1      0x41
 239 #define SCMD_UNMAP              0x42
 240 #define SCMD_GET_CONFIGURATION  0x46
 241 #define SCMD_LOG_SELECT_G1      0x4c
 242 #define SCMD_LOG_SENSE_G1       0x4d
 243 #define SCMD_RESERVE_G1         0x56
 244 #define SCMD_RELEASE_G1         0x57
 245 #define SCMD_MODE_SELECT_G1     0x55
 246 #define SCMD_MODE_SENSE_G1      0x5A
 247 
 248 
 249 /*
 250  * Group 1 Commands, Sequential Access Devices
 251  */
 252 #define SCMD_LOCATE             0x2B    /* Note similarity to SCMD_SEEK_G1 */
 253 #define SCMD_READ_POSITION      0x34
 254 #define SCMD_REPORT_DENSITIES   0x44
 255 
 256 /*
 257  * Group 1 Commands, Printer Devices
 258  */
 259 /* (None Defined) */
 260 
 261 /*
 262  * Group 1 Commands, Processor Devices
 263  */
 264 /* (None Defined) */
 265 
 266 /*
 267  * Group 1 Commands, WORM Devices
 268  */
 269 /*      SCMD_READ_CAPACITY      0x25    */
 270 /*      SCMD_READ_G1            0x28    */
 271 /*      SCMD_WRITE_G1           0x2a    */
 272 /*      SCMD_SEEK_G1            0x2b    */
 273 /*      SCMD_WRITE_VERIFY       0x2e    */
 274 /*      SCMD_VERIFY             0x2f    */
 275 /*      SCMD_SEARCH_HIGH        0x30    */
 276 /*      SCMD_SEARCH_EQUAL       0x31    */
 277 /*      SCMD_SEARCH_LOW         0x32    */
 278 /*      SCMD_SET_LIMITS         0x33    */
 279 
 280 /*
 281  * Group 1 Commands, Read Only Devices
 282  */
 283 /*      SCMD_READ_CAPACITY      0x25    */
 284 /*      SCMD_READ_G1            0x28    */
 285 /*      SCMD_SEEK_G1            0x2b    */
 286 /*      SCMD_VERIFY             0x2f    */
 287 /*      SCMD_SEARCH_HIGH        0x30    */
 288 /*      SCMD_SEARCH_EQUAL       0x31    */
 289 /*      SCMD_SEARCH_LOW         0x32    */
 290 /*      SCMD_SET_LIMITS         0x33    */
 291 
 292 /*
 293  * Group 1 Commands, MMC Devices
 294  */
 295 
 296 /* GET EVENT STATUS NOTIFICATION, MMC-3 5.6 */
 297 #define SCMD_GET_EVENT_STATUS_NOTIFICATION      0x4a
 298 
 299 /* event header */
 300 #define SD_GESN_HEADER_LEN                      4
 301 #define SD_GESN_HEADER_NEA                      0x80    /* byte 2 */
 302 #define SD_GESN_HEADER_CLASS                    0x07    /* byte 2 */
 303 
 304 /* media class event class and event data that follows the header */
 305 #define SD_GESN_MEDIA_CLASS                     4
 306 
 307 #define SD_GESN_MEDIA_DATA_LEN                  4
 308 #define SD_GESN_MEDIA_EVENT_CODE                0x0f    /* byte 0 */
 309 #define SD_GESN_MEDIA_EVENT_STATUS_PRESENT      0x02    /* byte 1 */
 310 #define SD_GESN_MEDIA_EVENT_STATUS_TRAY_OPEN    0x01    /* byte 1 */
 311 
 312 /* media event code */
 313 #define SD_GESN_MEDIA_EVENT_NOCHG               0
 314 #define SD_GESN_MEDIA_EVENT_EJECTREQUEST        1
 315 #define SD_GESN_MEDIA_EVENT_NEWMEDIA            2
 316 #define SD_GESN_MEDIA_EVENT_MEDIAREMOVAL        3
 317 #define SD_GESN_MEDIA_EVENT_MEDIACHANGED        4
 318 #define SD_GESN_MEDIA_EVENT_BGFORMATCOMPLETED   5
 319 #define SD_GESN_MEDIA_EVENT_BGFORMATRESTARTED   6
 320 
 321 
 322 /*
 323  * Group 3 Commands
 324  */
 325 #define SCMD_VAR_LEN            0x7f
 326 
 327 /*
 328  * Group 4 Commands, All Devices
 329  */
 330 #define SCMD_GROUP4             0x80
 331 #define SCMD_EXTENDED_COPY      0x83
 332 #define SCMD_VERIFY_G4          0x8f
 333 
 334 /*
 335  * Group 4 Commands, Direct Access Devices
 336  */
 337 #define SCMD_READ_G4            0x88
 338 #define SCMD_WRITE_G4           0x8a
 339 #define SCMD_WRITE_VERIFY_G4    0x8e
 340 #define SCMD_WRITE_SAME_G4      0x93
 341 #define SCMD_SVC_ACTION_IN_G4   0x9e
 342 #define SCMD_SVC_ACTION_OUT_G4  0x9f
 343 
 344 /*
 345  * Group 4 Service Actions for Service Action In (16)
 346  */
 347 #define SSVC_ACTION_READ_CAPACITY_G4    0x10
 348 #define SSVC_ACTION_READ_LONG_G4        0x11
 349 
 350 /*
 351  * Group 4 Service Actions for Service Action Out (16)
 352  */
 353 #define SSVC_ACTION_WRITE_LONG_G4       0x11
 354 
 355 /*
 356  * Group 4 Commands, Sequential Access Devics
 357  */
 358 #define SCMD_WRITE_FILE_MARK_G4 0x80
 359 #define SCMD_READ_REVERSE_G4    0x81
 360 #define SCMD_READ_ATTRIBUTE     0x8c
 361 #define SCMD_WRITE_ATTRIBUTE    0x8d
 362 #define SCMD_SPACE_G4           0x91
 363 #define SCMD_LOCATE_G4          0x92
 364 
 365 /*
 366  * Group 5 commands.
 367  */
 368 #define SCMD_GROUP5             0xA0
 369 #define SCMD_REPORT_LUNS        0xA0
 370 #define SCMD_SECURITY_PROTO_IN  0xA2
 371 #define SCMD_MAINTENANCE_IN     0xA3
 372 #define SCMD_MAINTENANCE_OUT    0xA4
 373 #define SCMD_READ_G5            0xA8
 374 #define SCMD_WRITE_G5           0xAA
 375 #define SCMD_SVC_ACTION_OUT_G5  0xA9
 376 #define SCMD_SVC_ACTION_IN_G5   0xAB
 377 #define SCMD_GET_PERFORMANCE    0xAC
 378 #define SCMD_WRITE_VERIFY_G5    0xAE
 379 #define SCMD_VERIFY_G5          0xAF
 380 #define SCMD_SECURITY_PROTO_OUT 0xB5
 381 
 382 /*
 383  * Group 5 Service Actions for Maintenance In (12)
 384  */
 385 #define SSVC_ACTION_GET_TARGET_PORT_GROUPS      0x0a
 386 #define SSVC_ACTION_GET_SUPPORTED_OPERATIONS    0x0c
 387 #define SSVC_SCTION_GET_SUPPORTED_MANAGEMENT    0x0d
 388 #define SSVC_ACTION_GET_TIMESTAMP               0x0f
 389 
 390 /*
 391  * Group 5 Service Actions for Maintenance Out (12)
 392  */
 393 #define SSVC_ACTION_SET_DEVICE_IDENTIFIER       0x06
 394 #define SSVC_ACTION_SET_PRIORITY                0x0e
 395 #define SSVC_ACTION_SET_TARGET_PORT_GROUPS      0x0a
 396 #define SSVC_ACTION_SET_TIMESTAMP               0x0f
 397 
 398 /*
 399  * Group 5 Service Actions for Service Action In (12)
 400  */
 401 #define SSVC_ACTION_READ_MEDIA_SERIAL           0x01
 402 /*
 403  * scsi_key_strings for SCMD_ definitions
 404  *      NOTE: see SCSI_CMDS_KEY_STRINGS_CDIO in cdio.h for additional
 405  *      command-to-string translations.
 406  */
 407 #define SCSI_CMDS_KEY_STRINGS                                           \
 408 /* 0x00 */ SCMD_TEST_UNIT_READY,        "test_unit_ready",              \
 409 /* 0x01 */ SCMD_REWIND |                                                \
 410                 SCMD_REZERO_UNIT,       "rezero/rewind",                \
 411 /* 0x03 */ SCMD_REQUEST_SENSE,          "request_sense",                \
 412 /* 0x04 */ SCMD_FORMAT,                 "format",                       \
 413 /* 0x05 */ SCMD_READ_BLKLIM,            "read_block_limits",            \
 414 /* 0x07 */ SCMD_REASSIGN_BLOCK,         "reassign",                     \
 415 /* 0x08 */ SCMD_READ |                                                  \
 416                 SCMD_RECEIVE,           "read",                         \
 417 /* 0x0a */ SCMD_PRINT |                                                 \
 418                 SCMD_SEND |                                             \
 419                 SCMD_WRITE,             "write",                        \
 420 /* 0x0b */ SCMD_SEEK |                                                  \
 421                 SCMD_SLEW_PRINT |                                       \
 422                 SCMD_TRK_SEL,           "seek",                         \
 423 /* 0x0f */ SCMD_READ_REVERSE,           "read_reverse",                 \
 424 /* 0x10 */ SCMD_WRITE_FILE_MARK |                                       \
 425                 SCMD_FLUSH_PRINT_BUF,   "write_file_mark",              \
 426 /* 0x11 */ SCMD_SPACE,                  "space",                        \
 427 /* 0x12 */ SCMD_INQUIRY,                "inquiry",                      \
 428 /* 0x13 */ SCMD_VERIFY_G0,              "verify",                       \
 429 /* 0x14 */ SCMD_RECOVER_BUF,            "recover_buffer_data",          \
 430 /* 0x15 */ SCMD_MODE_SELECT,            "mode_select",                  \
 431 /* 0x16 */ SCMD_RESERVE,                "reserve",                      \
 432 /* 0x17 */ SCMD_RELEASE,                "release",                      \
 433 /* 0x18 */ SCMD_COPY,                   "copy",                         \
 434 /* 0x19 */ SCMD_ERASE,                  "erase_tape",                   \
 435 /* 0x1a */ SCMD_MODE_SENSE,             "mode_sense",                   \
 436 /* 0x1b */ SCMD_LOAD |                                                  \
 437                 SCMD_START_STOP |                                       \
 438                 SCMD_STOP_PRINT,        "load/start/stop",              \
 439 /* 0x1c */ SCMD_GDIAG,                  "get_diagnostic_results",       \
 440 /* 0x1d */ SCMD_SDIAG,                  "send_diagnostic_command",      \
 441 /* 0x1e */ SCMD_DOORLOCK,               "door_lock",                    \
 442 /* 0x23 */ SCMD_READ_FORMAT_CAP,        "read_format_capacity",         \
 443 /* 0x25 */ SCMD_READ_CAPACITY,          "read_capacity",                \
 444 /* 0x28 */ SCMD_READ_G1,                "read(10)",                     \
 445 /* 0x2a */ SCMD_WRITE_G1,               "write(10)",                    \
 446 /* 0x2b */ SCMD_SEEK_G1 |                                               \
 447                 SCMD_LOCATE,            "seek(10)",                     \
 448 /* 0x2e */ SCMD_WRITE_VERIFY,           "write_verify",                 \
 449 /* 0x2f */ SCMD_VERIFY,                 "verify(10)",                   \
 450 /* 0x30 */ SCMD_SEARCH_HIGH,            "search_data_high",             \
 451 /* 0x31 */ SCMD_SEARCH_EQUAL,           "search_data_equal",            \
 452 /* 0x32 */ SCMD_SEARCH_LOW,             "search_data_low",              \
 453 /* 0x33 */ SCMD_SET_LIMITS,             "set_limits",                   \
 454 /* 0x34 */ SCMD_READ_POSITION,          "read_position",                \
 455 /* 0x35 */ SCMD_SYNCHRONIZE_CACHE,      "synchronize_cache",            \
 456 /* 0x37 */ SCMD_READ_DEFECT_LIST,       "read_defect_data",             \
 457 /* 0x39 */ SCMD_COMPARE,                "compare",                      \
 458 /* 0x3a */ SCMD_COPY_VERIFY,            "copy_verify",                  \
 459 /* 0x3b */ SCMD_WRITE_BUFFER,           "write_buffer",                 \
 460 /* 0x3c */ SCMD_READ_BUFFER,            "read_buffer",                  \
 461 /* 0x3e */ SCMD_READ_LONG,              "read_long",                    \
 462 /* 0x3f */ SCMD_WRITE_LONG,             "write_long",                   \
 463 /* 0x41 */ SCMD_WRITE_SAME_G1,          "write_same(10)",               \
 464 /* 0x42 */ SCMD_UNMAP,                  "unmap",                        \
 465 /* 0x44 */ SCMD_REPORT_DENSITIES |                                      \
 466                 /* SCMD_READ_HEADER (from cdio.h) | */                  \
 467                 0,                      "report_densities/read_header", \
 468 /* 0x46 */ SCMD_GET_CONFIGURATION,      "get_configuration",            \
 469 /* 0x4c */ SCMD_LOG_SELECT_G1,          "log_select",                   \
 470 /* 0x4d */ SCMD_LOG_SENSE_G1,           "log_sense",                    \
 471 /* 0x55 */ SCMD_MODE_SELECT_G1,         "mode_select(10)",              \
 472 /* 0x56 */ SCMD_RESERVE_G1,             "reserve(10)",                  \
 473 /* 0x57 */ SCMD_RELEASE_G1,             "release(10)",                  \
 474 /* 0x5a */ SCMD_MODE_SENSE_G1,          "mode_sense(10)",               \
 475 /* 0x5e */ SCMD_PERSISTENT_RESERVE_IN,  "persistent_reserve_in",        \
 476 /* 0x5f */ SCMD_PERSISTENT_RESERVE_OUT, "persistent_reserve_out",       \
 477 /* 0x80 */ SCMD_WRITE_FILE_MARK_G4,     "write_file_mark(16)",          \
 478 /* 0x81 */ SCMD_READ_REVERSE_G4,        "read_reverse(16)",             \
 479 /* 0x83 */ SCMD_EXTENDED_COPY,          "extended_copy",                \
 480 /* 0x88 */ SCMD_READ_G4,                "read(16)",                     \
 481 /* 0x8a */ SCMD_WRITE_G4,               "write(16)",                    \
 482 /* 0x8c */ SCMD_READ_ATTRIBUTE,         "read_attribute",               \
 483 /* 0x8d */ SCMD_WRITE_ATTRIBUTE,        "write_attribute",              \
 484 /* 0x8e */ SCMD_WRITE_VERIFY_G4,        "write_verify(16)",             \
 485 /* 0x8f */ SCMD_VERIFY_G4,              "verify(16)",                   \
 486 /* 0x91 */ SCMD_SPACE_G4,               "space(16)",                    \
 487 /* 0x92 */ SCMD_LOCATE_G4,              "locate(16)",                   \
 488 /* 0x92 */ SCMD_WRITE_SAME_G4,          "write_same(16)",               \
 489 /* 0x9e */ SCMD_SVC_ACTION_IN_G4,       "service_action_in(16)",        \
 490 /* 0x9f */ SCMD_SVC_ACTION_OUT_G4,      "service_action_out(16)",       \
 491 /* 0xa0 */ SCMD_REPORT_LUNS,            "report_luns",                  \
 492 /* 0xa2 */ SCMD_SECURITY_PROTO_IN,      "security_protocol_in",         \
 493 /* 0xa3 */ SCMD_MAINTENANCE_IN,         "maintenance_in",               \
 494 /* 0xa4 */ SCMD_MAINTENANCE_OUT,        "maintenance_out",              \
 495 /* 0xa8 */ SCMD_READ_G5,                "read(12)",                     \
 496 /* 0xa9 */ SCMD_SVC_ACTION_OUT_G5,      "service_action_out(12)",       \
 497 /* 0xaa */ SCMD_WRITE_G5,               "write(12)",                    \
 498 /* 0xab */ SCMD_SVC_ACTION_IN_G5,       "service_action_in(12)",        \
 499 /* 0xac */ SCMD_GET_PERFORMANCE,        "get_performance",              \
 500 /* 0xAE */ SCMD_WRITE_VERIFY_G5,        "write_verify(12)",             \
 501 /* 0xAF */ SCMD_VERIFY_G5,              "verify(12)",                   \
 502 /* 0xb5 */ SCMD_SECURITY_PROTO_OUT,     "security_protocol_out"         \
 503         /* see cdio.h for additional command-to-string translations */
 504 
 505 /* XXX not a command code, does not belong here */
 506 #define ATAPI_CAPABILITIES      0x2A
 507 
 508 #ifdef  __cplusplus
 509 }
 510 #endif
 511 
 512 /*
 513  * Below are inclusions of files describing various command structures
 514  * of interest.
 515  */
 516 #include <sys/scsi/generic/inquiry.h>
 517 #include <sys/scsi/generic/sense.h>
 518 
 519 /*
 520  * Private Vendor Unique Commands - Each implementation provides this.
 521  */
 522 #include <sys/scsi/impl/commands.h>
 523 
 524 #endif  /* _SYS_SCSI_GENERIC_COMMANDS_H */