core_adpt.h

来自「6440linuxDriver的源代码」· C头文件 代码 · 共 1,872 行 · 第 1/5 页

H
1,872
字号
} REG_XOR_DELV_Q_WR_PTR, *PREG_XOR_DELV_Q_WR_PTR;/* XOR_DELV_Q_RD_PTR bits */typedef struct _REG_XOR_DELV_Q_RD_PTR{#if __MV_BIG_ENDIAN_BITFIELD__	MV_U32   Reserved:20;	MV_U32   DELV_QUEUE_RD_PTR:12;#else	MV_U32   DELV_QUEUE_RD_PTR:12;	MV_U32   Reserved:20;#endif /* __MV_BIG_ENDIAN_BITFIELD__ */} REG_XOR_DELV_Q_RD_PTR, *PREG_XOR_DELV_Q_RD_PTR;enum {        /* XOR_CMPL_Q_CONFIG (0x524) bits */	XOR_CMPL_QUEUE_SIZE_MASK= (0xFFF << 0),	XOR_CMPL_QUEUE_ENABLE   = (1 << 16),        /* XOR_COAL_CONFIG (0x538) bits */	XOR_INT_COAL_COUNT_MASK = (0x1FF << 0),	XOR_INT_COAL_ENABLE     = (1 << 16),	XOR_INT_COAL_COUNT      = (1 << 0),        /* XOR_COAL_TIMEOUT (0x53c) bits */	XOR_COAL_TIMER_MASK     = (0xFFFF << 0),	XOR_COAL_TIMER_UNIT_1MS = (1 << 16), /* 1us, 6.67 ns if not set (0) */};/* XOR_IRQ_STAT bits */typedef struct _REG_XOR_IRQ_STAT{#if __MV_BIG_ENDIAN_BITFIELD__	MV_U32   Reserved:19;	MV_U32   XOR_ERR:1;      	MV_U32   TBL_PRCSSD:1;      	MV_U32   CMD_CMPL:1;#else	MV_U32   CMD_CMPL:1;	MV_U32   TBL_PRCSSD:1;      	MV_U32   XOR_ERR:1;      	MV_U32   Reserved:19;#endif /* __MV_BIG_ENDIAN_BITFIELD__ */} REG_XOR_IRQ_STAT, *PREG_XOR_IRQ_STAT;enum {        /* XOR_IRQ_MASK (0x544) bits */	XOR_CMD_CMPL_IRQ    = (1 << 0),	XOR_TBL_PROC_IRQ    = (1 << 1),	XOR_ERR_IRQ         = (1 << 2),};/* XOR_ERR_CODE bits */typedef struct _REG_XOR_ERR_CODE{#if __MV_BIG_ENDIAN_BITFIELD__	MV_U32   ERR_TBL:16;      	MV_U32   B1_ERR_PRD:4;	MV_U32   Reserved2:3;      	MV_U32   B1_ZR0_RSLT_CHK_ERR:1;	MV_U32   B0_ERR_PRD:4;      	MV_U32   Reserved1:3;      	MV_U32   B0_ZR0_RSLT_CHK_ERR:1;#else	MV_U32   B0_ZR0_RSLT_CHK_ERR:1;	MV_U32   Reserved1:3;      	MV_U32   B0_ERR_PRD:4;      	MV_U32   B1_ZR0_RSLT_CHK_ERR:1;	MV_U32   Reserved2:3;      	MV_U32   B1_ERR_PRD:4;	MV_U32   ERR_TBL:16;      #endif /* __MV_BIG_ENDIAN_BITFIELD__ */} REG_XOR_ERR_CODE, *PREG_XOR_ERR_CODE;/* * Hardware related format. Never change their size. Must follow hardware  * specification. *//* for command list */typedef struct _MV_Command_Header{#if __MV_BIG_ENDIAN_BITFIELD__/* DWORD 0 */	MV_U32   PRD_Entry_Count : 16;	MV_U32   SSP_SSPFrameType : 3;/* SSP only, 0-frame type set by HW, 1-frame type given by SSP_SSPFrameType */	MV_U32   SSP_SSPPassThru : 1;	/* SSP only, generate Burst without waiting for XFER-RDY */	MV_U32   SSP_FirstBurst : 1;	MV_U32   SSP_VerifyDataLen : 1;   /* SSP only, verify Data length */	/* SSP only, set if enabling SSP transport layer retry */	MV_U32   SSP_Retry : 1;   	/* SSP only, set if protection information record present */	MV_U32   ProtectInfoRecord : 1;	MV_U32   Reset: 1;   /* SATA only, set if it is for device reset */	/* SATA only, set if it is a first party DMA command */	MV_U32   First_DMA : 1;   	MV_U32   ATAPI : 1;   /* SATA only, set if it is a ATAPI PIO */	MV_U32   BIST : 1;   /* SATA only, set if it is a BIST FIS */	MV_U32   PM_Port : 4;   /* Port Multiplier field in command FIS *//* DWORD 1 */	MV_U32   Reserved2 : 7;/* max response frame length in DW, HW will put in status buffer structure */	MV_U32   MaxRspFrameLength : 9;	MV_U32   Reserved1 : 6;	/* command frame length in DW, including frame length, excluding CRC */	MV_U32   FrameLength : 10;/* DWORD 2 */	/* Target Port Transfer Tag, for target to tag multiple XFER_RDY */	MV_U32   TargetTag : 16;	MV_U32   Tag : 16;   /* command tag */#else /*  __MV_BIG_ENDIAN_BITFIELD__ *//* DWORD 0 */	MV_U32   PM_Port : 4;         /* Port Multiplier field in command FIS */	MV_U32   BIST : 1;            /* SATA only, set if it is a BIST FIS */	MV_U32   ATAPI : 1;            /* SATA only, set if it is a ATAPI PIO */	MV_U32   First_DMA : 1;         /* SATA only, set if it is a first party DMA command */	MV_U32   Reset: 1;            /* SATA only, set if it is for device reset */	MV_U32   ProtectInfoRecord : 1;   /* SSP only, set if protection information record present */	MV_U32   SSP_Retry : 1;         /* SSP only, set if enabling SSP transport layer retry */	MV_U32   SSP_VerifyDataLen : 1;   /* SSP only, verify Data length */	MV_U32   SSP_FirstBurst : 1;      /* SSP only, generate Burst without waiting for XFER-RDY */	MV_U32   SSP_SSPPassThru : 1;   /* SSP only, 0-frame type set by HW, 1-frame type given by SSP_SSPFrameType */	MV_U32   SSP_SSPFrameType : 3;	MV_U32   PRD_Entry_Count : 16;/* DWORD 1 */	MV_U32   FrameLength : 10;      /* command frame length in DW, including frame length, excluding CRC */	MV_U32   Reserved1 : 6;	MV_U32   MaxRspFrameLength : 9;   /* max response frame length in DW, HW will put in status buffer structure */	MV_U32   Reserved2 : 7;/* DWORD 2 */	MV_U32   Tag : 16;            /* command tag */	MV_U32   TargetTag : 16;         /* Target Port Transfer Tag, for target to tag multiple XFER_RDY */#endif /* __MV_BIG_ENDIAN_BITFIELD__ *//* DWORD 3 */	MV_U32   DataXferLen;         /* in bytes */      /* DWORD 4 */	MV_U32   Table_Address;/* DWORD 5 */	MV_U32   Table_Address_High;/* DWORD 6 */	MV_U32   OpenAddrFrame_Address;/* DWORD 7 */	MV_U32   OpenAddrFrame_Address_High;/* DWORD 8 */	MV_U32   StatusBuff_Address;/* DWORD 9 */	MV_U32   StatusBuff_Address_High;/* DWORD 10 */	MV_U32   PRD_Table_Address;/* DWORD 11 */	MV_U32   PRD_Table_Address_High;/* DWORD 12-15 */	MV_U32   Reserved[4];} MV_Command_Header, *PMV_Command_Header;/* SSP_SSPFrameType */#define FRAME_TYPE_COMMAND         0x00#define FRAME_TYPE_TASK            0x01#define FRAME_TYPE_XFER_RDY         0x04 /* Target mode */#define FRAME_TYPE_RESPONSE         0x05 /* Target mode */#define FRAME_TYPE_RD_DATA         0x06 /* Target mode */#define FRAME_TYPE_RD_DATA_RESPONSE   0x07 /* Target mode, read data after response frame *//* Tag */#define SSP_I_HEADR_TAG_MASK      0xfe00   /* lower 9 bits from HW command slot */#define SSP_T_HEADR_TAG_MASK      0xffff#define STP_HEADR_TAG_MASK         0x001f   /* NCQ uses lower 5 bits  *//* TargetTag */#define SSP_T_HEADR_TGTTAG_MASK      0xfe00   /* lower 9 bits from HW command slot *//* for command table *//* SSP frame header */typedef struct _SSP_Frame_Header{	MV_U8   Frame_Type;	MV_U8   Hashed_Dest_SAS_Addr[3];	MV_U8   Reseved1;	MV_U8   Hashed_Src_SAS_Addr[3];	MV_U8   Reseved2[2];#if __MV_BIG_ENDIAN_BITFIELD__	MV_U8   Reserved3:5;	MV_U8   RetryData:1;   /* set in XFER_RDY to allow ReTx Data frames */	MV_U8   ReTxed:1;   /* set in TASK/XFER_RDY/RESPONSE frames indicating this is a re-txed */	MV_U8   CDP:1;      /* Change Data Pointer */	MV_U8   Reserved4:6;	MV_U8   NumberOfFillBytes:2;#else /* __MV_BIG_ENDIAN_BITFIELD__ */	MV_U8   CDP:1;         /* Change Data Pointer */	MV_U8   ReTxed:1;      /* set in TASK/XFER_RDY/RESPONSE frames indicating this is a re-txed */	MV_U8   RetryData:1;   /* set in XFER_RDY to allow ReTx Data frames */	MV_U8   Reserved3:5;	MV_U8   NumberOfFillBytes:2;	MV_U8   Reserved4:6;#endif /* __MV_BIG_ENDIAN_BITFIELD__ */	MV_U8   Reserved5[4];	MV_U16   Tag;         /* command tag */	MV_U16   TargetTag;      /* Target Port Transfer Tag, for target to tag multiple XFER_RDY */	MV_U32   DataOffset;}SSP_Frame_Header, *PSSP_Frame_Header;/* SSP Command UI */typedef struct _SSP_COMMAND_IU{	MV_U8   LUN[8];	MV_U8   Reserved1;#if __MV_BIG_ENDIAN_BITFIELD__	MV_U8   AddCDBLen:6;      /* in DW */	MV_U8   Reserved4:2;	MV_U8   Reserved3;	MV_U8   FirstBurst:1;	MV_U8   Reserved2:4;	MV_U8   TaskAttrib:3;#else	MV_U8   TaskAttrib:3;	MV_U8   Reserved2:4;	MV_U8   FirstBurst:1;	MV_U8   Reserved3;	MV_U8   Reserved4:2;	MV_U8   AddCDBLen:6;      /* in DW */#endif /* __MV_BIG_ENDIAN_BITFIELD__ */	MV_U8   CDB[16];/*   MV_U8   AddCDB[n] */}SSP_COMMAND_IU, *PSSP_COMMAND_IU;/* SSP TASK UI */typedef struct _SSP_TASK_IU{	MV_U8   LUN[8];	MV_U8   Reserved1[2];	MV_U8   TaskFunction;	MV_U8   Reserved2;	MV_U16   Tag;	MV_U8   Reserved3[14];}SSP_TASK_IU, *PSSP_TASK_IU;/* * Task Management Functions. */#define ABORT_TASK_TMF      0x01#define ABORT_TASK_SET_TMF   0x02#define CLEAR_TASK_SET_TMF   0x04#define LOGICAL_UNIT_RESET_TMF   0x08#define CLEAR_ACA_TMF      0x40#define QUERY_TASK_TMF      0x80/* SSP XFER_RDY UI */typedef struct _SSP_XFERRDY_IU{	MV_U32   DataOffset;	MV_U32   DataLen;	MV_U8   Reserved3[4];}SSP_XFERRDY_IU, *PSSP_XFERRDY_IU;/* SSP RESPONSE UI */typedef struct _SSP_RESPONSE_IU{	MV_U8   Reserved1[10];#if __MV_BIG_ENDIAN_BITFIELD__	MV_U8   Reserved2:6;	MV_U8   DataPres:2;#else  /* __MV_BIG_ENDIAN_BITFIELD__ */	MV_U8   DataPres:2;	MV_U8   Reserved2:6;#endif /* __MV_BIG_ENDIAN_BITFIELD__ */	MV_U8   Status;	MV_U32   Reserved3;	MV_U32   SenseDataLen;	MV_U32   RespDataLen;	MV_U8   Data[MAX_SSP_RESP_SENSE_SIZE];/*   MV_U8   ResponseData[m]      or     MV_U8   SenseData[n] */}SSP_RESPONSE_IU, *PSSP_RESPONSE_IU;/* DataPres */#define NO_SENSE_RESPONSE   0x0#define RESPONSE_ONLY      0x1#define SENSE_ONLY         0x2#define RESERVED         0x3/* SSP Protection Information Record */typedef struct _PROTECT_INFO_RECORD{#if __MV_BIG_ENDIAN_BITFIELD__	MV_U32 Reserved2:4;	MV_U32 USR_DT_SZ:12;	MV_U32 Reserved1:10;	MV_U32 CHK_DSBL_MD:1;	MV_U32 GRD_CHK:1;	MV_U32 APP_CHK:1;	MV_U32 REF_CHK:1;	MV_U32 RMV_PROT:1;	MV_U32 INSRT_PROT:1;	MV_U32 LBRT;      /* Logical Block Reference Tag */	MV_U32 LBAT_MASK:16;	MV_U32 LBAT:16;      /* Logical Block Application Tag */#else	MV_U32 INSRT_PROT:1;	MV_U32 RMV_PROT:1;	MV_U32 REF_CHK:1;	MV_U32 APP_CHK:1;	MV_U32 GRD_CHK:1;	MV_U32 CHK_DSBL_MD:1;	MV_U32 Reserved1:10;	MV_U32 USR_DT_SZ:12;	MV_U32 Reserved2:4;	MV_U32 LBRT;      /* Logical Block Reference Tag */	MV_U32 LBAT:16;      /* Logical Block Application Tag */	MV_U32 LBAT_MASK:16;#endif /* __MV_BIG_ENDIAN_BITFIELD__ */}PROTECT_INFO_RECORD, *PPROTECT_INFO_RECORD;/* SSP Command Table */typedef struct _MV_SSP_Command_Table{	SSP_Frame_Header Frame_Header;	union	{		struct {			struct _SSP_COMMAND_IU commandIU;			PROTECT_INFO_RECORD PIR;		} command;		struct _SSP_TASK_IU task;		struct _SSP_XFERRDY_IU xfer_rdy;		struct _SSP_RESPONSE_IU response;	} data;} MV_SSP_Command_Table, *PMV_SSP_Command_Table;// SMP Command Tabletypedef struct SMPRequest MV_SMP_Command_Table;/* SATA STP Command Table */typedef struct _MV_SATA_STP_Command_Table{	MV_U8   FIS[64];                        /* Command FIS */	MV_U8   ATAPI_CDB[32];                     /* ATAPI CDB */} MV_SATA_STP_Command_Table, *PMV_SATA_STP_Command_Table;/* Open Address Frame */typedef struct _OPEN_ADDRESS_FRAME{#if __MV_BIG_ENDIAN_BITFIELD__	MV_U8   Initiator:1;	MV_U8   Protocol:3;	MV_U8   Frame_Type:4;	MV_U8   Feature:4;	MV_U8   Connect_Rate:4;#else /* __MV_BIG_ENDIAN_BITFIELD__ */	MV_U8   Frame_Type:4;	MV_U8   Protocol:3;	MV_U8   Initiator:1;	MV_U8   Connect_Rate:4;	MV_U8   Feature:4;#endif /* __MV_BIG_ENDIAN_BITFIELD__ */	MV_U8   Connect_Tag[2];	MV_U8   Dest_SAS_Addr[8];         /* HW will generate Byte 12 after... */	MV_U8   Src_SAS_Addr[8];	MV_U8   Cmp_

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?