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