Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * This header file contains public constants and structures used by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * both the SCSI initiator and the SCSI target code.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * For documentation on the OPCODES, MESSAGES, and SENSE values,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * please consult the SCSI standard.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #ifndef _SCSI_PROTO_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #define _SCSI_PROTO_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)  *      SCSI opcodes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #define TEST_UNIT_READY       0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) #define REZERO_UNIT           0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #define REQUEST_SENSE         0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #define FORMAT_UNIT           0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #define READ_BLOCK_LIMITS     0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) #define REASSIGN_BLOCKS       0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #define INITIALIZE_ELEMENT_STATUS 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define READ_6                0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) #define WRITE_6               0x0a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define SEEK_6                0x0b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) #define READ_REVERSE          0x0f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #define WRITE_FILEMARKS       0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #define SPACE                 0x11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #define INQUIRY               0x12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #define RECOVER_BUFFERED_DATA 0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) #define MODE_SELECT           0x15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) #define RESERVE               0x16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) #define RELEASE               0x17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) #define COPY                  0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) #define ERASE                 0x19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) #define MODE_SENSE            0x1a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) #define START_STOP            0x1b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) #define RECEIVE_DIAGNOSTIC    0x1c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) #define SEND_DIAGNOSTIC       0x1d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #define ALLOW_MEDIUM_REMOVAL  0x1e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #define READ_FORMAT_CAPACITIES 0x23
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) #define SET_WINDOW            0x24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) #define READ_CAPACITY         0x25
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) #define READ_10               0x28
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define WRITE_10              0x2a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) #define SEEK_10               0x2b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #define POSITION_TO_ELEMENT   0x2b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) #define WRITE_VERIFY          0x2e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) #define VERIFY                0x2f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) #define SEARCH_HIGH           0x30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) #define SEARCH_EQUAL          0x31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) #define SEARCH_LOW            0x32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) #define SET_LIMITS            0x33
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) #define PRE_FETCH             0x34
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) #define READ_POSITION         0x34
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) #define SYNCHRONIZE_CACHE     0x35
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) #define LOCK_UNLOCK_CACHE     0x36
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) #define READ_DEFECT_DATA      0x37
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) #define MEDIUM_SCAN           0x38
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) #define COMPARE               0x39
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) #define COPY_VERIFY           0x3a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) #define WRITE_BUFFER          0x3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) #define READ_BUFFER           0x3c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) #define UPDATE_BLOCK          0x3d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) #define READ_LONG             0x3e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) #define WRITE_LONG            0x3f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) #define CHANGE_DEFINITION     0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) #define WRITE_SAME            0x41
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) #define UNMAP		      0x42
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) #define READ_TOC              0x43
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) #define READ_HEADER           0x44
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) #define GET_EVENT_STATUS_NOTIFICATION 0x4a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) #define LOG_SELECT            0x4c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) #define LOG_SENSE             0x4d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) #define XDWRITEREAD_10        0x53
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) #define MODE_SELECT_10        0x55
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) #define RESERVE_10            0x56
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) #define RELEASE_10            0x57
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define MODE_SENSE_10         0x5a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) #define PERSISTENT_RESERVE_IN 0x5e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) #define PERSISTENT_RESERVE_OUT 0x5f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) #define VARIABLE_LENGTH_CMD   0x7f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) #define REPORT_LUNS           0xa0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) #define SECURITY_PROTOCOL_IN  0xa2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) #define MAINTENANCE_IN        0xa3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) #define MAINTENANCE_OUT       0xa4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) #define MOVE_MEDIUM           0xa5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #define EXCHANGE_MEDIUM       0xa6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) #define READ_12               0xa8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #define SERVICE_ACTION_OUT_12 0xa9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #define WRITE_12              0xaa
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) #define READ_MEDIA_SERIAL_NUMBER 0xab /* Obsolete with SPC-2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) #define SERVICE_ACTION_IN_12  0xab
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #define WRITE_VERIFY_12       0xae
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) #define VERIFY_12	      0xaf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define SEARCH_HIGH_12        0xb0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #define SEARCH_EQUAL_12       0xb1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define SEARCH_LOW_12         0xb2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define SECURITY_PROTOCOL_OUT 0xb5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define READ_ELEMENT_STATUS   0xb8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define SEND_VOLUME_TAG       0xb6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #define WRITE_LONG_2          0xea
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define EXTENDED_COPY         0x83
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) #define RECEIVE_COPY_RESULTS  0x84
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define ACCESS_CONTROL_IN     0x86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define ACCESS_CONTROL_OUT    0x87
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #define READ_16               0x88
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define COMPARE_AND_WRITE     0x89
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define WRITE_16              0x8a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define READ_ATTRIBUTE        0x8c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define WRITE_ATTRIBUTE	      0x8d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define WRITE_VERIFY_16	      0x8e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define VERIFY_16	      0x8f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define SYNCHRONIZE_CACHE_16  0x91
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define WRITE_SAME_16	      0x93
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #define ZBC_OUT		      0x94
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #define ZBC_IN		      0x95
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define SERVICE_ACTION_BIDIRECTIONAL 0x9d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #define SERVICE_ACTION_IN_16  0x9e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define SERVICE_ACTION_OUT_16 0x9f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) /* values for service action in */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) #define	SAI_READ_CAPACITY_16  0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) #define SAI_GET_LBA_STATUS    0x12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define SAI_REPORT_REFERRALS  0x13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) /* values for maintenance in */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define MI_REPORT_IDENTIFYING_INFORMATION 0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #define MI_REPORT_TARGET_PGS  0x0a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define MI_REPORT_ALIASES     0x0b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define MI_REPORT_SUPPORTED_OPERATION_CODES 0x0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define MI_REPORT_SUPPORTED_TASK_MANAGEMENT_FUNCTIONS 0x0d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #define MI_REPORT_PRIORITY    0x0e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #define MI_REPORT_TIMESTAMP   0x0f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define MI_MANAGEMENT_PROTOCOL_IN 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) /* value for MI_REPORT_TARGET_PGS ext header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define MI_EXT_HDR_PARAM_FMT  0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) /* values for maintenance out */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define MO_SET_IDENTIFYING_INFORMATION 0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define MO_SET_TARGET_PGS     0x0a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define MO_CHANGE_ALIASES     0x0b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define MO_SET_PRIORITY       0x0e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #define MO_SET_TIMESTAMP      0x0f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #define MO_MANAGEMENT_PROTOCOL_OUT 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) /* values for ZBC_IN */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #define ZI_REPORT_ZONES	      0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) /* values for ZBC_OUT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) #define ZO_CLOSE_ZONE	      0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define ZO_FINISH_ZONE	      0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) #define ZO_OPEN_ZONE	      0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) #define ZO_RESET_WRITE_POINTER 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) /* values for variable length command */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) #define XDREAD_32	      0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define XDWRITE_32	      0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) #define XPWRITE_32	      0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) #define XDWRITEREAD_32	      0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) #define READ_32		      0x09
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) #define VERIFY_32	      0x0a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) #define WRITE_32	      0x0b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) #define WRITE_VERIFY_32	      0x0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) #define WRITE_SAME_32	      0x0d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) #define ATA_32		      0x1ff0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) /* Values for T10/04-262r7 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) #define	ATA_16		      0x85	/* 16-byte pass-thru */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) #define	ATA_12		      0xa1	/* 12-byte pass-thru */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) /* Vendor specific CDBs start here */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) #define VENDOR_SPECIFIC_CDB 0xc0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174)  *	SCSI command lengths
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) #define SCSI_MAX_VARLEN_CDB_SIZE 260
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) /* defined in T10 SCSI Primary Commands-2 (SPC2) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) struct scsi_varlen_cdb_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	__u8 opcode;        /* opcode always == VARIABLE_LENGTH_CMD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 	__u8 control;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 	__u8 misc[5];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	__u8 additional_cdb_length;         /* total cdb length - 8 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	__be16 service_action;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	/* service specific data follows */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)  *  SCSI Architecture Model (SAM) Status codes. Taken from SAM-3 draft
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191)  *  T10/1561-D Revision 4 Draft dated 7th November 2002.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) #define SAM_STAT_GOOD            0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) #define SAM_STAT_CHECK_CONDITION 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) #define SAM_STAT_CONDITION_MET   0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) #define SAM_STAT_BUSY            0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) #define SAM_STAT_INTERMEDIATE    0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) #define SAM_STAT_INTERMEDIATE_CONDITION_MET 0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) #define SAM_STAT_RESERVATION_CONFLICT 0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) #define SAM_STAT_COMMAND_TERMINATED 0x22	/* obsolete in SAM-3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) #define SAM_STAT_TASK_SET_FULL   0x28
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #define SAM_STAT_ACA_ACTIVE      0x30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) #define SAM_STAT_TASK_ABORTED    0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)  *  Status codes. These are deprecated as they are shifted 1 bit right
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)  *  from those found in the SCSI standards. This causes confusion for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208)  *  applications that are ported to several OSes. Prefer SAM Status codes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209)  *  above.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) #define GOOD                 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) #define CHECK_CONDITION      0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) #define CONDITION_GOOD       0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) #define BUSY                 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) #define INTERMEDIATE_GOOD    0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) #define INTERMEDIATE_C_GOOD  0x0a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) #define RESERVATION_CONFLICT 0x0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) #define COMMAND_TERMINATED   0x11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) #define QUEUE_FULL           0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) #define ACA_ACTIVE           0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) #define TASK_ABORTED         0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) #define STATUS_MASK          0xfe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227)  *  SENSE KEYS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) #define NO_SENSE            0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) #define RECOVERED_ERROR     0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) #define NOT_READY           0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) #define MEDIUM_ERROR        0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) #define HARDWARE_ERROR      0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) #define ILLEGAL_REQUEST     0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) #define UNIT_ATTENTION      0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) #define DATA_PROTECT        0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) #define BLANK_CHECK         0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) #define VENDOR_SPECIFIC     0x09
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) #define COPY_ABORTED        0x0a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) #define ABORTED_COMMAND     0x0b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) #define VOLUME_OVERFLOW     0x0d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) #define MISCOMPARE          0x0e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247)  *  DEVICE TYPES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248)  *  Please keep them in 0x%02x format for $MODALIAS to work
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) #define TYPE_DISK           0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) #define TYPE_TAPE           0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) #define TYPE_PRINTER        0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) #define TYPE_PROCESSOR      0x03    /* HP scanners use this */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) #define TYPE_WORM           0x04    /* Treated as ROM by our system */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) #define TYPE_ROM            0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) #define TYPE_SCANNER        0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) #define TYPE_MOD            0x07    /* Magneto-optical disk -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 				     * - treated as TYPE_DISK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) #define TYPE_MEDIUM_CHANGER 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) #define TYPE_COMM           0x09    /* Communications device */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) #define TYPE_RAID           0x0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) #define TYPE_ENCLOSURE      0x0d    /* Enclosure Services Device */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) #define TYPE_RBC	    0x0e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) #define TYPE_OSD            0x11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) #define TYPE_ZBC            0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) #define TYPE_WLUN           0x1e    /* well-known logical unit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) #define TYPE_NO_LUN         0x7f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) /* SCSI protocols; these are taken from SPC-3 section 7.5 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) enum scsi_protocol {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) 	SCSI_PROTOCOL_FCP = 0,	/* Fibre Channel */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) 	SCSI_PROTOCOL_SPI = 1,	/* parallel SCSI */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) 	SCSI_PROTOCOL_SSA = 2,	/* Serial Storage Architecture - Obsolete */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 	SCSI_PROTOCOL_SBP = 3,	/* firewire */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 	SCSI_PROTOCOL_SRP = 4,	/* Infiniband RDMA */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 	SCSI_PROTOCOL_ISCSI = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 	SCSI_PROTOCOL_SAS = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) 	SCSI_PROTOCOL_ADT = 7,	/* Media Changers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 	SCSI_PROTOCOL_ATA = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 	SCSI_PROTOCOL_UNSPEC = 0xf, /* No specific protocol */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285)  * ScsiLun: 8 byte LUN.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) struct scsi_lun {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 	__u8 scsi_lun[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) /* SPC asymmetric access states */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) #define SCSI_ACCESS_STATE_OPTIMAL     0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) #define SCSI_ACCESS_STATE_ACTIVE      0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) #define SCSI_ACCESS_STATE_STANDBY     0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) #define SCSI_ACCESS_STATE_UNAVAILABLE 0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) #define SCSI_ACCESS_STATE_LBA         0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) #define SCSI_ACCESS_STATE_OFFLINE     0x0e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) #define SCSI_ACCESS_STATE_TRANSITIONING 0x0f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) /* Values for REPORT TARGET GROUP STATES */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) #define SCSI_ACCESS_STATE_MASK        0x0f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) #define SCSI_ACCESS_STATE_PREFERRED   0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) /* Reporting options for REPORT ZONES */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) enum zbc_zone_reporting_options {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) 	ZBC_ZONE_REPORTING_OPTION_ALL		= 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 	ZBC_ZONE_REPORTING_OPTION_EMPTY		= 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 	ZBC_ZONE_REPORTING_OPTION_IMPLICIT_OPEN	= 0x02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 	ZBC_ZONE_REPORTING_OPTION_EXPLICIT_OPEN	= 0x03,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) 	ZBC_ZONE_REPORTING_OPTION_CLOSED	= 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) 	ZBC_ZONE_REPORTING_OPTION_FULL		= 0x05,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 	ZBC_ZONE_REPORTING_OPTION_READONLY	= 0x06,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) 	ZBC_ZONE_REPORTING_OPTION_OFFLINE	= 0x07,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 	/* 0x08 to 0x0f are reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) 	ZBC_ZONE_REPORTING_OPTION_NEED_RESET_WP	= 0x10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 	ZBC_ZONE_REPORTING_OPTION_NON_SEQWRITE	= 0x11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) 	/* 0x12 to 0x3e are reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 	ZBC_ZONE_REPORTING_OPTION_NON_WP	= 0x3f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) #define ZBC_REPORT_ZONE_PARTIAL 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) /* Zone types of REPORT ZONES zone descriptors */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) enum zbc_zone_type {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) 	ZBC_ZONE_TYPE_CONV		= 0x1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) 	ZBC_ZONE_TYPE_SEQWRITE_REQ	= 0x2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) 	ZBC_ZONE_TYPE_SEQWRITE_PREF	= 0x3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) 	/* 0x4 to 0xf are reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) /* Zone conditions of REPORT ZONES zone descriptors */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) enum zbc_zone_cond {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) 	ZBC_ZONE_COND_NO_WP		= 0x0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) 	ZBC_ZONE_COND_EMPTY		= 0x1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) 	ZBC_ZONE_COND_IMP_OPEN		= 0x2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) 	ZBC_ZONE_COND_EXP_OPEN		= 0x3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 	ZBC_ZONE_COND_CLOSED		= 0x4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) 	/* 0x5 to 0xc are reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) 	ZBC_ZONE_COND_READONLY		= 0xd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) 	ZBC_ZONE_COND_FULL		= 0xe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) 	ZBC_ZONE_COND_OFFLINE		= 0xf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) #endif /* _SCSI_PROTO_H_ */