Home | History | Annotate | Download | only in linux
      1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2 #ifndef CCISS_DEFS_H
      3 #define CCISS_DEFS_H
      4 
      5 #include <linux/types.h>
      6 
      7 /* general boundary definitions */
      8 #define SENSEINFOBYTES          32 /* note that this value may vary
      9 				      between host implementations */
     10 
     11 /* Command Status value */
     12 #define CMD_SUCCESS             0x0000
     13 #define CMD_TARGET_STATUS       0x0001
     14 #define CMD_DATA_UNDERRUN       0x0002
     15 #define CMD_DATA_OVERRUN        0x0003
     16 #define CMD_INVALID             0x0004
     17 #define CMD_PROTOCOL_ERR        0x0005
     18 #define CMD_HARDWARE_ERR        0x0006
     19 #define CMD_CONNECTION_LOST     0x0007
     20 #define CMD_ABORTED             0x0008
     21 #define CMD_ABORT_FAILED        0x0009
     22 #define CMD_UNSOLICITED_ABORT   0x000A
     23 #define CMD_TIMEOUT             0x000B
     24 #define CMD_UNABORTABLE		0x000C
     25 
     26 /* transfer direction */
     27 #define XFER_NONE               0x00
     28 #define XFER_WRITE              0x01
     29 #define XFER_READ               0x02
     30 #define XFER_RSVD               0x03
     31 
     32 /* task attribute */
     33 #define ATTR_UNTAGGED           0x00
     34 #define ATTR_SIMPLE             0x04
     35 #define ATTR_HEADOFQUEUE        0x05
     36 #define ATTR_ORDERED            0x06
     37 #define ATTR_ACA                0x07
     38 
     39 /* cdb type */
     40 #define TYPE_CMD				0x00
     41 #define TYPE_MSG				0x01
     42 
     43 /* Type defs used in the following structs */
     44 #define BYTE __u8
     45 #define WORD __u16
     46 #define HWORD __u16
     47 #define DWORD __u32
     48 
     49 #define CISS_MAX_LUN	1024
     50 
     51 #define LEVEL2LUN   1 /* index into Target(x) structure, due to byte swapping */
     52 #define LEVEL3LUN   0
     53 
     54 #pragma pack(1)
     55 
     56 /* Command List Structure */
     57 typedef union _SCSI3Addr_struct {
     58    struct {
     59     BYTE Dev;
     60     BYTE Bus:6;
     61     BYTE Mode:2;        /* b00 */
     62   } PeripDev;
     63    struct {
     64     BYTE DevLSB;
     65     BYTE DevMSB:6;
     66     BYTE Mode:2;        /* b01 */
     67   } LogDev;
     68    struct {
     69     BYTE Dev:5;
     70     BYTE Bus:3;
     71     BYTE Targ:6;
     72     BYTE Mode:2;        /* b10 */
     73   } LogUnit;
     74 } SCSI3Addr_struct;
     75 
     76 typedef struct _PhysDevAddr_struct {
     77   DWORD             TargetId:24;
     78   DWORD             Bus:6;
     79   DWORD             Mode:2;
     80   SCSI3Addr_struct  Target[2]; /* 2 level target device addr */
     81 } PhysDevAddr_struct;
     82 
     83 typedef struct _LogDevAddr_struct {
     84   DWORD            VolId:30;
     85   DWORD            Mode:2;
     86   BYTE             reserved[4];
     87 } LogDevAddr_struct;
     88 
     89 typedef union _LUNAddr_struct {
     90   BYTE               LunAddrBytes[8];
     91   SCSI3Addr_struct   SCSI3Lun[4];
     92   PhysDevAddr_struct PhysDev;
     93   LogDevAddr_struct  LogDev;
     94 } LUNAddr_struct;
     95 
     96 typedef struct _RequestBlock_struct {
     97   BYTE   CDBLen;
     98   struct {
     99     BYTE Type:3;
    100     BYTE Attribute:3;
    101     BYTE Direction:2;
    102   } Type;
    103   HWORD  Timeout;
    104   BYTE   CDB[16];
    105 } RequestBlock_struct;
    106 
    107 typedef union _MoreErrInfo_struct{
    108   struct {
    109     BYTE  Reserved[3];
    110     BYTE  Type;
    111     DWORD ErrorInfo;
    112   } Common_Info;
    113   struct{
    114     BYTE  Reserved[2];
    115     BYTE  offense_size; /* size of offending entry */
    116     BYTE  offense_num;  /* byte # of offense 0-base */
    117     DWORD offense_value;
    118   } Invalid_Cmd;
    119 } MoreErrInfo_struct;
    120 typedef struct _ErrorInfo_struct {
    121   BYTE               ScsiStatus;
    122   BYTE               SenseLen;
    123   HWORD              CommandStatus;
    124   DWORD              ResidualCnt;
    125   MoreErrInfo_struct MoreErrInfo;
    126   BYTE               SenseInfo[SENSEINFOBYTES];
    127 } ErrorInfo_struct;
    128 
    129 #pragma pack()
    130 
    131 #endif /* CCISS_DEFS_H */
    132