The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/isci/scil/intel_scsi.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

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

Cache object: e5b233330606ea1a7e5a201eddb22f03


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.