1230557Sjimharris/*- 2230557Sjimharris * This file is provided under a dual BSD/GPLv2 license. When using or 3230557Sjimharris * redistributing this file, you may do so under either license. 4230557Sjimharris * 5230557Sjimharris * GPL LICENSE SUMMARY 6230557Sjimharris * 7230557Sjimharris * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved. 8230557Sjimharris * 9230557Sjimharris * This program is free software; you can redistribute it and/or modify 10230557Sjimharris * it under the terms of version 2 of the GNU General Public License as 11230557Sjimharris * published by the Free Software Foundation. 12230557Sjimharris * 13230557Sjimharris * This program is distributed in the hope that it will be useful, but 14230557Sjimharris * WITHOUT ANY WARRANTY; without even the implied warranty of 15230557Sjimharris * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16230557Sjimharris * General Public License for more details. 17230557Sjimharris * 18230557Sjimharris * You should have received a copy of the GNU General Public License 19230557Sjimharris * along with this program; if not, write to the Free Software 20230557Sjimharris * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 21230557Sjimharris * The full GNU General Public License is included in this distribution 22230557Sjimharris * in the file called LICENSE.GPL. 23230557Sjimharris * 24230557Sjimharris * BSD LICENSE 25230557Sjimharris * 26230557Sjimharris * Copyright(c) 2008 - 2010 Intel Corporation. All rights reserved. 27230557Sjimharris * All rights reserved. 28230557Sjimharris * 29230557Sjimharris * Redistribution and use in source and binary forms, with or without 30230557Sjimharris * modification, are permitted provided that the following conditions 31230557Sjimharris * are met: 32230557Sjimharris * 33230557Sjimharris * * Redistributions of source code must retain the above copyright 34230557Sjimharris * notice, this list of conditions and the following disclaimer. 35230557Sjimharris * * Redistributions in binary form must reproduce the above copyright 36230557Sjimharris * notice, this list of conditions and the following disclaimer in 37230557Sjimharris * the documentation and/or other materials provided with the 38230557Sjimharris * distribution. 39230557Sjimharris * 40230557Sjimharris * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 41230557Sjimharris * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 42230557Sjimharris * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 43230557Sjimharris * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 44230557Sjimharris * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 45230557Sjimharris * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 46230557Sjimharris * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 47230557Sjimharris * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 48230557Sjimharris * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 49230557Sjimharris * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 50230557Sjimharris * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 51230557Sjimharris * 52230557Sjimharris * $FreeBSD: releng/11.0/sys/dev/isci/scil/intel_scsi.h 231136 2012-02-07 17:43:58Z jimharris $ 53230557Sjimharris */ 54230557Sjimharris/** 55230557Sjimharris * @file 56230557Sjimharris * @brief This file defines all of the SCSI related constants, enumerations, 57230557Sjimharris * and types. Please note that this file does not necessarily contain 58230557Sjimharris * an exhaustive list of all constants, commands, sub-commands, etc. 59230557Sjimharris */ 60230557Sjimharris 61230557Sjimharris#ifndef _SCSI_H__ 62230557Sjimharris#define _SCSI_H__ 63230557Sjimharris 64230557Sjimharris 65230557Sjimharris//****************************************************************************** 66230557Sjimharris//* C O N S T A N T S A N D M A C R O S 67230557Sjimharris//****************************************************************************** 68230557Sjimharris 69230557Sjimharris/** 70230557Sjimharris * @enum _SCSI_TASK_MGMT_REQUEST_CODES 71230557Sjimharris * 72230557Sjimharris * @brief This enumberation contains the constants to be used for SCSI task 73230557Sjimharris * management request codes. SAM does not specify any particular 74230557Sjimharris * values for these codes so constants used here are the same as 75230557Sjimharris * those specified in SAS. 76230557Sjimharris */ 77230557Sjimharristypedef enum _SCSI_TASK_MGMT_REQUEST_CODES 78230557Sjimharris{ 79230557Sjimharris SCSI_TASK_REQUEST_ABORT_TASK = 0x01, 80230557Sjimharris SCSI_TASK_REQUEST_ABORT_TASK_SET = 0x02, 81230557Sjimharris SCSI_TASK_REQUEST_CLEAR_TASK_SET = 0x04, 82230557Sjimharris SCSI_TASK_REQUEST_LOGICAL_UNIT_RESET = 0x08, 83230557Sjimharris SCSI_TASK_REQUEST_I_T_NEXUS_RESET = 0x10, 84230557Sjimharris SCSI_TASK_REQUEST_CLEAR_ACA = 0x40, 85230557Sjimharris SCSI_TASK_REQUEST_QUERY_TASK = 0x80, 86230557Sjimharris SCSI_TASK_REQUEST_QUERY_TASK_SET = 0x81, 87230557Sjimharris SCSI_TASK_REQUEST_QUERY_UNIT_ATTENTION = 0x82, 88230557Sjimharris 89230557Sjimharris} SCSI_TASK_MGMT_REQUEST_CODES; 90230557Sjimharris 91230557Sjimharris/** 92230557Sjimharris * @enum _SCSI_TASK_MGMT_RESPONSE_CODES 93230557Sjimharris * 94230557Sjimharris * @brief This enumeration contains all of the SCSI task management response 95230557Sjimharris * codes. 96230557Sjimharris */ 97230557Sjimharristypedef enum _SCSI_TASK_MGMT_RESPONSE_CODES 98230557Sjimharris{ 99230557Sjimharris SCSI_TASK_MGMT_FUNC_COMPLETE = 0, 100230557Sjimharris SCSI_INVALID_FRAME = 2, 101230557Sjimharris SCSI_TASK_MGMT_FUNC_NOT_SUPPORTED = 4, 102230557Sjimharris SCSI_TASK_MGMT_FUNC_FAILED = 5, 103230557Sjimharris SCSI_TASK_MGMT_FUNC_SUCCEEDED = 8, 104230557Sjimharris SCSI_INVALID_LUN = 9 105230557Sjimharris} SCSI_TASK_MGMT_RESPONSE_CODES; 106230557Sjimharris 107230557Sjimharris/** 108230557Sjimharris * @enum _SCSI_SENSE_RESPONSE_CODE 109230557Sjimharris * 110230557Sjimharris * @brief this enumeration depicts the types of sense data responses as 111230557Sjimharris * per SPC-3. 112230557Sjimharris */ 113230557Sjimharristypedef enum _SCSI_SENSE_RESPONSE_CODE 114230557Sjimharris{ 115230557Sjimharris SCSI_FIXED_CURRENT_RESPONSE_CODE = 0x70, 116230557Sjimharris SCSI_FIXED_DEFERRED_RESPONSE_CODE = 0x71, 117230557Sjimharris SCSI_DESCRIPTOR_CURRENT_RESPONSE_CODE = 0x72, 118230557Sjimharris SCSI_DESCRIPTOR_DEFERRED_RESPONSE_CODE = 0x73 119230557Sjimharris 120230557Sjimharris} SCSI_SENSE_RESPONSE_CODE; 121230557Sjimharris 122230557Sjimharris/** 123230557Sjimharris * @enum _SCSI_SENSE_DATA_DESCRIPTOR_TYPE 124230557Sjimharris * 125230557Sjimharris * @brief this enumeration depicts the types of sense data descriptor as 126230557Sjimharris * per SPC-4. 127230557Sjimharris */ 128230557Sjimharristypedef enum _SCSI_SENSE_DATA_DESCRIPTOR_TYPE 129230557Sjimharris{ 130230557Sjimharris SCSI_INFORMATION_DESCRIPTOR_TYPE = 0x00, 131230557Sjimharris SCSI_CMD_SPECIFIC_DESCRIPTOR_TYPE = 0x01, 132230557Sjimharris SCSI_KEY_SPECIFIC_DESCRIPTOR_TYPE = 0x02, 133230557Sjimharris SCSI_FIELD_REPLACEABLE_UNIT_DESCRIPTOR_TYPE = 0x03, 134230557Sjimharris SCSI_STREAM_CMD_DESCRIPTOR_TYPE = 0x04, 135230557Sjimharris SCSI_BLOCK_DESCRIPTOR_TYPE = 0x05, 136230557Sjimharris SCSI_OSD_OBJ_IDENTIFICATION_DESCRIPTOR_TYPE = 0x06, 137230557Sjimharris SCSI_OSC_RESPONSE_INTEGRITY_DESCRIPTOR_TYPE = 0x07, 138230557Sjimharris SCSI_OSD_ATTR_IDENTIFICATION_DESCRIPTOR_TYPE = 0x08, 139230557Sjimharris SCSI_ATA_STATUS_RETURN_DESCRIPTOR_TYPE = 0x09, 140230557Sjimharris SCSI_PROGRESS_INDICATION_DESCRIPTOR_TYPE = 0x0a, 141230557Sjimharris SCSI_USER_DATA_SEGEMNT_REF_DESCRIPTOR_TYPE = 0x0b 142230557Sjimharris} SCSI_SENSE_DATA_DESCRIPTOR_TYPE; 143230557Sjimharris 144230557Sjimharris#define SCSI_CMD_SPECIFIC_DESCRIPTOR_ADDITIONAL_LENGTH 0x0a 145230557Sjimharris#define SCSI_CMD_SPECIFIC_DESCRIPTOR_LENGTH 0x0c 146230557Sjimharris#define SCSI_INFORMATION_DESCRIPTOR_ADDITIONAL_LENGTH 0x0a 147230557Sjimharris#define SCSI_INFORMATION_DESCRIPTOR_LENGTH 0x0c 148230557Sjimharris#define SCSI_BLOCK_DESCRIPTOR_ADDITIONAL_LENGTH 0x2 149230557Sjimharris#define SCSI_BLOCK_DESCRIPTOR_LENGTH 0x4 150230557Sjimharris 151230557Sjimharris#define SCSI_SENSE_DATA_DESC_BIT 0x01 152230557Sjimharris 153230557Sjimharris// This constant represents the valid bit located in byte 0 of a FIXED 154230557Sjimharris// format sense data. 155230557Sjimharris#define SCSI_FIXED_SENSE_DATA_VALID_BIT 0x80 156230557Sjimharris 157230557Sjimharris#define SCSI_FIXED_SENSE_DATA_BASE_LENGTH 18 158230557Sjimharris 159230557Sjimharris// This value is used in the DATAPRES field of the SCSI Response IU. 160230557Sjimharris#define SCSI_RESPONSE_DATA_PRES_SENSE_DATA 0x02 161230557Sjimharris 162230557Sjimharris/** 163230557Sjimharris * @name SCSI_SENSE_KEYS 164230557Sjimharris * 165230557Sjimharris * These constants delineate all of the SCSI protocol sense key constants 166230557Sjimharris */ 167230557Sjimharris/*@{*/ 168230557Sjimharris#define SCSI_SENSE_NO_SENSE 0x00 169230557Sjimharris#define SCSI_SENSE_RECOVERED_ERROR 0x01 170230557Sjimharris#define SCSI_SENSE_NOT_READY 0x02 171230557Sjimharris#define SCSI_SENSE_MEDIUM_ERROR 0x03 172230557Sjimharris#define SCSI_SENSE_HARDWARE_ERROR 0x04 173230557Sjimharris#define SCSI_SENSE_ILLEGAL_REQUEST 0x05 174230557Sjimharris#define SCSI_SENSE_UNIT_ATTENTION 0x06 175230557Sjimharris#define SCSI_SENSE_DATA_PROTECT 0x07 176230557Sjimharris#define SCSI_SENSE_BLANK_CHECK 0x08 177230557Sjimharris#define SCSI_SENSE_VENDOR_SPECIFIC 0x09 178230557Sjimharris#define SCSI_SENSE_COPY_ABORTED 0x0A 179230557Sjimharris#define SCSI_SENSE_ABORTED_COMMAND 0x0B 180230557Sjimharris#define SCSI_SENSE_VOLUME_OVERFLOW 0x0D 181230557Sjimharris#define SCSI_SENSE_MISCOMPARE 0x0E 182230557Sjimharris/*@}*/ 183230557Sjimharris 184230557Sjimharris/** 185230557Sjimharris * @name SCSI_ADDITIONAL_SENSE_CODES 186230557Sjimharris * 187230557Sjimharris * These constants delineate all of the SCSI protocol additional sense 188230557Sjimharris * code constants. 189230557Sjimharris */ 190230557Sjimharris/*@{*/ 191230557Sjimharris#define SCSI_ASC_NO_ADDITIONAL_SENSE 0x00 192230557Sjimharris#define SCSI_ASC_INITIALIZING_COMMAND_REQUIRED 0x04 193230557Sjimharris#define SCSI_ASC_LUN_SELF_TEST_IN_PROGRESS 0x04 194230557Sjimharris#define SCSI_ASC_LUN_FORMAT_IN_PROGRESS 0x04 195230557Sjimharris#define SCSI_ASC_LUN_NOT_RESPOND_TO_SELECTION 0x05 196230557Sjimharris#define SCSI_ASC_UNRECOVERED_READ_ERROR 0x11 197230557Sjimharris#define SCSI_ASC_INVALID_COMMAND_OPERATION_CODE 0x20 198230557Sjimharris#define SCSI_ASC_LBA_OUT_OF_RANGE 0x21 199230557Sjimharris#define SCSI_ASC_INVALID_FIELD_IN_CDB 0x24 200230557Sjimharris#define SCSI_ASC_LOGICAL_UNIT_NOT_SUPPORTED 0x25 201230557Sjimharris#define SCSI_ASC_INVALID_FIELD_IN_PARM_LIST 0x26 202230557Sjimharris#define SCSI_ASC_WRITE_PROTECTED 0x27 203230557Sjimharris#define SCSI_ASC_NOT_READY_TO_READY_CHANGE 0x28 204230557Sjimharris#define SCSI_ASC_MEDIUM_FORMAT_CORRUPTED 0x31 205230557Sjimharris#define SCSI_ASC_ENCLOSURE_SERVICES_UNAVAILABLE 0x35 206230557Sjimharris#define SCSI_ASC_SAVING_PARMS_NOT_SUPPORTED 0x39 207230557Sjimharris#define SCSI_ASC_MEDIUM_NOT_PRESENT 0x3A 208230557Sjimharris#define SCSI_ASC_INTERNAL_TARGET_FAILURE 0x44 209230557Sjimharris#define SCSI_ASC_IU_CRC_ERROR_DETECTED 0x47 210230557Sjimharris#define SCSI_ASC_MEDIUM_REMOVAL_REQUEST 0x5A 211230557Sjimharris#define SCSI_ASC_COMMAND_SEQUENCE_ERROR 0x2C 212230557Sjimharris#define SCSI_ASC_MEDIA_LOAD_OR_EJECT_FAILED 0x53 213230557Sjimharris#define SCSI_ASC_HARDWARE_IMPENDING_FAILURE 0x5D 214230557Sjimharris#define SCSI_ASC_POWER_STATE_CHANGE 0x5E 215230557Sjimharris#define SCSI_DIAGNOSTIC_FAILURE_ON_COMPONENT 0x40 216230557Sjimharris#define SCSI_ASC_LOGICAL_UNIT_FAILED 0x4C 217230557Sjimharris#define SCSI_ASC_ATA_DEVICE_FEATURE_NOT_ENABLED 0x67 218230557Sjimharris#define SCSI_ASC_MICROCODE_HAS_CHANGED 0x3F 219230557Sjimharris/*@}*/ 220230557Sjimharris 221230557Sjimharris/** 222230557Sjimharris * @name SCSI_ADDITIONAL_SENSE_CODE_QUALIFIERS 223230557Sjimharris * 224230557Sjimharris * This enumeration contains all of the used SCSI protocol additional 225230557Sjimharris * sense code qualifier constants. 226230557Sjimharris */ 227230557Sjimharris/*@{*/ 228230557Sjimharris#define SCSI_ASCQ_NO_ADDITIONAL_SENSE 0x00 229230557Sjimharris#define SCSI_ASCQ_INVALID_FIELD_IN_CDB 0x00 230230557Sjimharris#define SCSI_ASCQ_INVALID_FIELD_IN_PARM_LIST 0x00 231230557Sjimharris#define SCSI_ASCQ_LUN_NOT_RESPOND_TO_SELECTION 0x00 232230557Sjimharris#define SCSI_ASCQ_INTERNAL_TARGET_FAILURE 0x00 233230557Sjimharris#define SCSI_ASCQ_LBA_OUT_OF_RANGE 0x00 234230557Sjimharris#define SCSI_ASCQ_MEDIUM_NOT_PRESENT 0x00 235230557Sjimharris#define SCSI_ASCQ_NOT_READY_TO_READY_CHANGE 0x00 236230557Sjimharris#define SCSI_ASCQ_WRITE_PROTECTED 0x00 237230557Sjimharris#define SCSI_ASCQ_UNRECOVERED_READ_ERROR 0x00 238230557Sjimharris#define SCSI_ASCQ_SAVING_PARMS_NOT_SUPPORTED 0x00 239230557Sjimharris#define SCSI_ASCQ_INVALID_COMMAND_OPERATION_CODE 0x00 240230557Sjimharris#define SCSI_ASCQ_MEDIUM_REMOVAL_REQUEST 0x01 241230557Sjimharris#define SCSI_ASCQ_INITIALIZING_COMMAND_REQUIRED 0x02 242230557Sjimharris#define SCSI_ASCQ_IU_CRC_ERROR_DETECTED 0x03 243230557Sjimharris#define SCSI_ASCQ_LUN_FORMAT_IN_PROGRESS 0x04 244230557Sjimharris#define SCSI_ASCQ_LUN_SELF_TEST_IN_PROGRESS 0x09 245230557Sjimharris#define SCSI_ASCQ_GENERAL_HARD_DRIVE_FAILURE 0x10 246230557Sjimharris#define SCSI_ASCQ_IDLE_CONDITION_ACTIVATE_BY_COMMAND 0x03 247230557Sjimharris#define SCSI_ASCQ_STANDBY_CONDITION_ACTIVATE_BY_COMMAND 0x04 248230557Sjimharris#define SCSI_ASCQ_POWER_STATE_CHANGE_TO_IDLE 0x42 249230557Sjimharris#define SCSI_ASCQ_POWER_STATE_CHANGE_TO_STANDBY 0x43 250230557Sjimharris#define SCSI_ASCQ_ATA_DEVICE_FEATURE_NOT_ENABLED 0x0B 251230557Sjimharris#define SCSI_ASCQ_UNRECOVERED_READ_ERROR_AUTO_REALLOCATE_FAIL 0x04 252230557Sjimharris#define SCSI_ASCQ_ATA_PASS_THROUGH_INFORMATION_AVAILABLE 0x1D 253230557Sjimharris#define SCSI_ASCQ_MICROCODE_HAS_CHANGED 0x01 254230557Sjimharris/*@}*/ 255230557Sjimharris 256230557Sjimharris/** 257230557Sjimharris * @name SCSI_STATUS_CODES 258230557Sjimharris * 259230557Sjimharris * These constants define all of the used SCSI status values. 260230557Sjimharris */ 261230557Sjimharris/*@{*/ 262230557Sjimharris#define SCSI_STATUS_GOOD 0x00 263230557Sjimharris#define SCSI_STATUS_CHECK_CONDITION 0x02 264230557Sjimharris#define SCSI_STATUS_CONDITION_MET 0x04 265230557Sjimharris#define SCSI_STATUS_BUSY 0x08 266230557Sjimharris#define SCSI_STATUS_TASKFULL 0x28 267230557Sjimharris#define SCSI_STATUS_ACA 0x30 268230557Sjimharris#define SCSI_STATUS_ABORT 0x40 269230557Sjimharris/*@}*/ 270230557Sjimharris 271230557Sjimharris/** 272230557Sjimharris * @name SCSI_OPERATION_CODES 273230557Sjimharris * 274230557Sjimharris * These constants delineate all of the SCSI command/operation codes. 275230557Sjimharris */ 276230557Sjimharris/*@{*/ 277230557Sjimharris#define SCSI_INQUIRY 0x12 278230557Sjimharris#define SCSI_READ_CAPACITY_10 0x25 279230557Sjimharris#define SCSI_SERVICE_ACTION_IN_16 0x9E 280230557Sjimharris#define SCSI_TEST_UNIT_READY 0x00 281230557Sjimharris#define SCSI_START_STOP_UNIT 0x1B 282230557Sjimharris#define SCSI_SYNCHRONIZE_CACHE_10 0x35 283230557Sjimharris#define SCSI_SYNCHRONIZE_CACHE_16 0x91 284230557Sjimharris#define SCSI_REQUEST_SENSE 0x03 285230557Sjimharris#define SCSI_REPORT_LUNS 0xA0 286230557Sjimharris#define SCSI_REASSIGN_BLOCKS 0x07 287230557Sjimharris#define SCSI_READ_6 0x08 288230557Sjimharris#define SCSI_READ_10 0x28 289230557Sjimharris#define SCSI_READ_12 0xA8 290230557Sjimharris#define SCSI_READ_16 0x88 291230557Sjimharris#define SCSI_WRITE_6 0x0A 292230557Sjimharris#define SCSI_WRITE_10 0x2A 293230557Sjimharris#define SCSI_WRITE_12 0xAA 294230557Sjimharris#define SCSI_WRITE_16 0x8A 295230557Sjimharris#define SCSI_VERIFY_10 0x2F 296230557Sjimharris#define SCSI_VERIFY_12 0xAF 297230557Sjimharris#define SCSI_VERIFY_16 0x8F 298230557Sjimharris#define SCSI_SEEK_6 0x01 299230557Sjimharris#define SCSI_SEEK_10 0x02 300230557Sjimharris#define SCSI_WRITE_VERIFY 0x2E 301230557Sjimharris#define SCSI_FORMAT_UNIT 0x04 302230557Sjimharris#define SCSI_READ_BUFFER 0x3C 303230557Sjimharris#define SCSI_WRITE_BUFFER 0x3B 304230557Sjimharris#define SCSI_SEND_DIAGNOSTIC 0x1D 305230557Sjimharris#define SCSI_RECEIVE_DIAGNOSTIC 0x1C 306230557Sjimharris#define SCSI_MODE_SENSE_6 0x1A 307230557Sjimharris#define SCSI_MODE_SENSE_10 0x5A 308230557Sjimharris#define SCSI_MODE_SELECT_6 0x15 309230557Sjimharris#define SCSI_MODE_SELECT_10 0x55 310230557Sjimharris#define SCSI_MAINTENANCE_IN 0xA3 311230557Sjimharris#define SCSI_LOG_SENSE 0x4D 312230557Sjimharris#define SCSI_LOG_SELECT 0x4C 313230557Sjimharris#define SCSI_RESERVE_6 0x16 314230557Sjimharris#define SCSI_RESERVE_10 0x56 315230557Sjimharris#define SCSI_RELEASE_6 0x17 316230557Sjimharris#define SCSI_RELEASE_10 0x57 317230557Sjimharris#define SCSI_ATA_PASSTHRU_12 0xA1 318230557Sjimharris#define SCSI_ATA_PASSTHRU_16 0x85 319230557Sjimharris#define SCSI_WRITE_LONG_10 0x3F 320230557Sjimharris#define SCSI_WRITE_LONG_16 0x9F 321230557Sjimharris#define SCSI_PERSISTENT_RESERVE_IN 0x5E 322230557Sjimharris#define SCSI_PERSISTENT_RESERVE_OUT 0x5F 323230557Sjimharris#define SCSI_SECURITY_PROTOCOL_IN 0xA2 324230557Sjimharris#define SCSI_SECURITY_PROTOCOL_OUT 0xB5 325230557Sjimharris#define SCSI_UNMAP 0x42 326230557Sjimharris#define SCSI_WRITE_AND_VERIFY_10 0x2E 327230557Sjimharris#define SCSI_WRITE_AND_VERIFY_12 0xAE 328230557Sjimharris#define SCSI_WRITE_AND_VERIFY_16 0x8E 329230557Sjimharris/*@}*/ 330230557Sjimharris 331230557Sjimharris/** 332230557Sjimharris * @name SCSI_SERVICE_ACTION_IN_CODES 333230557Sjimharris * 334230557Sjimharris * Service action in operations. 335230557Sjimharris */ 336230557Sjimharris/*@{*/ 337230557Sjimharris#define SCSI_SERVICE_ACTION_IN_CODES_READ_CAPACITY_16 0x10 338230557Sjimharris/*@}*/ 339230557Sjimharris 340230557Sjimharris/** 341230557Sjimharris* 342230557Sjimharris* Service action mask. 343230557Sjimharris */ 344230557Sjimharris/*@{*/ 345230557Sjimharris#define SCSI_SERVICE_ACTION_MASK 0x1f 346230557Sjimharris/*@}*/ 347230557Sjimharris 348230557Sjimharris/** 349230557Sjimharris * @name SCSI_MAINTENANCE_IN_SERVICE_ACTION_CODES 350230557Sjimharris * 351230557Sjimharris * MAINTENANCE IN service action codes. 352230557Sjimharris */ 353230557Sjimharris/*@{*/ 354230557Sjimharris#define SCSI_REPORT_TASK_MGMT 0x0D 355230557Sjimharris#define SCSI_REPORT_OP_CODES 0x0C 356230557Sjimharris/*@}*/ 357230557Sjimharris 358230557Sjimharris/** 359230557Sjimharris * @name SCSI_MODE_PAGE_CONTROLS 360230557Sjimharris * 361230557Sjimharris * These constants delineate all of the used SCSI Mode Page control 362230557Sjimharris * values. 363230557Sjimharris */ 364230557Sjimharris/*@{*/ 365230557Sjimharris#define SCSI_MODE_SENSE_PC_CURRENT 0x0 366230557Sjimharris#define SCSI_MODE_SENSE_PC_CHANGEABLE 0x1 367230557Sjimharris#define SCSI_MODE_SENSE_PC_DEFAULT 0x2 368230557Sjimharris#define SCSI_MODE_SENSE_PC_SAVED 0x3 369230557Sjimharris/*@}*/ 370230557Sjimharris 371230557Sjimharris#define SCSI_MODE_SENSE_PC_SHIFT 0x06 372230557Sjimharris#define SCSI_MODE_SENSE_PAGE_CODE_ENABLE 0x3F 373230557Sjimharris#define SCSI_MODE_SENSE_DBD_ENABLE 0x08 374230557Sjimharris#define SCSI_MODE_SENSE_LLBAA_ENABLE 0x10 375230557Sjimharris 376230557Sjimharris#define SCSI_MODE_PAGE_CONTROL_D_SENSE_DISABLE 0x0 377230557Sjimharris#define SCSI_MODE_PAGE_CONTROL_D_SENSE_ENABLE 0x1 378230557Sjimharris/** 379230557Sjimharris * @name SCSI_MODE_PAGE_CODES 380230557Sjimharris * 381230557Sjimharris * These constants delineate all of the used SCSI Mode Page codes. 382230557Sjimharris */ 383230557Sjimharris/*@{*/ 384230557Sjimharris#define SCSI_MODE_PAGE_READ_WRITE_ERROR 0x01 385230557Sjimharris#define SCSI_MODE_PAGE_DISCONNECT_RECONNECT 0x02 386230557Sjimharris#define SCSI_MODE_PAGE_CACHING 0x08 387230557Sjimharris#define SCSI_MODE_PAGE_CONTROL 0x0A 388230557Sjimharris#define SCSI_MODE_PAGE_PROTOCOL_SPECIFIC_PORT 0x19 389230557Sjimharris#define SCSI_MODE_PAGE_POWER_CONDITION 0x1A 390230557Sjimharris#define SCSI_MODE_PAGE_INFORMATIONAL_EXCP_CONTROL 0x1C 391230557Sjimharris#define SCSI_MODE_PAGE_ALL_PAGES 0x3F 392230557Sjimharris/*@}*/ 393230557Sjimharris 394230557Sjimharris#define SCSI_MODE_SENSE_ALL_SUB_PAGES_CODE 0xFF 395230557Sjimharris#define SCSI_MODE_SENSE_NO_SUB_PAGES_CODE 0x0 396230557Sjimharris#define SCSI_MODE_SENSE_PROTOCOL_PORT_NUM_SUBPAGES 0x1 397230557Sjimharris#define SCSI_MODE_PAGE_CACHE_PAGE_WCE_BIT 0x04 398230557Sjimharris#define SCSI_MODE_PAGE_CACHE_PAGE_DRA_BIT 0x20 399230557Sjimharris#define SCSI_MODE_PAGE_DEXCPT_ENABLE 0x08 400230557Sjimharris#define SCSI_MODE_SENSE_HEADER_FUA_ENABLE 0x10 401230557Sjimharris#define SCSI_MODE_PAGE_POWER_CONDITION_STANDBY 0x1 402230557Sjimharris#define SCSI_MODE_PAGE_POWER_CONDITION_IDLE 0x2 403230557Sjimharris 404230557Sjimharris#define SCSI_MODE_SENSE_6_HEADER_LENGTH 4 405230557Sjimharris#define SCSI_MODE_SENSE_10_HEADER_LENGTH 8 406230557Sjimharris#define SCSI_MODE_SENSE_STD_BLOCK_DESCRIPTOR_LENGTH 8 407230557Sjimharris#define SCSI_MODE_SENSE_LLBA_BLOCK_DESCRIPTOR_LENGTH 16 408230557Sjimharris 409230557Sjimharris#define SCSI_MODE_PAGE_INFORMATIONAL_EXCP_DXCPT_ENABLE 0x08 410230557Sjimharris#define SCSI_MODE_PAGE_19_SAS_ID 0x6 411230557Sjimharris#define SCSI_MODE_PAGE_19_SUB1_PAGE_NUM 0x1 412230557Sjimharris#define SCSI_MODE_PAGE_19_SUB1_PC 0x59 413230557Sjimharris 414230557Sjimharris#define SCSI_MODE_HEADER_MEDIUM_TYPE_SBC 0x00 415230557Sjimharris 416230557Sjimharris//Mode Select constrains related masks value 417230557Sjimharris#define SCSI_MODE_SELECT_PF_BIT 0x1 418230557Sjimharris#define SCSI_MODE_SELECT_PF_MASK 0x10 419230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_MRIE_BYTE 0x6 420230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_MRIE_MASK 0x0F 421230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_SPF_MASK 0x40 422230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_01_AWRE_MASK 0x80 423230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_01_ARRE_MASK 0x40 424230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_01_RC_ERBITS_MASK 0x1F 425230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_08_FSW_LBCSS_NVDIS 0xC1 426230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_1C_PERF_TEST 0x84 427230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_0A_TST_TMF_RLEC 0xF1 428230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_0A_MODIFIER 0xE0 429230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_0A_UA_SWP 0x38 430230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_0A_TAS_AUTO 0x47 431230557Sjimharris#define SCSI_MODE_SELECT_MODE_PAGE_D_SENSE 0x4 432230557Sjimharris 433230557Sjimharris#define SCSI_CONTROL_BYTE_NACA_BIT_ENABLE 0x04 434230557Sjimharris#define SCSI_MOVE_FUA_BIT_ENABLE 0x08 435230557Sjimharris#define SCSI_READ_CAPACITY_PMI_BIT_ENABLE 0x01 436230557Sjimharris#define SCSI_READ_CAPACITY_10_DATA_LENGTH 8 437230557Sjimharris#define SCSI_READ_CAPACITY_16_DATA_LENGTH 32 438230557Sjimharris 439230557Sjimharris// Inquiry constants 440230557Sjimharris#define SCSI_INQUIRY_EVPD_ENABLE 0x01 441230557Sjimharris#define SCSI_INQUIRY_PAGE_CODE_OFFSET 0x02 442230557Sjimharris#define SCSI_INQUIRY_SUPPORTED_PAGES_PAGE 0x00 443230557Sjimharris#define SCSI_INQUIRY_UNIT_SERIAL_NUM_PAGE 0x80 444230557Sjimharris#define SCSI_INQUIRY_DEVICE_ID_PAGE 0x83 445230557Sjimharris#define SCSI_INQUIRY_ATA_INFORMATION_PAGE 0x89 446230557Sjimharris#define SCSI_INQUIRY_BLOCK_DEVICE_PAGE 0xB1 447230557Sjimharris#define SCSI_INQUIRY_BLOCK_DEVICE_LENGTH 0x3C 448230557Sjimharris#define SCSI_INQUIRY_STANDARD_ALLOCATION_LENGTH 0x24 //36 449230557Sjimharris 450230557Sjimharris#define SCSI_REQUEST_SENSE_ALLOCATION_LENGTH 0xFC //252 451230557Sjimharris 452230557Sjimharris/** Defines the log page codes that are use in gathing Smart data 453230557Sjimharris*/ 454230557Sjimharris#define SCSI_LOG_PAGE_SUPPORTED_PAGES 0x00 455230557Sjimharris#define SCSI_LOG_PAGE_INFORMATION_EXCEPTION 0x2F 456230557Sjimharris#define SCSI_LOG_PAGE_SELF_TEST 0x10 457230557Sjimharris 458230557Sjimharris/** 459230557Sjimharris * @name SCSI_INQUIRY_VPD 460230557Sjimharris * 461230557Sjimharris * The following are constants used with vital product data inquiry pages. 462230557Sjimharris * Values are already shifted into the proper nibble location. 463230557Sjimharris */ 464230557Sjimharris/*@{*/ 465230557Sjimharris#define SCSI_PIV_ENABLE 0x80 466230557Sjimharris#define SCSI_LUN_ASSOCIATION 0x00 467230557Sjimharris#define SCSI_TARGET_PORT_ASSOCIATION 0x10 468230557Sjimharris 469230557Sjimharris#define SCSI_VEN_UNIQUE_IDENTIFIER_TYPE 0x00 470230557Sjimharris#define SCSI_NAA_IDENTIFIER_TYPE 0x03 471230557Sjimharris 472230557Sjimharris#define SCSI_T10_IDENTIFIER_TYPE 0x01 473230557Sjimharris#define SCSI_BINARY_CODE_SET 0x01 474230557Sjimharris#define SCSI_ASCII_CODE_SET 0x02 475230557Sjimharris#define SCSI_FC_PROTOCOL_IDENTIFIER 0x00 476230557Sjimharris#define SCSI_SAS_PROTOCOL_IDENTIFIER 0x60 477230557Sjimharris/*@}*/ 478230557Sjimharris 479230557Sjimharris#define SCSI_VERIFY_BYTCHK_ENABLED 0x02 480230557Sjimharris 481230557Sjimharris#define SCSI_SYNCHRONIZE_CACHE_IMMED_ENABLED 0x02 482230557Sjimharris/** 483230557Sjimharris * @name SCSI_START_STOP_UNIT_POWER_CONDITION_CODES 484230557Sjimharris * 485230557Sjimharris * The following are SCSI Start Stop Unit command Power Condition codes. 486230557Sjimharris */ 487230557Sjimharris/*@{*/ 488230557Sjimharris#define SCSI_START_STOP_UNIT_POWER_CONDITION_START_VALID 0x0 489230557Sjimharris#define SCSI_START_STOP_UNIT_POWER_CONDITION_ACTIVE 0x1 490230557Sjimharris#define SCSI_START_STOP_UNIT_POWER_CONDITION_IDLE 0x2 491230557Sjimharris#define SCSI_START_STOP_UNIT_POWER_CONDITION_STANDBY 0x3 492230557Sjimharris#define SCSI_START_STOP_UNIT_POWER_CONDITION_LU_CONTROL 0x7 493230557Sjimharris#define SCSI_START_STOP_UNIT_POWER_CONDITION_FORCE_S_CONTROL 0xB 494230557Sjimharris/*@}*/ 495230557Sjimharris 496230557Sjimharris#define SCSI_START_STOP_UNIT_IMMED_MASK 0x1 497230557Sjimharris#define SCSI_START_STOP_UNIT_IMMED_SHIFT 0 498230557Sjimharris 499230557Sjimharris#define SCSI_START_STOP_UNIT_START_BIT_MASK 0x1 500230557Sjimharris#define SCSI_START_STOP_UNIT_START_BIT_SHIFT 0 501230557Sjimharris 502230557Sjimharris#define SCSI_START_STOP_UNIT_LOEJ_BIT_MASK 0x2 503230557Sjimharris#define SCSI_START_STOP_UNIT_LOEJ_BIT_SHIFT 1 504230557Sjimharris 505230557Sjimharris#define SCSI_START_STOP_UNIT_NO_FLUSH_MASK 0x4 506230557Sjimharris#define SCSI_START_STOP_UNIT_NO_FLUSH_SHIFT 2 507230557Sjimharris 508230557Sjimharris#define SCSI_START_STOP_UNIT_POWER_CONDITION_MODIFIER_MASK 0xF 509230557Sjimharris#define SCSI_START_STOP_UNIT_POWER_CONDITION_MODIFIER_SHIFT 0 510230557Sjimharris 511230557Sjimharris#define SCSI_START_STOP_UNIT_POWER_CONDITION_MASK 0xF0 512230557Sjimharris#define SCSI_START_STOP_UNIT_POWER_CONDITION_SHIFT 4 513230557Sjimharris 514230557Sjimharris#define SCSI_LOG_SENSE_PC_FIELD_MASK 0xC0 515230557Sjimharris#define SCSI_LOG_SENSE_PC_FIELD_SHIFT 6 516230557Sjimharris 517230557Sjimharris#define SCSI_LOG_SENSE_PAGE_CODE_FIELD_MASK 0x3F 518230557Sjimharris#define SCSI_LOG_SENSE_PAGE_CODE_FIELD_SHIFT 0 519230557Sjimharris 520230557Sjimharris/** 521230557Sjimharris * @name MRIE - Method of reporting informational exceptions codes 522230557Sjimharris */ 523230557Sjimharris/*@{*/ 524230557Sjimharris#define NO_REPORTING_INFO_EXCEPTION_CONDITION 0x0 525230557Sjimharris#define ASYNCHRONOUS_EVENT_REPORTING 0x1 526230557Sjimharris#define ESTABLISH_UNIT_ATTENTION_CONDITION 0x2 527230557Sjimharris#define CONDITIONALLY_GENERATE_RECOVERED_ERROR 0x3 528230557Sjimharris#define UNCONDITIONALLY_GENERATE_RECOVERED_ERROR 0x4 529230557Sjimharris#define GENERATE_NO_SENSE 0x5 530230557Sjimharris#define REPORT_INFO_EXCEPTION_CONDITION_ON_REQUEST 0x6 531230557Sjimharris/*@}*/ 532230557Sjimharris 533230557Sjimharris#define SCSI_INFORMATION_EXCEPTION_DEXCPT_BIT 0x08 534230557Sjimharris 535230557Sjimharris//Reassign Blocks masks 536230557Sjimharris#define SCSI_REASSIGN_BLOCKS_LONGLBA_BIT 0x02 537230557Sjimharris#define SCSI_REASSIGN_BLOCKS_LONGLIST_BIT 0x01 538230557Sjimharris 539230557Sjimharris#endif // _SCSI_H_ 540230557Sjimharris 541