33#ifdef SA_ENABLE_TRACE_FUNCTIONS
37#define siTraceFileID 'M'
79 bit32 deviceIndex = 0;
82 bit32 encryptFlags = 0;
85 bit8 inq = 0, outq = 0;
93 SA_ASSERT((
agNULL != agIORequest),
"(saSATAStart) agIORequest is NULL");
94 SA_ASSERT((
agNULL != agDevHandle),
"(saSATAStart) agDevHandle is NULL");
106 pPort = pDevice->
pPort;
152 pRequest->
pPort = pPort;
157 agIORequest->
sdkData = pRequest;
163#ifdef SA_LL_IBQ_PROTECT
173#ifdef SA_LL_IBQ_PROTECT
183 SA_DBG3((
"saSATAStart, error when get free IOMB\n"));
192#ifdef SA_LL_IBQ_PROTECT
202 SA_DBG1((
"saSATAStart, no more IOMB\n"));
212 SA_DBG1((
"saSATAStart, No request from free list\n"));
218 payload = (
bit32 *)pMessage;
219 SA_DBG4((
"saSATAStart: Payload offset 0x%X\n", (
unsigned int)(payload - (
bit32 *)pMessage)));
222 switch ( agRequestType )
228 pSgl = &(agSATAReq->
agSgl);
247 pSgl = &(agSATAReq->
agSgl);
290 SA_DBG1((
"saSATAStart: (Unknown agRequestType) 0x%X \n",agRequestType));
291 SA_ASSERT((0),
"saSATAStart: (Unknown agRequestType)");
301 SA_DBG3((
"saSATAStart:AGSA_SATA_PROTOCOL_SRST_DEASSERT AGSA_SATA_PROTOCOL_SRST_ASSERT\n"));
311 OSSA_WRITE_LE_32(agRoot,
333 SA_DBG4((
"saSATAStart: 1 Payload offset 0x%X\n", (
unsigned int)(payload - (
bit32 *)pMessage)));
342#ifdef CCBUILD_TEST_EPL
347 OSSA_WRITE_LE_32(agRoot,
362 SA_DBG4((
"saSATAStart: 2 Payload offset 0x%X\n", (
unsigned int)(payload - (
bit32 *)pMessage)));
367 SA_DBG4((
"saSATAStart: 2a Payload offset 0x%X\n", (
unsigned int)(payload - (
bit32 *)pMessage)));
394 SA_DBG4((
"saSATAStart: 3 Payload offset 0x%X\n", (
unsigned int)(payload - (
bit32 *)pMessage)));
460 SA_DBG4((
"saSATAStart: 4 Payload offset 0x%X\n", (
unsigned int)(payload - (
bit32 *)pMessage)));
559#ifdef SA_LL_IBQ_PROTECT
566 saRoot->LLCounters.IOCounter.numSataStarted++;
614 bit32 flag_copy = flag;
623 SA_DBG3((
"saSATAAbort: Aborting request %p ITtoBeAborted %p\n", agIORequest, abortParam));
638 SA_DBG1((
"saSATAAbort: pRequest AGSA_RC_FAILURE\n"));
647 if (
agNULL == pRequestABT)
650 SA_DBG1((
"saSATAAbort: pRequestABT AGSA_RC_FAILURE\n"));
654 pDeviceABT = pRequestABT->
pDevice;
659 SA_DBG1((
"saSATAAbort: pDeviceABT AGSA_RC_FAILURE\n"));
668 pPort = pDevice->
pPort;
682 pPort = pDevice->
pPort;
689 SA_DBG1((
"saSATAAbort: flag AGSA_RC_FAILURE\n"));
699 SA_DBG1((
"saSATAAbort, No request from free list\n" ));
719 pRequest->
pPort = pPort;
725 agIORequest->
sdkData = pRequest;
731#ifdef SA_LL_IBQ_PROTECT
743#ifdef SA_LL_IBQ_PROTECT
753 SA_DBG1((
"saSATAAbort, error when get free IOMB\n"));
761#ifdef SA_LL_IBQ_PROTECT
771 SA_DBG1((
"saSATASAbort, no more IOMB\n"));
784 if (
agNULL == pDeviceABT )
786 #ifdef SA_LL_IBQ_PROTECT
796 SA_DBG1((
"saSATAAbort,no device\n" ));
827#ifdef SA_LL_IBQ_PROTECT
834 saRoot->LLCounters.IOCounter.numSataAborted++;
869#if defined(SALLSDK_DEBUG)
927 for ( i = 0; i < 5; i ++ )
929 pDstSignature[i] = pSrcSignature[i];
GLOBAL FORCEINLINE bit32 mpiMsgProduce(mpiICQueue_t *circularQ, void *messagePtr, mpiMsgCategory_t category, bit16 opCode, bit8 responseQueue, bit8 hiPriority)
GLOBAL FORCEINLINE bit32 mpiMsgFreeGet(mpiICQueue_t *circularQ, bit16 messageSize, void **messagePtr)
Retrieves a free message buffer from an inbound queue.
#define smTraceFuncEnter(L, I)
#define smTraceFuncExit(L, S, I)
#define AGSA_SATA_PROTOCOL_SRST_DEASSERT
#define AGSA_SATA_PROTOCOL_DEV_RESET
#define AGSA_SATA_PROTOCOL_FPDMA_WRITE_M
void * agsaFrameHandle_t
handle to access frame
#define OSSA_OFFSET_OF(STRUCT_TYPE, FEILD)
#define AGSA_SATA_PROTOCOL_PIO_WRITE_M
#define AGSA_SATA_PROTOCOL_H2D_PKT
#define AGSA_SATA_PROTOCOL_DEV_RESET_M
#define AGSA_SATA_PROTOCOL_PIO_READ_M
#define AGSA_SATA_PROTOCOL_PIO_READ
void(* ossaGenericAbortCB_t)(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 flag, bit32 status)
Callback definition for abort SMP SSP SATA callback.
#define AGSA_SATA_ATAP_MASK
#define AGSA_SATA_ENABLE_DIF
#define AGSA_SATA_ATAP_SRST_ASSERT
#define AGSA_SATA_ATAP_SRST_DEASSERT
#define AGSA_SATA_PROTOCOL_NON_DATA_M
void(* ossaSSPCompletedCB_t)(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, void *agParam, bit16 sspTag, bit32 agOtherInfo)
Callback definition for.
void(* ossaSATACompletedCB_t)(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, void *agFirstDword, bit32 agIOInfoLen, void *agParam)
Callback definition for.
#define AGSA_SATA_REQTYPE
#define AGSA_MAX_INBOUND_Q
#define AGSA_SATA_ATAP_PKT_DEVRESET
#define AGSA_ENCRYPT_KEY_TAG_BIT
#define AGSA_SATA_PROTOCOL_DMA_READ
#define AGSA_SATA_PROTOCOL_NON_PKT
#define agsaEncryptCipherModeXTS
#define AGSA_SATA_PROTOCOL_FPDMA_WRITE
#define AGSA_SATA_PROTOCOL_PIO_WRITE
#define AGSA_SATA_PROTOCOL_SRST_ASSERT
#define AGSA_SATA_ENABLE_ENCRYPTION
#define AGSA_ENCRYPT_XTS_Mode
#define AGSA_SATA_PROTOCOL_FPDMA_READ
#define AGSA_SATA_PROTOCOL_FPDMA_READ_M
#define AGSA_SATA_PROTOCOL_DMA_WRITE_M
#define AGSA_SATA_PROTOCOL_DMA_READ_M
#define AGSA_SATA_PROTOCOL_NON_DATA
#define AGSA_SATA_PROTOCOL_DMA_WRITE
#define AGSA_SATA_PROTOCOL_D2H_PKT
#define LL_IOREQ_LOCKEQ_LOCK
#define ABORT_TSDK_QUARANTINE
#define LL_IOREQ_IBQ0_LOCK
#define ABORT_QUARANTINE_SPCV
This file defines global types.
#define saLlistIOAdd(pList, pLink)
#define saLlistIORemove(pList, pLink)
#define saLlistIOGetHead(pList)
#define OPC_INB_SATA_DIF_ENC_OPSTART
#define OPC_INB_SATA_ABORT
#define OPC_INB_SATA_HOST_OPSTART
GLOBAL FORCEINLINE void ossaSingleThreadedEnter(agsaRoot_t *agRoot, bit32 syncLockId)
ossaSingleThreadedEnter
GLOBAL FORCEINLINE void ossaSingleThreadedLeave(agsaRoot_t *agRoot, bit32 syncLockId)
ossaSingleThreadedLeave
#define OSSA_INP_ENTER(root)
#define OSSA_INP_LEAVE(root)
GLOBAL void siCountActiveIORequestsOnDevice(agsaRoot_t *agRoot, bit32 device)
siCountActiveIORequestsOnDevice count all active IO's
GLOBAL FORCEINLINE void * si_memcpy(void *dst, void *src, bit32 count)
memcopy
GLOBAL FORCEINLINE void * si_memset(void *s, int c, bit32 n)
memset
GLOBAL bit32 smIS_SPCV(agsaRoot_t *agRoot)
GLOBAL void siSATASignatureCpy(bit8 *pDstSignature, bit8 *pSrcSignature)
copy a SATA signature to another
GLOBAL bit32 saSATAAbort(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 flag, void *abortParam, ossaGenericAbortCB_t agCB)
Abort SATA command.
GLOBAL bit32 saSATAStart(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 agRequestType, agsaSATAInitiatorRequest_t *agSATAReq, bit8 agTag, ossaSATACompletedCB_t agCB)
Start SATA command.
GLOBAL void siEventSATAResponseWtDataRcvd(agsaRoot_t *agRoot, agsaIORequestDesc_t *pRequest, bit32 *agFirstDword, bit32 *pResp, bit32 lengthResp)
Routine to handle for received SATA with data payload event.
data structure stores OS specific and LL specific context
Circular Queue descriptor.
agsaFisRegHostToDevice_t fisRegHostToDev