1f11c7f63SJim Harris /*- 2*718cf2ccSPedro F. Giffuni * SPDX-License-Identifier: BSD-2-Clause OR GPL-2.0 3*718cf2ccSPedro F. Giffuni * 4f11c7f63SJim Harris * This file is provided under a dual BSD/GPLv2 license. When using or 5f11c7f63SJim Harris * redistributing this file, you may do so under either license. 6f11c7f63SJim Harris * 7f11c7f63SJim Harris * GPL LICENSE SUMMARY 8f11c7f63SJim Harris * 9f11c7f63SJim Harris * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved. 10f11c7f63SJim Harris * 11f11c7f63SJim Harris * This program is free software; you can redistribute it and/or modify 12f11c7f63SJim Harris * it under the terms of version 2 of the GNU General Public License as 13f11c7f63SJim Harris * published by the Free Software Foundation. 14f11c7f63SJim Harris * 15f11c7f63SJim Harris * This program is distributed in the hope that it will be useful, but 16f11c7f63SJim Harris * WITHOUT ANY WARRANTY; without even the implied warranty of 17f11c7f63SJim Harris * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18f11c7f63SJim Harris * General Public License for more details. 19f11c7f63SJim Harris * 20f11c7f63SJim Harris * You should have received a copy of the GNU General Public License 21f11c7f63SJim Harris * along with this program; if not, write to the Free Software 22f11c7f63SJim Harris * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 23f11c7f63SJim Harris * The full GNU General Public License is included in this distribution 24f11c7f63SJim Harris * in the file called LICENSE.GPL. 25f11c7f63SJim Harris * 26f11c7f63SJim Harris * BSD LICENSE 27f11c7f63SJim Harris * 28f11c7f63SJim Harris * Copyright(c) 2008 - 2010 Intel Corporation. All rights reserved. 29f11c7f63SJim Harris * All rights reserved. 30f11c7f63SJim Harris * 31f11c7f63SJim Harris * Redistribution and use in source and binary forms, with or without 32f11c7f63SJim Harris * modification, are permitted provided that the following conditions 33f11c7f63SJim Harris * are met: 34f11c7f63SJim Harris * 35f11c7f63SJim Harris * * Redistributions of source code must retain the above copyright 36f11c7f63SJim Harris * notice, this list of conditions and the following disclaimer. 37f11c7f63SJim Harris * * Redistributions in binary form must reproduce the above copyright 38f11c7f63SJim Harris * notice, this list of conditions and the following disclaimer in 39f11c7f63SJim Harris * the documentation and/or other materials provided with the 40f11c7f63SJim Harris * distribution. 41f11c7f63SJim Harris * 42f11c7f63SJim Harris * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 43f11c7f63SJim Harris * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 44f11c7f63SJim Harris * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 45f11c7f63SJim Harris * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 46f11c7f63SJim Harris * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 47f11c7f63SJim Harris * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 48f11c7f63SJim Harris * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 49f11c7f63SJim Harris * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 50f11c7f63SJim Harris * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 51f11c7f63SJim Harris * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 52f11c7f63SJim Harris * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 53f11c7f63SJim Harris */ 54f11c7f63SJim Harris /** 55f11c7f63SJim Harris * @file 56f11c7f63SJim Harris * @brief This file defines all of the SCSI related constants, enumerations, 57f11c7f63SJim Harris * and types. Please note that this file does not necessarily contain 58f11c7f63SJim Harris * an exhaustive list of all constants, commands, sub-commands, etc. 59f11c7f63SJim Harris */ 60f11c7f63SJim Harris 61f11c7f63SJim Harris #ifndef _SCSI_H__ 62f11c7f63SJim Harris #define _SCSI_H__ 63f11c7f63SJim Harris 64f11c7f63SJim Harris 65f11c7f63SJim Harris //****************************************************************************** 66f11c7f63SJim Harris //* C O N S T A N T S A N D M A C R O S 67f11c7f63SJim Harris //****************************************************************************** 68f11c7f63SJim Harris 69f11c7f63SJim Harris /** 70f11c7f63SJim Harris * @enum _SCSI_TASK_MGMT_REQUEST_CODES 71f11c7f63SJim Harris * 72f11c7f63SJim Harris * @brief This enumberation contains the constants to be used for SCSI task 73f11c7f63SJim Harris * management request codes. SAM does not specify any particular 74f11c7f63SJim Harris * values for these codes so constants used here are the same as 75f11c7f63SJim Harris * those specified in SAS. 76f11c7f63SJim Harris */ 77f11c7f63SJim Harris typedef enum _SCSI_TASK_MGMT_REQUEST_CODES 78f11c7f63SJim Harris { 79f11c7f63SJim Harris SCSI_TASK_REQUEST_ABORT_TASK = 0x01, 80f11c7f63SJim Harris SCSI_TASK_REQUEST_ABORT_TASK_SET = 0x02, 81f11c7f63SJim Harris SCSI_TASK_REQUEST_CLEAR_TASK_SET = 0x04, 82f11c7f63SJim Harris SCSI_TASK_REQUEST_LOGICAL_UNIT_RESET = 0x08, 83f11c7f63SJim Harris SCSI_TASK_REQUEST_I_T_NEXUS_RESET = 0x10, 84f11c7f63SJim Harris SCSI_TASK_REQUEST_CLEAR_ACA = 0x40, 85f11c7f63SJim Harris SCSI_TASK_REQUEST_QUERY_TASK = 0x80, 86f11c7f63SJim Harris SCSI_TASK_REQUEST_QUERY_TASK_SET = 0x81, 87f11c7f63SJim Harris SCSI_TASK_REQUEST_QUERY_UNIT_ATTENTION = 0x82, 88f11c7f63SJim Harris 89f11c7f63SJim Harris } SCSI_TASK_MGMT_REQUEST_CODES; 90f11c7f63SJim Harris 91f11c7f63SJim Harris /** 92f11c7f63SJim Harris * @enum _SCSI_TASK_MGMT_RESPONSE_CODES 93f11c7f63SJim Harris * 94f11c7f63SJim Harris * @brief This enumeration contains all of the SCSI task management response 95f11c7f63SJim Harris * codes. 96f11c7f63SJim Harris */ 97f11c7f63SJim Harris typedef enum _SCSI_TASK_MGMT_RESPONSE_CODES 98f11c7f63SJim Harris { 99f11c7f63SJim Harris SCSI_TASK_MGMT_FUNC_COMPLETE = 0, 100f11c7f63SJim Harris SCSI_INVALID_FRAME = 2, 101f11c7f63SJim Harris SCSI_TASK_MGMT_FUNC_NOT_SUPPORTED = 4, 102f11c7f63SJim Harris SCSI_TASK_MGMT_FUNC_FAILED = 5, 103f11c7f63SJim Harris SCSI_TASK_MGMT_FUNC_SUCCEEDED = 8, 104f11c7f63SJim Harris SCSI_INVALID_LUN = 9 105f11c7f63SJim Harris } SCSI_TASK_MGMT_RESPONSE_CODES; 106f11c7f63SJim Harris 107f11c7f63SJim Harris /** 108f11c7f63SJim Harris * @enum _SCSI_SENSE_RESPONSE_CODE 109f11c7f63SJim Harris * 110f11c7f63SJim Harris * @brief this enumeration depicts the types of sense data responses as 111f11c7f63SJim Harris * per SPC-3. 112f11c7f63SJim Harris */ 113f11c7f63SJim Harris typedef enum _SCSI_SENSE_RESPONSE_CODE 114f11c7f63SJim Harris { 115f11c7f63SJim Harris SCSI_FIXED_CURRENT_RESPONSE_CODE = 0x70, 116f11c7f63SJim Harris SCSI_FIXED_DEFERRED_RESPONSE_CODE = 0x71, 117f11c7f63SJim Harris SCSI_DESCRIPTOR_CURRENT_RESPONSE_CODE = 0x72, 118f11c7f63SJim Harris SCSI_DESCRIPTOR_DEFERRED_RESPONSE_CODE = 0x73 119f11c7f63SJim Harris 120f11c7f63SJim Harris } SCSI_SENSE_RESPONSE_CODE; 121f11c7f63SJim Harris 122f11c7f63SJim Harris /** 123f11c7f63SJim Harris * @enum _SCSI_SENSE_DATA_DESCRIPTOR_TYPE 124f11c7f63SJim Harris * 125f11c7f63SJim Harris * @brief this enumeration depicts the types of sense data descriptor as 126f11c7f63SJim Harris * per SPC-4. 127f11c7f63SJim Harris */ 128f11c7f63SJim Harris typedef enum _SCSI_SENSE_DATA_DESCRIPTOR_TYPE 129f11c7f63SJim Harris { 130f11c7f63SJim Harris SCSI_INFORMATION_DESCRIPTOR_TYPE = 0x00, 131f11c7f63SJim Harris SCSI_CMD_SPECIFIC_DESCRIPTOR_TYPE = 0x01, 132f11c7f63SJim Harris SCSI_KEY_SPECIFIC_DESCRIPTOR_TYPE = 0x02, 133f11c7f63SJim Harris SCSI_FIELD_REPLACEABLE_UNIT_DESCRIPTOR_TYPE = 0x03, 134f11c7f63SJim Harris SCSI_STREAM_CMD_DESCRIPTOR_TYPE = 0x04, 135f11c7f63SJim Harris SCSI_BLOCK_DESCRIPTOR_TYPE = 0x05, 136f11c7f63SJim Harris SCSI_OSD_OBJ_IDENTIFICATION_DESCRIPTOR_TYPE = 0x06, 137f11c7f63SJim Harris SCSI_OSC_RESPONSE_INTEGRITY_DESCRIPTOR_TYPE = 0x07, 138f11c7f63SJim Harris SCSI_OSD_ATTR_IDENTIFICATION_DESCRIPTOR_TYPE = 0x08, 139f11c7f63SJim Harris SCSI_ATA_STATUS_RETURN_DESCRIPTOR_TYPE = 0x09, 140f11c7f63SJim Harris SCSI_PROGRESS_INDICATION_DESCRIPTOR_TYPE = 0x0a, 141f11c7f63SJim Harris SCSI_USER_DATA_SEGEMNT_REF_DESCRIPTOR_TYPE = 0x0b 142f11c7f63SJim Harris } SCSI_SENSE_DATA_DESCRIPTOR_TYPE; 143f11c7f63SJim Harris 144f11c7f63SJim Harris #define SCSI_CMD_SPECIFIC_DESCRIPTOR_ADDITIONAL_LENGTH 0x0a 145f11c7f63SJim Harris #define SCSI_CMD_SPECIFIC_DESCRIPTOR_LENGTH 0x0c 146f11c7f63SJim Harris #define SCSI_INFORMATION_DESCRIPTOR_ADDITIONAL_LENGTH 0x0a 147f11c7f63SJim Harris #define SCSI_INFORMATION_DESCRIPTOR_LENGTH 0x0c 148f11c7f63SJim Harris #define SCSI_BLOCK_DESCRIPTOR_ADDITIONAL_LENGTH 0x2 149f11c7f63SJim Harris #define SCSI_BLOCK_DESCRIPTOR_LENGTH 0x4 150f11c7f63SJim Harris 151f11c7f63SJim Harris #define SCSI_SENSE_DATA_DESC_BIT 0x01 152f11c7f63SJim Harris 153f11c7f63SJim Harris // This constant represents the valid bit located in byte 0 of a FIXED 154f11c7f63SJim Harris // format sense data. 155f11c7f63SJim Harris #define SCSI_FIXED_SENSE_DATA_VALID_BIT 0x80 156f11c7f63SJim Harris 157f11c7f63SJim Harris #define SCSI_FIXED_SENSE_DATA_BASE_LENGTH 18 158f11c7f63SJim Harris 159f11c7f63SJim Harris // This value is used in the DATAPRES field of the SCSI Response IU. 160f11c7f63SJim Harris #define SCSI_RESPONSE_DATA_PRES_SENSE_DATA 0x02 161f11c7f63SJim Harris 162f11c7f63SJim Harris /** 163f11c7f63SJim Harris * @name SCSI_SENSE_KEYS 164f11c7f63SJim Harris * 165f11c7f63SJim Harris * These constants delineate all of the SCSI protocol sense key constants 166f11c7f63SJim Harris */ 167f11c7f63SJim Harris /*@{*/ 168f11c7f63SJim Harris #define SCSI_SENSE_NO_SENSE 0x00 169f11c7f63SJim Harris #define SCSI_SENSE_RECOVERED_ERROR 0x01 170f11c7f63SJim Harris #define SCSI_SENSE_NOT_READY 0x02 171f11c7f63SJim Harris #define SCSI_SENSE_MEDIUM_ERROR 0x03 172f11c7f63SJim Harris #define SCSI_SENSE_HARDWARE_ERROR 0x04 173f11c7f63SJim Harris #define SCSI_SENSE_ILLEGAL_REQUEST 0x05 174f11c7f63SJim Harris #define SCSI_SENSE_UNIT_ATTENTION 0x06 175f11c7f63SJim Harris #define SCSI_SENSE_DATA_PROTECT 0x07 176f11c7f63SJim Harris #define SCSI_SENSE_BLANK_CHECK 0x08 177f11c7f63SJim Harris #define SCSI_SENSE_VENDOR_SPECIFIC 0x09 178f11c7f63SJim Harris #define SCSI_SENSE_COPY_ABORTED 0x0A 179f11c7f63SJim Harris #define SCSI_SENSE_ABORTED_COMMAND 0x0B 180f11c7f63SJim Harris #define SCSI_SENSE_VOLUME_OVERFLOW 0x0D 181f11c7f63SJim Harris #define SCSI_SENSE_MISCOMPARE 0x0E 182f11c7f63SJim Harris /*@}*/ 183f11c7f63SJim Harris 184f11c7f63SJim Harris /** 185f11c7f63SJim Harris * @name SCSI_ADDITIONAL_SENSE_CODES 186f11c7f63SJim Harris * 187f11c7f63SJim Harris * These constants delineate all of the SCSI protocol additional sense 188f11c7f63SJim Harris * code constants. 189f11c7f63SJim Harris */ 190f11c7f63SJim Harris /*@{*/ 191f11c7f63SJim Harris #define SCSI_ASC_NO_ADDITIONAL_SENSE 0x00 192f11c7f63SJim Harris #define SCSI_ASC_INITIALIZING_COMMAND_REQUIRED 0x04 193f11c7f63SJim Harris #define SCSI_ASC_LUN_SELF_TEST_IN_PROGRESS 0x04 194f11c7f63SJim Harris #define SCSI_ASC_LUN_FORMAT_IN_PROGRESS 0x04 195f11c7f63SJim Harris #define SCSI_ASC_LUN_NOT_RESPOND_TO_SELECTION 0x05 196f11c7f63SJim Harris #define SCSI_ASC_UNRECOVERED_READ_ERROR 0x11 197f11c7f63SJim Harris #define SCSI_ASC_INVALID_COMMAND_OPERATION_CODE 0x20 198f11c7f63SJim Harris #define SCSI_ASC_LBA_OUT_OF_RANGE 0x21 199f11c7f63SJim Harris #define SCSI_ASC_INVALID_FIELD_IN_CDB 0x24 200f11c7f63SJim Harris #define SCSI_ASC_LOGICAL_UNIT_NOT_SUPPORTED 0x25 201f11c7f63SJim Harris #define SCSI_ASC_INVALID_FIELD_IN_PARM_LIST 0x26 202f11c7f63SJim Harris #define SCSI_ASC_WRITE_PROTECTED 0x27 203f11c7f63SJim Harris #define SCSI_ASC_NOT_READY_TO_READY_CHANGE 0x28 204f11c7f63SJim Harris #define SCSI_ASC_MEDIUM_FORMAT_CORRUPTED 0x31 205f11c7f63SJim Harris #define SCSI_ASC_ENCLOSURE_SERVICES_UNAVAILABLE 0x35 206f11c7f63SJim Harris #define SCSI_ASC_SAVING_PARMS_NOT_SUPPORTED 0x39 207f11c7f63SJim Harris #define SCSI_ASC_MEDIUM_NOT_PRESENT 0x3A 208f11c7f63SJim Harris #define SCSI_ASC_INTERNAL_TARGET_FAILURE 0x44 209f11c7f63SJim Harris #define SCSI_ASC_IU_CRC_ERROR_DETECTED 0x47 210f11c7f63SJim Harris #define SCSI_ASC_MEDIUM_REMOVAL_REQUEST 0x5A 211f11c7f63SJim Harris #define SCSI_ASC_COMMAND_SEQUENCE_ERROR 0x2C 212f11c7f63SJim Harris #define SCSI_ASC_MEDIA_LOAD_OR_EJECT_FAILED 0x53 213f11c7f63SJim Harris #define SCSI_ASC_HARDWARE_IMPENDING_FAILURE 0x5D 214f11c7f63SJim Harris #define SCSI_ASC_POWER_STATE_CHANGE 0x5E 215f11c7f63SJim Harris #define SCSI_DIAGNOSTIC_FAILURE_ON_COMPONENT 0x40 216f11c7f63SJim Harris #define SCSI_ASC_LOGICAL_UNIT_FAILED 0x4C 217f11c7f63SJim Harris #define SCSI_ASC_ATA_DEVICE_FEATURE_NOT_ENABLED 0x67 218f11c7f63SJim Harris #define SCSI_ASC_MICROCODE_HAS_CHANGED 0x3F 219f11c7f63SJim Harris /*@}*/ 220f11c7f63SJim Harris 221f11c7f63SJim Harris /** 222f11c7f63SJim Harris * @name SCSI_ADDITIONAL_SENSE_CODE_QUALIFIERS 223f11c7f63SJim Harris * 224f11c7f63SJim Harris * This enumeration contains all of the used SCSI protocol additional 225f11c7f63SJim Harris * sense code qualifier constants. 226f11c7f63SJim Harris */ 227f11c7f63SJim Harris /*@{*/ 228f11c7f63SJim Harris #define SCSI_ASCQ_NO_ADDITIONAL_SENSE 0x00 229f11c7f63SJim Harris #define SCSI_ASCQ_INVALID_FIELD_IN_CDB 0x00 230f11c7f63SJim Harris #define SCSI_ASCQ_INVALID_FIELD_IN_PARM_LIST 0x00 231f11c7f63SJim Harris #define SCSI_ASCQ_LUN_NOT_RESPOND_TO_SELECTION 0x00 232f11c7f63SJim Harris #define SCSI_ASCQ_INTERNAL_TARGET_FAILURE 0x00 233f11c7f63SJim Harris #define SCSI_ASCQ_LBA_OUT_OF_RANGE 0x00 234f11c7f63SJim Harris #define SCSI_ASCQ_MEDIUM_NOT_PRESENT 0x00 235f11c7f63SJim Harris #define SCSI_ASCQ_NOT_READY_TO_READY_CHANGE 0x00 236f11c7f63SJim Harris #define SCSI_ASCQ_WRITE_PROTECTED 0x00 237f11c7f63SJim Harris #define SCSI_ASCQ_UNRECOVERED_READ_ERROR 0x00 238f11c7f63SJim Harris #define SCSI_ASCQ_SAVING_PARMS_NOT_SUPPORTED 0x00 239f11c7f63SJim Harris #define SCSI_ASCQ_INVALID_COMMAND_OPERATION_CODE 0x00 240f11c7f63SJim Harris #define SCSI_ASCQ_MEDIUM_REMOVAL_REQUEST 0x01 241f11c7f63SJim Harris #define SCSI_ASCQ_INITIALIZING_COMMAND_REQUIRED 0x02 242f11c7f63SJim Harris #define SCSI_ASCQ_IU_CRC_ERROR_DETECTED 0x03 243f11c7f63SJim Harris #define SCSI_ASCQ_LUN_FORMAT_IN_PROGRESS 0x04 244f11c7f63SJim Harris #define SCSI_ASCQ_LUN_SELF_TEST_IN_PROGRESS 0x09 245f11c7f63SJim Harris #define SCSI_ASCQ_GENERAL_HARD_DRIVE_FAILURE 0x10 246f11c7f63SJim Harris #define SCSI_ASCQ_IDLE_CONDITION_ACTIVATE_BY_COMMAND 0x03 247f11c7f63SJim Harris #define SCSI_ASCQ_STANDBY_CONDITION_ACTIVATE_BY_COMMAND 0x04 248f11c7f63SJim Harris #define SCSI_ASCQ_POWER_STATE_CHANGE_TO_IDLE 0x42 249f11c7f63SJim Harris #define SCSI_ASCQ_POWER_STATE_CHANGE_TO_STANDBY 0x43 250f11c7f63SJim Harris #define SCSI_ASCQ_ATA_DEVICE_FEATURE_NOT_ENABLED 0x0B 251f11c7f63SJim Harris #define SCSI_ASCQ_UNRECOVERED_READ_ERROR_AUTO_REALLOCATE_FAIL 0x04 252f11c7f63SJim Harris #define SCSI_ASCQ_ATA_PASS_THROUGH_INFORMATION_AVAILABLE 0x1D 253f11c7f63SJim Harris #define SCSI_ASCQ_MICROCODE_HAS_CHANGED 0x01 254f11c7f63SJim Harris /*@}*/ 255f11c7f63SJim Harris 256f11c7f63SJim Harris /** 257f11c7f63SJim Harris * @name SCSI_STATUS_CODES 258f11c7f63SJim Harris * 259f11c7f63SJim Harris * These constants define all of the used SCSI status values. 260f11c7f63SJim Harris */ 261f11c7f63SJim Harris /*@{*/ 262f11c7f63SJim Harris #define SCSI_STATUS_GOOD 0x00 263f11c7f63SJim Harris #define SCSI_STATUS_CHECK_CONDITION 0x02 264f11c7f63SJim Harris #define SCSI_STATUS_CONDITION_MET 0x04 265f11c7f63SJim Harris #define SCSI_STATUS_BUSY 0x08 266f11c7f63SJim Harris #define SCSI_STATUS_TASKFULL 0x28 267f11c7f63SJim Harris #define SCSI_STATUS_ACA 0x30 268f11c7f63SJim Harris #define SCSI_STATUS_ABORT 0x40 269f11c7f63SJim Harris /*@}*/ 270f11c7f63SJim Harris 271f11c7f63SJim Harris /** 272f11c7f63SJim Harris * @name SCSI_OPERATION_CODES 273f11c7f63SJim Harris * 274f11c7f63SJim Harris * These constants delineate all of the SCSI command/operation codes. 275f11c7f63SJim Harris */ 276f11c7f63SJim Harris /*@{*/ 277f11c7f63SJim Harris #define SCSI_INQUIRY 0x12 278f11c7f63SJim Harris #define SCSI_READ_CAPACITY_10 0x25 279f11c7f63SJim Harris #define SCSI_SERVICE_ACTION_IN_16 0x9E 280f11c7f63SJim Harris #define SCSI_TEST_UNIT_READY 0x00 281f11c7f63SJim Harris #define SCSI_START_STOP_UNIT 0x1B 282f11c7f63SJim Harris #define SCSI_SYNCHRONIZE_CACHE_10 0x35 283f11c7f63SJim Harris #define SCSI_SYNCHRONIZE_CACHE_16 0x91 284f11c7f63SJim Harris #define SCSI_REQUEST_SENSE 0x03 285f11c7f63SJim Harris #define SCSI_REPORT_LUNS 0xA0 286f11c7f63SJim Harris #define SCSI_REASSIGN_BLOCKS 0x07 287f11c7f63SJim Harris #define SCSI_READ_6 0x08 288f11c7f63SJim Harris #define SCSI_READ_10 0x28 289f11c7f63SJim Harris #define SCSI_READ_12 0xA8 290f11c7f63SJim Harris #define SCSI_READ_16 0x88 291f11c7f63SJim Harris #define SCSI_WRITE_6 0x0A 292f11c7f63SJim Harris #define SCSI_WRITE_10 0x2A 293f11c7f63SJim Harris #define SCSI_WRITE_12 0xAA 294f11c7f63SJim Harris #define SCSI_WRITE_16 0x8A 295f11c7f63SJim Harris #define SCSI_VERIFY_10 0x2F 296f11c7f63SJim Harris #define SCSI_VERIFY_12 0xAF 297f11c7f63SJim Harris #define SCSI_VERIFY_16 0x8F 298f11c7f63SJim Harris #define SCSI_SEEK_6 0x01 299f11c7f63SJim Harris #define SCSI_SEEK_10 0x02 300f11c7f63SJim Harris #define SCSI_WRITE_VERIFY 0x2E 301f11c7f63SJim Harris #define SCSI_FORMAT_UNIT 0x04 302f11c7f63SJim Harris #define SCSI_READ_BUFFER 0x3C 303f11c7f63SJim Harris #define SCSI_WRITE_BUFFER 0x3B 304f11c7f63SJim Harris #define SCSI_SEND_DIAGNOSTIC 0x1D 305f11c7f63SJim Harris #define SCSI_RECEIVE_DIAGNOSTIC 0x1C 306f11c7f63SJim Harris #define SCSI_MODE_SENSE_6 0x1A 307f11c7f63SJim Harris #define SCSI_MODE_SENSE_10 0x5A 308f11c7f63SJim Harris #define SCSI_MODE_SELECT_6 0x15 309f11c7f63SJim Harris #define SCSI_MODE_SELECT_10 0x55 310f11c7f63SJim Harris #define SCSI_MAINTENANCE_IN 0xA3 311f11c7f63SJim Harris #define SCSI_LOG_SENSE 0x4D 312f11c7f63SJim Harris #define SCSI_LOG_SELECT 0x4C 313f11c7f63SJim Harris #define SCSI_RESERVE_6 0x16 314f11c7f63SJim Harris #define SCSI_RESERVE_10 0x56 315f11c7f63SJim Harris #define SCSI_RELEASE_6 0x17 316f11c7f63SJim Harris #define SCSI_RELEASE_10 0x57 317f11c7f63SJim Harris #define SCSI_ATA_PASSTHRU_12 0xA1 318f11c7f63SJim Harris #define SCSI_ATA_PASSTHRU_16 0x85 319f11c7f63SJim Harris #define SCSI_WRITE_LONG_10 0x3F 320f11c7f63SJim Harris #define SCSI_WRITE_LONG_16 0x9F 321f11c7f63SJim Harris #define SCSI_PERSISTENT_RESERVE_IN 0x5E 322f11c7f63SJim Harris #define SCSI_PERSISTENT_RESERVE_OUT 0x5F 323f11c7f63SJim Harris #define SCSI_SECURITY_PROTOCOL_IN 0xA2 324f11c7f63SJim Harris #define SCSI_SECURITY_PROTOCOL_OUT 0xB5 325f11c7f63SJim Harris #define SCSI_UNMAP 0x42 326f11c7f63SJim Harris #define SCSI_WRITE_AND_VERIFY_10 0x2E 327f11c7f63SJim Harris #define SCSI_WRITE_AND_VERIFY_12 0xAE 328f11c7f63SJim Harris #define SCSI_WRITE_AND_VERIFY_16 0x8E 329f11c7f63SJim Harris /*@}*/ 330f11c7f63SJim Harris 331f11c7f63SJim Harris /** 332f11c7f63SJim Harris * @name SCSI_SERVICE_ACTION_IN_CODES 333f11c7f63SJim Harris * 334f11c7f63SJim Harris * Service action in operations. 335f11c7f63SJim Harris */ 336f11c7f63SJim Harris /*@{*/ 337f11c7f63SJim Harris #define SCSI_SERVICE_ACTION_IN_CODES_READ_CAPACITY_16 0x10 338f11c7f63SJim Harris /*@}*/ 339f11c7f63SJim Harris 340f11c7f63SJim Harris /** 341f11c7f63SJim Harris * 342f11c7f63SJim Harris * Service action mask. 343f11c7f63SJim Harris */ 344f11c7f63SJim Harris /*@{*/ 345f11c7f63SJim Harris #define SCSI_SERVICE_ACTION_MASK 0x1f 346f11c7f63SJim Harris /*@}*/ 347f11c7f63SJim Harris 348f11c7f63SJim Harris /** 349f11c7f63SJim Harris * @name SCSI_MAINTENANCE_IN_SERVICE_ACTION_CODES 350f11c7f63SJim Harris * 351f11c7f63SJim Harris * MAINTENANCE IN service action codes. 352f11c7f63SJim Harris */ 353f11c7f63SJim Harris /*@{*/ 354f11c7f63SJim Harris #define SCSI_REPORT_TASK_MGMT 0x0D 355f11c7f63SJim Harris #define SCSI_REPORT_OP_CODES 0x0C 356f11c7f63SJim Harris /*@}*/ 357f11c7f63SJim Harris 358f11c7f63SJim Harris /** 359f11c7f63SJim Harris * @name SCSI_MODE_PAGE_CONTROLS 360f11c7f63SJim Harris * 361f11c7f63SJim Harris * These constants delineate all of the used SCSI Mode Page control 362f11c7f63SJim Harris * values. 363f11c7f63SJim Harris */ 364f11c7f63SJim Harris /*@{*/ 365f11c7f63SJim Harris #define SCSI_MODE_SENSE_PC_CURRENT 0x0 366f11c7f63SJim Harris #define SCSI_MODE_SENSE_PC_CHANGEABLE 0x1 367f11c7f63SJim Harris #define SCSI_MODE_SENSE_PC_DEFAULT 0x2 368f11c7f63SJim Harris #define SCSI_MODE_SENSE_PC_SAVED 0x3 369f11c7f63SJim Harris /*@}*/ 370f11c7f63SJim Harris 371f11c7f63SJim Harris #define SCSI_MODE_SENSE_PC_SHIFT 0x06 372f11c7f63SJim Harris #define SCSI_MODE_SENSE_PAGE_CODE_ENABLE 0x3F 373f11c7f63SJim Harris #define SCSI_MODE_SENSE_DBD_ENABLE 0x08 374f11c7f63SJim Harris #define SCSI_MODE_SENSE_LLBAA_ENABLE 0x10 375f11c7f63SJim Harris 376f11c7f63SJim Harris #define SCSI_MODE_PAGE_CONTROL_D_SENSE_DISABLE 0x0 377f11c7f63SJim Harris #define SCSI_MODE_PAGE_CONTROL_D_SENSE_ENABLE 0x1 378f11c7f63SJim Harris /** 379f11c7f63SJim Harris * @name SCSI_MODE_PAGE_CODES 380f11c7f63SJim Harris * 381f11c7f63SJim Harris * These constants delineate all of the used SCSI Mode Page codes. 382f11c7f63SJim Harris */ 383f11c7f63SJim Harris /*@{*/ 384f11c7f63SJim Harris #define SCSI_MODE_PAGE_READ_WRITE_ERROR 0x01 385f11c7f63SJim Harris #define SCSI_MODE_PAGE_DISCONNECT_RECONNECT 0x02 386f11c7f63SJim Harris #define SCSI_MODE_PAGE_CACHING 0x08 387f11c7f63SJim Harris #define SCSI_MODE_PAGE_CONTROL 0x0A 388f11c7f63SJim Harris #define SCSI_MODE_PAGE_PROTOCOL_SPECIFIC_PORT 0x19 389f11c7f63SJim Harris #define SCSI_MODE_PAGE_POWER_CONDITION 0x1A 390f11c7f63SJim Harris #define SCSI_MODE_PAGE_INFORMATIONAL_EXCP_CONTROL 0x1C 391f11c7f63SJim Harris #define SCSI_MODE_PAGE_ALL_PAGES 0x3F 392f11c7f63SJim Harris /*@}*/ 393f11c7f63SJim Harris 394f11c7f63SJim Harris #define SCSI_MODE_SENSE_ALL_SUB_PAGES_CODE 0xFF 395f11c7f63SJim Harris #define SCSI_MODE_SENSE_NO_SUB_PAGES_CODE 0x0 396f11c7f63SJim Harris #define SCSI_MODE_SENSE_PROTOCOL_PORT_NUM_SUBPAGES 0x1 397f11c7f63SJim Harris #define SCSI_MODE_PAGE_CACHE_PAGE_WCE_BIT 0x04 398f11c7f63SJim Harris #define SCSI_MODE_PAGE_CACHE_PAGE_DRA_BIT 0x20 399f11c7f63SJim Harris #define SCSI_MODE_PAGE_DEXCPT_ENABLE 0x08 400f11c7f63SJim Harris #define SCSI_MODE_SENSE_HEADER_FUA_ENABLE 0x10 401f11c7f63SJim Harris #define SCSI_MODE_PAGE_POWER_CONDITION_STANDBY 0x1 402f11c7f63SJim Harris #define SCSI_MODE_PAGE_POWER_CONDITION_IDLE 0x2 403f11c7f63SJim Harris 404f11c7f63SJim Harris #define SCSI_MODE_SENSE_6_HEADER_LENGTH 4 405f11c7f63SJim Harris #define SCSI_MODE_SENSE_10_HEADER_LENGTH 8 406f11c7f63SJim Harris #define SCSI_MODE_SENSE_STD_BLOCK_DESCRIPTOR_LENGTH 8 407f11c7f63SJim Harris #define SCSI_MODE_SENSE_LLBA_BLOCK_DESCRIPTOR_LENGTH 16 408f11c7f63SJim Harris 409f11c7f63SJim Harris #define SCSI_MODE_PAGE_INFORMATIONAL_EXCP_DXCPT_ENABLE 0x08 410f11c7f63SJim Harris #define SCSI_MODE_PAGE_19_SAS_ID 0x6 411f11c7f63SJim Harris #define SCSI_MODE_PAGE_19_SUB1_PAGE_NUM 0x1 412f11c7f63SJim Harris #define SCSI_MODE_PAGE_19_SUB1_PC 0x59 413f11c7f63SJim Harris 414f11c7f63SJim Harris #define SCSI_MODE_HEADER_MEDIUM_TYPE_SBC 0x00 415f11c7f63SJim Harris 416f11c7f63SJim Harris //Mode Select constrains related masks value 417f11c7f63SJim Harris #define SCSI_MODE_SELECT_PF_BIT 0x1 418f11c7f63SJim Harris #define SCSI_MODE_SELECT_PF_MASK 0x10 419f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_MRIE_BYTE 0x6 420f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_MRIE_MASK 0x0F 421f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_SPF_MASK 0x40 422f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_01_AWRE_MASK 0x80 423f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_01_ARRE_MASK 0x40 424f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_01_RC_ERBITS_MASK 0x1F 425f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_08_FSW_LBCSS_NVDIS 0xC1 426f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_1C_PERF_TEST 0x84 427f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_0A_TST_TMF_RLEC 0xF1 428f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_0A_MODIFIER 0xE0 429f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_0A_UA_SWP 0x38 430f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_0A_TAS_AUTO 0x47 431f11c7f63SJim Harris #define SCSI_MODE_SELECT_MODE_PAGE_D_SENSE 0x4 432f11c7f63SJim Harris 433f11c7f63SJim Harris #define SCSI_CONTROL_BYTE_NACA_BIT_ENABLE 0x04 434f11c7f63SJim Harris #define SCSI_MOVE_FUA_BIT_ENABLE 0x08 435f11c7f63SJim Harris #define SCSI_READ_CAPACITY_PMI_BIT_ENABLE 0x01 436f11c7f63SJim Harris #define SCSI_READ_CAPACITY_10_DATA_LENGTH 8 437f11c7f63SJim Harris #define SCSI_READ_CAPACITY_16_DATA_LENGTH 32 438f11c7f63SJim Harris 439f11c7f63SJim Harris // Inquiry constants 440f11c7f63SJim Harris #define SCSI_INQUIRY_EVPD_ENABLE 0x01 441f11c7f63SJim Harris #define SCSI_INQUIRY_PAGE_CODE_OFFSET 0x02 442f11c7f63SJim Harris #define SCSI_INQUIRY_SUPPORTED_PAGES_PAGE 0x00 443f11c7f63SJim Harris #define SCSI_INQUIRY_UNIT_SERIAL_NUM_PAGE 0x80 444f11c7f63SJim Harris #define SCSI_INQUIRY_DEVICE_ID_PAGE 0x83 445f11c7f63SJim Harris #define SCSI_INQUIRY_ATA_INFORMATION_PAGE 0x89 446f11c7f63SJim Harris #define SCSI_INQUIRY_BLOCK_DEVICE_PAGE 0xB1 447f11c7f63SJim Harris #define SCSI_INQUIRY_BLOCK_DEVICE_LENGTH 0x3C 448f11c7f63SJim Harris #define SCSI_INQUIRY_STANDARD_ALLOCATION_LENGTH 0x24 //36 449f11c7f63SJim Harris 450f11c7f63SJim Harris #define SCSI_REQUEST_SENSE_ALLOCATION_LENGTH 0xFC //252 451f11c7f63SJim Harris 452f11c7f63SJim Harris /** Defines the log page codes that are use in gathing Smart data 453f11c7f63SJim Harris */ 454f11c7f63SJim Harris #define SCSI_LOG_PAGE_SUPPORTED_PAGES 0x00 455f11c7f63SJim Harris #define SCSI_LOG_PAGE_INFORMATION_EXCEPTION 0x2F 456f11c7f63SJim Harris #define SCSI_LOG_PAGE_SELF_TEST 0x10 457f11c7f63SJim Harris 458f11c7f63SJim Harris /** 459f11c7f63SJim Harris * @name SCSI_INQUIRY_VPD 460f11c7f63SJim Harris * 461f11c7f63SJim Harris * The following are constants used with vital product data inquiry pages. 462f11c7f63SJim Harris * Values are already shifted into the proper nibble location. 463f11c7f63SJim Harris */ 464f11c7f63SJim Harris /*@{*/ 465f11c7f63SJim Harris #define SCSI_PIV_ENABLE 0x80 466f11c7f63SJim Harris #define SCSI_LUN_ASSOCIATION 0x00 467f11c7f63SJim Harris #define SCSI_TARGET_PORT_ASSOCIATION 0x10 468f11c7f63SJim Harris 469f11c7f63SJim Harris #define SCSI_VEN_UNIQUE_IDENTIFIER_TYPE 0x00 470f11c7f63SJim Harris #define SCSI_NAA_IDENTIFIER_TYPE 0x03 471f11c7f63SJim Harris 472f11c7f63SJim Harris #define SCSI_T10_IDENTIFIER_TYPE 0x01 473f11c7f63SJim Harris #define SCSI_BINARY_CODE_SET 0x01 474f11c7f63SJim Harris #define SCSI_ASCII_CODE_SET 0x02 475f11c7f63SJim Harris #define SCSI_FC_PROTOCOL_IDENTIFIER 0x00 476f11c7f63SJim Harris #define SCSI_SAS_PROTOCOL_IDENTIFIER 0x60 477f11c7f63SJim Harris /*@}*/ 478f11c7f63SJim Harris 479f11c7f63SJim Harris #define SCSI_VERIFY_BYTCHK_ENABLED 0x02 480f11c7f63SJim Harris 481f11c7f63SJim Harris #define SCSI_SYNCHRONIZE_CACHE_IMMED_ENABLED 0x02 482f11c7f63SJim Harris /** 483f11c7f63SJim Harris * @name SCSI_START_STOP_UNIT_POWER_CONDITION_CODES 484f11c7f63SJim Harris * 485f11c7f63SJim Harris * The following are SCSI Start Stop Unit command Power Condition codes. 486f11c7f63SJim Harris */ 487f11c7f63SJim Harris /*@{*/ 488f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_POWER_CONDITION_START_VALID 0x0 489f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_POWER_CONDITION_ACTIVE 0x1 490f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_POWER_CONDITION_IDLE 0x2 491f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_POWER_CONDITION_STANDBY 0x3 492f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_POWER_CONDITION_LU_CONTROL 0x7 493f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_POWER_CONDITION_FORCE_S_CONTROL 0xB 494f11c7f63SJim Harris /*@}*/ 495f11c7f63SJim Harris 496f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_IMMED_MASK 0x1 497f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_IMMED_SHIFT 0 498f11c7f63SJim Harris 499f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_START_BIT_MASK 0x1 500f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_START_BIT_SHIFT 0 501f11c7f63SJim Harris 502f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_LOEJ_BIT_MASK 0x2 503f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_LOEJ_BIT_SHIFT 1 504f11c7f63SJim Harris 505f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_NO_FLUSH_MASK 0x4 506f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_NO_FLUSH_SHIFT 2 507f11c7f63SJim Harris 508f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_POWER_CONDITION_MODIFIER_MASK 0xF 509f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_POWER_CONDITION_MODIFIER_SHIFT 0 510f11c7f63SJim Harris 511f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_POWER_CONDITION_MASK 0xF0 512f11c7f63SJim Harris #define SCSI_START_STOP_UNIT_POWER_CONDITION_SHIFT 4 513f11c7f63SJim Harris 514f11c7f63SJim Harris #define SCSI_LOG_SENSE_PC_FIELD_MASK 0xC0 515f11c7f63SJim Harris #define SCSI_LOG_SENSE_PC_FIELD_SHIFT 6 516f11c7f63SJim Harris 517f11c7f63SJim Harris #define SCSI_LOG_SENSE_PAGE_CODE_FIELD_MASK 0x3F 518f11c7f63SJim Harris #define SCSI_LOG_SENSE_PAGE_CODE_FIELD_SHIFT 0 519f11c7f63SJim Harris 520f11c7f63SJim Harris /** 521f11c7f63SJim Harris * @name MRIE - Method of reporting informational exceptions codes 522f11c7f63SJim Harris */ 523f11c7f63SJim Harris /*@{*/ 524f11c7f63SJim Harris #define NO_REPORTING_INFO_EXCEPTION_CONDITION 0x0 525f11c7f63SJim Harris #define ASYNCHRONOUS_EVENT_REPORTING 0x1 526f11c7f63SJim Harris #define ESTABLISH_UNIT_ATTENTION_CONDITION 0x2 527f11c7f63SJim Harris #define CONDITIONALLY_GENERATE_RECOVERED_ERROR 0x3 528f11c7f63SJim Harris #define UNCONDITIONALLY_GENERATE_RECOVERED_ERROR 0x4 529f11c7f63SJim Harris #define GENERATE_NO_SENSE 0x5 530f11c7f63SJim Harris #define REPORT_INFO_EXCEPTION_CONDITION_ON_REQUEST 0x6 531f11c7f63SJim Harris /*@}*/ 532f11c7f63SJim Harris 533f11c7f63SJim Harris #define SCSI_INFORMATION_EXCEPTION_DEXCPT_BIT 0x08 534f11c7f63SJim Harris 535f11c7f63SJim Harris //Reassign Blocks masks 536f11c7f63SJim Harris #define SCSI_REASSIGN_BLOCKS_LONGLBA_BIT 0x02 537f11c7f63SJim Harris #define SCSI_REASSIGN_BLOCKS_LONGLIST_BIT 0x01 538f11c7f63SJim Harris 539f11c7f63SJim Harris #endif // _SCSI_H_ 540f11c7f63SJim Harris 541