linux/include/uapi/linux/cciss_defs.h
<<
>>
Prefs
   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 */
  57typedef 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
  76typedef 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
  83typedef struct _LogDevAddr_struct {
  84  DWORD            VolId:30;
  85  DWORD            Mode:2;
  86  BYTE             reserved[4];
  87} LogDevAddr_struct;
  88
  89typedef union _LUNAddr_struct {
  90  BYTE               LunAddrBytes[8];
  91  SCSI3Addr_struct   SCSI3Lun[4];
  92  PhysDevAddr_struct PhysDev;
  93  LogDevAddr_struct  LogDev;
  94} LUNAddr_struct;
  95
  96typedef 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
 107typedef 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;
 120typedef 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