33#ifdef SA_ENABLE_TRACE_FUNCTIONS
37#define siTraceFileID 'H'
53#ifdef SPC_ENABLE_PROFILE
74 agsaFwProfile_t *fwProfileInfo
82 agsaFwProfileIOMB_t *pPayload;
84 bit32 i, tcid_processor_cmd = 0;
98 SA_DBG1((
"saFwProfile, No request from free list\n" ));
117#ifdef SA_LL_IBQ_PROTECT
127#ifdef SA_LL_IBQ_PROTECT
140 SA_DBG1((
"saFwProfile, error when get free IOMB\n"));
147#ifdef SA_LL_IBQ_PROTECT
160 SA_DBG1((
"saFwProfile, no more IOMB\n"));
164 pPayload = (agsaFwProfileIOMB_t *)pMessage;
165 tcid_processor_cmd = (((fwProfileInfo->tcid)<< 16) | ((fwProfileInfo->processor)<< 8) | fwProfileInfo->cmd);
167 OSSA_WRITE_LE_32(agRoot, pPayload,
OSSA_OFFSET_OF(agsaFwProfileIOMB_t, tag), pRequest->
HTag);
168 OSSA_WRITE_LE_32(agRoot, pPayload,
OSSA_OFFSET_OF(agsaFwProfileIOMB_t, tcid_processor_cmd), tcid_processor_cmd);
169 OSSA_WRITE_LE_32(agRoot, pPayload,
OSSA_OFFSET_OF(agsaFwProfileIOMB_t, codeStartAdd), fwProfileInfo->codeStartAdd);
170 OSSA_WRITE_LE_32(agRoot, pPayload,
OSSA_OFFSET_OF(agsaFwProfileIOMB_t, codeEndAdd), fwProfileInfo->codeEndAdd);
172 pPayload->SGLAL = fwProfileInfo->agSgl.sgLower;
173 pPayload->SGLAH = fwProfileInfo->agSgl.sgUpper;
174 pPayload->Len = fwProfileInfo->agSgl.len;
175 pPayload->extReserved = fwProfileInfo->agSgl.extReserved;
178 for (i = 0; i < FWPROFILE_IOMB_RESERVED_LEN; i ++)
180 pPayload->reserved0[i] = 0;
186#ifdef SA_LL_IBQ_PROTECT
201 SA_DBG1((
"saFwProfile, error when post FW_PROFILE IOMB\n"));
242 SA_DBG1((
"saFwFlashUpdate: agRoot == agNULL\n"));
249 SA_DBG1((
"saFwFlashUpdate: saRoot == agNULL\n"));
261 if (
agNULL == pRequest ) {
263 SA_DBG1((
"saFwFlashUpdate, No request from free list\n" ));
281#ifdef SA_LL_IBQ_PROTECT
290#ifdef SA_LL_IBQ_PROTECT
302 SA_DBG1((
"saFwFlashUpdate, error when get free IOMB\n"));
309#ifdef SA_LL_IBQ_PROTECT
321 SA_DBG1((
"saFwFlashUpdate, no more IOMB\n"));
327 OSSA_WRITE_LE_32( agRoot, pPayload,
329 OSSA_WRITE_LE_32( agRoot, pPayload,
332 OSSA_WRITE_LE_32( agRoot, pPayload,
335 OSSA_WRITE_LE_32( agRoot, pPayload,
349#ifdef SA_LL_IBQ_PROTECT
362 SA_DBG1( (
"saFwFlashUpdate, error when post FW_FLASH_UPDATE IOMB\n") );
398 SA_DBG1((
"saFlashExtExecute, No request from free list\n" ));
418#ifdef SA_LL_IBQ_PROTECT
428#ifdef SA_LL_IBQ_PROTECT
441 SA_DBG1((
"saFlashExtExecute, error when get free IOMB\n"));
449#ifdef SA_LL_IBQ_PROTECT
463 SA_DBG3((
"saFlashExtExecute, no more IOMB\n"));
486#ifdef SA_LL_IBQ_PROTECT
502 SA_DBG1((
"saFlashExtExecute, error when post FW_FLASH_UPDATE IOMB\n"));
512#ifdef SPC_ENABLE_PROFILE
529 agsaFwProfileRsp_t *payload
540 OSSA_READ_LE_32(AGROOT, &tag, payload,
OSSA_OFFSET_OF(agsaFwProfileRsp_t, tag));
542 OSSA_READ_LE_32(AGROOT, &len, payload,
OSSA_OFFSET_OF(agsaFwProfileRsp_t, len));
549 SA_DBG1((
"mpiFwProfileRsp: the request is NULL. Tag=%x\n", tag));
562 SA_DBG1((
"mpiPortControlRsp: pRequest->valid %d not set\n", pRequest->
valid));
572 ossaFwProfileCB(agRoot, agContext,
status, len);
619 SA_DBG1((
"mpiFwFlashUpdateRsp: saving pRequest (%p) for later use\n", pRequest));
675 SA_DBG1((
"mpiFwExtFlashUpdateRsp: saving pRequest (%p) for later use\n", pRequest));
722 bit32 max_wait_count;
723 bit32 ContrlCapFlag, MSGUCfgTblBase, CfgTblDWIdx;
724 bit32 value = 0, value1 = 0;
763 SA_DBG1((
"saGetControllerInfo:AGSA_RC_FAILURE SCRATCH_PAD0 value = 0x%x\n",
770 SA_DBG1((
"saGetControllerInfo:AGSA_RC_FAILURE SCRATCH_PAD0 value = 0x%x\n",
777 SA_DBG1((
"saGetControllerInfo: SCRATCH_PAD1 (0x%x) in error state ila %d raae %d Iop0 %d Iop1 %d\n",
794 SA_DBG1((
"saGetControllerInfo: HDA mode, value = 0x%x\n", value));
807 SA_DBG1((
"saGetControllerInfo: HDA mode AGSA_RC_HDA_NO_FW_RUNNING\n" ));
837 SA_DBG1((
"saGetControllerInfo: timeout SCRATCH_PAD1_V_READY !! SCRATCH_PAD1/2 value = 0x%x 0x%x\n", value, value1));
853 SA_DBG1((
"saGetControllerInfo: SCRATCH_PAD1 value = 0x%x\n", value));
861 SA_DBG1((
"saGetControllerInfo: SCRATCH_PAD2 value = 0x%x\n", value1));
867 SA_DBG1((
"saGetControllerInfo: Timeout!! SCRATCH_PAD1/2 value = 0x%x 0x%x\n", value, value1));
875 SA_DBG1((
"saGetControllerInfo: timeout failure\n"));
881 SA_DBG1((
"saGetControllerInfo: FW Ready, SCRATCH_PAD1/2 value = 0x%x 0x%x\n", value, value1));
937 SA_DBG1((
"saGetControllerInfo: signature 0x%X\n", controllerInfo->
signature));
946 SA_DBG1((
"saGetControllerInfo: phyCount 0x%X\n", controllerInfo->
phyCount));
949 SA_DBG1((
"saGetControllerInfo: PCIWidth 0x%X\n", controllerInfo->
PCIWidth));
983 bit32 max_wait_count;
984 bit32 i, value, value1;
1013#if defined(SALLSDK_DEBUG)
1026 SA_DBG1((
"saGetControllerStatus: HDA mode, value = 0x%x\n", value));
1074 SA_DBG1((
"saGetControllerStatus: (Reserved bit not 0) SCRATCH_PAD1 value = 0x%x\n", value));
1083 SA_DBG1((
"saGetControllerStatus: (Reserved bit not 0) SCRATCH_PAD2 value = 0x%x\n", value1));
1090 SA_DBG1((
"saGetControllerStatus: Timeout!! SCRATCH_PAD1/2 value = 0x%x 0x%x\n", value, value1));
1095 if (!max_wait_count)
1097 SA_DBG1((
"saGetControllerStatus: timeout failure\n"));
1103 SA_DBG1((
"saGetControllerStatus: FW Ready, SCRATCH_PAD1/2 value = 0x%x 0x%x\n", value, value1));
1139 for (i = 0; i < 8; i++)
1152 SA_DBG1((
"saGetControllerStatus: SPCv\n" ));
1180 for (i = 0; i < 8; i++)
1192 for (i = 0; i < 8; i++)
1261 SA_DBG1((
"saGetControllerStatus: tickCount0 0x%x\n", controllerStatus->
tickCount0));
1262 SA_DBG1((
"saGetControllerStatus: tickCount1 0x%x\n", controllerStatus->
tickCount1));
1263 SA_DBG1((
"saGetControllerStatus: tickCount2 0x%x\n", controllerStatus->
tickCount2));
1265 SA_DBG1((
"saGetControllerStatus: phyStatus[0] 0x%08x\n", controllerStatus->
phyStatus[0]));
1266 SA_DBG1((
"saGetControllerStatus: phyStatus[1] 0x%08x\n", controllerStatus->
phyStatus[1]));
1267 SA_DBG1((
"saGetControllerStatus: phyStatus[2] 0x%08x\n", controllerStatus->
phyStatus[2]));
1268 SA_DBG1((
"saGetControllerStatus: phyStatus[3] 0x%08x\n", controllerStatus->
phyStatus[3]));
1269 SA_DBG1((
"saGetControllerStatus: phyStatus[4] 0x%08x\n", controllerStatus->
phyStatus[4]));
1270 SA_DBG1((
"saGetControllerStatus: phyStatus[5] 0x%08x\n", controllerStatus->
phyStatus[5]));
1271 SA_DBG1((
"saGetControllerStatus: phyStatus[6] 0x%08x\n", controllerStatus->
phyStatus[6]));
1272 SA_DBG1((
"saGetControllerStatus: phyStatus[7] 0x%08x\n", controllerStatus->
phyStatus[7]));
1283 SA_DBG1((
"saGetControllerStatus: bootStatus 0x%08x\n", controllerStatus->
bootStatus));
1284 SA_DBG1((
"saGetControllerStatus: bootStatus Active FW Image %x\n", (controllerStatus->
bootStatus & 1 ) ? 1 : 0 ));
1285 SA_DBG1((
"saGetControllerStatus: bootStatus Encryption Cap %x\n", ((controllerStatus->
bootStatus & 0x30000 ) >>
SHIFT16) ));
1286 SA_DBG1((
"saGetControllerStatus: bootStatus Encryption Sec Mode %x\n", ((controllerStatus->
bootStatus & 0xC0000 ) >>
SHIFT18) ));
1287 SA_DBG1((
"saGetControllerStatus: bootStatus Encryption AES XTS %x\n", (controllerStatus->
bootStatus & 0x800000 ) ? 1 : 0 ));
1288 SA_DBG1((
"saGetControllerStatus: bootStatus Encryption Engine Stat 0x%x\n", ((controllerStatus->
bootStatus & 0xFF000000 ) >>
SHIFT24) ));
1406 if (
agNULL == pRequest )
1409 SA_DBG1((
"saGpioEventSetup, No request from free list\n" ));
1443 SA_DBG1((
"saGpioEventSetup: saving pRequest (%p) for later use\n", pRequest));
1451 SA_DBG1((
"saGpioEventSetup, sending IOMB failed\n" ));
1499 if (
agNULL == pRequest )
1502 SA_DBG1((
"saGpioPinSetup, No request from free list\n" ));
1534 SA_DBG1((
"saGpioPinSetup: saving pRequest (%p) for later use\n", pRequest));
1542 SA_DBG1((
"saGpioPinSetup, sending IOMB failed\n" ));
1588 if (
agNULL == pRequest )
1591 SA_DBG1((
"saGpioRead, No request from free list\n" ));
1622 SA_DBG1((
"saGpioRead: saving pRequest (%p) for later use\n", pRequest));
1630 SA_DBG1((
"saGpioRead, sending IOMB failed\n" ));
1661 bit32 gpioWriteMask,
1662 bit32 gpioWriteValue
1680 if (
agNULL == pRequest )
1683 SA_DBG1((
"saGpioWrite, No request from free list\n" ));
1717 SA_DBG1((
"saGpioWrite: saving pRequest (%p) for later use\n", pRequest));
1725 SA_DBG1((
"saGpioWrite, sending IOMB failed\n" ));
1783 if (
agNULL == pRequest )
1786 SA_DBG1((
"saSASDiagExecute, No request from free list\n" ));
1805 si_memset(&payload, 0,
sizeof(payload));
1843 SA_DBG1((
"saSASDiagExecute: saving pRequest (%p) for later use\n", pRequest));
1851 SA_DBG1((
"saSASDiagExecute, sending IOMB failed\n" ));
1897 SA_DBG1((
"saSASDiagStartEnd: agRoot == agNULL\n"));
1904 SA_DBG1((
"saSASDiagStartEnd: saRoot == agNULL\n"));
1910 SA_DBG3((
"saSASDiagStartEnd, phyId 0x%x operation 0x%x\n",phyId,operation ));
1917 if (
agNULL == pRequest )
1920 SA_DBG1((
"saSASDiagStartEnd, No request from free list\n" ));
1951 SA_DBG1((
"saSASDiagStartEnd: saving pRequest (%p) for later use\n", pRequest));
1959 SA_DBG1((
"saSASDiagStartEnd, sending IOMB failed\n" ));
1995 SA_DBG1((
"saGetTimeStamp: agRoot == agNULL\n"));
2002 SA_DBG1((
"saGetTimeStamp: saRoot == agNULL\n"));
2011 SA_DBG3((
"saGetTimeStamp: agContext %p\n", agContext));
2018 if (
agNULL == pRequest )
2021 SA_DBG1((
"saGetTimeStamp, No request from free list\n" ));
2055 SA_DBG1((
"saGetTimeStamp: saving pRequest (%p) for later use\n", pRequest));
2063 SA_DBG1((
"saGetTimeStamp, sending IOMB failed\n" ));
2176 SA_DBG1((
"saReturnRequestToFreePool: saving pRequest (%p) for later use\n", pRequest));
2220 SA_DBG3((
"saSgpio: agContext %p\n", agContext));
2226 SA_DBG1((
"saSgpio, No request from free list\n" ));
2257 SA_DBG1((
"saSgpio, sending IOMB failed\n" ));
2282 bit32 value, value1;
2335#define LEFT_BYTE_FAIL(x, v) \
2336 do {if( (x) < (v) ) return AGSA_RC_FAILURE; } while(0);
2344 bit8 * _buf = buffer;
2354 bit8 * _buf = buffer;
2364 bit32 max_wait_time;
2365 bit32 max_wait_count;
2377 max_wait_time = (2000 * 1000);
2384 if(max_wait_count == 0)
2400 bit32 ErrorTableOffset;
2401 bit32 max_wait_time;
2402 bit32 max_wait_count;
2423 max_wait_time = (2000 * 1000);
2430 if(max_wait_count == 0)
2432 SA_DBG1((
"siWaitForFatalTransfer : 1 Timeout\n"));
2449 bit32 ErrorTableOffset;
2450 bit32 Accum_len = 0;
2459 SA_DBG1((
"siFatalErrorBuffer: agNULL saRoot\n"));
2465 SA_DBG1((
"siFatalErrorBuffer: saRoot->ResetFailed\n"));
2469 SA_DBG2((
"siFatalErrorBuffer:In %p Offset 0x%08x Len 0x%08x Totel len 0x%x\n",
2478 SA_DBG3((
"siFatalErrorBuffer: MPI_FATAL_EDUMP_TABLE_STATUS 0x%x LEN 0x%x\n",
2515 SA_DBG2((
"siFatalErrorBuffer: Accum_len 0x%x\n", Accum_len));
2516 if(Accum_len == 0xFFFFFFFF)
2518 SA_DBG1((
"siFatalErrorBuffer: Possible PCI issue 0x%x not expected\n", Accum_len));
2522 if( Accum_len == 0 || Accum_len >=0x100000 )
2524 SA_DBG1((
"siFatalErrorBuffer: Accum_len == saRoot->FatalCurrentLength 0x%x\n", Accum_len));
2558 SA_DBG2((
"siFatalErrorBuffer: In same 64k FatalBarLoc 0x%x\n",saRoot->
FatalBarLoc ));
2574 SA_DBG1((
"siFatalErrorBuffer: step 0 status %d %p Offset 0x%x Len 0x%x total_len 0x%x\n",
2593 SA_DBG1((
"siFatalErrorBuffer: FatalForensicStep 1 Accum_len 0x%X MPI_FATAL_EDUMP_TABLE_ACCUM_LEN 0x%x\n",
2602 SA_DBG1((
"siFatalErrorBuffer: FatalForensicStep 1\n" ));
2620 SA_DBG3((
"siFatalErrorBuffer:Step 3\n" ));
2645 SA_DBG3((
"siFatalErrorBuffer:Step 4\n" ));
2646 SA_DBG1((
"siFatalErrorBuffer: Done Read 0x%x accum 0x%x\n",
2650#if defined(SALLSDK_DEBUG)
2664 SA_DBG3((
"siFatalErrorBuffer:status 0x%x %p directOffset 0x%x directLen 0x%x readLen 0x%x\n",
2682 bit32 ErrorTableOffset;
2687 bit32 max_wait_time;
2688 bit32 max_wait_count;
2696 SA_DBG1((
"siNonFatalErrorBuffer: agNULL saRoot\n"));
2704 SA_DBG4((
"siNonFatalErrorBuffer: ErrorTableOffset 0x%x\n",ErrorTableOffset ));
2706 SA_DBG4((
"siNonFatalErrorBuffer: MPI_FATAL_EDUMP_TABLE_STATUS Offset 0x%x 0x%x\n",
2709 SA_DBG4((
"siNonFatalErrorBuffer: MPI_FATAL_EDUMP_TABLE_ACCUM_LEN Offset 0x%x 0x%x\n",
2721 SA_DBG1((
"siNonFatalErrorBuffer: directLen larger than DMA Buffer 0x%x < 0x%x\n",
2733 SA_DBG1((
"siNonFatalErrorBuffer: Error\n" ));
2745 SA_DBG1((
"siNonFatalErrorBuffer: %p Offset 0x%x Len 0x%x total_len 0x%x\n",
2751 SA_DBG1((
"siNonFatalErrorBuffer: directOffset zero setup\n" ));
2752 SA_DBG1((
"siNonFatalErrorBuffer: MPI_FATAL_EDUMP_TABLE_STATUS 0x%x LEN 0x%x\n",
2756 SA_DBG1((
"siNonFatalErrorBuffer: Clear V_Scratchpad_Rsvd_0_Register 0x%x\n",
2774 SA_DBG4((
"siNonFatalErrorBuffer: MPI_FATAL_EDUMP_TABLE_STATUS Offset 0x%x 0x%x\n",
2777 SA_DBG4((
"siNonFatalErrorBuffer: MPI_FATAL_EDUMP_TABLE_ACCUM_LEN Offset 0x%x 0x%x\n",
2783 SA_DBG1((
"siNonFatalErrorBuffer: MPI_FATAL_EDUMP_TABLE_ACCUM_LEN 0x%x 0x%x\n",
2800 SA_DBG3((
"siNonFatalErrorBuffer: MPI_FATAL_EDUMP_TABLE_STATUS 0x%x LEN 0x%x\n",
2806 max_wait_time = (2000 * 1000);
2825 SA_DBG1((
"siNonFatalErrorBuffer: timeout waiting ready\n"));
2847 SA_DBG3((
"siNonFatalErrorBuffer: %p directOffset 0x%x directLen 0x%x readLen 0x%x\n",
2891 SA_DBG1((
"siGetForensicData directLen too large !\n"));
2894 SA_DBG1((
"siGetForensicData: TYPE_GSM_SPACE directLen 0x%X directOffset 0x%08X %p\n",
2903 SA_DBG1((
"siGSMDump:Shift Bar4 to 0x%x failed\n", 0x0));
2937 SA_DBG2((
"siGetForensicData: TYPE_INBOUND \n"));
2955 SA_DBG2((
"siGetForensicData: TYPE_OUTBOUND\n"));
2975 SA_DBG2((
"siGetForensicData:TYPE_NON_FATAL \n"));
2985 SA_DBG2((
"siGetForensicData:TYPE_NON_FATAL \n"));
2993 SA_DBG1((
"siGetForensicData receive error parameter!\n"));
3094 SA_DBG3((
"saGetRegisterDump: agContext %p\n", agContext));
3098 SA_DBG1((
"saGetRegisterDump, regDumpSrc %d or regDumpNum %d invalid\n",
3132 SA_DBG1((
"saGetRegisterDump: the device type is not support\n"));
3152 SA_DBG1((
"saGetRegisterDump, Request too many bytes %d\n",
3169 SA_DBG1((
"saGetRegisterDump, the regDumpNum value is wrong %x\n",
3215 void *destinationAddress,
3217 bit32 regDumpOffset,
3223 bit32 rDumpOffset, rDumpLen;
3231 dst = (
bit8 *)destinationAddress;
3235 SA_DBG1((
"siGetRegisterDump, regDumpNum %d is invalid\n", regDumpNum));
3252 SA_DBG1((
"siGetRegisterDump, Request too many bytes %d, rDumpLen %d\n", len, rDumpLen));
3256 if (regDumpOffset >= len)
3258 SA_DBG1((
"siGetRegisterDump, Offset is not within the area %d, regDumpOffset%d\n", rDumpLen, regDumpOffset));
3266 len = (len/4 + 1) * 4;
3269 ret =
siGSMDump(agRoot, rDumpOffset, len, dst);
3381 if (
agNULL == pRequest )
3388 SA_DBG1((
"saSMPStart, using saRoot->freeReservedRequests\n"));
3393 SA_DBG1((
"saSMPStart, No request from free list Not using saRoot->freeReservedRequests\n"));
3411 SA_DBG1((
"saSMPStart, Device has been removed. agDevHandle=%p\n", agDevHandle));
3418 pPort = pDevice->
pPort;
3424 if( using_reserved )
3442 pRequest->
pPort = pPort;
3454#ifdef SA_LL_IBQ_PROTECT
3465#ifdef SA_LL_IBQ_PROTECT
3475 SA_DBG1((
"saSMPStart, error when get free IOMB\n"));
3483#ifdef SA_LL_IBQ_PROTECT
3493 SA_DBG1((
"saSMPStart, no more IOMB\n"));
3497#ifdef SA_LL_IBQ_PROTECT
3507 bit32 IR_IP_OV_res_phyId_DPdLen_res = 0;
3519 SA_DBG2((
"saSMPStart:V Indirect payload and indirect response\n"));
3523 IR_IP_OV_res_phyId_DPdLen_res = 3;
3538 IR_IP_OV_res_phyId_DPdLen_res |= (pSMPFrame->
flag & 3);
3540 OSSA_WRITE_LE_32(agRoot, &payload,
OSSA_OFFSET_OF(
agsaSMPCmd_t, IR_IP_OV_res_phyId_DPdLen_res), IR_IP_OV_res_phyId_DPdLen_res);
3547 payload_ptr = (
bit8 *)&payload;
3548#ifdef SA_LL_IBQ_PROTECT
3554#ifdef SA_LL_IBQ_PROTECT
3565 bit32 IR_IP_OV_res_phyId_DPdLen_res = 0;
3576 SA_DBG2((
"saSMPStart:V Indirect payload and indirect response\n"));
3580 IR_IP_OV_res_phyId_DPdLen_res = 3;
3598 SA_DBG2((
"saSMPStart:V Direct payload and indirect response\n"));
3610 IR_IP_OV_res_phyId_DPdLen_res |= (pSMPFrame->
flag & 3);
3618#ifdef SA_LL_IBQ_PROTECT
3622 payload_ptr = (
bit8 *)&vpayload;
3625#ifdef SA_LL_IBQ_PROTECT
3668 SA_DBG1((
"saReconfigSASParams: AGSA_RC_FAILURE for SPCv\n" ));
3695 bit32 gsmDumpOffset,
3700 bit32 value, rem, offset = 0;
3701 bit32 i, workOffset, dwLength;
3704 SA_DBG1((
"siGSMDump: gsmDumpOffset 0x%x length 0x%x\n", gsmDumpOffset, length));
3707 if (length > (64 * 1024))
3709 SA_DBG1((
"siGSMDump: Max length is greater than 64K bytes 0x%x\n", length));
3713 if (gsmDumpOffset & 3)
3715 SA_DBG1((
"siGSMDump: Not allow NON_DW Boundary 0x%x\n", gsmDumpOffset));
3721 SA_DBG1((
"siGSMDump: Out of GSM end address boundary 0x%x\n", (gsmDumpOffset+length)));
3735 SA_DBG1((
"siGSMDump: device type is not supported"));
3739 workOffset = gsmDumpOffset & 0xFFFF0000;
3740 offset = gsmDumpOffset & 0x0000FFFF;
3741 gsmDumpOffset = workOffset;
3743 dst = (
bit8 *)directData;
3747 dwLength = length >> 2;
3749 for (i =0; i < dwLength; i++)
3751 if((workOffset + offset) > length )
3775 SA_DBG1((
"siGSMDump:Shift Bar4 to 0x%x failed\n", 0x0));
3806 SA_DBG1((
"saPCIeDiagExecute, diag->len Zero\n"));
3808 SA_DBG1((
"saPCIeDiagExecute, diag->command 0x%X\n", diag->
command ));
3809 SA_DBG1((
"saPCIeDiagExecute, diag->flags 0x%X\n",diag->
flags ));
3811 SA_DBG1((
"saPCIeDiagExecute, diag->reserved 0x%X\n",diag->
reserved ));
3816 SA_DBG1((
"saPCIeDiagExecute, diag->len 0x%X\n",diag->
len ));
3817 SA_DBG1((
"saPCIeDiagExecute, diag->pattern 0x%X\n",diag->
pattern ));
3818 SA_DBG1((
"saPCIeDiagExecute, %02X %02X %02X %02X %02X %02X\n",
3826 SA_DBG1((
"saPCIeDiagExecute, %02X %02X %02X %02X %02X %02X\n",
3840 if (
agNULL == pRequest )
3843 SA_DBG1((
"saPCIeDiagExecute, No request from free list\n" ));
3858 si_memset(&payload, 0,
sizeof(payload));
3862 bit32 UDTR1_UDT0 ,UDT5_UDT2,UDTR5_UDTR2;
3912 SA_DBG1((
"saPCIeDiagExecute, sending IOMB failed\n" ));
3936 bit32 reserved_In_Ln;
3950 if (
agNULL == pRequest )
3953 SA_DBG1((
"saGetDFEData, No request from free list\n" ));
3968 si_memset(&payload, 0,
sizeof(payload));
3972 reserved_In_Ln = ((
interface & 0x1) <<
SHIFT7) | (laneNumber & 0x7F);
4002 SA_DBG1((
"saPCIeDiagExecute, sending IOMB failed\n" ));
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 SA_RESERVED_REQUEST_COUNT
void(* ossaSMPCompletedCB_t)(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, agsaFrameHandle_t agFrameHandle)
Callback definition for.
#define smpFrameFlagIndirectResponse
#define OSSA_OFFSET_OF(STRUCT_TYPE, FEILD)
#define AGSA_SMP_IOCTL_REQUEST
#define TYPE_INBOUND_QUEUE
#define AGSA_RC_HDA_NO_FW_RUNNING
#define AGSA_MAX_OUTBOUND_Q
#define MATCHING_SPC_FW_VERSION
#define STSDK_LL_SPC_VERSION
#define OSSA_DIF_ENGINE_FAILURE_MASK
void(* ossaSSPCompletedCB_t)(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, void *agParam, bit16 sspTag, bit32 agOtherInfo)
Callback definition for.
#define AGSA_MAX_INBOUND_Q
#define STSDK_LL_INTERFACE_VERSION
#define TYPE_OUTBOUND_QUEUE
#define STSDK_LL_12G_VERSION
#define AGSA_RC_FW_NOT_IN_READY_STATE
#define smpFrameFlagIndirectPayload
#define OSSA_ENCRYPT_ENGINE_FAILURE_MASK
#define BAR_SHIFT_GSM_OFFSET
#define STSDK_LL_12G_INTERFACE_VERSION
#define SA_SAS_SMP_WRITE_GPIO_REGISTER
#define MPI_IOP_EVENTLOG_INDEX
#define REG_DUMP_NONFLASH
#define LL_IOREQ_LOCKEQ_LOCK
#define REGISTER_DUMP_BUFF_SIZE
#define MPI_EVENTLOG_INDEX
#define LL_IOREQ_IBQ0_LOCK
This file defines global types.
GLOBAL bit32 siGetTableOffset(agsaRoot_t *agRoot, bit32 TableOffsetInTable)
GLOBAL bit32 siGetPciBar(agsaRoot_t *agRoot)
GLOBAL bit32 siHalRegReadExt(agsaRoot_t *agRoot, bit32 generic, bit32 regOffset)
GLOBAL bit32 siBar4Shift(agsaRoot_t *agRoot, bit32 shiftValue)
Function to do BAR shifting.
GLOBAL void siPciCpyMem(agsaRoot_t *agRoot, bit32 soffset, const void *dst, bit32 DWcount, bit32 busBaseNumber)
#define SPCV_IOP1_STATE_MASK
#define SCRATCH_PAD1_V_BOOTSTATE_MASK
#define SCRATCH_PAD1_V_ILA_ERROR_STATE(ScratchPad1)
#define BOOTTLOADERHDA_IDLE
#define MSGU_SCRATCH_PAD_0
#define SPCV_RAAE_STATE_MASK
#define MSGU_SCRATCH_PAD_2
#define MSGU_SCRATCH_PAD_1
#define MSGU_SCRATCH_PAD_3
#define V_MEMBASE_II_ShiftRegister
#define V_Scratchpad_2_Register
#define SCRATCH_PAD1_V_IOP1_ERROR_STATE(ScratchPad1)
#define V_Scratchpad_3_Register
#define HDA_CMD_CODE_OFFSET
#define SCRATCH_PAD0_OFFSET_MASK
#define SCRATCH_PAD1_V_READY
#define HDA_RSP_OFFSET1MB
#define SPCV_IOP0_STATE_MASK
#define V_Scratchpad_1_Register
#define SCRATCH_PAD1_V_RESERVED
#define SCRATCH_PAD0_BAR_MASK
#define SCRATCH_PAD1_V_RAAE_ERROR_STATE(ScratchPad1)
#define V_Scratchpad_0_Register
#define V_Scratchpad_Rsvd_0_Register
#define SCRATCH_PAD1_V_IOP0_ERROR_STATE(ScratchPad1)
#define SCRATCH_PAD1_RESERVED
#define SCRATCH_PAD1_V_ERROR_STATE(ScratchPad1)
#define SCRATCH_PAD2_RESERVED
#define V_Inbound_Doorbell_Set_Register
#define SCRATCH_PAD_STATE_MASK
GLOBAL bit32 si_check_V_HDA(agsaRoot_t *agRoot)
GLOBAL bit32 mpiGetPCIBarIndex(agsaRoot_t *agRoot, bit32 pciBar)
GLOBAL void mpiReadGSTable(agsaRoot_t *agRoot, spc_GSTableDescriptor_t *mpiGSTable)
GLOBAL bit32 si_check_V_Ready(agsaRoot_t *agRoot)
LOCAL bit32 siGSMDump(agsaRoot_t *agRoot, bit32 gsmDumpOffset, bit32 length, void *directData)
Dump GSM registers from the controller.
agsaIORequestDesc_t * saGetRequestFromFreePool(agsaRoot_t *agRoot, agsaContext_t *agContext)
Get a request from free pool.
bit32 siGetRegisterDumpGSM(agsaRoot_t *agRoot, void *destinationAddress, bit32 regDumpNum, bit32 regDumpOffset, bit32 len)
Initiate a GET REGISTER DUMP from GSM command.
bit32 saGetIOErrorStats(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 flag)
bit32 saGetIOEventStats(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 flag)
GLOBAL bit32 saGpioPinSetup(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaGpioPinSetupInfo_t *gpioPinSetupInfo)
SPC Set GPIO Pin Setup Command.
GLOBAL bit32 saFlashExtExecute(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaFlashExtExecute_t *agFlashExtExe)
LOCAL bit32 siWaitForFatalTransfer(agsaRoot_t *agRoot, bit32 pcibar)
bit32 saReconfigSASParams(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaSASReconfig_t *agSASConfig)
Reconfiguration of SAS Parameters Command.
bit32 saGetForensicData(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaForensicData_t *forensicData)
GLOBAL bit32 saSASDiagStartEnd(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 phyId, bit32 operation)
SPC SAS Diagnostic Start/End Command.
LOCAL void siSpcGetErrorContent(agsaRoot_t *agRoot)
for spc card read Error Registers to memory if error occur
LOCAL bit32 siDumpOutboundQueue(void *buffer, bit32 length, mpiOCQueue_t *q)
void saReturnRequestToFreePool(agsaRoot_t *agRoot, agsaIORequestDesc_t *pRequest)
Return request to free pool.
GLOBAL bit32 saGetControllerInfo(agsaRoot_t *agRoot, agsaControllerInfo_t *controllerInfo)
SPC Get Controller Information Command.
LOCAL bit32 siGetForensicData(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaForensicData_t *forensicData)
GLOBAL bit32 saGetControllerEventLogInfo(agsaRoot_t *agRoot, agsaControllerEventLog_t *eventLogInfo)
SPC Get Controller Event Log Information Command.
GLOBAL bit32 saGpioRead(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum)
SPC GPIO Read Command.
GLOBAL bit32 mpiFwExtFlashUpdateRsp(agsaRoot_t *agRoot, agsaFwFlashOpExtRsp_t *payload)
GLOBAL bit32 saGetControllerStatus(agsaRoot_t *agRoot, agsaControllerStatus_t *controllerStatus)
SPC Get Controller Status Command.
bit32 saGetRegisterDump(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaRegDumpInfo_t *regDumpInfo)
Initiate a GET REGISTER DUMP command.
GLOBAL bit32 saGpioEventSetup(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaGpioEventSetupInfo_t *gpioEventSetupInfo)
SPC Set GPIO Event Setup Command.
LOCAL bit32 siDumpInboundQueue(void *buffer, bit32 length, mpiICQueue_t *q)
bit32 saPCIeDiagExecute(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaPCIeDiagExecute_t *diag)
GLOBAL bit32 saSASDiagExecute(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaSASDiagExecute_t *diag)
SPC SAS Diagnostic Execute Command.
LOCAL void siSpcvGetErrorContent(agsaRoot_t *agRoot)
for spcv card read Error Registers to memory if error occur
bit32 saGetNVMDCommand(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaNVMDData_t *NVMDInfo)
SPC Get NVMD Command.
GLOBAL bit32 saGpioWrite(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 gpioWriteMask, bit32 gpioWriteValue)
SPC GPIO Write Command.
LOCAL bit32 siNonFatalErrorBuffer(agsaRoot_t *agRoot, agsaForensicData_t *forensicData)
GLOBAL bit32 saSendSMPIoctl(agsaRoot_t *agRoot, agsaDevHandle_t *agDevHandle, bit32 queueNum, agsaSMPFrame_t *pSMPFrame, ossaSMPCompletedCB_t agCB)
GLOBAL bit32 saFwFlashUpdate(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaUpdateFwFlash_t *flashUpdateInfo)
SPC FW Flash Update Command.
GLOBAL bit32 saSgpio(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaSGpioReqResponse_t *pSGpioReq)
Initiate a serial GPIO command.
bit32 saSetNVMDCommand(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaNVMDData_t *NVMDInfo)
SPC Set NVMD Command.
LOCAL bit32 siFatalErrorBuffer(agsaRoot_t *agRoot, agsaForensicData_t *forensicData)
LOCAL bit32 siWaitForNonFatalTransfer(agsaRoot_t *agRoot, bit32 pcibar)
static void saUpdateIOMap(agsaIOMap_t *pIOMap, bit32 HTag, agsaIORequestDesc_t *pRequest, agsaContext_t *agContext)
Update IOMap Entry
bit32 saGetDFEData(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 interface, bit32 laneNumber, bit32 interations, agsaSgl_t *agSgl)
GLOBAL bit32 mpiFwFlashUpdateRsp(agsaRoot_t *agRoot, agsaFwFlashUpdateRsp_t *payload)
SPC FW_FLASH_UPDATE Respond.
GLOBAL bit32 saGetTimeStamp(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum)
Initiate a GET TIME STAMP command.
#define saLlistIOAdd(pList, pLink)
#define saLlistIORemove(pList, pLink)
#define saLlistIOGetHead(pList)
#define saLlistIOGetCount(pList)
#define saLlistRemove(pList, pLink)
saLlistRemove macro
#define saLlistGetHead(pList)
saLlistGetHead macro
#define MAKE_MODULO(a, b)
GLOBAL bit32 mpiGetNVMDCmd(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaNVMDData_t *NVMDInfo, bit32 queueNum)
Get NVM Data command.
GLOBAL bit32 mpiSasReinitializeCmd(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaSASReconfig_t *agSASConfig, bit32 queueNum)
SAS ReInitialize command.
GLOBAL bit32 mpiNVMReadRegDumpCmd(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 cpuId, bit32 cOffset, bit32 addrHi, bit32 addrLo, bit32 len)
SPC READ REGISTER DUMP Command.
GLOBAL bit32 mpiBuildCmd(agsaRoot_t *agRoot, bit32 *payload, mpiMsgCategory_t category, bit16 opcode, bit16 size, bit32 queueNum)
Build a IOMB command and send to SPC.
GLOBAL bit32 mpiSMPCmd(agsaRoot_t *agRoot, void *pIomb, bit16 opcode, agsaSMPCmd_t *payload, bit8 inq, bit8 outq)
SPC MPI SMP Request Command.
GLOBAL bit32 mpiSetNVMDCmd(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaNVMDData_t *NVMDInfo, bit32 queueNum)
Set NVM Data Command.
#define OPC_INB_FLASH_OP_EXT
#define SPC_GSM_SM_OFFSET
#define OPC_INB_SAS_DIAG_EXECUTE
#define OPC_INB_GET_TIME_STAMP
#define SPCV_GSM_SM_OFFSET
#define OPC_INB_FW_FLASH_UPDATE
#define OPC_INB_PCIE_DIAG_EXECUTE
#define OPC_INB_SMP_REQUEST
#define OPC_INB_SAS_DIAG_MODE_START_END
#define OPC_INB_FW_PROFILE
#define OPC_INB_GET_DFE_DATA
#define FWFLASH_IOMB_RESERVED_LEN
GLOBAL void ossaGetIOErrorStatsCB(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 status, agsaIOErrorEventStats_t *stats)
GLOBAL void ossaGetIOEventStatsCB(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 status, agsaIOErrorEventStats_t *stats)
GLOBAL FORCEINLINE void ossaSingleThreadedEnter(agsaRoot_t *agRoot, bit32 syncLockId)
ossaSingleThreadedEnter
GLOBAL void ossaGetForensicDataCB(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 status, agsaForensicData_t *forensicData)
GLOBAL FORCEINLINE bit32 ossaHwRegReadExt(agsaRoot_t *agRoot, bit32 busBaseNumber, bit32 regOffset)
void ossaGetRegisterDumpCB(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 status)
ossaGetRegisterDumpCB
GLOBAL void ossaFwFlashUpdateCB(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 status)
ossaFwFlashUpdateCB
GLOBAL FORCEINLINE void ossaSingleThreadedLeave(agsaRoot_t *agRoot, bit32 syncLockId)
ossaSingleThreadedLeave
GLOBAL FORCEINLINE void ossaHwRegWriteExt(agsaRoot_t *agRoot, bit32 busBaseNumber, bit32 regOffset, bit32 regValue)
GLOBAL void ossaStallThread(agsaRoot_t *agRoot, bit32 microseconds)
ossaStallThread
osGLOBAL bit32 ossaHwRegReadConfig32(agsaRoot_t *agRoot, bit32 regOffset)
GLOBAL void ossaFlashExtExecuteCB(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 status, bit32 command, agsaFlashExtResponse_t *agFlashExtRsp)
GLOBAL FORCEINLINE bit32 ossaHwRegRead(agsaRoot_t *agRoot, bit32 regOffset)
GLOBAL FORCEINLINE void * si_memcpy(void *dst, void *src, bit32 count)
memcopy
GLOBAL bit32 smIS_SPC(agsaRoot_t *agRoot)
GLOBAL bit32 smIS_SPC12V(agsaRoot_t *agRoot)
GLOBAL FORCEINLINE void * si_memset(void *s, int c, bit32 n)
memset
GLOBAL bit32 smIS_SPC6V(agsaRoot_t *agRoot)
GLOBAL bit32 smIS_SPCV(agsaRoot_t *agRoot)
#define MAIN_FATAL_ERROR_RDUMP1_OFFSET
#define MAIN_MAX_DEV_BITS
#define MAIN_INTERFACE_REVISION
#define MPI_FATAL_EDUMP_TABLE_LO_OFFSET
#define GST_INF_STATE_BITS
#define MAIN_FATAL_ERROR_RDUMP1_LENGTH
#define MPI_FATAL_EDUMP_TABLE_STAT_DMA_FAILED
#define MAIN_FATAL_ERROR_RDUMP0_OFFSET
#define MPI_FATAL_EDUMP_HANDSHAKE_RDY
#define MAIN_CNTRL_CAP_OFFSET
#define MPI_FATAL_EDUMP_TABLE_LENGTH
#define MPI_FATAL_EDUMP_TABLE_STATUS
#define MPI_FATAL_EDUMP_TABLE_HANDSHAKE
#define MAIN_HDA_FLAGS_OFFSET
#define MAIN_MAX_OUTSTANDING_IO_OFFSET
#define MAIN_SAS_SUPPORT_BITS
#define MAIN_MAX_SGL_OFFSET
#define MAIN_HDA_FLAG_BITS
#define MAIN_QSUPPORT_BITS
#define IOCTL_ERROR_NO_FATAL_ERROR
#define MAIN_ILAT_ILAV_ILASMRN_ILAMRN_ILAMJN
#define MPI_FATAL_EDUMP_TABLE_STAT_NF_SUCCESS_DONE
#define MPI_FATAL_EDUMP_TABLE_STAT_NF_SUCCESS_MORE_DATA
#define MAIN_MERRDCTO_MERRDCES
#define SPCV_MSGU_CFG_TABLE_TRANSFER_DEBUG_INFO
#define MAIN_MAX_SGL_BITS
#define MPI_FATAL_EDUMP_TABLE_HI_OFFSET
#define MPI_FATAL_EDUMP_TABLE_ACCUM_LEN
#define MAIN_PHY_COUNT_MASK
#define MAIN_FATAL_ERROR_RDUMP0_LENGTH
data structure stores OS specific and LL specific context
bit32 FatalErrorDumpOffset0
bit32 FatalErrorDumpOffset1
bit32 FatalErrorDumpLength0
bit32 FatalErrorDumpLength1
Circular Queue descriptor.
This structure is used for SPC MPI General Status Table.
bit32 PhyState[MAX_VALID_PHYS]