#ifndef __SSDKAPI_H__
#define __SSDKAPI_H__
GLOBAL bit32 FORCEINLINE saDelayedInterruptHandler(
agsaRoot_t *agRoot,
bit32 interruptVectorIndex,
bit32 count
);
GLOBAL bit32 FORCEINLINE saInterruptHandler(
agsaRoot_t *agRoot,
bit32 interruptVectorIndex
);
GLOBAL void saSystemInterruptsActive(
agsaRoot_t *agRoot,
agBOOLEAN sysIntsActive
);
GLOBAL FORCEINLINE void saSystemInterruptsEnable(
agsaRoot_t *agRoot,
bit32 interruptVectorIndex
);
GLOBAL void saTimerTick(agsaRoot_t *agRoot);
GLOBAL void saGetRequirements(
agsaRoot_t *agRoot,
agsaSwConfig_t *swConfig,
agsaMemoryRequirement_t *memoryRequirement,
bit32 *usecsPerTick,
bit32 *maxNumLocks
);
GLOBAL bit32 saInitialize(
agsaRoot_t *agRoot,
agsaMemoryRequirement_t *memoryAllocated,
agsaHwConfig_t *hwConfig,
agsaSwConfig_t *swConfig,
bit32 usecsPerTick
);
GLOBAL void saHwReset(
agsaRoot_t *agRoot,
bit32 resetType,
bit32 resetParm
);
GLOBAL void saHwShutdown(agsaRoot_t *agRoot);
GLOBAL bit32 saPhyStart(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 phyId,
agsaPhyConfig_t *agPhyConfig,
agsaSASIdentify_t *agSASIdentify
);
GLOBAL bit32 saPhyStop(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 phyId
);
GLOBAL bit32 saLocalPhyControl(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 phyId,
bit32 phyOperation,
ossaLocalPhyControlCB_t agCB
);
GLOBAL bit32 saGetPhyProfile(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 ppc,
bit32 phyID
);
GLOBAL bit32 saSetPhyProfile (
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 ppc,
bit32 length,
void *buffer,
bit32 phyID
);
GLOBAL bit32 saHwEventAck(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaEventSource_t *eventSource,
bit32 param0,
bit32 param1
);
GLOBAL bit32 saDiscover(
agsaRoot_t *agRoot,
agsaPortContext_t *agPortContext,
bit32 type,
bit32 option
);
GLOBAL bit32 saFrameReadBit32(
agsaRoot_t *agRoot,
agsaFrameHandle_t agFrame,
bit32 frameOffset
);
GLOBAL void saFrameReadBlock(
agsaRoot_t *agRoot,
agsaFrameHandle_t agFrame,
bit32 frameOffset,
void *frameBuffer,
bit32 frameBufLen
);
GLOBAL bit32 saSATAStart(
agsaRoot_t *agRoot,
agsaIORequest_t *agIORequest,
bit32 queueNum,
agsaDevHandle_t *agDevHandle,
bit32 agRequestType,
agsaSATAInitiatorRequest_t *agSATAReq,
bit8 agTag,
ossaSATACompletedCB_t agCB
);
GLOBAL bit32 saSATAAbort(
agsaRoot_t *agRoot,
agsaIORequest_t *agIORequest,
bit32 queueNum,
agsaDevHandle_t *agDevHandle,
bit32 flag,
void *abortParam,
ossaGenericAbortCB_t agCB
);
GLOBAL bit32 saSendSMPIoctl(
agsaRoot_t *agRoot,
agsaDevHandle_t *agDevHandle,
bit32 queueNum,
agsaSMPFrame_t *pSMPFrame,
ossaSMPCompletedCB_t agCB
);
GLOBAL bit32 saSMPStart(
agsaRoot_t *agRoot,
agsaIORequest_t *agIORequest,
bit32 queueNum,
agsaDevHandle_t *agDevHandle,
bit32 agRequestType,
agsaSASRequestBody_t *agRequestBody,
ossaSMPCompletedCB_t agCB
);
GLOBAL bit32 saSMPAbort(
agsaRoot_t *agRoot,
agsaIORequest_t *agIORequest,
bit32 queueNum,
agsaDevHandle_t *agDevHandle,
bit32 flag,
void *abortParam,
ossaGenericAbortCB_t agCB
);
GLOBAL bit32 saSSPStart(
agsaRoot_t *agRoot,
agsaIORequest_t *agIORequest,
bit32 queueNum,
agsaDevHandle_t *agDevHandle,
bit32 agRequestType,
agsaSASRequestBody_t *agRequestBody,
agsaIORequest_t *agTMRequest,
ossaSSPCompletedCB_t agCB
);
#ifdef FAST_IO_TEST
GLOBAL void *saFastSSPPrepare(
void *ioHandle,
agsaFastCommand_t *fc,
ossaSSPCompletedCB_t cb,
void *cbArg);
GLOBAL bit32 saFastSSPSend(void *ioHandle);
GLOBAL bit32 saFastSSPCancel(void *ioHandle);
#endif
GLOBAL bit32 saSSPAbort(
agsaRoot_t *agRoot,
agsaIORequest_t *agIORequest,
bit32 queueNum,
agsaDevHandle_t *agDevHandle,
bit32 flag,
void *abortParam,
ossaGenericAbortCB_t agCB
);
GLOBAL void saGetDifErrorDetails(
agsaRoot_t *agRoot,
agsaIORequest_t *agIORequest,
agsaDifDetails_t *difDetails
);
GLOBAL bit32 saRegisterEventCallback(
agsaRoot_t *agRoot,
bit32 eventSourceType,
ossaGenericCB_t callbackPtr
);
GLOBAL bit32 saRegisterNewDevice(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaDeviceInfo_t *agDeviceInfo,
agsaPortContext_t *agPortContext,
bit16 hostAssignedDeviceId
);
GLOBAL bit32 saDeregisterDeviceHandle(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
agsaDevHandle_t *agDevHandle,
bit32 queueNum
);
GLOBAL bit32 saGetDeviceHandles(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaPortContext_t *agPortContext,
bit32 flags,
agsaDevHandle_t *agDev[],
bit32 skipCount,
bit32 maxDevs
);
GLOBAL bit32 saGetDeviceInfo(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 option,
bit32 queueNum,
agsaDevHandle_t *agDevHandle
);
GLOBAL bit32 saGetDeviceState(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaDevHandle_t *agDevHandle
);
GLOBAL bit32 saSetDeviceInfo(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum ,
agsaDevHandle_t *agDevHandle,
bit32 option,
bit32 param,
ossaSetDeviceInfoCB_t agCB
);
GLOBAL bit32 saSetDeviceState(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaDevHandle_t *agDevHandle,
bit32 newDeviceState
);
GLOBAL bit32 saFwFlashUpdate(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaUpdateFwFlash_t *flashUpdateInfo
);
GLOBAL bit32 saFlashExtExecute (
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaFlashExtExecute_t *agFlashExtExe
);
#ifdef SPC_ENABLE_PROFILE
GLOBAL bit32 saFwProfile(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaFwProfile_t *fwProfileInfo
);
#endif
GLOBAL bit32 saEchoCommand(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
void *echoPayload
);
GLOBAL bit32 saGetControllerInfo(
agsaRoot_t *agRoot,
agsaControllerInfo_t *controllerInfo
);
GLOBAL bit32 saGetControllerStatus(
agsaRoot_t *agRoot,
agsaControllerStatus_t *controllerStatus
);
GLOBAL bit32 saGetControllerEventLogInfo(
agsaRoot_t *agRoot,
agsaControllerEventLog_t *eventLogInfo
);
GLOBAL bit32 saGpioEventSetup(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaGpioEventSetupInfo_t *gpioEventSetupInfo
);
GLOBAL bit32 saGpioPinSetup(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaGpioPinSetupInfo_t *gpioPinSetupInfo
);
GLOBAL bit32 saGpioRead(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum
);
GLOBAL bit32 saGpioWrite(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 gpioWriteMask,
bit32 gpioWriteValue
);
GLOBAL bit32 saSASDiagExecute(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaSASDiagExecute_t *diag
);
GLOBAL bit32 saSASDiagStartEnd(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 phyId,
bit32 operation
);
GLOBAL bit32 saGetTimeStamp(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum
);
GLOBAL bit32 saPortControl(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaPortContext_t *agPortContext,
bit32 portOperation,
bit32 param0,
bit32 param1
);
GLOBAL bit32 saGetRegisterDump(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaRegDumpInfo_t *regDumpInfo
);
GLOBAL bit32 saGetForensicData(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
agsaForensicData_t *forensicData
);
bit32 saGetIOErrorStats(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 flag
);
bit32 saGetIOEventStats(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 flag
);
GLOBAL bit32 saGetNVMDCommand(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaNVMDData_t *NVMDInfo
);
GLOBAL bit32 saSetNVMDCommand(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaNVMDData_t *NVMDInfo
);
GLOBAL bit32 saReconfigSASParams(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum ,
agsaSASReconfig_t *agSASConfig
);
GLOBAL bit32 saSgpio(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaSGpioReqResponse_t *pSGpioReq
);
GLOBAL bit32 saPCIeDiagExecute(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaPCIeDiagExecute_t *diag);
GLOBAL bit32 saEncryptSelftestExecute(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 type,
bit32 length,
void *TestDescriptor);
GLOBAL bit32 saSetOperator(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 flag,
void *cert);
GLOBAL bit32 saGetOperator(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 option,
bit32 AddrHi,
bit32 AddrLo);
GLOBAL bit32 saOperatorManagement(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 flag,
bit8 role,
agsaID_t *id,
agsaEncryptKekBlob_t *kblob);
GLOBAL bit32 saSetControllerConfig(
agsaRoot_t *agRoot,
bit32 queueNum,
bit32 modePage,
bit32 length,
void *buffer,
agsaContext_t *agContext
);
GLOBAL bit32 saGetControllerConfig(
agsaRoot_t *agRoot,
bit32 queueNum,
bit32 modePage,
bit32 flag0,
bit32 flag1,
agsaContext_t *agContext
);
GLOBAL bit32 saEncryptDekCacheUpdate(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 kekIndex,
bit32 dekTableSelect,
bit32 dekAddrHi,
bit32 dekAddrLo,
bit32 dekIndex,
bit32 dekNumberOfEntries,
bit32 dekBlobFormat,
bit32 dekTableKeyEntrySize
);
GLOBAL bit32 saEncryptDekCacheInvalidate(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 dekTable,
bit32 dekIndex
);
GLOBAL bit32 saEncryptGetMode(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
agsaEncryptInfo_t *encryptInfo
);
GLOBAL bit32 saEncryptSetMode (
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
agsaEncryptInfo_t *mode
);
GLOBAL bit32 saEncryptKekInvalidate(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 kekIndex
);
GLOBAL bit32 saEncryptKekUpdate(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 flags,
bit32 newKekIndex,
bit32 wrapperKekIndex,
bit32 blobFormat,
agsaEncryptKekBlob_t *encryptKekBlob
);
#ifdef HIALEAH_ENCRYPTION
GLOBAL bit32 saEncryptHilUpdate(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum
);
#endif
GLOBAL bit32 saGetDFEData(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 interface,
bit32 laneNumber,
bit32 interations,
agsaSgl_t *agSgl);
GLOBAL bit32 saFatalInterruptHandler(
agsaRoot_t *agRoot,
bit32 interruptVectorIndex
);
GLOBAL bit32 saDIFEncryptionOffloadStart(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 op,
agsaDifEncPayload_t *agsaDifEncPayload,
ossaDIFEncryptionOffloadStartCB_t agCB);
GLOBAL bit32 saVhistCapture(
agsaRoot_t *agRoot,
agsaContext_t *agContext,
bit32 queueNum,
bit32 Channel,
bit32 NumBitLo,
bit32 NumBitHi,
bit32 PcieAddrLo,
bit32 PcieAddrHi,
bit32 ByteCount );
GLOBAL void saCountActiveIORequests( agsaRoot_t *agRoot);
#ifdef SA_64BIT_TIMESTAMP
osGLOBAL bit64 osTimeStamp64(void);
#endif
#ifdef SALL_API_TEST
GLOBAL bit32 saGetLLCounters(
agsaRoot_t *agRoot,
bit32 counters,
agsaLLCountInfo_t *LLCountInfo
);
GLOBAL bit32 saResetLLCounters(
agsaRoot_t *agRoot,
bit32 counters
);
#endif
#endif