1 /*******************************************************************************
2 *Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved.
4 *Redistribution and use in source and binary forms, with or without modification, are permitted provided
5 *that the following conditions are met:
6 *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
8 *2. Redistributions in binary form must reproduce the above copyright notice,
9 *this list of conditions and the following disclaimer in the documentation and/or other materials provided
10 *with the distribution.
12 *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13 *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14 *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16 *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17 *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19 *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
23 ********************************************************************************/
24 /*******************************************************************************/
27 * function definitions used in SAS/SATA TD layer
35 #include <dev/pms/RefTisa/discovery/api/dm.h>
38 /*****************************************************************************
40 * SA SHARED PROTOTYPES
42 *****************************************************************************/
63 tdsaTimerRequest_t *timerRequest
69 tdsaTimerRequest_t *timerRequest,
71 tdsaTimerCBFunc_t CBFunc,
80 tdList_t *timerListHdr,
81 tdsaTimerRequest_t *timerRequest
87 tdsaTimerRequest_t *timerRequest
95 tdsaLoLevelGetResource (
97 tiLoLevelResource_t * loResource
101 tdsaSharedMemCalculate (
103 tiLoLevelResource_t * loResource,
104 tiTdSharedMem_t * tdSharedMem
108 tdsaGetEsglPagesInfo(
122 tdsaGetSwConfigParams(
127 tdsaGetHwConfigParams(
132 tdsaGetCardPhyParams(
138 tdsaGetGlobalPhyParams(
148 tdsaParseLinkRateMode(
153 bit32 OpticalModeRead,
170 tdsaInitTimerHandler(
178 tdList_t *EsglListHdr,
186 tdList_t *EsglListHdr
190 tdssGetMaxTargetsParams(
196 tdssGetSATAOnlyModeParams(
204 tiIOCTLPayload_t *agIOCTLPayload,
213 tiIOCTLPayload_t *agIOCTLPayload,
222 tiIOCTLPayload_t *agIOCTLPayload,
229 ostiCOMMgntVPDSetIOCTLRsp(
235 tdsaFreeCardID(tiRoot_t *tiRoot,
244 tdsaDeviceData_t *oneDeviceData
250 tdsaPortContext_t *onePortContext
256 tiIOCTLPayload_t *agIOCTLPayload,
265 tiIOCTLPayload_t *agIOCTLPayload,
274 tiIOCTLPayload_t *agIOCTLPayload,
280 osGLOBAL void ostiGetGpioIOCTLRsp(
284 agsaGpioPinSetupInfo_t *gpioPinSetupInfo,
285 agsaGpioEventSetupInfo_t *gpioEventSetupInfo
291 agsaContext_t *agContext,
292 tiIOCTLPayload_t *agIOCTLPayload,
301 agsaContext_t *agContext,
302 tiIOCTLPayload_t *agIOCTLPayload,
307 osGLOBAL void ostiSgpioIoctlRsp(
309 agsaSGpioReqResponse_t *pSgpioResponse
312 tdsaDeviceInfoGetIoctl(
314 tiIOCTLPayload_t *agIOCTLPayload,
321 tdsaIoErrorStatisticGetIoctl(
323 tiIOCTLPayload_t *agIOCTLPayload,
330 tdsaIoEventStatisticGetIoctl(
332 tiIOCTLPayload_t *agIOCTLPayload,
339 tdsaForensicDataGetIoctl(
341 tiIOCTLPayload_t *agIOCTLPayload,
350 tiIOCTLPayload_t *agIOCTLPayload,
359 tiIOCTLPayload_t *agIOCTLPayload,
368 tiIOCTLPayload_t *agIOCTLPayload,
371 unsigned long resetType
378 tiIOCTLPayload_t *agIOCTLPayload,
385 tdsaGetPhyGeneralStatusIoctl(
387 agsaPhyGeneralState_t *PhyData
390 osGLOBAL void ostiGetPhyGeneralStatusRsp(
392 agsaSASPhyGeneralStatusPage_t *GenStatus,
400 tiIOCTLPayload_t *agIOCTLPayload,
407 tdsaDeregisterDevicesInPort(
409 tdsaPortContext_t *onePortContext
425 /*****************************************************************************
427 * SAS SHARED PROTOTYPES
429 *****************************************************************************/
441 tdsaPortContextReInit(
443 tdsaPortContext_t *onePortContext
452 tdsaDeviceDataReInit(
454 tdsaDeviceData_t *oneDeviceData
457 #ifdef TD_INT_COALESCE
464 osGLOBAL FORCEINLINE bit32
465 tdsaRotateQnumber(tiRoot_t *tiRoot,
466 tdsaDeviceData_t *oneDeviceData);
469 tdsaRotateQnumber1(tiRoot_t *tiRoot,
470 tdsaDeviceData_t *oneDeviceData );
472 tdssRemoveSASSATAFromSharedcontext(
474 tdsaPortContext_t *PortContext_Instance
477 tdssRemoveSASSATAFromSharedcontextByReset(
481 tdssSASFindDiscoveringExpander(
483 tdsaPortContext_t *onePortContext,
484 tdsaExpander_t *oneExpander
488 tdssAddSASToSharedcontext(
489 tdsaPortContext_t *tdsaPortContext_Instance,
491 agsaDevHandle_t *agDevHandle,
492 tdsaSASSubID_t *agSASSubID,
499 tdssRemoveSASFromSharedcontext(
500 tdsaPortContext_t *tdsaPortContext_Ins,
501 tdsaDeviceData_t *tdsaDeviceData_ins,
506 tdssRemoveAllDevicelistFromPortcontext(
507 tdsaPortContext_t *PortContext_Ins,
512 tdssAddSATAToSharedcontext( tdsaPortContext_t *tdsaPortContext_Instance,
514 agsaDevHandle_t *agDevHandle,
515 agsaSATADeviceInfo_t *agSATADeviceInfo,
521 tdssSubAddSATAToSharedcontext( tiRoot_t *tiRoot,
522 tdsaDeviceData_t *oneDeviceData
526 tdssRetrySATAID( tiRoot_t *tiRoot,
527 tdsaDeviceData_t *oneDeviceData
531 tdssInitSASPortStartInfo(
534 #ifndef ossaDeviceRegistrationCB
536 ossaDeviceRegistrationCB(
538 agsaContext_t *agContext,
540 agsaDevHandle_t *agDevHandle,
544 #ifndef ossaDeregisterDeviceHandleCB
546 ossaDeregisterDeviceHandleCB(
548 agsaContext_t *agContext,
549 agsaDevHandle_t *agDevHandle,
554 #ifdef INITIATOR_DRIVER
555 /*****************************************************************************
557 * SAS Initiator only PROTOTYPES
559 *****************************************************************************/
563 tiInitiatorResource_t *initiatorResource,
564 tiTdSharedMem_t *tdSharedMem
572 osGLOBAL FORCEINLINE void
575 agsaIORequest_t *agIORequest,
585 agsaIORequest_t *agIORequest,
593 itdssQueryTaskCompleted(
595 agsaIORequest_t *agIORequest,
605 agsaIORequest_t *agIORequest,
608 agsaFrameHandle_t agFrameHandle
614 agsaIORequest_t *agIORequest,
617 agsaFrameHandle_t agFrameHandle
621 itdssIOSuccessHandler(
623 agsaIORequest_t *agIORequest,
630 itdssIOAbortedHandler(
632 agsaIORequest_t *agIORequest,
641 itdssIOOverFlowHandler(
643 agsaIORequest_t *agIORequest,
651 itdssIOUnderFlowHandler(
653 agsaIORequest_t *agIORequest,
661 itdssIOFailedHandler(
663 agsaIORequest_t *agIORequest,
671 itdssIOAbortResetHandler(
673 agsaIORequest_t *agIORequest,
680 itdssIONotValidHandler(
682 agsaIORequest_t *agIORequest,
690 itdssIONoDeviceHandler(
692 agsaIORequest_t *agIORequest,
699 #ifdef REMOVED /* removed from spec */
701 itdssIllegalParameterHandler(
703 agsaIORequest_t *agIORequest,
711 itdssLinkFailureHandler(
713 agsaIORequest_t *agIORequest,
720 itdssProgErrorHandler(
722 agsaIORequest_t *agIORequest,
729 itdssXferErrorBreakHandler(
731 agsaIORequest_t *agIORequest,
738 itdssXferErrorPhyNotReadyHandler(
740 agsaIORequest_t *agIORequest,
747 itdssOpenCnxErrorProtocolNotSupprotedHandler(
749 agsaIORequest_t *agIORequest,
756 itdssOpenCnxErrorZoneViolationHandler(
758 agsaIORequest_t *agIORequest,
765 itdssOpenCnxErrorBreakHandler(
767 agsaIORequest_t *agIORequest,
774 itdssOpenCnxErrorITNexusLossHandler(
776 agsaIORequest_t *agIORequest,
783 itdssOpenCnxErrorBadDestinationHandler(
785 agsaIORequest_t *agIORequest,
792 itdssOpenCnxErrorConnectionRateNotSupportedHandler(
794 agsaIORequest_t *agIORequest,
802 itdssOpenCnxErrorSTPResourceBusyHandler(
804 agsaIORequest_t *agIORequest,
811 itdssOpenCnxErrorWrongDestinationHandler(
813 agsaIORequest_t *agIORequest,
820 itdssOpenCnxErrorUnknownErrorHandler(
822 agsaIORequest_t *agIORequest,
829 itdssXferErrorNAKReceivedHandler(
831 agsaIORequest_t *agIORequest,
838 itdssXferErrorACKNAKTimeoutHandler(
840 agsaIORequest_t *agIORequest,
847 itdssXferErrorPeerAbortedHandler(
849 agsaIORequest_t *agIORequest,
856 itdssXferErrorRxFrameHandler(
858 agsaIORequest_t *agIORequest,
865 itdssXferErrorDMAHandler(
867 agsaIORequest_t *agIORequest,
874 itdssXferErrorCreditTimeoutHandler(
876 agsaIORequest_t *agIORequest,
884 itdssXferErrorCMDIssueACKNAKTimeoutHandler(
886 agsaIORequest_t *agIORequest,
893 itdssXferErrorCMDIssueBreakBeforeACKNAKHandler(
895 agsaIORequest_t *agIORequest,
902 itdssXferErrorCMDIssuePhyDownBeforeACKNAKHandler(
904 agsaIORequest_t *agIORequest,
911 itdssXferErrorDisruptedPhyDownHandler(
913 agsaIORequest_t *agIORequest,
920 itdssXferErrorOffsetMismatchHandler(
922 agsaIORequest_t *agIORequest,
929 itdssXferErrorXferZeroDataLenHandler(
931 agsaIORequest_t *agIORequest,
939 itdssXferOpenRetryTimeoutHandler(
941 agsaIORequest_t *agIORequest,
949 itdssPortInResetHandler(
951 agsaIORequest_t *agIORequest,
959 itdssDsNonOperationalHandler(
961 agsaIORequest_t *agIORequest,
968 itdssDsInRecoveryHandler(
970 agsaIORequest_t *agIORequest,
977 itdssTmTagNotFoundHandler(
979 agsaIORequest_t *agIORequest,
986 itdssSSPExtIUZeroLenHandler(
988 agsaIORequest_t *agIORequest,
995 itdssXferErrorUnexpectedPhaseHandler(
997 agsaIORequest_t *agIORequest,
1006 itdssIOUnderFlowWithChkConditionHandler(
1008 agsaIORequest_t *agIORequest,
1016 itdssEncryptionHandler (
1018 agsaIORequest_t *agIORequest,
1026 itdssXferOpenRetryBackoffThresholdReachedHandler(
1028 agsaIORequest_t *agIORequest,
1036 itdssOpenCnxErrorItNexusLossOpenTmoHandler(
1038 agsaIORequest_t *agIORequest,
1045 itdssOpenCnxErrorItNexusLossNoDestHandler(
1047 agsaIORequest_t *agIORequest,
1054 itdssOpenCnxErrorItNexusLossOpenCollideHandler(
1056 agsaIORequest_t *agIORequest,
1063 itdssOpenCnxErrorItNexusLossOpenPathwayBlockedHandler(
1065 agsaIORequest_t *agIORequest,
1074 agsaIORequest_t *agIORequest,
1082 itdssIOResourceUnavailableHandler(
1084 agsaIORequest_t *agIORequest,
1092 itdssIORQEBusyFullHandler(
1094 agsaIORequest_t *agIORequest,
1102 itdssXferErrorInvalidSSPRspFrameHandler(
1104 agsaIORequest_t *agIORequest,
1112 itdssXferErrorEOBDataOverrunHandler(
1114 agsaIORequest_t *agIORequest,
1122 itdssOpenCnxErrorOpenPreemptedHandler(
1124 agsaIORequest_t *agIORequest,
1131 /* default handler */
1133 itdssIODefaultHandler (
1135 agsaIORequest_t *agIORequest,
1142 itdssIOForDebugging1Completed(
1144 agsaIORequest_t *agIORequest,
1152 itdssIOForDebugging2Completed(
1154 agsaIORequest_t *agIORequest,
1162 itdssIOForDebugging3Completed(
1164 agsaIORequest_t *agIORequest,
1172 itdssInitDiscoveryModule (
1179 tiInitiatorResource_t *initiatorResource
1184 itdssGetOperatingOptionParams(
1186 itdssOperatingOption_t *OperatingOption
1190 osGLOBAL FORCEINLINE bit32
1193 tdIORequestBody_t *IORequestBody,
1195 void *sglVirtualAddr
1203 tdsaDeviceData_t *oneDeviceData,
1204 tdsaPortContext_t *onePortContext
1207 smReportRemovalDirect(
1210 tdsaDeviceData_t *oneDeviceData
1216 tdsaDeviceData_t *oneDeviceData,
1223 agsaIORequest_t *agIORequest,
1229 ossaIniSetDeviceInfoCB(
1231 agsaContext_t *agContext,
1232 agsaDevHandle_t *agDevHandle,
1240 #endif /* INITIATOR_DRIVER */
1242 #ifdef TARGET_DRIVER
1243 /*****************************************************************************
1245 * SAS Target only PROTOTYPES (ttdproto.h)
1247 *****************************************************************************/
1251 tiTargetResource_t *targetResource,
1252 tiTdSharedMem_t *tdSharedMem
1258 tiTargetResource_t *targetResource
1262 ttdssGetTargetParams(
1267 ttdssGetOperatingOptionParams(
1269 ttdssOperatingOption_t *OperatingOption
1275 ttdsaXchgData_t *ttdsaXchgData,
1276 tiTargetMem_t *tgtMem,
1283 ttdsaXchg_t *ttdsaXchg
1288 ttdsaXchgFreeStruct(
1290 ttdsaXchg_t *ttdsaXchg
1293 ttdsaSSPReqReceived(
1295 agsaDevHandle_t *agDevHandle,
1296 agsaFrameHandle_t agFrameHandle,
1297 bit32 agInitiatorTag,
1302 osGLOBAL ttdsaXchg_t
1303 *ttdsaXchgGetStruct(
1307 ttdsaDumpallXchg(tiRoot_t *tiRoot);
1311 agsaSSPCmdInfoUnit_t *cmdIU,
1312 ttdsaXchg_t *ttdsaXchg
1318 tdIORequestBody_t *tdIORequestBody,
1321 void *sglVirtualAddr);
1326 agsaIORequest_t *agIORequest,
1329 agsaFrameHandle_t agFrameHandle,
1336 ttdsaXchg_t *ttdsaXchg
1340 ttdsaSMPReqReceived(
1342 agsaDevHandle_t *agDevHandle,
1343 agsaSMPFrameHeader_t *agFrameHeader,
1344 agsaFrameHandle_t agFrameHandle,
1345 bit32 agFrameLength,
1351 agsaIORequest_t *agIORequest,
1353 //agsaSMPFrameHeader_t *agFrameHeader, (TP)
1355 agsaFrameHandle_t agFrameHandle
1360 ttdsaXchg_t *ttdsaXchg
1364 ttdssReportRemovals(
1366 tdsaPortContext_t *onePortContext,
1375 tdsaDeviceData_t *oneDeviceData
1379 ttdssIOAbortedHandler(
1381 agsaIORequest_t *agIORequest,
1388 #endif /* TARGET_DRIVER */
1392 /*****************************************************************************
1394 * For debugging only
1396 *****************************************************************************/
1399 agsaSwConfig_t *SwConfig
1404 agsaHwConfig_t *HwConfig
1407 tdssPrintSASIdentify(
1408 agsaSASIdentify_t *id
1411 print_tdlist_flink(tdList_t *hdr, int type, int flag);
1414 print_tdlist_blink(tdList_t *hdr, int flag);
1417 tdhexdump(const char *ptitle, bit8 *pbuf, int len);
1420 /*****************************************************************************
1422 * SAT only PROTOTYPE
1424 *****************************************************************************/
1428 /*****************************************************************************
1429 *! \brief satIOStart
1431 * This routine is called to initiate a new SCSI request to SATL.
1433 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1434 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1435 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1436 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1437 * \param satIOContext_t: Pointer to the SAT IO Context
1441 * \e tiSuccess: I/O request successfully initiated.
1442 * \e tiBusy: No resources available, try again later.
1443 * \e tiIONoDevice: Invalid device handle.
1444 * \e tiError: Other errors that prevent the I/O request to be started.
1447 *****************************************************************************/
1449 GLOBAL bit32 satIOStart(
1451 tiIORequest_t *tiIORequest,
1452 tiDeviceHandle_t *tiDeviceHandle,
1453 tiScsiInitiatorRequest_t *tiScsiRequest,
1454 satIOContext_t *satIOContext
1457 /*****************************************************************************
1458 *! \brief satIOAbort
1460 * This routine is called to initiate a I/O abort to SATL.
1461 * This routine is independent of HW/LL API.
1463 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1464 * \param taskTag: Pointer to TISA I/O request context/tag to be aborted.
1468 * \e tiSuccess: I/O request successfully initiated.
1469 * \e tiBusy: No resources available, try again later.
1470 * \e tiError: Other errors that prevent the I/O request to be started.
1473 *****************************************************************************/
1475 GLOBAL bit32 satIOAbort(
1477 tiIORequest_t *taskTag );
1480 /*****************************************************************************
1483 * This routine is called to initiate a TM request to SATL.
1484 * This routine is independent of HW/LL API.
1486 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1487 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1488 * \param task: SAM-3 task management request.
1489 * \param lun: Pointer to LUN.
1490 * \param taskTag: Pointer to the associated task where the TM
1491 * command is to be applied.
1492 * \param currentTaskTag: Pointer to tag/context for this TM request.
1496 * \e tiSuccess: I/O request successfully initiated.
1497 * \e tiBusy: No resources available, try again later.
1498 * \e tiIONoDevice: Invalid device handle.
1499 * \e tiError: Other errors that prevent the I/O request to be started.
1502 *****************************************************************************/
1504 osGLOBAL bit32 satTM(
1506 tiDeviceHandle_t *tiDeviceHandle,
1509 tiIORequest_t *taskTag,
1510 tiIORequest_t *currentTaskTag,
1511 tdIORequestBody_t *tiRequestBody,
1516 #endif /* SAT only */
1518 #ifdef INITIATOR_DRIVER
1529 tdsaPortContext_t *onePortContext,
1535 tdsaSASFullDiscover(
1537 tdsaPortContext_t *onePortContext
1541 tdsaSATAFullDiscover(
1543 tdsaPortContext_t *onePortContext
1546 tdsaSASIncrementalDiscover(
1548 tdsaPortContext_t *onePortContext
1552 tdsaSATAIncrementalDiscover(
1554 tdsaPortContext_t *onePortContext
1558 tdsaSASUpStreamDiscoverStart(
1560 tdsaPortContext_t *onePortContext,
1561 tdsaDeviceData_t *oneDeviceData
1565 tdsaSASUpStreamDiscovering(
1567 tdsaPortContext_t *onePortContext,
1568 tdsaDeviceData_t *oneDeviceData
1573 tdsaSASDownStreamDiscoverStart(
1575 tdsaPortContext_t *onePortContext,
1576 tdsaDeviceData_t *oneDeviceData
1580 tdsaSASDownStreamDiscovering(
1582 tdsaPortContext_t *onePortContext,
1583 tdsaDeviceData_t *oneDeviceData
1587 tdsaSASDiscoverDone(
1589 tdsaPortContext_t *onePortContext,
1594 tdsaSATADiscoverDone(
1596 tdsaPortContext_t *onePortContext,
1603 tdsaPortContext_t *onePortContext
1607 tdsaDiscoveryResetProcessed(
1609 tdsaPortContext_t *onePortContext
1615 tdsaSASUpStreamDiscoverExpanderPhy(
1617 tdsaPortContext_t *onePortContext,
1618 tdsaExpander_t *oneExpander,
1619 smpRespDiscover_t *pDiscoverResp
1621 osGLOBAL tdsaExpander_t *
1622 tdsaFindUpStreamConfigurableExp(tiRoot_t *tiRoot,
1623 tdsaExpander_t *oneExpander);
1626 tdsaSASDownStreamDiscoverExpanderPhy(
1628 tdsaPortContext_t *onePortContext,
1629 tdsaExpander_t *oneExpander,
1630 smpRespDiscover_t *pDiscoverResp
1633 tdsaSASUpStreamDiscoverExpanderPhySkip(
1635 tdsaPortContext_t *onePortContext,
1636 tdsaExpander_t *oneExpander
1638 osGLOBAL tdsaExpander_t *
1639 tdsaFindDownStreamConfigurableExp(tiRoot_t *tiRoot,
1640 tdsaExpander_t *oneExpander);
1643 tdsaSASDownStreamDiscoverExpanderPhySkip(
1645 tdsaPortContext_t *onePortContext,
1646 tdsaExpander_t *oneExpander
1649 tdsaDiscoveringStpSATADevice(
1651 tdsaPortContext_t *onePortContext,
1652 tdsaDeviceData_t *oneDeviceData
1657 tdsaSASExpanderUpStreamPhyAdd(
1659 tdsaExpander_t *oneExpander,
1664 tdsaSASExpanderDownStreamPhyAdd(
1666 tdsaExpander_t *oneExpander,
1670 tdsaFindCurrentDownStreamPhyIndex(
1672 tdsaExpander_t *oneExpander
1675 osGLOBAL tdsaDeviceData_t *
1676 tdsaPortSASDeviceFind(
1678 tdsaPortContext_t *onePortContext,
1683 GLOBAL tdsaDeviceData_t *
1684 tdsaPortSASDeviceAdd(
1686 tdsaPortContext_t *onePortContext,
1687 agsaSASIdentify_t sasIdentify,
1689 bit8 connectionRate,
1690 bit32 itNexusTimeout,
1691 bit32 firstBurstSize,
1693 tdsaDeviceData_t *oneExpDeviceData,
1702 osGLOBAL tdsaDeviceData_t *
1703 tdssNewAddSASToSharedcontext(
1705 tdsaPortContext_t *onePortContext,
1706 tdsaSASSubID_t *agSASSubID,
1707 tdsaDeviceData_t *oneExpDeviceData,
1711 tdsaResetValidDeviceData(
1713 tdsaPortContext_t *onePortContext
1720 tdsaPortContext_t *onePortContext );
1725 tdsaPortContext_t *onePortContext,
1729 tdssInternalRemovals(
1731 tdsaPortContext_t *onePortContext
1734 tdssDiscoveryErrorRemovals(
1736 tdsaPortContext_t *onePortContext
1740 tdsaSASDiscoverAbort(
1742 tdsaPortContext_t *onePortContext
1746 osGLOBAL tdsaDeviceData_t *
1749 tdsaPortContext_t *onePortContext,
1750 tdsaSASSubID_t *agSASSubID
1755 tdsaPortContext_t *onePortContext,
1756 tdsaSASSubID_t *agSASSubID
1760 osGLOBAL tdsaExpander_t *
1761 tdssSASDiscoveringExpanderAlloc(
1763 tdsaPortContext_t *onePortContext,
1764 tdsaDeviceData_t *oneDeviceData
1768 tdssSASDiscoveringExpanderAdd(
1770 tdsaPortContext_t *onePortContext,
1771 tdsaExpander_t *oneExpander
1775 tdssSASDiscoveringExpanderRemove(
1777 tdsaPortContext_t *onePortContext,
1778 tdsaExpander_t *oneExpander
1782 tdssSATADeviceTypeDecode(
1787 GLOBAL tdsaDeviceData_t *
1788 tdsaPortSATADeviceAdd(
1790 tdsaPortContext_t *onePortContext,
1791 tdsaDeviceData_t *oneSTPBridge,
1795 bit8 connectionRate,
1796 tdsaDeviceData_t *oneExpDeviceData,
1801 osGLOBAL tdsaDeviceData_t *
1802 tdssNewAddSATAToSharedcontext(tiRoot_t *tiRoot,
1804 tdsaPortContext_t *onePortContext,
1805 agsaSATADeviceInfo_t *agSATADeviceInfo,
1809 bit32 connectionRate,
1810 tdsaDeviceData_t *oneExpDeviceData,
1814 osGLOBAL tdsaDeviceData_t *
1815 tdsaFindRightDevice(
1817 tdsaPortContext_t *onePortContext,
1818 tdsaDeviceData_t *tdsaDeviceData
1821 ossaIDCDiscoverCompleted(
1823 agsaIORequest_t *agIORequest,
1827 agsaFrameHandle_t agFrameHandle
1831 tdsaFindLocalLinkRate(
1833 tdsaPortStartInfo_t *tdsaPortStartInfo
1842 tdsaDeviceData_t *oneDeviceData,
1846 bit32 agRequestType,
1847 tiIORequest_t *CurrentTaskTag,
1852 tdsaReportManInfoSend(
1854 tdsaDeviceData_t *oneDeviceData
1858 tdsaReportManInfoRespRcvd(
1861 tdsaDeviceData_t *oneDeviceData,
1862 tdssSMPFrameHeader_t *frameHeader,
1863 agsaFrameHandle_t frameHandle
1866 //end temp for testing
1869 tdsaReportGeneralSend(
1871 tdsaDeviceData_t *oneDeviceData
1875 tdsaReportGeneralRespRcvd(
1878 agsaIORequest_t *agIORequest,
1879 tdsaDeviceData_t *oneDeviceData,
1880 tdssSMPFrameHeader_t *frameHeader,
1881 agsaFrameHandle_t frameHandle
1886 tdsaDeviceData_t *oneDeviceData
1890 tdsaDiscoverRespRcvd(
1893 agsaIORequest_t *agIORequest,
1894 tdsaDeviceData_t *oneDeviceData,
1895 tdssSMPFrameHeader_t *frameHeader,
1896 agsaFrameHandle_t frameHandle
1901 tdsaReportPhySataSend(
1903 tdsaDeviceData_t *oneDeviceData,
1910 tdsaReportPhySataRcvd(
1913 agsaIORequest_t *agIORequest,
1914 tdsaDeviceData_t *oneDeviceData,
1915 tdssSMPFrameHeader_t *frameHeader,
1916 agsaFrameHandle_t frameHandle
1920 tdsaSASRoutingEntryAdd(
1922 tdsaExpander_t *oneExpander,
1924 bit32 configSASAddressHi,
1925 bit32 configSASAddressLo
1930 tdsaConfigRoutingInfoRespRcvd(
1933 agsaIORequest_t *agIORequest,
1934 tdsaDeviceData_t *oneDeviceData,
1935 tdssSMPFrameHeader_t *frameHeader,
1936 agsaFrameHandle_t frameHandle
1942 tdsaDeviceData_t *oneDeviceData,
1944 tiIORequest_t *CurrentTaskTag,
1949 tdsaPhyControlRespRcvd(
1952 agsaIORequest_t *agIORequest,
1953 tdsaDeviceData_t *oneDeviceData,
1954 tdssSMPFrameHeader_t *frameHeader,
1955 agsaFrameHandle_t frameHandle,
1956 tiIORequest_t *CurrentTaskTag
1960 tdsaPhyControlFailureRespRcvd(
1963 tdsaDeviceData_t *oneDeviceData,
1964 tdssSMPFrameHeader_t *frameHeader,
1965 agsaFrameHandle_t frameHandle,
1966 tiIORequest_t *CurrentTaskTag
1973 tdsaPortContext_t *onePortContext,
1974 tdsaExpander_t *oneExpander
1979 tdsaPortContext_t *onePortContext,
1980 tdsaExpander_t *oneExpander
1985 tdsaPortContext_t *onePortContext
1990 tdsaPortContext_t *onePortContext
1998 tdsaDiscoveryTimer(tiRoot_t *tiRoot,
1999 tdsaPortContext_t *onePortContext,
2000 tdsaDeviceData_t *oneDeviceData
2004 tdsaDiscoveryTimerCB(
2012 tdsaConfigureRouteTimer(tiRoot_t *tiRoot,
2013 tdsaPortContext_t *onePortContext,
2014 tdsaExpander_t *oneExpander,
2015 smpRespDiscover_t *ptdSMPDiscoverResp
2019 tdsaConfigureRouteTimerCB(
2027 tdsaDeviceRegistrationTimer(tiRoot_t *tiRoot,
2028 tdsaPortContext_t *onePortContext,
2029 tdsaDeviceData_t *oneDeviceData
2033 tdsaDeviceRegistrationTimerCB(
2041 tdsaSMPBusyTimer(tiRoot_t *tiRoot,
2042 tdsaPortContext_t *onePortContext,
2043 tdsaDeviceData_t *oneDeviceData,
2044 tdssSMPRequestBody_t *tdSMPRequestBody
2056 tdsaSATAIDDeviceTimer(tiRoot_t *tiRoot,
2057 tdsaDeviceData_t *oneDeviceData
2061 tdIDStartTimer(tiRoot_t *tiRoot,
2062 smIORequest_t *smIORequest,
2063 tdsaDeviceData_t *oneDeviceData
2074 tdsaBCTimer(tiRoot_t *tiRoot,
2075 tdsaPortContext_t *onePortContext
2087 tdsaSATAIDDeviceTimerCB(
2095 tdsaDiscoverySMPTimer(tiRoot_t *tiRoot,
2096 tdsaPortContext_t *onePortContext,
2098 tdssSMPRequestBody_t *tdSMPRequestBody
2102 tdsaDiscoverySMPTimerCB(
2110 dumpRoutingAttributes(
2112 tdsaExpander_t *oneExpander,
2117 tdsaDuplicateConfigSASAddr(
2119 tdsaExpander_t *oneExpander,
2120 bit32 configSASAddressHi,
2121 bit32 configSASAddressLo
2124 osGLOBAL tdsaExpander_t *
2125 tdsaFindConfigurableExp(
2127 tdsaPortContext_t *onePortContext,
2128 tdsaExpander_t *oneExpander
2132 tdsaDiscoveryStartIDDev(
2134 tiIORequest_t *tiIORequest,
2135 tiDeviceHandle_t *tiDeviceHandle,
2136 tiScsiInitiatorRequest_t *tiScsiRequest,
2137 tdsaDeviceData_t *oneDeviceData
2140 GLOBAL void satFreeIntIoResource(
2142 satDeviceData_t *satDevData,
2143 satInternalIo_t *satIntIo);
2145 tddmDeregisterDevicesInPort(
2147 tdsaPortContext_t *onePortContext
2154 tdsaPortContext_t *onePortContext,
2155 tiIntrEventType_t eventType,
2161 tdsaPortContext_t *onePortContext,
2162 tdIORequest_t *tdIORequest,
2163 tdList_t *DeviceList);
2168 tiDeviceHandle_t *tiDeviceHandle,
2169 tdIORequest_t *tdIORequest);
2174 agsaIORequest_t *agIORequest,
2180 #endif /* AGTIAPI_CTL */
2182 #endif /* TD_DISCOVER */
2183 #endif /* INITIATOR_DRIVER */
2186 /********** For DM *******/
2187 osGLOBAL tdsaDeviceData_t *
2190 tdsaPortContext_t *onePortContext,
2191 dmDeviceInfo_t *dmDeviceInfo,
2192 tdsaDeviceData_t *oneExpDeviceData
2196 tddmInvalidateDevicesInPort(
2198 tdsaPortContext_t *onePortContext
2204 tdsaPortContext_t *onePortContext,
2205 tdsaSASSubID_t *agSASSubID
2208 osGLOBAL tdsaDeviceData_t *
2209 tddmPortSASDeviceFind(
2211 tdsaPortContext_t *onePortContext,
2216 osGLOBAL tdsaDeviceData_t *
2217 tddmAddToSharedcontext(
2219 tdsaPortContext_t *onePortContext,
2220 tdsaSASSubID_t *agSASSubID,
2221 tdsaDeviceData_t *oneExpDeviceData,
2228 tdsaPortContext_t *onePortContext
2233 tdsaSingleThreadedEnter(tiRoot_t *ptiRoot, bit32 queueId);
2236 tdsaSingleThreadedLeave(tiRoot_t *ptiRoot, bit32 queueId);
2240 tdsaEnter(tiRoot_t *ptiRoot, int io);
2243 tdsaLeave(tiRoot_t *ptiRoot, int io);
2245 #define TDSA_INP_ENTER(root) tdsaEnter(root, 0)
2246 #define TDSA_INP_LEAVE(root) tdsaLeave(root, 0)
2247 #define TDSA_OUT_ENTER(root) tdsaEnter(root, 1)
2248 #define TDSA_OUT_LEAVE(root) tdsaLeave(root, 1)
2250 #define TDSA_INP_ENTER(root)
2251 #define TDSA_INP_LEAVE(root)
2252 #define TDSA_OUT_ENTER(root)
2253 #define TDSA_OUT_LEAVE(root)
2256 #if defined(FDS_DM) && defined(FDS_SM)
2262 tdsaDeviceData_t *oneDeviceData,
2263 tdsaPortContext_t *onePortContext
2267 void t_MacroCheck( agsaRoot_t *agRoot);
2269 #endif /* __TDPROTO_H__ */