#ifndef __SAMPIDEFS_H__
#define __SAMPIDEFS_H__
#define OPC_INB_ECHO 0x001
#define OPC_INB_PHYSTART 0x004
#define OPC_INB_PHYSTOP 0x005
#define OPC_INB_SSPINIIOSTART 0x006
#define OPC_INB_SSPINITMSTART 0x007
#define OPC_INB_SSPINIEXTIOSTART 0x008
#define OPC_INB_DEV_HANDLE_ACCEPT 0x009
#define OPC_INB_SSPTGTIOSTART 0x00a
#define OPC_INB_SSPTGTRSPSTART 0x00b
#define OPC_INB_SSP_ABORT 0x00f
#define OPC_INB_DEREG_DEV_HANDLE 0x010
#define OPC_INB_GET_DEV_HANDLE 0x011
#define OPC_INB_SMP_REQUEST 0x012
#define OPC_INB_SMP_ABORT 0x014
#define OPC_INB_SPC_REG_DEV 0x016
#define OPC_INB_SATA_HOST_OPSTART 0x017
#define OPC_INB_SATA_ABORT 0x018
#define OPC_INB_LOCAL_PHY_CONTROL 0x019
#define OPC_INB_SPC_GET_DEV_INFO 0x01a
#define OPC_INB_FW_FLASH_UPDATE 0x020
#define OPC_INB_GPIO 0x022
#define OPC_INB_SAS_DIAG_MODE_START_END 0x023
#define OPC_INB_SAS_DIAG_EXECUTE 0x024
#define OPC_INB_SPC_SAS_HW_EVENT_ACK 0x025
#define OPC_INB_GET_TIME_STAMP 0x026
#define OPC_INB_PORT_CONTROL 0x027
#define OPC_INB_GET_NVMD_DATA 0x028
#define OPC_INB_SET_NVMD_DATA 0x029
#define OPC_INB_SET_DEVICE_STATE 0x02a
#define OPC_INB_GET_DEVICE_STATE 0x02b
#define OPC_INB_SET_DEV_INFO 0x02c
#define OPC_INB_SAS_RE_INITIALIZE 0x02d
#define OPC_INB_SGPIO 0x02e
#define OPC_INB_PCIE_DIAG_EXECUTE 0x02f
#define OPC_INB_SET_CONTROLLER_CONFIG 0x030
#define OPC_INB_GET_CONTROLLER_CONFIG 0x031
#define OPC_INB_REG_DEV 0x032
#define OPC_INB_SAS_HW_EVENT_ACK 0x033
#define OPC_INB_GET_DEV_INFO 0x034
#define OPC_INB_GET_PHY_PROFILE 0x035
#define OPC_INB_FLASH_OP_EXT 0x036
#define OPC_INB_SET_PHY_PROFILE 0x037
#define OPC_INB_GET_DFE_DATA 0x038
#define OPC_INB_GET_VHIST_CAP 0x039
#define OPC_INB_KEK_MANAGEMENT 0x100
#define OPC_INB_DEK_MANAGEMENT 0x101
#define OPC_INB_SSP_DIF_ENC_OPSTART 0x102
#define OPC_INB_SATA_DIF_ENC_OPSTART 0x103
#define OPC_INB_OPR_MGMT 0x104
#define OPC_INB_ENC_TEST_EXECUTE 0x105
#define OPC_INB_SET_OPERATOR 0x106
#define OPC_INB_GET_OPERATOR 0x107
#define OPC_INB_DIF_ENC_OFFLOAD_CMD 0x110
#define OPC_INB_FW_PROFILE 0x888
#define OPC_OUB_ECHO 0x001
#define OPC_OUB_SPC_HW_EVENT 0x004
#define OPC_OUB_SSP_COMP 0x005
#define OPC_OUB_SMP_COMP 0x006
#define OPC_OUB_LOCAL_PHY_CNTRL 0x007
#define OPC_OUB_SPC_DEV_REGIST 0x00a
#define OPC_OUB_DEREG_DEV 0x00b
#define OPC_OUB_GET_DEV_HANDLE 0x00c
#define OPC_OUB_SATA_COMP 0x00d
#define OPC_OUB_SATA_EVENT 0x00e
#define OPC_OUB_SSP_EVENT 0x00f
#define OPC_OUB_SPC_DEV_HANDLE_ARRIV 0x010
#define OPC_OUB_SSP_RECV_EVENT 0x012
#define OPC_OUB_SPC_DEV_INFO 0x013
#define OPC_OUB_FW_FLASH_UPDATE 0x014
#define OPC_OUB_GPIO_RESPONSE 0x016
#define OPC_OUB_GPIO_EVENT 0x017
#define OPC_OUB_GENERAL_EVENT 0x018
#define OPC_OUB_SSP_ABORT_RSP 0x01a
#define OPC_OUB_SATA_ABORT_RSP 0x01b
#define OPC_OUB_SAS_DIAG_MODE_START_END 0x01c
#define OPC_OUB_SAS_DIAG_EXECUTE 0x01d
#define OPC_OUB_GET_TIME_STAMP 0x01e
#define OPC_OUB_SPC_SAS_HW_EVENT_ACK 0x01f
#define OPC_OUB_PORT_CONTROL 0x020
#define OPC_OUB_SKIP_ENTRY 0x021
#define OPC_OUB_SMP_ABORT_RSP 0x022
#define OPC_OUB_GET_NVMD_DATA 0x023
#define OPC_OUB_SET_NVMD_DATA 0x024
#define OPC_OUB_DEVICE_HANDLE_REMOVAL 0x025
#define OPC_OUB_SET_DEVICE_STATE 0x026
#define OPC_OUB_GET_DEVICE_STATE 0x027
#define OPC_OUB_SET_DEV_INFO 0x028
#define OPC_OUB_SAS_RE_INITIALIZE 0x029
#define OPC_OUB_HW_EVENT 0x700
#define OPC_OUB_DEV_HANDLE_ARRIV 0x720
#define OPC_OUB_PHY_START_RESPONSE 0x804
#define OPC_OUB_PHY_STOP_RESPONSE 0x805
#define OPC_OUB_SGPIO_RESPONSE 0x82E
#define OPC_OUB_PCIE_DIAG_EXECUTE 0x82F
#define OPC_OUB_SET_CONTROLLER_CONFIG 0x830
#define OPC_OUB_GET_CONTROLLER_CONFIG 0x831
#define OPC_OUB_DEV_REGIST 0x832
#define OPC_OUB_SAS_HW_EVENT_ACK 0x833
#define OPC_OUB_DEV_INFO 0x834
#define OPC_OUB_GET_PHY_PROFILE_RSP 0x835
#define OPC_OUB_FLASH_OP_EXT_RSP 0x836
#define OPC_OUB_SET_PHY_PROFILE_RSP 0x837
#define OPC_OUB_GET_DFE_DATA_RSP 0x838
#define OPC_OUB_GET_VIST_CAP_RSP 0x839
#define OPC_OUB_FW_PROFILE 0x888
#define OPC_OUB_KEK_MANAGEMENT 0x900
#define OPC_OUB_DEK_MANAGEMENT 0x901
#define OPC_OUB_COMBINED_SSP_COMP 0x902
#define OPC_OUB_COMBINED_SATA_COMP 0x903
#define OPC_OUB_OPR_MGMT 0x904
#define OPC_OUB_ENC_TEST_EXECUTE 0x905
#define OPC_OUB_SET_OPERATOR 0x906
#define OPC_OUB_GET_OPERATOR 0x907
#define OPC_OUB_DIF_ENC_OFFLOAD_RSP 0x910
#define KEK_MGMT_SUBOP_INVALIDATE 0x1
#define KEK_MGMT_SUBOP_UPDATE 0x2
#define KEK_MGMT_SUBOP_KEYCARDINVALIDATE 0x3
#define KEK_MGMT_SUBOP_KEYCARDUPDATE 0x4
#define DEK_MGMT_SUBOP_INVALIDATE 0x1
#define DEK_MGMT_SUBOP_UPDATE 0x2
typedef struct agsaEchoCmd_s {
bit32 tag;
bit32 payload[14];
} agsaEchoCmd_t;
typedef struct agsaPhyStartCmd_s {
bit32 tag;
bit32 SscdAseSHLmMlrPhyId;
agsaSASIdentify_t sasIdentify;
bit32 analogSetupIdx;
bit32 SAWT_DAWT;
bit32 reserved[5];
} agsaPhyStartCmd_t;
#define SPINHOLD_DISABLE (0x00 << 14)
#define SPINHOLD_ENABLE (0x01 << 14)
#define LINKMODE_SAS (0x01 << 12)
#define LINKMODE_DSATA (0x02 << 12)
#define LINKMODE_AUTO (0x03 << 12)
#define LINKRATE_15 (0x01 << 8)
#define LINKRATE_30 (0x02 << 8)
#define LINKRATE_60 (0x04 << 8)
#define LINKRATE_12 (0x08 << 8)
typedef struct agsaPhyStopCmd_s {
bit32 tag;
bit32 phyId;
bit32 reserved[13];
} agsaPhyStopCmd_t;
typedef struct agsaSSPIniIOStartCmd_s {
bit32 tag;
bit32 deviceId;
bit32 dataLen;
bit32 dirMTlr;
agsaSSPCmdInfoUnit_t SSPInfoUnit;
bit32 AddrLow0;
bit32 AddrHi0;
bit32 Len0;
bit32 E0;
} agsaSSPIniIOStartCmd_t;
typedef struct agsaSSPIniTMStartCmd_s {
bit32 tag;
bit32 deviceId;
bit32 relatedTag;
bit32 TMfunction;
bit8 lun[8];
bit32 dsAdsMReport;
bit32 reserved[8];
} agsaSSPIniTMStartCmd_t;
typedef struct agsaSSPIniExtIOStartCmd_s {
bit32 tag;
bit32 deviceId;
bit32 dataLen;
bit32 SSPIuLendirMTlr;
bit8 SSPIu[1];
} agsaSSPIniExtIOStartCmd_t;
typedef struct agsaSSPIniEncryptIOStartCmd_s
{
bit32 tag;
bit32 deviceId;
bit32 dataLen;
bit32 dirMTlr;
bit32 sspiu_0_3_indcdbalL;
bit32 sspiu_4_7_indcdbalH;
bit32 sspiu_8_11;
bit32 sspiu_12_15;
bit32 sspiu_16_19;
bit32 sspiu_19_23;
bit32 sspiu_24_27;
bit32 epl_descL;
bit32 dpl_descL;
bit32 edpl_descH;
bit32 DIF_flags;
bit32 udt;
bit32 udtReplacementLo;
bit32 udtReplacementHi;
bit32 DIF_seed;
bit32 encryptFlagsLo;
bit32 encryptFlagsHi;
bit32 keyTag_W0;
bit32 keyTag_W1;
bit32 tweakVal_W0;
bit32 tweakVal_W1;
bit32 tweakVal_W2;
bit32 tweakVal_W3;
bit32 AddrLow0;
bit32 AddrHi0;
bit32 Len0;
bit32 E0;
} agsaSSPIniEncryptIOStartCmd_t;
typedef struct agsaSSPAbortCmd_s {
bit32 tag;
bit32 deviceId;
bit32 HTagAbort;
bit32 abortAll;
bit32 reserved[11];
} agsaSSPAbortCmd_t;
typedef struct agsaRegDevCmd_s {
bit32 tag;
bit32 phyIdportId;
bit32 dTypeLRateAwtHa;
bit32 ITNexusTimeOut;
bit32 sasAddrHi;
bit32 sasAddrLo;
bit32 DeviceId;
bit32 reserved[8];
} agsaRegDevCmd_t;
typedef struct agsaDeregDevHandleCmd_s {
bit32 tag;
bit32 deviceId;
bit32 portId;
bit32 reserved[12];
} agsaDeregDevHandleCmd_t;
typedef struct agsaGetDevHandleCmd_s {
bit32 tag;
bit32 DevADevTMaxDIDportId;
bit32 skipCount;
bit32 reserved[12];
} agsaGetDevHandleCmd_t;
typedef struct agsaSMPCmd_s {
bit32 tag;
bit32 deviceId;
bit32 IR_IP_OV_res_phyId_DPdLen_res;
bit32 SMPCmd[12];
} agsaSMPCmd_t;
typedef struct agsaSMPCmd_V_s {
bit32 tag;
bit32 deviceId;
bit32 IR_IP_OV_res_phyId_DPdLen_res;
bit32 SMPHDR;
bit32 SMP3_0;
bit32 SMP7_4;
bit32 SMP11_8;
bit32 IndirL_SMPRF15_12;
bit32 IndirH_or_SMPRF19_16;
bit32 IndirLen_or_SMPRF23_20;
bit32 R_or_SMPRF27_24;
bit32 ISRAL_or_SMPRF31_28;
bit32 ISRAH_or_SMPRF35_32;
bit32 ISRL_or_SMPRF39_36;
bit32 R_or_SMPRF43_40;
} agsaSMPCmd_V_t;
typedef struct agsaSMPAbortCmd_s {
bit32 tag;
bit32 deviceId;
bit32 HTagAbort;
bit32 Scp;
bit32 reserved[11];
} agsaSMPAbortCmd_t;
typedef struct agsaSATAStartCmd_s {
bit32 tag;
bit32 deviceId;
bit32 dataLen;
bit32 optNCQTagataProt;
agsaFisRegHostToDevice_t sataFis;
bit32 reserved1;
bit32 reserved2;
bit32 AddrLow0;
bit32 AddrHi0;
bit32 Len0;
bit32 E0;
bit32 ATAPICDB[4];
} agsaSATAStartCmd_t;
typedef struct agsaSATAEncryptStartCmd_s
{
bit32 tag;
bit32 IniDeviceId;
bit32 dataLen;
bit32 optNCQTagataProt;
agsaFisRegHostToDevice_t sataFis;
bit32 reserved1;
bit32 Res_EPL_DESCL;
bit32 resSKIPBYTES;
bit32 Res_DPL_DESCL_NDPLR;
bit32 Res_EDPL_DESCH;
bit32 DIF_flags;
bit32 udt;
bit32 udtReplacementLo;
bit32 udtReplacementHi;
bit32 DIF_seed;
bit32 encryptFlagsLo;
bit32 encryptFlagsHi;
bit32 keyTagLo;
bit32 keyTagHi;
bit32 tweakVal_W0;
bit32 tweakVal_W1;
bit32 tweakVal_W2;
bit32 tweakVal_W3;
bit32 AddrLow0;
bit32 AddrHi0;
bit32 Len0;
bit32 E0;
} agsaSATAEncryptStartCmd_t;
typedef struct agsaSATAAbortCmd_s {
bit32 tag;
bit32 deviceId;
bit32 HTagAbort;
bit32 abortAll;
bit32 reserved[11];
} agsaSATAAbortCmd_t;
typedef struct agsaLocalPhyCntrlCmd_s {
bit32 tag;
bit32 phyOpPhyId;
bit32 reserved1[14];
} agsaLocalPhyCntrlCmd_t;
typedef struct agsaGetDevInfoCmd_s {
bit32 tag;
bit32 DeviceId;
bit32 reserved[13];
} agsaGetDevInfoCmd_t;
typedef struct agsaHWResetCmd_s {
bit32 option;
bit32 reserved[14];
} agsaHWResetCmd_t;
typedef struct agsaFwFlashUpdate_s {
bit32 tag;
bit32 curImageOffset;
bit32 curImageLen;
bit32 totalImageLen;
bit32 reserved0[7];
bit32 SGLAL;
bit32 SGLAH;
bit32 Len;
bit32 extReserved;
} agsaFwFlashUpdate_t;
typedef struct agsaFwFlashOpExt_s {
bit32 tag;
bit32 Command;
bit32 PartOffset;
bit32 DataLength;
bit32 Reserved0[7];
bit32 SGLAL;
bit32 SGLAH;
bit32 Len;
bit32 E_sgl;
bit32 Reserved[15];
} agsaFwFlashOpExt_t;
typedef struct agsaFwFlashOpExtRsp_s {
bit32 tag;
bit32 Command;
bit32 Status;
bit32 Epart_Size;
bit32 EpartSectSize;
bit32 Reserved[10];
} agsaFwFlashOpExtRsp_t;
#define FWFLASH_IOMB_RESERVED_LEN 0x07
#ifdef SPC_ENABLE_PROFILE
typedef struct agsaFwProfileIOMB_s {
bit32 tag;
bit32 tcid_processor_cmd;
bit32 codeStartAdd;
bit32 codeEndAdd;
bit32 reserved0[7];
bit32 SGLAL;
bit32 SGLAH;
bit32 Len;
bit32 extReserved;
} agsaFwProfileIOMB_t;
#define FWPROFILE_IOMB_RESERVED_LEN 0x07
#endif
typedef struct agsaGPIOCmd_s {
bit32 tag;
bit32 eOBIDGeGsGrGw;
bit32 GpioWrMsk;
bit32 GpioWrVal;
bit32 GpioIe;
bit32 OT11_0;
bit32 OT19_12;
bit32 GPIEVChange;
bit32 GPIEVRise;
bit32 GPIEVFall;
bit32 reserved[5];
} agsaGPIOCmd_t;
#define GPIO_GW_BIT 0x1
#define GPIO_GR_BIT 0x2
#define GPIO_GS_BIT 0x4
#define GPIO_GE_BIT 0x8
typedef struct agsaSASDiagStartEndCmd_s {
bit32 tag;
bit32 OperationPhyId;
bit32 reserved[13];
} agsaSASDiagStartEndCmd_t;
typedef struct agsaSASDiagExecuteCmd_s {
bit32 tag;
bit32 CmdTypeDescPhyId;
bit32 Pat1Pat2;
bit32 Threshold;
bit32 CodePatErrMsk;
bit32 Pmon;
bit32 PERF1CTL;
bit32 THRSHLD1;
bit32 reserved[23];
} agsaSASDiagExecuteCmd_t;
typedef struct agsa_SPC_SASDiagExecuteCmd_s {
bit32 tag;
bit32 CmdTypeDescPhyId;
bit32 Pat1Pat2;
bit32 Threshold;
bit32 CodePatErrMsk;
bit32 Pmon;
bit32 PERF1CTL;
bit32 reserved[8];
} agsa_SPC_SASDiagExecuteCmd_t;
#define SAS_DIAG_PARAM_BYTES 24
typedef struct agsaSSPTgtIOStartCmd_s {
bit32 tag;
bit32 deviceId;
bit32 dataLen;
bit32 dataOffset;
bit32 INITagAgrDir;
bit32 reserved;
bit32 DIF_flags;
bit32 udt;
bit32 udtReplacementLo;
bit32 udtReplacementHi;
bit32 DIF_seed;
bit32 AddrLow0;
bit32 AddrHi0;
bit32 Len0;
bit32 E0;
} agsaSSPTgtIOStartCmd_t;
typedef struct agsaSSPTgtRspStartCmd_s {
bit32 tag;
bit32 deviceId;
bit32 RspLen;
bit32 INITag_IP_AN;
bit32 reserved[7];
bit32 AddrLow0;
bit32 AddrHi0;
bit32 Len0;
bit32 E0;
} agsaSSPTgtRspStartCmd_t;
typedef struct agsaDevHandleAcceptCmd_s {
bit32 tag;
bit32 Ctag;
bit32 deviceId;
bit32 DevA_MCN_R_R_HA_ITNT;
bit32 reserved[11];
} agsaDevHandleAcceptCmd_t;
typedef struct agsaSASHwEventAckCmd_s {
bit32 tag;
bit32 sEaPhyIdPortId;
bit32 Param0;
bit32 Param1;
bit32 reserved[11];
} agsaSASHwEventAckCmd_t;
typedef struct agsaGetTimeStampCmd_s {
bit32 tag;
bit32 reserved[14];
} agsaGetTimeStampCmd_t;
typedef struct agsaPortControlCmd_s {
bit32 tag;
bit32 portOPPortId;
bit32 Param0;
bit32 Param1;
bit32 reserved[11];
} agsaPortControlCmd_t;
typedef struct agNVMIndirect_s {
bit32 signature;
bit32 reserved[7];
bit32 ISglAL;
bit32 ISglAH;
bit32 ILen;
bit32 reserved1;
} agNVMIndirect_t;
typedef union agsaSetNVMData_s {
bit32 NVMData[12];
agNVMIndirect_t indirectData;
} agsaSetNVMData_t;
typedef struct agsaSetNVMDataCmd_s {
bit32 tag;
bit32 LEN_IR_VPDD;
bit32 VPDOffset;
agsaSetNVMData_t Data;
} agsaSetNVMDataCmd_t;
typedef struct agsaGetNVMDataCmd_s {
bit32 tag;
bit32 LEN_IR_VPDD;
bit32 VPDOffset;
bit32 reserved[8];
bit32 respAddrLo;
bit32 respAddrHi;
bit32 respLen;
bit32 reserved1;
} agsaGetNVMDataCmd_t;
#define TWI_DEVICE 0x0
#define C_SEEPROM 0x1
#define VPD_FLASH 0x4
#define AAP1_RDUMP 0x5
#define IOP_RDUMP 0x6
#define EXPAN_ROM 0x7
#define DIRECT_MODE 0x0
#define INDIRECT_MODE 0x1
#define IRMode 0x80000000
#define IPMode 0x80000000
#define NVMD_TYPE 0x0000000F
#define NVMD_STAT 0x0000FFFF
#define NVMD_LEN 0xFF000000
#define TWI_DEVICE 0x0
#define SEEPROM 0x1
typedef struct agsaSetDeviceStateCmd_s {
bit32 tag;
bit32 deviceId;
bit32 NDS;
bit32 reserved[12];
} agsaSetDeviceStateCmd_t;
#define DS_OPERATIONAL 0x01
#define DS_IN_RECOVERY 0x03
#define DS_IN_ERROR 0x04
#define DS_NON_OPERATIONAL 0x07
typedef struct agsaGetDeviceStateCmd_s {
bit32 tag;
bit32 deviceId;
bit32 reserved[13];
} agsaGetDeviceStateCmd_t;
typedef struct agsaSetDevInfoCmd_s {
bit32 tag;
bit32 deviceId;
bit32 SA_SR_SI;
bit32 DEVA_MCN_R_ITNT;
bit32 reserved[11];
} agsaSetDevInfoCmd_t;
#define SET_DEV_INFO_V_DW3_MASK 0x0000003F
#define SET_DEV_INFO_V_DW4_MASK 0xFF07FFFF
#define SET_DEV_INFO_SPC_DW3_MASK 0x7
#define SET_DEV_INFO_SPC_DW4_MASK 0x003FFFF
#define SET_DEV_INFO_V_DW3_SM_SHIFT 3
#define SET_DEV_INFO_V_DW3_SA_SHIFT 2
#define SET_DEV_INFO_V_DW3_SR_SHIFT 1
#define SET_DEV_INFO_V_DW3_SI_SHIFT 0
#define SET_DEV_INFO_V_DW4_MCN_SHIFT 24
#define SET_DEV_INFO_V_DW4_AWT_SHIFT 17
#define SET_DEV_INFO_V_DW4_RETRY_SHIFT 16
#define SET_DEV_INFO_V_DW4_ITNEXUS_SHIFT 0
typedef struct agsaSasReInitializeCmd_s {
bit32 tag;
bit32 setFlags;
bit32 MaxPorts;
bit32 openRejReCmdData;
bit32 sataHOLTMO;
bit32 reserved[10];
} agsaSasReInitializeCmd_t;
typedef struct agsaSGpioCmd_s {
bit32 tag;
bit32 regIndexRegTypeFunctionFrameType;
bit32 regCount;
bit32 writeData[OSSA_SGPIO_MAX_WRITE_DATA_COUNT];
} agsaSGpioCmd_t;
typedef struct agsaPCIeDiagExecuteCmd_s {
bit32 tag;
bit32 CmdTypeDesc;
bit32 UUM_EDA;
bit32 UDTR1_UDT0;
bit32 UDT5_UDT2;
bit32 UDTR5_UDTR2;
bit32 Res_IOS;
bit32 rdAddrLower;
bit32 rdAddrUpper;
bit32 wrAddrLower;
bit32 wrAddrUpper;
bit32 len;
bit32 pattern;
bit32 reserved2[2];
bit32 reserved3[16];
} agsaPCIeDiagExecuteCmd_t;
typedef struct agsa_SPC_PCIDiagExecuteCmd_s {
bit32 tag;
bit32 CmdTypeDesc;
bit32 reserved1[5];
bit32 rdAddrLower;
bit32 rdAddrUpper;
bit32 wrAddrLower;
bit32 wrAddrUpper;
bit32 len;
bit32 pattern;
bit32 reserved2[2];
} agsa_SPC_PCIDiagExecuteCmd_t;
typedef struct agsaGetDDEFDataCmd_s {
bit32 tag;
bit32 reserved_In_Ln;
bit32 MCNT;
bit32 reserved1[3];
bit32 Buf_AddrL;
bit32 Buf_AddrH;
bit32 Buf_Len;
bit32 E_reserved;
bit32 reserved2[21];
} agsaGetDDEFDataCmd_t;
typedef struct agsaEchoRsp_s {
bit32 tag;
bit32 payload[14];
} agsaEchoRsp_t;
typedef struct agsaHWEvent_SPC_OUB_s {
bit32 LRStatusEventPhyIdPortId;
bit32 EVParam;
bit32 NpipPortState;
agsaSASIdentify_t sasIdentify;
agsaFisRegDeviceToHost_t sataFis;
} agsaHWEvent_SPC_OUB_t;
#define PHY_ID_BITS 0x000000F0
#define LINK_RATE_MASK 0xF0000000
#define STATUS_BITS 0x0F000000
#define HW_EVENT_BITS 0x00FFFF00
typedef struct agsaHWEvent_Phy_OUB_s {
bit32 tag;
bit32 Status;
bit32 ReservedPhyId;
} agsaHWEvent_Phy_OUB_t;
typedef struct agsaHWEvent_V_OUB_s {
bit32 LRStatEventPortId;
bit32 EVParam;
bit32 RsvPhyIdNpipRsvPortState;
agsaSASIdentify_t sasIdentify;
agsaFisRegDeviceToHost_t sataFis;
} agsaHWEvent_V_OUB_t;
#define PHY_ID_V_BITS 0x00FF0000
#define NIPP_V_BITS 0x0000FF00
typedef struct agsaSSPCompletionRsp_s {
bit32 tag;
bit32 status;
bit32 param;
bit32 SSPTag;
agsaSSPResponseInfoUnit_t SSPrsp;
bit32 respData;
bit32 senseData[5];
bit32 respData1[239];
} agsaSSPCompletionRsp_t;
typedef struct agsaSSPCompletionDifRsp_s {
bit32 tag;
bit32 status;
bit32 param;
bit32 SSPTag;
bit32 Device_Id;
bit32 UpperLBA;
bit32 LowerLBA;
bit32 sasAddressHi;
bit32 sasAddressLo;
bit32 ExpectedCRCUDT01;
bit32 ExpectedUDT2345;
bit32 ActualCRCUDT01;
bit32 ActualUDT2345;
bit32 DIFErrDevID;
bit32 ErrBoffsetEDataLen;
bit32 EDATA_FRM;
} agsaSSPCompletionDifRsp_t;
#define SSP_RESCV_BIT 0x00010000
#define SSP_RESCV_PAD 0x00060000
#define SSP_RESCV_PAD_SHIFT 17
#define SSP_AGR_S_BIT (1 << 19)
typedef struct agsaSMPCompletionRsp_s {
bit32 tag;
bit32 status;
bit32 param;
bit32 SMPrsp[252];
} agsaSMPCompletionRsp_t;
typedef struct agsaDeregDevHandleRsp_s {
bit32 tag;
bit32 status;
bit32 deviceId;
bit32 reserved[12];
} agsaDeregDevHandleRsp_t;
typedef struct agsaGetDevHandleRsp_s {
bit32 tag;
bit32 DeviceIdcPortId;
bit32 deviceId[13];
} agsaGetDevHandleRsp_t;
#define DEVICE_IDC_BITS 0x00FFFF00
#define DEVICE_ID_BITS 0x00000FFF
typedef struct agsaLocalPhyCntrlRsp_s {
bit32 tag;
bit32 phyOpId;
bit32 status;
bit32 reserved[12];
} agsaLocalPhyCntrlRsp_t;
#define LOCAL_PHY_OP_BITS 0x0000FF00
#define LOCAL_PHY_PHYID 0x000000FF
typedef struct agsaDeviceRegistrationRsp_s {
bit32 tag;
bit32 status;
bit32 deviceId;
bit32 reserved[12];
} agsaDeviceRegistrationRsp_t;
#define FAILURE_OUT_OF_RESOURCE 0x01
#define FAILURE_DEVICE_ALREADY_REGISTERED 0x02
#define FAILURE_INVALID_PHY_ID 0x03
#define FAILURE_PHY_ID_ALREADY_REGISTERED 0x04
#define FAILURE_PORT_ID_OUT_OF_RANGE 0x05
#define FAILURE_PORT_NOT_VALID_STATE 0x06
#define FAILURE_DEVICE_TYPE_NOT_VALID 0x07
#define MPI_ERR_DEVICE_HANDLE_UNAVAILABLE 0x1020
#define MPI_ERR_DEVICE_ALREADY_REGISTERED 0x1021
#define MPI_ERR_DEVICE_TYPE_NOT_VALID 0x1022
#define MPI_ERR_PORT_INVALID_PORT_ID 0x1041
#define MPI_ERR_PORT_STATE_NOT_VALID 0x1042
#define MPI_ERR_PORT_STATE_NOT_IN_USE 0x1043
#define MPI_ERR_PORT_OP_NOT_SUPPORTED 0x1044
#define MPI_ERR_PORT_SMP_PHY_WIDTH_EXCEED 0x1045
#define MPI_ERR_PORT_NOT_IN_CORRECT_STATE 0x1047
#define MPI_ERR_PHY_ID_INVALID 0x1061
#define MPI_ERR_PHY_ID_ALREADY_REGISTERED 0x1062
typedef struct agsaSATACompletionRsp_s {
bit32 tag;
bit32 status;
bit32 param;
bit32 FSATArsp;
bit32 respData[11];
} agsaSATACompletionRsp_t;
typedef struct agsaSATAEventRsp_s {
bit32 tag;
bit32 event;
bit32 portId;
bit32 deviceId;
bit32 reserved[11];
} agsaSATAEventRsp_t;
typedef struct agsaSSPEventRsp_s {
bit32 tag;
bit32 event;
bit32 portId;
bit32 deviceId;
bit32 SSPTag;
bit32 EVT_PARAM0_or_LBAH;
bit32 EVT_PARAM1_or_LBAL;
bit32 SAS_ADDRH;
bit32 SAS_ADDRL;
bit32 UDT1_E_UDT0_E_CRC_E;
bit32 UDT5_E_UDT4_E_UDT3_E_UDT2_E;
bit32 UDT1_A_UDT0_A_CRC_A;
bit32 UDT5_A_UDT4_A_UDT3_A_UDT2_A;
bit32 HW_DEVID_Reserved_DIF_ERR;
bit32 EDATA_LEN_ERR_BOFF;
bit32 EDATA_FRM;
} agsaSSPEventRsp_t;
#define SSPTAG_BITS 0x0000FFFF
typedef struct agsaGetDevInfoRspSpc_s {
bit32 tag;
bit32 status;
bit32 deviceId;
bit32 dTypeSrateSMPTOArPortID;
bit32 FirstBurstSizeITNexusTimeOut;
bit8 sasAddrHi[4];
bit8 sasAddrLow[4];
bit32 reserved[8];
} agsaGetDevInfoRsp_t;
#define SMPTO_BITS 0xFFFF
#define NEXUSTO_BITS 0xFFFF
#define FIRST_BURST 0xFFFF
#define FLAG_BITS 0x3
#define LINK_RATE_BITS 0xFF
#define DEV_TYPE_BITS 0x30000000
typedef struct agsaGetDevInfoRspV_s {
bit32 tag;
bit32 status;
bit32 deviceId;
bit32 ARSrateSMPTimeOutPortID;
bit32 IRMcnITNexusTimeOut;
bit8 sasAddrHi[4];
bit8 sasAddrLow[4];
bit32 reserved[8];
} agsaGetDevInfoRspV_t;
#define SMPTO_VBITS 0xFFFF
#define NEXUSTO_VBITS 0xFFFF
#define FIRST_BURST_MCN 0xF
#define FLAG_VBITS 0x3
#define LINK_RATE_VBITS 0xFF
#define DEV_TYPE_VBITS 0x10000000
typedef struct agsaGetPhyProfileCmd_V_s {
bit32 tag;
bit32 Reserved_Ppc_SOP_PHYID;
bit32 reserved[29];
} agsaGetPhyProfileCmd_V_t;
typedef struct agsaGetPhyProfileRspV_s {
bit32 tag;
bit32 status;
bit32 Reserved_Ppc_SOP_PHYID;
bit32 PageSpecificArea[12];
} agsaGetPhyProfileRspV_t;
typedef struct agsaSetPhyProfileCmd_V_s {
bit32 tag;
bit32 Reserved_Ppc_SOP_PHYID;
bit32 PageSpecificArea[29];
} agsaSetPhyProfileCmd_V_t;
typedef struct agsaGetVHistCap_V_s {
bit32 tag;
bit32 Channel;
bit32 NumBitLo;
bit32 NumBitHi;
bit32 reserved0;
bit32 reserved1;
bit32 PcieAddrLo;
bit32 PcieAddrHi;
bit32 ByteCount;
bit32 reserved2[22];
} agsaGetVHistCap_V_t;
typedef struct agsaSetPhyProfileRspV_s {
bit32 tag;
bit32 status;
bit32 Reserved_Ppc_PHYID;
bit32 PageSpecificArea[12];
} agsaSetPhyProfileRspV_t;
typedef struct agsaGetPhyInfoV_s {
bit32 tag;
bit32 Reserved_SOP_PHYID;
bit32 reserved[28];
} agsaGetPhyInfoV_t;
#define SPC_GET_SAS_PHY_ERR_COUNTERS 1
#define SPC_GET_SAS_PHY_ERR_COUNTERS_CLR 2
#define SPC_GET_SAS_PHY_BW_COUNTERS 3
typedef struct agsaFwFlashUpdateRsp_s {
bit32 tag;
bit32 status;
bit32 reserved[13];
} agsaFwFlashUpdateRsp_t;
#ifdef SPC_ENABLE_PROFILE
typedef struct agsaFwProfileRsp_s {
bit32 tag;
bit32 status;
bit32 len;
bit32 reserved[12];
} agsaFwProfileRsp_t;
#endif
typedef struct agsaGPIORsp_s {
bit32 tag;
bit32 reserved[2];
bit32 GpioRdVal;
bit32 GpioIe;
bit32 OT11_0;
bit32 OT19_12;
bit32 GPIEVChange;
bit32 GPIEVRise;
bit32 GPIEVFall;
bit32 reserved1[5];
} agsaGPIORsp_t;
typedef struct agsaGPIOEvent_s {
bit32 GpioEvent;
bit32 reserved[14];
} agsaGPIOEvent_t;
typedef struct agsaGenernalEventRsp_s {
bit32 status;
bit32 inboundIOMB[14];
} agsaGenernalEventRsp_t;
typedef struct agsaSSPAbortRsp_s {
bit32 tag;
bit32 status;
bit32 scp;
bit32 reserved[12];
} agsaSSPAbortRsp_t;
typedef struct agsaSATAAbortRsp_s {
bit32 tag;
bit32 status;
bit32 scp;
bit32 reserved[12];
} agsaSATAAbortRsp_t;
typedef struct agsaSASDiagStartEndRsp_s {
bit32 tag;
bit32 Status;
bit32 reserved[13];
} agsaSASDiagStartEndRsp_t;
typedef struct agsaSASDiagExecuteRsp_s {
bit32 tag;
bit32 CmdTypeDescPhyId;
bit32 Status;
bit32 ReportData;
bit32 reserved[11];
} agsaSASDiagExecuteRsp_t;
typedef struct agsaGeneralEventRsp_s {
bit32 status;
bit32 inbIOMBpayload[14];
} agsaGeneralEventRsp_t;
#define GENERAL_EVENT_PAYLOAD 14
#define OPCODE_BITS 0x00000fff
#define GEN_EVENT_IOMB_V_BIT_NOT_SET 0x01
#define GEN_EVENT_INBOUND_IOMB_OPC_NOT_SUPPORTED 0x02
#define GEN_EVENT_IOMB_INVALID_OBID 0x03
#define GEN_EVENT_DS_IN_NON_OPERATIONAL 0x39
#define GEN_EVENT_DS_IN_RECOVERY 0x3A
#define GEN_EVENT_DS_INVALID 0x49
#define GEN_EVENT_IO_XFER_READ_COMPL_ERR 0x50
typedef struct agsaSSPReqReceivedNotify_s {
bit32 deviceId;
bit32 iniTagSSPIul;
bit32 frameTypeHssa;
bit32 TlrHdsa;
bit32 SSPIu[251];
} agsaSSPReqReceivedNotify_t;
#define SSPIUL_BITS 0x0000FFFF
#define INITTAG_BITS 0x0000FFFF
#define FRAME_TYPE 0x000000FF
#define TLR_BITS 0x00000300
typedef struct agsaDeviceHandleArrivedNotify_s {
bit32 CTag;
bit32 HostAssignedIdFwdDeviceId;
bit32 ProtConrPortId;
bit8 sasAddrHi[4];
bit8 sasAddrLow[4];
bit32 reserved[10];
} agsaDeviceHandleArrivedNotify_t;
#define Conrate_V_MASK 0x0000F000
#define Conrate_V_SHIFT 12
#define Conrate_SPC_MASK 0x0000F000
#define Conrate_SPC_SHIFT 4
#define Protocol_SPC_MASK 0x00000700
#define Protocol_SPC_SHIFT 8
#define Protocol_SPC_MASK 0x00000700
#define Protocol_SPC_SHIFT 8
#define PortId_V_MASK 0xFF
#define PortId_SPC_MASK 0x0F
#define PROTOCOL_BITS 0x00000700
#define PROTOCOL_SHIFT 8
#define SHIFT_REG_64K_MASK 0xffff0000
#define SHIFT_REG_BIT_SHIFT 8
#define SPC_GSM_SM_OFFSET 0x400000
#define SPCV_GSM_SM_OFFSET 0x0
typedef struct agsaGetTimeStampRsp_s {
bit32 tag;
bit32 timeStampLower;
bit32 timeStampUpper;
bit32 reserved[12];
} agsaGetTimeStampRsp_t;
typedef struct agsaSASHwEventAckRsp_s {
bit32 tag;
bit32 status;
bit32 reserved[13];
} agsaSASHwEventAckRsp_t;
typedef struct agsaPortControlRsp_s {
bit32 tag;
bit32 portOPPortId;
bit32 status;
bit32 rsvdPortState;
bit32 reserved[11];
} agsaPortControlRsp_t;
typedef struct agsaSMPAbortRsp_s {
bit32 tag;
bit32 status;
bit32 scp;
bit32 reserved[12];
} agsaSMPAbortRsp_t;
typedef struct agsaGetNVMDataRsp_s {
bit32 tag;
bit32 iRTdaBnDpsAsNvm;
bit32 DlenStatus;
bit32 NVMData[12];
} agsaGetNVMDataRsp_t;
typedef struct agsaSetNVMDataRsp_s {
bit32 tag;
bit32 iPTdaBnDpsAsNvm;
bit32 status;
bit32 reserved[12];
} agsaSetNVMDataRsp_t;
typedef struct agsaDeviceHandleRemoval_s {
bit32 portId;
bit32 deviceId;
bit32 reserved[13];
} agsaDeviceHandleRemoval_t;
typedef struct agsaSetDeviceStateRsp_s {
bit32 tag;
bit32 status;
bit32 deviceId;
bit32 pds_nds;
bit32 reserved[11];
} agsaSetDeviceStateRsp_t;
#define NDS_BITS 0x0F
#define PDS_BITS 0xF0
typedef struct agsaGetDeviceStateRsp_s {
bit32 tag;
bit32 status;
bit32 deviceId;
bit32 ds;
bit32 reserved[11];
} agsaGetDeviceStateRsp_t;
typedef struct agsaSetDeviceInfoRsp_s {
bit32 tag;
bit32 status;
bit32 deviceId;
bit32 SA_SR_SI;
bit32 A_R_ITNT;
bit32 reserved[10];
} agsaSetDeviceInfoRsp_t;
typedef struct agsaSasReInitializeRsp_s {
bit32 tag;
bit32 status;
bit32 setFlags;
bit32 MaxPorts;
bit32 openRejReCmdData;
bit32 sataHOLTMO;
bit32 reserved[9];
} agsaSasReInitializeRsp_t;
typedef struct agsaSGpioRsp_s {
bit32 tag;
bit32 resultFunctionFrameType;
bit32 readData[OSSA_SGPIO_MAX_READ_DATA_COUNT];
} agsaSGpioRsp_t;
typedef struct agsaPCIeDiagExecuteRsp_s {
bit32 tag;
bit32 CmdTypeDesc;
bit32 Status;
bit32 reservedDW4;
bit32 reservedDW5;
bit32 ERR_BLKH;
bit32 ERR_BLKL;
bit32 DWord8;
bit32 DWord9;
bit32 DWord10;
bit32 DWord11;
bit32 DIF_ERR;
bit32 reservedDW13;
bit32 reservedDW14;
bit32 reservedDW15;
} agsaPCIeDiagExecuteRsp_t;
typedef struct agsa_SPC_PCIeDiagExecuteRsp_s {
bit32 tag;
bit32 CmdTypeDesc;
bit32 Status;
bit32 reserved[12];
} agsa_SPC_PCIeDiagExecuteRsp_t;
typedef struct agsaGetDDEFDataRsp_s {
bit32 tag;
bit32 status;
bit32 reserved_In_Ln;
bit32 MCNT;
bit32 NBT;
bit32 reserved[10];
} agsaGetDDEFDataRsp_t;
typedef struct agsaGetVHistCapRsp_s {
bit32 tag;
bit32 status;
bit32 channel;
bit32 BistLo;
bit32 BistHi;
bit32 BytesXfered;
bit32 PciLo;
bit32 PciHi;
bit32 PciBytecount;
bit32 reserved[5];
} agsaGetVHistCapRsp_t;
typedef struct agsaSetControllerConfigCmd_s {
bit32 tag;
bit32 pageCode;
bit32 configPage[13];
} agsaSetControllerConfigCmd_t;
typedef struct agsaSetControllerConfigRsp_s {
bit32 tag;
bit32 status;
bit32 errorQualifierPage;
bit32 reserved[12];
} agsaSetControllerConfigRsp_t;
typedef struct agsaGetControllerConfigCmd_s {
bit32 tag;
bit32 pageCode;
bit32 INT_VEC_MSK0;
bit32 INT_VEC_MSK1;
bit32 reserved[11];
} agsaGetControllerConfigCmd_t;
typedef struct agsaGetControllerConfigRsp_s {
bit32 tag;
bit32 status;
bit32 errorQualifier;
bit32 configPage[12];
} agsaGetControllerConfigRsp_t;
typedef struct agsaDekManagementCmd_s {
bit32 tag;
bit32 KEKIDX_Reserved_TBLS_DSOP;
bit32 dekIndex;
bit32 tableAddrLo;
bit32 tableAddrHi;
bit32 tableEntries;
bit32 Reserved_DBF_TBL_SIZE;
} agsaDekManagementCmd_t;
typedef struct agsaDekManagementRsp_s {
bit32 tag;
bit32 status;
bit32 flags;
bit32 dekIndex;
bit32 errorQualifier;
bit32 reserved[12];
} agsaDekManagementRsp_t;
typedef struct agsaKekManagementCmd_s {
bit32 tag;
bit32 NEWKIDX_CURKIDX_KBF_Reserved_SKNV_KSOP;
bit32 reserved;
bit32 kekBlob[12];
} agsaKekManagementCmd_t;
typedef struct agsaKekManagementRsp_s {
bit32 tag;
bit32 status;
bit32 flags;
bit32 errorQualifier;
bit32 reserved[12];
} agsaKekManagementRsp_t;
typedef struct agsaCoalSspComplCxt_s {
bit32 tag;
bit16 SSPTag;
bit16 reserved;
} agsaCoalSspComplCxt_t;
typedef struct agsaSSPCoalescedCompletionRsp_s {
bit32 coalescedCount;
agsaCoalSspComplCxt_t sspComplCxt[1];
} agsaSSPCoalescedCompletionRsp_t;
typedef struct agsaCoalStpComplCxt_s {
bit32 tag;
bit16 reserved;
} agsaCoalStpComplCxt_t;
typedef struct agsaSATACoalescedCompletionRsp_s {
bit32 coalescedCount;
agsaCoalStpComplCxt_t stpComplCxt[1];
} agsaSATACoalescedCompletionRsp_t;
typedef struct agsaOperatorMangmentCmd_s{
bit32 tag;
bit32 OPRIDX_AUTIDX_R_KBF_PKT_OMO;
bit8 IDString_Role[32];
#ifndef HAILEAH_HOST_6G_COMPITIBILITY_FLAG
agsaEncryptKekBlob_t Kblob;
#endif
bit32 reserved[8];
} agsaOperatorMangmentCmd_t;
typedef struct agsaOperatorMangmentRsp_s {
bit32 tag;
bit32 status;
bit32 OPRIDX_AUTIDX_R_OMO;
bit32 errorQualifier;
bit32 reserved[10];
} agsaOperatorMangmenRsp_t;
typedef struct agsaSetOperatorCmd_s{
bit32 tag;
bit32 OPRIDX_PIN_ACS;
bit32 cert[10];
bit32 reserved[3];
} agsaSetOperatorCmd_t;
typedef struct agsaSetOperatorRsp_s {
bit32 tag;
bit32 status;
bit32 ERR_QLFR_OPRIDX_PIN_ACS;
bit32 reserved[12];
} agsaSetOperatorRsp_t;
typedef struct agsaGetOperatorCmd_s{
bit32 tag;
bit32 option;
bit32 OprBufAddrLo;
bit32 OprBufAddrHi;
bit32 reserved[11];
} agsaGetOperatorCmd_t;
typedef struct agsaGetOperatorRsp_s {
bit32 tag;
bit32 status;
bit32 Num_Option;
bit32 IDString[8];
bit32 reserved[4];
} agsaGetOperatorRsp_t;
typedef struct agsaEncryptBist_s {
bit32 tag;
bit32 r_subop;
bit32 testDiscption[28];
} agsaEncryptBist_t;
typedef struct agsaEncryptBistRsp_s {
bit32 tag;
bit32 status;
bit32 subop;
bit32 testResults[11];
} agsaEncryptBistRsp_t;
typedef struct agsaDifEncOffloadCmd_s{
bit32 tag;
bit32 option;
bit32 reserved[2];
bit32 Src_Data_Len;
bit32 Dst_Data_Len;
bit32 flags;
bit32 UDTR01UDT01;
bit32 UDT2345;
bit32 UDTR2345;
bit32 DPLR0SecCnt_IOSeed;
bit32 DPL_Addr_Lo;
bit32 DPL_Addr_Hi;
bit32 KeyIndex_CMode_KTS_ENT_R;
bit32 EPLR0SecCnt_KS_ENSS;
bit32 keyTag_W0;
bit32 keyTag_W1;
bit32 tweakVal_W0;
bit32 tweakVal_W1;
bit32 tweakVal_W2;
bit32 tweakVal_W3;
bit32 EPL_Addr_Lo;
bit32 EPL_Addr_Hi;
agsaSgl_t SrcSgl;
agsaSgl_t DstSgl;
} agsaDifEncOffloadCmd_t;
typedef struct agsaDifEncOffloadRspV_s {
bit32 tag;
bit32 status;
bit32 ExpectedCRCUDT01;
bit32 ExpectedUDT2345;
bit32 ActualCRCUDT01;
bit32 ActualUDT2345;
bit32 DIFErr;
bit32 ErrBoffset;
} agsaDifEncOffloadRspV_t;
#endif