62#ifdef INITIATOR_DRIVER
70#include <dev/pms/RefTisa/tisa/sassata/sas/tgt/ttdxchg.h>
106 bit32 interruptContext
111 itdsaIni_t *Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
134 smRoot_t *smRoot = &(tdsaAllShared->smRoot);
141 TI_DBG6((
"tiINIIOStart: start\n"));
142 TI_DBG6((
"tiINIIOStart:: ******* tdsaRoot %p tdsaAllShared %p \n", tdsaRoot,tdsaAllShared));
146 TI_DBG6((
"tiINIIOStart: onedevicedata %p\n", oneDeviceData));
148 if(oneDeviceData ==
agNULL)
156 if (oneDeviceData->valid !=
agTRUE || oneDeviceData->registered !=
agTRUE ||
157 oneDeviceData->tdPortContext ==
agNULL )
159 TI_DBG1((
"tiINIIOStart: tiDeviceHandle=%p did %d DeviceData was removed\n",
tiDeviceHandle, oneDeviceData->id));
160 TI_DBG6((
"tiINIIOStart: device AddrHi 0x%08x AddrLo 0x%08x\n",
161 oneDeviceData->SASAddressID.sasAddressHi, oneDeviceData->SASAddressID.sasAddressLo));
165 TI_DBG6((
"tiINIIOStart: IOCompletionFunc %p\n", tdIORequestBody->IOCompletionFunc));
172 TI_DBG1((
"tiINIIOStart: tiIORequest->osData is NULL, wrong\n"));
179 TI_DBG6((
"tiINIIOStart: calling saSSPStart\n"));
181 agRoot = oneDeviceData->agRoot;
182 agDevHandle = oneDeviceData->agDevHandle;
207 tdIORequestBody->IOType.InitiatorRegIO.expDataLength
210 tdIORequestBody->IOType.InitiatorRegIO.sglVirtualAddr
223 TI_DBG1((
"tiINIIOStart: can't get SGL\n"));
229 agIORequest = &(tdIORequestBody->agIORequest);
230 agIORequest->osData = (
void *) tdIORequestBody;
231 agIORequest->sdkData =
agNULL;
238 agSASRequestBody = &(tdIORequestBody->transport.SAS.agSASRequestBody);
239 agSSPInitiatorRequest = &(agSASRequestBody->sspInitiatorReq);
241 agSSPInitiatorRequest->flag = 0;
255 agSSPInitiatorRequest->firstBurstSize = 0;
262 agSSPInitiatorRequest->sspCmdIU.efb_tp_taskAttribute = (
bit8)
263 agSSPInitiatorRequest->sspCmdIU.efb_tp_taskAttribute |
TD_TASK_SIMPLE;
267 agSSPInitiatorRequest->sspCmdIU.efb_tp_taskAttribute = (
bit8)
268 agSSPInitiatorRequest->sspCmdIU.efb_tp_taskAttribute |
TD_TASK_ORDERED;
272 agSSPInitiatorRequest->sspCmdIU.efb_tp_taskAttribute = (
bit8)
277 agSSPInitiatorRequest->sspCmdIU.efb_tp_taskAttribute = (
bit8)
278 agSSPInitiatorRequest->sspCmdIU.efb_tp_taskAttribute |
TD_TASK_ACA;
284 TI_DBG6((
"tiINIIOStart: READ\n"));
289 TI_DBG6((
"tiINIIOStart: WRITE\n"));
294 TI_DBG1((
"tiINIIOStart: unknown data direction\n"));
297 tdIORequestBody->agRequestType = agRequestType;
299 TI_DBG6((
"tiINIIOStart: device AddrHi 0x%08x\n", oneDeviceData->SASAddressID.sasAddressHi));
300 TI_DBG6((
"tiINIIOStart: device AddrLo 0x%08x\n", oneDeviceData->SASAddressID.sasAddressLo));
303 if (tdIORequestBody->IOCompletionFunc ==
agNULL)
305 TI_DBG1((
"tiINIIOStart: Error!!!! IOCompletionFunc is NULL\n"));
316 tdIORequestBody->ioStarted =
agTRUE;
317 tdIORequestBody->ioCompleted =
agFALSE;
318 tdIORequestBody->reTries = 0;
322 Initiator->NumIOsActive++;
327 tdIORequestBody->ioStarted =
agFALSE;
328 tdIORequestBody->ioCompleted =
agTRUE;
331 TI_DBG4((
"tiINIIOStart: saSSPStart busy\n"));
344 TI_DBG5((
"tiINIIOStart: calling satIOStart\n"));
345 TI_DBG5((
"tiINIIOStart: onedevicedata did %d\n", oneDeviceData->id));
351 tdIORequestBody->superIOFlag =
agFALSE;
355 smIORequest = (
smIORequest_t *)&(tdIORequestBody->smIORequest);
356 smIORequest->
tdData = tdIORequestBody;
359 smDeviceHandle->
tdData = oneDeviceData;
385 TI_DBG5((
"tiINIIOStart: calling satIOStart\n"));
386 TI_DBG5((
"tiINIIOStart: onedevicedata did %d\n", oneDeviceData->id));
401 satIOContext = &(tdIORequestBody->transport.SATA.satIOContext);
407 tdIORequestBody->transport.SATA.tiSenseData.senseData =
agNULL;
408 tdIORequestBody->transport.SATA.tiSenseData.senseLen = 0;
409 satIOContext->pSatDevData = &oneDeviceData->satDevData;
411 &tdIORequestBody->transport.SATA.agSATARequestBody.fis.fisRegHostToDev;
412 satIOContext->pScsiCmnd = &tiScsiRequest->
scsiCmnd;
413 satIOContext->pSense = &tdIORequestBody->transport.SATA.sensePayload;
414 satIOContext->pTiSenseData = &tdIORequestBody->transport.SATA.tiSenseData;
415 satIOContext->pTiSenseData->senseData = satIOContext->pSense;
417 satIOContext->tiRequestBody = tiRequestBody;
418 satIOContext->interruptContext = interruptContext;
420 satIOContext->tiScsiXchg = tiScsiRequest;
421 satIOContext->satIntIoContext =
agNULL;
422 satIOContext->satOrgIOContext =
agNULL;
429 satIOContext->currentLBA = 0;
430 satIOContext->OrgTL = 0;
432 TI_DBG5((
"tiINIIOStart: pSatDevData=%p\n", satIOContext->pSatDevData ));
434 tiStatus = satIOStart(
tiRoot,
448 TI_DBG1((
"tiINIIOStart: wrong unspported Device %d\n", oneDeviceData->DeviceType));
460tiINIFastIOSend(
void *ioh)
462 bit32 saStatus, tiStatus;
464 saStatus = saFastSSPSend(ioh);
473tiINIFastIOCancel(
void *ioh)
475 bit32 saStatus, tiStatus;
477 saStatus = saFastSSPCancel(ioh);
489 agsaFastCommand_t *fc)
493 bit32 taskAttribute = fc->taskAttribute;
494 void *ioh = ioHandle;
497 TI_DBG6((
"tiINIFastIOPrepare: enter\n"));
500 if(oneDeviceData ==
agNULL)
502 TI_DBG1((
"tiINIFastIOPrepare: tiDeviceHandle=%p DeviceData is NULL\n",
508 TI_DBG6((
"tiINIFastIOPrepare: onedevicedata %p\n", oneDeviceData));
520 fc->agRoot = oneDeviceData->
agRoot;
525 fc->safb->oneDeviceData = oneDeviceData;
530 switch (taskAttribute)
548 TI_DBG3((
"tiINIFastIOPrepare: data direction: %x\n", fc->agRequestType));
549 TI_DBG6((
"tiINIFastIOPrepare: device AddrHi/Lo 0x%08x / 0x%08x\n",
555 ioHandle = saFastSSPPrepare(ioHandle, fc, ossaFastSSPCompleted, fc->safb);
558 TI_DBG1((
"tiINIFastIOPrepare: saSuperSSPSend error\n"));
564 if (ioh && !ioHandle)
566 saFastSSPCancel(ioh);
569 TI_DBG6((
"tiINIFastIOPrepare: leave\n"));
609 bit32 interruptContext,
650 bit32 interruptContext
655 itdsaIni_t *Initiator =
agNULL;
665 bit32 adjusted_length = 0;
666 bit32 agRequestType = 0;
681#ifdef CCBUILD_INDIRECT_CDB
687 TD_ASSERT(tiRequestBody,
"tiRequestBody");
695 TD_ASSERT(tdsaAllShared,
"tdsaAllShared");
697 Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
701 TD_ASSERT(oneDeviceData,
"oneDeviceData");
705 smRoot = &(tdsaAllShared->smRoot);
710 TI_DBG6((
"tiINISuperIOStart: start\n"));
711 TI_DBG6((
"tiINISuperIOStart:: ******* tdsaRoot %p tdsaAllShared %p \n", tdsaRoot,tdsaAllShared));
713 TI_DBG6((
"tiINISuperIOStart: onedevicedata %p\n", oneDeviceData));
715 if (oneDeviceData ==
agNULL)
725 TI_DBG1((
"tiINISuperIOStart: tiDeviceHandle=%p did %d DeviceData was removed\n",
tiDeviceHandle, oneDeviceData->
id));
726 TI_DBG6((
"tiINISuperIOStart: device AddrHi 0x%08x AddrLo 0x%08x\n",
738 TI_DBG1((
"tiINISuperIOStart: tiIORequest->osData is NULL, wrong\n"));
745 TI_DBG3((
"tiINISuperIOStart: calling saSSPStart\n"));
747 agRoot = oneDeviceData->
agRoot;
779 agIORequest->
osData = (
void *) tdIORequestBody;
785 agSSPInitiatorRequest->
flag = 0;
788 TI_DBG3((
"tiINISuperIOStart: TI_SCSI_INITIATOR_ENCRYPT\n"));
806 TI_DBG3((
"tiINISuperIOStart: TI_SCSI_INITIATOR_DIF\n"));
820 needPlusDataLenAdjustment =
agTRUE;
827 if (needPlusDataLenAdjustment ==
agTRUE)
830 adjusted_length += (adjusted_length/512) * 8;
831 agSSPInitiatorRequest->
dataLength = adjusted_length;
833 else if (needMinusDataLenAdjustment ==
agTRUE)
836 adjusted_length -= (adjusted_length/520) * 8;
837 agSSPInitiatorRequest->
dataLength = adjusted_length;
852 TI_DBG2((
"tiINISuperIOStart:TI_SCSI_INITIATOR_DIF needMinusDataLenAdjustment %d needPlusDataLenAdjustment %d difAction %X\n",
853 needMinusDataLenAdjustment,
854 needPlusDataLenAdjustment,
874 TI_DBG1((
"tiINISuperIOStart: can't get SGL\n"));
906#ifdef CCBUILD_INDIRECT_CDB
914 TI_DBG6((
"tiINISuperIOStart: Indirect READ\n"));
919 TI_DBG6((
"tiINISuperIOStart: Indirect WRITE\n"));
924 TI_DBG1((
"tiINISuperIOStart: unknown data direction\n"));
941 TI_DBG6((
"tiINISuperIOStart: READ\n"));
946 TI_DBG6((
"tiINISuperIOStart: WRITE\n"));
951 TI_DBG1((
"tiINISuperIOStart: unknown data direction\n"));
964 TI_DBG1((
"tiINISuperIOStart: Error!!!! IOCompletionFunc is NULL\n"));
979 Initiator->NumIOsActive++;
990 TI_DBG4((
"tiINISuperIOStart: saSSPStart busy\n"));
1003 TI_DBG5((
"tiINISuperIOStart: calling satIOStart\n"));
1004 TI_DBG5((
"tiINISuperIOStart: onedevicedata did %d\n", oneDeviceData->
id));
1014 tdIORequestBody->superIOFlag =
agTRUE;
1018 smIORequest = (
smIORequest_t *)&(tdIORequestBody->smIORequest);
1019 smIORequest->
tdData = tdIORequestBody;
1020 smIORequest->
smData = &tdIORequestBody->smIORequestBody;
1023 smDeviceHandle->
tdData = oneDeviceData;
1041 TI_DBG5((
"tiINISuperIOStart: calling satIOStart\n"));
1042 TI_DBG5((
"tiINISuperIOStart: onedevicedata did %d\n", oneDeviceData->
id));
1066 satIOContext->
pFis =
1094 satIOContext->
OrgTL = 0;
1098 tiStatus = satIOStart(
tiRoot,
1114 TI_DBG1((
"tiINISuperIOStart: wrong unspported Device %d\n", oneDeviceData->
DeviceType));
1129 bit32 interruptContext
1139 bit32 agRequestType;
1144 TI_DBG6((
"tiINISMPStart: start\n"));
1146 TI_DBG6((
"tiINISMPStart: onedevicedata %p\n", oneDeviceData));
1148 if (oneDeviceData ==
agNULL)
1155 TI_DBG1((
"tiINISMPStart: tiIORequest->osData is NULL, wrong\n"));
1158 agRoot = oneDeviceData->
agRoot;
1164 agIORequest->
osData = (
void *) tdSMPRequestBody;
1166 agSMPFrame = &(agRequestBody->
smpFrame);
1169 TI_DBG1((
"tiINISMPStart: Target Device is not SMP device\n"));
1174 TI_DBG6((
"tiINISMPStart: Direct SMP\n"));
1199 TI_DBG1((
"tiINISMPStart: saSSPStart busy\n"));
1204 TI_DBG1((
"tiINISMPStart: saSSPStart error\n"));
1212 TI_DBG1((
"tiINISMPStart: Indirect SMP! Not supported yet\n"));
1217#ifdef TD_INT_COALESCE
1219tiINIIOStartIntCoalesce(
1224 void *tiRequestBody,
1225 bit32 interruptContext,
1226 tiIntCoalesceContext_t *tiIntCoalesceCxt
1231 itdsaIni_t *Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
1236 bit32 agRequestType;
1243 tdsaIntCoalesceContext_t *tdsaIntCoalCxt;
1244 agsaIntCoalesceContext_t *agIntCoalCxt;
1246 TI_DBG1((
"tiINIIOStartIntCoalesce: start\n"));
1249 TI_DBG6((
"tiINIIOStartIntCoalesce: onedevicedata %p\n", oneDeviceData));
1251 if(oneDeviceData ==
agNULL)
1260 TI_DBG6((
"tiINIIOStartIntCoalesce: calling saSSPStart\n"));
1262 agRoot = oneDeviceData->
agRoot;
1285 tdIORequestBody->IOType.InitiatorRegIO.expDataLength
1298 TI_DBG1((
"tiINIIOStartIntCoalesce: can't get SGL\n"));
1304 agIORequest = &(tdIORequestBody->agIORequest);
1305 agIORequest->osData = (
void *) tdIORequestBody;
1306 agIORequest->sdkData =
agNULL;
1313 agSASRequestBody = &(tdIORequestBody->transport.SAS.agSASRequestBody);
1314 agSSPInitiatorRequest = &(agSASRequestBody->sspInitiatorReq);
1328 agSSPInitiatorRequest->firstBurstSize = 0;
1333 TI_DBG6((
"tiINIIOStartIntCoalesce: READ\n"));
1338 TI_DBG6((
"tiINIIOStartIntCoalesce: WRITE\n"));
1343 TI_DBG1((
"tiINIIOStartIntCoalesce: unknown data direction\n"));
1346 tdIORequestBody->agRequestType = agRequestType;
1348 tdsaIntCoalCxt = (tdsaIntCoalesceContext_t *)tiIntCoalesceCxt->tdData;
1349 agIntCoalCxt = &(tdsaIntCoalCxt->agIntCoalCxt);
1353#ifdef LL_INT_COALESCE
1354 saStatus = saSSPStartIntCoalesce(agRoot,
1363 tdIORequestBody->ioStarted =
agTRUE;
1364 tdIORequestBody->ioCompleted =
agFALSE;
1368 Initiator->NumIOsActive++;
1373 TI_DBG1((
"tiINIIOStartIntCoalesce: saSSPStart failed\n"));
1374 tdIORequestBody->ioStarted =
agFALSE;
1375 tdIORequestBody->ioCompleted =
agTRUE;
1393 TI_DBG1((
"tiINIIOStartIntCoalesce: SATA not supported yet\n"));
1398 TI_DBG1((
"tiINIIOStartIntCoalesce: wrong unspported Device %d\n", oneDeviceData->
DeviceType));
1409tiINIIOStartIntCoalesceDif(
1414 void *tiRequestBody,
1415 bit32 interruptContext,
1416 tiIntCoalesceContext_t *tiIntCoalesceCxt,
1422 itdsaIni_t *Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
1427 bit32 agRequestType;
1428 agsaDifSSPRequestBody_t *agEdcSSPRequestBody =
agNULL;
1433 agsaDifSSPInitiatorRequest_t *agEdcSSPInitiatorRequest;
1435 bit32 agUpdateMask = 0;
1436 bit32 agVerifyMask = 0;
1437 tdsaIntCoalesceContext_t *tdsaIntCoalCxt;
1438 agsaIntCoalesceContext_t *agIntCoalCxt;
1440 TI_DBG1((
"tiINIIOStartIntCoalesceDif: start\n"));
1443 TI_DBG6((
"tiINIIOStartIntCoalesceDif: onedevicedata %p\n", oneDeviceData));
1445 if(oneDeviceData ==
agNULL)
1454 TI_DBG6((
"tiINIIOStartIntCoalesceDif: calling saSSPStart\n"));
1456 agRoot = oneDeviceData->
agRoot;
1479 tdIORequestBody->IOType.InitiatorRegIO.expDataLength
1492 TI_DBG1((
"tiINIIOStartIntCoalesceDif: can't get SGL\n"));
1498 agIORequest = &(tdIORequestBody->agIORequest);
1499 agIORequest->osData = (
void *) tdIORequestBody;
1500 agIORequest->sdkData =
agNULL;
1507 agEdcSSPRequestBody = &(tdIORequestBody->transport.SAS.agEdcSSPRequestBody);
1508 agEdcSSPInitiatorRequest = &(agEdcSSPRequestBody->edcSSPInitiatorReq);
1515 osti_memcpy(agEdcSSPInitiatorRequest->sspCmdIU.lun,
1523 agEdcSSPInitiatorRequest->firstBurstSize = 0;
1529 TI_DBG1((
"tiINIIOStartIntCoalesceDif: READ difAction %X\n",difOption->difAction));
1534 TI_DBG1((
"tiINIIOStartIntCoalesceDif: WRITE difAction %X\n",difOption->difAction));
1539 TI_DBG1((
"tiINIIOStartIntCoalesceDif: unknown data direction\n"));
1542 tdIORequestBody->agRequestType = agRequestType;
1545 tdsaIntCoalCxt = (tdsaIntCoalesceContext_t *)tiIntCoalesceCxt->tdData;
1546 agIntCoalCxt = &(tdsaIntCoalCxt->agIntCoalCxt);
1550 agEdc = &(agEdcSSPInitiatorRequest->edc);
1555 if (difOption->enableBlockCount)
1558 agEdc->edcFlag = agEdc->edcFlag | 0x20;
1561 if (difOption->enableCrc)
1564 agEdc->edcFlag = agEdc->edcFlag | 0x40;
1567 if (difOption->enableIOSeed)
1574 agEdc->edcFlag = agEdc->edcFlag & 0xFFFFFFF8;
1579 agEdc->edcFlag = agEdc->edcFlag | 0x01;
1584 agEdc->edcFlag = agEdc->edcFlag | 0x02;
1590 agEdc->edcFlag = agEdc->edcFlag | 0x04;
1594 agUpdateMask = (difOption->tagUpdateMask) & 0x3F;
1595 agUpdateMask = agUpdateMask << 16;
1596 agEdc->edcFlag = agEdc->edcFlag | agUpdateMask;
1599 agVerifyMask = (difOption->tagVerifyMask) & 0x3F;
1600 agVerifyMask = agVerifyMask << 24;
1601 agEdc->edcFlag = agEdc->edcFlag | agVerifyMask;
1603 agEdc->appTag = difOption->
udtArray[0];
1604 agEdc->appTag = (agEdc->appTag << 8) | difOption->
udtArray[1];
1606 agEdc->lbaReferenceTag = difOption->
udtArray[2];
1607 agEdc->lbaReferenceTag = (agEdc->lbaReferenceTag << 8) | difOption->
udtArray[3];
1608 agEdc->lbaReferenceTag = (agEdc->lbaReferenceTag << 8) | difOption->
udtArray[4];
1609 agEdc->lbaReferenceTag = (agEdc->lbaReferenceTag << 8) | difOption->
udtArray[5];
1612 agEdc->lbSize = 512;
1615#ifdef LL_INT_COALESCE
1616 saStatus = saSSPStartIntCoalesceEdc(agRoot,
1621 agEdcSSPRequestBody,
1625 tdIORequestBody->ioStarted =
agTRUE;
1626 tdIORequestBody->ioCompleted =
agFALSE;
1630 Initiator->NumIOsActive++;
1635 TI_DBG1((
"tiINIIOStartIntCoalesceDif: saSSPStart failed\n"));
1636 tdIORequestBody->ioStarted =
agFALSE;
1637 tdIORequestBody->ioCompleted =
agTRUE;
1654 TI_DBG1((
"tiINIIOStartIntCoalesceDif: SATA not supported yet\n"));
1659 TI_DBG1((
"tiINIIOStartIntCoalesceDif: wrong unspported Device %d\n", oneDeviceData->
DeviceType));
1669tiINIIntCoalesceInit(
1671 tiIntCoalesceContext_t *tiIntCoalesceCxt,
1679 tdsaIntCoalesceContext_t *tdsaIntCoalCxtHead
1680 = (tdsaIntCoalesceContext_t *)tdsaAllShared->IntCoalesce;
1681 tdsaIntCoalesceContext_t *tdsaIntCoalCxt;
1682 agsaIntCoalesceContext_t *agIntCoalCxt;
1687 TI_DBG1((
"tiINIIntCoalesceInit: start\n"));
1697 TI_DBG1((
"tiINIIntCoalesceInit: id %d\n", tdsaIntCoalCxt->id));
1699 agRoot = &(tdsaAllShared->agRootNonInt);
1701 agIntCoalCxt = &(tdsaIntCoalCxt->agIntCoalCxt);
1702 tdsaIntCoalCxt->tiIntCoalesceCxt = tiIntCoalesceCxt;
1703 tiIntCoalesceCxt->tdData = tdsaIntCoalCxt;
1704 agIntCoalCxt->
osData = tdsaIntCoalCxt;
1714#ifdef LL_INT_COALESCE
1715 tiStatus = saIntCoalesceInit(agRoot, agIntCoalCxt, count);
1718 TI_DBG6((
"tiINIIntCoalesceInit: status %d\n", tiStatus));
1724 TI_DBG1((
"tiINIIntCoalesceInit: no more interrupt coalesce context; return fail\n"));
1754 void *sglVirtualAddr
1759 TI_DBG6((
"itdssIOPrepareSGL: start\n"));
1767 TI_DBG1((
"itdssIOPrepareSGL: Error tiSgl1 is NULL\n"));
1773 TI_DBG6((
"itdssIOPrepareSGL: expDataLength is 0\n"));
1783 agSgl->
len = tiSgl1->
len;
1794 void *tiRequestBody,
1802 agsaRoot_t *agRoot = &(tdsaAllShared->agRootInt);
1803 void *respBuffer =
agNULL;
1804 void *osMemHandle =
agNULL;
1805 bit32 ostiMemoryStatus = 0;
1809 bit32 agRequestType = 0;
1829 agIORequest->
osData = (
void *) tdIORequestBody;
1835 (
void **)&respBuffer,
1850 tdsaAllShared->tdFWControlEx.virtAddr = respBuffer;
1852 tdsaAllShared->tdFWControlEx.param1 = agParam1;
1853 tdsaAllShared->tdFWControlEx.param2 = agParam2;
1854 tdsaAllShared->tdFWControlEx.payload = agIOCTLPayload;
1855 tdsaAllShared->tdFWControlEx.inProgress = 1;
1885 tdsaAllShared->tdFWControlEx.virtAddr,
1886 tdsaAllShared->tdFWControlEx.len);
1887 tdsaAllShared->tdFWControlEx.payload =
NULL;
1888 tdsaAllShared->tdFWControlEx.inProgress = 0;
#define DEVICE_IS_SMP_TARGET(DeviceData)
FORCEINLINE void itdssIOCompleted(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, void *agParam, bit32 agOtherInfo)
osGLOBAL void itdssIOForDebugging1Completed(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, void *agParam, bit32 agOtherInfo)
osGLOBAL void itdssIOForDebugging3Completed(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, void *agParam, bit32 agOtherInfo)
osGLOBAL void itdssIOForDebugging2Completed(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, void *agParam, bit32 agOtherInfo)
osGLOBAL bit32 tiINISMPStart(tiRoot_t *tiRoot, tiIORequest_t *tiIORequest, tiDeviceHandle_t *tiDeviceHandle, tiSMPFrame_t *tiSMPFrame, void *tiSMPBody, bit32 interruptContext)
osGLOBAL bit32 tiINIIOStart(tiRoot_t *tiRoot, tiIORequest_t *tiIORequest, tiDeviceHandle_t *tiDeviceHandle, tiScsiInitiatorRequest_t *tiScsiRequest, void *tiRequestBody, bit32 interruptContext)
osGLOBAL FORCEINLINE bit32 itdssIOPrepareSGL(tiRoot_t *tiRoot, tdIORequestBody_t *tdIORequestBody, tiSgl_t *tiSgl1, void *sglVirtualAddr)
osGLOBAL bit32 tiNumOfLunIOCTLreq(tiRoot_t *tiRoot, tiIORequest_t *tiIORequest, tiDeviceHandle_t *tiDeviceHandle, void *tiRequestBody, tiIOCTLPayload_t *agIOCTLPayload, void *agParam1, void *agParam2)
osGLOBAL bit32 tiINISuperIOStart(tiRoot_t *tiRoot, tiIORequest_t *tiIORequest, tiDeviceHandle_t *tiDeviceHandle, tiSuperScsiInitiatorRequest_t *tiScsiRequest, void *tiRequestBody, bit32 interruptContext)
osGLOBAL bit32 tiINIIOStartDif(tiRoot_t *tiRoot, tiIORequest_t *tiIORequest, tiDeviceHandle_t *tiDeviceHandle, tiScsiInitiatorRequest_t *tiScsiRequest, void *tiRequestBody, bit32 interruptContext, tiDif_t *difOption)
osGLOBAL U32 ostiFreeMemory(tiRoot_t *ptiRoot, void *osMemHandle, U32 allocLength)
osGLOBAL U32 ostiAllocMemory(tiRoot_t *ptiRoot, void **osMemHandle, void **agVirtAddr, U32 *agPhysUpper32, U32 *agPhysLower32, U32 alignment, U32 allocLength, agBOOLEAN isCacheable)
osGLOBAL void ossaSMPCAMCompleted(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, agsaFrameHandle_t agFrameHandle)
ossaSMPCAMCompleted
#define osti_memset(s, c, n)
#define osti_memcpy(des, src, n)
The file defines the constants, data structure, and functions defined by LL API.
#define AGSA_REQ_TYPE_UNKNOWN
#define AGSA_SAS_ENABLE_ENCRYPTION
#define AGSA_SSP_INIT_READ_INDIRECT
#define AGSA_SSP_INIT_WRITE_INDIRECT
#define AGSA_SSP_INIT_WRITE
#define AGSA_SSP_INIT_READ
#define AGSA_SMP_INIT_REQ
#define AGSA_SAS_ENABLE_DIF
struct agsaSSPCmdInfoUnit_s agsaSSPCmdInfoUnit_t
data structure describes an SSP Command INFORMATION UNIT
The file defines the declaration of tSDK APIs.
GLOBAL bit32 saSMPStart(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 agRequestType, agsaSASRequestBody_t *agRequestBody, ossaSMPCompletedCB_t agCB)
Start SMP request.
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)
Start SSP request.
The file defines the declaration of OS APIs.
GLOBAL FORCEINLINE void ossaSSPCompleted(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, void *agParam, bit16 sspTag, bit32 agOtherInfo)
ossaSSPCompleted
osGLOBAL void ossaSSPIoctlCompleted(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, void *agParam, bit16 sspTag, bit32 agOtherInfo)
#define DIF_VERIFY_FORWARD
#define DIF_VERIFY_DELETE
osGLOBAL bit32 smSuperIOStart(smRoot_t *smRoot, smIORequest_t *smIORequest, smDeviceHandle_t *smDeviceHandle, smSuperScsiInitiatorRequest_t *smSCSIRequest, bit32 AddrHi, bit32 AddrLo, bit32 interruptContext)
osGLOBAL FORCEINLINE bit32 smIOStart(smRoot_t *smRoot, smIORequest_t *smIORequest, smDeviceHandle_t *smDeviceHandle, smScsiInitiatorRequest_t *smSCSIRequest, bit32 interruptContext)
data structure stores OS specific and LL specific context
agsaFisRegHostToDevice_t * pFis
tiSenseData_t * pTiSenseData
satInternalIo_t * satIntIoContext
struct satIOContext_s * satOrgIOContext
satDeviceData_t * pSatDevData
tiDeviceHandle_t * ptiDeviceHandle
tiIniScsiCmnd_t * pScsiCmnd
data structure for SAS SSP IO reuqest body This structure contains IO related fields....
tiDeviceHandle_t * tiDevHandle
tdssIOCompleted_t IOCompletionFunc
satIOContext_t satIOContext
struct tdIORequestBody_s::@15::@17 SAS
struct tdIORequestBody_s::@15::@18 SATA
union tdIORequestBody_s::@15 transport
scsiRspSense_t sensePayload
union tdIORequestBody_s::@16 IOType
agsaSATAInitiatorRequest_t agSATARequestBody
agsaIORequest_t agIORequest
tiIORequest_t * tiIORequest
agsaSASRequestBody_t agSASRequestBody
struct tdIORequestBody_s::@16::@19 InitiatorRegIO
tiSenseData_t tiSenseData
data structure for SAS/SATA context at TD layer
struct itdsaIni_s * itdsaIni
data structure for SAS device list This structure maintains the device as a list and information abou...
agsaDevHandle_t * agDevHandle
struct tdsaPortContext_s * tdPortContext
TDSASAddressID_t SASAddressID
satDeviceData_t satDevData
the root data structure for TD layer
tdsaContext_t tdsaAllShared
bit8 udtArray[DIF_UDT_SIZE]
tiDataDirection_t dataDirection
tiDataDirection_t dataDirection
#define CLEAR_ESGL_EXTEND(val)
#define TD_TASK_HEAD_OF_QUEUE
#define TDLIST_OBJECT_BASE(baseType, fieldName, fieldPtr)
#define TDLIST_NOT_EMPTY(listHdr)
#define TDLIST_ENQUEUE_AT_TAIL(toAddHdr, listHdr)
#define TDLIST_DEQUEUE_FROM_HEAD(atHeadHdr, listHdr)
void tdsaSingleThreadedEnter(tiRoot_t *ptiRoot, bit32 queueId)
void tdhexdump(const char *ptitle, bit8 *pbuf, int len)
void tdsaSingleThreadedLeave(tiRoot_t *ptiRoot, bit32 queueId)
FORCEINLINE bit32 tdsaRotateQnumber(tiRoot_t *tiRoot, tdsaDeviceData_t *oneDeviceData)
#define TDSA_INP_LEAVE(root)
#define TDSA_INP_ENTER(root)
#define REPORT_LUN_OPCODE
#define IOCTL_CALL_PENDING
#define TI_SCSI_INITIATOR_INDIRECT_CDB
#define TI_SCSI_INITIATOR_DIF
#define TASK_HEAD_OF_QUEUE
#define TI_SCSI_INITIATOR_ENCRYPT
#define IOCTL_CALL_SUCCESS
#define DIF_ACTION_FLAG_MASK
union data structure specifies a request
agsaSSPInitiatorRequest_t sspInitiatorReq
agsaSSPInitiatorRequestIndirect_t sspInitiatorReqIndirect
agsaFisRegHostToDevice_t fisRegHostToDev