1/******************************************************************************* 2*Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved. 3* 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 7*following disclaimer. 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. 11* 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 20* 21* $FreeBSD$ 22* 23********************************************************************************/ 24/*******************************************************************************/ 25/** \file 26 * 27 * function definitions used in SAS/SATA TD layer 28 * 29 */ 30 31#ifndef __TDPROTO_H__ 32#define __TDPROTO_H__ 33 34#ifdef FDS_DM 35#include <dev/pms/RefTisa/discovery/api/dm.h> 36#endif 37 38/***************************************************************************** 39* 40* SA SHARED PROTOTYPES 41* 42*****************************************************************************/ 43 44osGLOBAL void 45tdsaQueueConfigInit( 46 tiRoot_t *tiRoot 47 ); 48 49osGLOBAL void 50tdsaEsglInit( 51 tiRoot_t *tiRoot 52 ); 53 54osGLOBAL void 55tdsaResetComMemFlags( 56 tiRoot_t *tiRoot 57 ); 58 59 60osGLOBAL void 61tdsaInitTimerRequest( 62 tiRoot_t *tiRoot, 63 tdsaTimerRequest_t *timerRequest 64 ); 65 66osGLOBAL void 67tdsaSetTimerRequest( 68 tiRoot_t *tiRoot, 69 tdsaTimerRequest_t *timerRequest, 70 bit32 timeout, 71 tdsaTimerCBFunc_t CBFunc, 72 void *timerData1, 73 void *timerData2, 74 void *timerData3 75 ); 76 77osGLOBAL void 78tdsaAddTimer ( 79 tiRoot_t *tiRoot, 80 tdList_t *timerListHdr, 81 tdsaTimerRequest_t *timerRequest 82 ); 83 84osGLOBAL void 85tdsaKillTimer( 86 tiRoot_t *tiRoot, 87 tdsaTimerRequest_t *timerRequest 88 ); 89 90 91 92 93 94osGLOBAL void 95tdsaLoLevelGetResource ( 96 tiRoot_t * tiRoot, 97 tiLoLevelResource_t * loResource 98 ); 99 100osGLOBAL void 101tdsaSharedMemCalculate ( 102 tiRoot_t * tiRoot, 103 tiLoLevelResource_t * loResource, 104 tiTdSharedMem_t * tdSharedMem 105 ); 106 107osGLOBAL void 108tdsaGetEsglPagesInfo( 109 tiRoot_t *tiRoot, 110 bit32 *PageSize, 111 bit32 *NumPages 112 ); 113 114osGLOBAL void 115tdsaGetPortParams( 116 tiRoot_t *tiRoot 117 ); 118 119 120 121osGLOBAL void 122tdsaGetSwConfigParams( 123 tiRoot_t *tiRoot 124 ); 125 126osGLOBAL void 127tdsaGetHwConfigParams( 128 tiRoot_t *tiRoot 129 ); 130 131osGLOBAL void 132tdsaGetCardPhyParams( 133 tiRoot_t *tiRoot 134 ); 135 136 137osGLOBAL void 138tdsaGetGlobalPhyParams( 139 tiRoot_t *tiRoot 140 ); 141 142osGLOBAL bit32 143tdsaGetCardIDString( 144 tiRoot_t *tiRoot 145 ); 146 147osGLOBAL void 148tdsaParseLinkRateMode( 149 tiRoot_t *tiRoot, 150 bit32 index, 151 bit32 LinkRateRead, 152 bit32 ModeRead, 153 bit32 OpticalModeRead, 154 bit32 LinkRate, 155 bit32 Mode, 156 bit32 OpticalMode 157 ); 158 159osGLOBAL void 160tdsaInitTimers( 161 tiRoot_t *tiRoot 162 ); 163 164osGLOBAL void 165tdsaProcessTimers( 166 tiRoot_t *tiRoot 167 ); 168 169osGLOBAL void 170tdsaInitTimerHandler( 171 tiRoot_t *tiRoot, 172 void *timerData 173 ); 174 175osGLOBAL void 176tdsaGetEsglPages( 177 tiRoot_t *tiRoot, 178 tdList_t *EsglListHdr, 179 tiSgl_t *ptiSgl, 180 tiSgl_t *virtSgl 181 ); 182 183osGLOBAL void 184tdsaFreeEsglPages( 185 tiRoot_t *tiRoot, 186 tdList_t *EsglListHdr 187 ); 188 189osGLOBAL void 190tdssGetMaxTargetsParams( 191 tiRoot_t *tiRoot, 192 bit32 *pMaxTargets 193 ); 194 195osGLOBAL void 196tdssGetSATAOnlyModeParams( 197 tiRoot_t *tiRoot, 198 bit32 *pMaxTargets 199 ); 200 201osGLOBAL bit32 202tdipFWControlIoctl( 203 tiRoot_t *tiRoot, 204 tiIOCTLPayload_t *agIOCTLPayload, 205 void *agParam1, 206 void *agParam2, 207 void *agParam3 208 ); 209 210osGLOBAL bit32 211tdsaVPDGetIoctl( 212 tiRoot_t *tiRoot, 213 tiIOCTLPayload_t *agIOCTLPayload, 214 void *agParam1, 215 void *agParam2, 216 void *agParam3 217 ); 218 219osGLOBAL bit32 220tdsaVPDSetIoctl( 221 tiRoot_t *tiRoot, 222 tiIOCTLPayload_t *agIOCTLPayload, 223 void *agParam1, 224 void *agParam2, 225 void *agParam3 226 ); 227 228osGLOBAL void 229ostiCOMMgntVPDSetIOCTLRsp( 230 tiRoot_t *tiRoot, 231 bit32 status 232 ); 233 234osGLOBAL void 235tdsaFreeCardID(tiRoot_t *tiRoot, 236 bit32 CardID 237 ); 238 239 240osGLOBAL bit32 241tdsaAbortAll( 242 tiRoot_t *tiRoot, 243 agsaRoot_t *agRoot, 244 tdsaDeviceData_t *oneDeviceData 245 ); 246 247osGLOBAL bit32 248tdsaFindLocalMCN( 249 tiRoot_t *tiRoot, 250 tdsaPortContext_t *onePortContext 251 ); 252 253osGLOBAL bit32 254tdsaRegDumpGetIoctl( 255 tiRoot_t *tiRoot, 256 tiIOCTLPayload_t *agIOCTLPayload, 257 void *agParam1, 258 void *agParam2, 259 void *agParam3 260 ); 261 262osGLOBAL bit32 263tdsaNVMDSetIoctl( 264 tiRoot_t *tiRoot, 265 tiIOCTLPayload_t *agIOCTLPayload, 266 void *agParam1, 267 void *agParam2, 268 void *agParam3 269 ); 270 271osGLOBAL bit32 272tdsaNVMDGetIoctl( 273 tiRoot_t *tiRoot, 274 tiIOCTLPayload_t *agIOCTLPayload, 275 void *agParam1, 276 void *agParam2, 277 void *agParam3 278 ); 279 280osGLOBAL void ostiGetGpioIOCTLRsp( 281 tiRoot_t *tiRoot, 282 bit32 status, 283 bit32 gpioReadValue, 284 agsaGpioPinSetupInfo_t *gpioPinSetupInfo, 285 agsaGpioEventSetupInfo_t *gpioEventSetupInfo 286 ); 287 288osGLOBAL bit32 289tdsaGpioSetup( 290 tiRoot_t *tiRoot, 291 agsaContext_t *agContext, 292 tiIOCTLPayload_t *agIOCTLPayload, 293 void *agParam1, 294 void *agParam2 295 ); 296 297 298osGLOBAL bit32 299tdsaSGpioIoctlSetup( 300 tiRoot_t *tiRoot, 301 agsaContext_t *agContext, 302 tiIOCTLPayload_t *agIOCTLPayload, 303 void *agParam1, 304 void *agParam2 305 ); 306 307osGLOBAL void ostiSgpioIoctlRsp( 308 tiRoot_t *tiRoot, 309 agsaSGpioReqResponse_t *pSgpioResponse 310 ); 311osGLOBAL bit32 312tdsaDeviceInfoGetIoctl( 313 tiRoot_t *tiRoot, 314 tiIOCTLPayload_t *agIOCTLPayload, 315 void *agParam1, 316 void *agParam2, 317 void *agParam3 318 ); 319 320osGLOBAL bit32 321tdsaIoErrorStatisticGetIoctl( 322 tiRoot_t *tiRoot, 323 tiIOCTLPayload_t *agIOCTLPayload, 324 void *agParam1, 325 void *agParam2, 326 void *agParam3 327 ); 328 329osGLOBAL bit32 330tdsaIoEventStatisticGetIoctl( 331 tiRoot_t *tiRoot, 332 tiIOCTLPayload_t *agIOCTLPayload, 333 void *agParam1, 334 void *agParam2, 335 void *agParam3 336 ); 337 338osGLOBAL bit32 339tdsaForensicDataGetIoctl( 340 tiRoot_t *tiRoot, 341 tiIOCTLPayload_t *agIOCTLPayload, 342 void *agParam1, 343 void *agParam2, 344 void *agParam3 345 ); 346 347osGLOBAL bit32 348tdsaSendSMPIoctl( 349 tiRoot_t *tiRoot, 350 tiIOCTLPayload_t *agIOCTLPayload, 351 void *agParam1, 352 void *agParam2, 353 void *agParam3 354 ); 355 356osGLOBAL bit32 357tdsaSendBISTIoctl( 358 tiRoot_t *tiRoot, 359 tiIOCTLPayload_t *agIOCTLPayload, 360 void *agParam1, 361 void *agParam2, 362 void *agParam3 363 ); 364 365osGLOBAL bit32 366tdsaSendTMFIoctl( 367 tiRoot_t *tiRoot, 368 tiIOCTLPayload_t *agIOCTLPayload, 369 void *agParam1, 370 void *agParam2, 371 unsigned long resetType 372 ); 373 374 375osGLOBAL bit32 376tdsaRegisterIoctl( 377 tiRoot_t *tiRoot, 378 tiIOCTLPayload_t *agIOCTLPayload, 379 void *agParam1, 380 void *agParam2, 381 void *agParam3 382 ); 383 384osGLOBAL bit32 385tdsaGetPhyGeneralStatusIoctl( 386 tiRoot_t *tiRoot, 387 agsaPhyGeneralState_t *PhyData 388 ); 389 390osGLOBAL void ostiGetPhyGeneralStatusRsp( 391 tiRoot_t *tiRoot, 392 agsaSASPhyGeneralStatusPage_t *GenStatus, 393 bit32 phyID 394 ); 395 396 397osGLOBAL bit32 398tdsaPhyProfileIoctl( 399 tiRoot_t *tiRoot, 400 tiIOCTLPayload_t *agIOCTLPayload, 401 void *agParam1, 402 void *agParam2, 403 void *agParam3 404 ); 405 406osGLOBAL void 407tdsaDeregisterDevicesInPort( 408 tiRoot_t *tiRoot, 409 tdsaPortContext_t *onePortContext 410 ); 411 412#ifdef VPD_TESTING 413osGLOBAL bit32 414tdsaVPDGet( 415 tiRoot_t *tiRoot 416 ); 417 418osGLOBAL bit32 419tdsaVPDSet( 420 tiRoot_t *tiRoot 421 ); 422 423#endif 424 425/***************************************************************************** 426* 427* SAS SHARED PROTOTYPES 428* 429*****************************************************************************/ 430osGLOBAL void 431tdsaJumpTableInit( 432 tiRoot_t *tiRoot 433 ); 434 435osGLOBAL void 436tdsaPortContextInit( 437 tiRoot_t *tiRoot 438 ); 439 440osGLOBAL void 441tdsaPortContextReInit( 442 tiRoot_t *tiRoot, 443 tdsaPortContext_t *onePortContext 444 ); 445 446osGLOBAL void 447tdsaDeviceDataInit( 448 tiRoot_t *tiRoot 449 ); 450 451osGLOBAL void 452tdsaDeviceDataReInit( 453 tiRoot_t *tiRoot, 454 tdsaDeviceData_t *oneDeviceData 455 ); 456 457#ifdef TD_INT_COALESCE 458osGLOBAL void 459tdsaIntCoalCxtInit( 460 tiRoot_t *tiRoot 461 ); 462#endif 463 464osGLOBAL FORCEINLINE bit32 465tdsaRotateQnumber(tiRoot_t *tiRoot, 466 tdsaDeviceData_t *oneDeviceData); 467 468osGLOBAL bit32 469tdsaRotateQnumber1(tiRoot_t *tiRoot, 470 tdsaDeviceData_t *oneDeviceData ); 471osGLOBAL void 472tdssRemoveSASSATAFromSharedcontext( 473 agsaRoot_t *agRoot, 474 tdsaPortContext_t *PortContext_Instance 475 ); 476osGLOBAL void 477tdssRemoveSASSATAFromSharedcontextByReset( 478 agsaRoot_t *agRoot 479 ); 480osGLOBAL bit32 481tdssSASFindDiscoveringExpander( 482 tiRoot_t *tiRoot, 483 tdsaPortContext_t *onePortContext, 484 tdsaExpander_t *oneExpander 485 ); 486 487osGLOBAL void 488tdssAddSASToSharedcontext( 489 tdsaPortContext_t *tdsaPortContext_Instance, 490 agsaRoot_t *agRoot, 491 agsaDevHandle_t *agDevHandle, 492 tdsaSASSubID_t *agSASSubID, 493 bit32 registered, 494 bit8 phyID, 495 bit32 flag 496 ); 497 498osGLOBAL void 499tdssRemoveSASFromSharedcontext( 500 tdsaPortContext_t *tdsaPortContext_Ins, 501 tdsaDeviceData_t *tdsaDeviceData_ins, 502 agsaRoot_t *agRoot 503 ); 504 505osGLOBAL void 506tdssRemoveAllDevicelistFromPortcontext( 507 tdsaPortContext_t *PortContext_Ins, 508 agsaRoot_t *agRoot 509 ); 510 511osGLOBAL void 512tdssAddSATAToSharedcontext( tdsaPortContext_t *tdsaPortContext_Instance, 513 agsaRoot_t *agRoot, 514 agsaDevHandle_t *agDevHandle, 515 agsaSATADeviceInfo_t *agSATADeviceInfo, 516 bit32 registered, 517 bit8 phyID 518 ); 519 520osGLOBAL void 521tdssSubAddSATAToSharedcontext( tiRoot_t *tiRoot, 522 tdsaDeviceData_t *oneDeviceData 523 ); 524 525osGLOBAL void 526tdssRetrySATAID( tiRoot_t *tiRoot, 527 tdsaDeviceData_t *oneDeviceData 528 ); 529 530osGLOBAL void 531tdssInitSASPortStartInfo( 532 tiRoot_t *tiRoot 533 ); 534#ifndef ossaDeviceRegistrationCB 535osGLOBAL void 536ossaDeviceRegistrationCB( 537 agsaRoot_t *agRoot, 538 agsaContext_t *agContext, 539 bit32 status, 540 agsaDevHandle_t *agDevHandle, 541 bit32 deviceID); 542#endif 543 544#ifndef ossaDeregisterDeviceHandleCB 545osGLOBAL void 546ossaDeregisterDeviceHandleCB( 547 agsaRoot_t *agRoot, 548 agsaContext_t *agContext, 549 agsaDevHandle_t *agDevHandle, 550 bit32 status 551 ); 552#endif 553 554#ifdef INITIATOR_DRIVER 555/***************************************************************************** 556* 557* SAS Initiator only PROTOTYPES 558* 559*****************************************************************************/ 560osGLOBAL bit32 561itdssInit( 562 tiRoot_t *tiRoot, 563 tiInitiatorResource_t *initiatorResource, 564 tiTdSharedMem_t *tdSharedMem 565 ); 566 567osGLOBAL void 568itdssInitTimers ( 569 tiRoot_t *tiRoot 570 ); 571 572osGLOBAL FORCEINLINE void 573itdssIOCompleted( 574 agsaRoot_t *agRoot, 575 agsaIORequest_t *agIORequest, 576 bit32 agIOStatus, 577 bit32 agIOInfoLen, 578 void *agParam, 579 bit32 agOtherInfo 580 ); 581 582osGLOBAL void 583itdssTaskCompleted( 584 agsaRoot_t *agRoot, 585 agsaIORequest_t *agIORequest, 586 bit32 agIOStatus, 587 bit32 agIOInfoLen, 588 void *agParam, 589 bit32 agOtherInfo 590 ); 591 592osGLOBAL void 593itdssQueryTaskCompleted( 594 agsaRoot_t *agRoot, 595 agsaIORequest_t *agIORequest, 596 bit32 agIOStatus, 597 bit32 agIOInfoLen, 598 void *agParam, 599 bit32 agOtherInfo 600 ); 601 602osGLOBAL void 603itdssSMPCompleted ( 604 agsaRoot_t *agRoot, 605 agsaIORequest_t *agIORequest, 606 bit32 agIOStatus, 607 bit32 agIOInfoLen, 608 agsaFrameHandle_t agFrameHandle 609 ); 610 611osGLOBAL void 612ossaSMPCAMCompleted( 613 agsaRoot_t *agRoot, 614 agsaIORequest_t *agIORequest, 615 bit32 agIOStatus, 616 bit32 agIOInfoLen, 617 agsaFrameHandle_t agFrameHandle 618 ); 619 620osGLOBAL void 621itdssIOSuccessHandler( 622 agsaRoot_t *agRoot, 623 agsaIORequest_t *agIORequest, 624 bit32 agIOStatus, 625 bit32 agIOInfoLen, 626 void *agParam, 627 bit32 agOtherInfo 628 ); 629osGLOBAL void 630itdssIOAbortedHandler( 631 agsaRoot_t *agRoot, 632 agsaIORequest_t *agIORequest, 633 bit32 agIOStatus, 634 bit32 agIOInfoLen, 635 void *agParam, 636 bit32 agOtherInfo 637 ); 638 639#ifdef REMOVED 640osGLOBAL void 641itdssIOOverFlowHandler( 642 agsaRoot_t *agRoot, 643 agsaIORequest_t *agIORequest, 644 bit32 agIOStatus, 645 bit32 agIOInfoLen, 646 void *agParam 647 ); 648#endif 649 650osGLOBAL void 651itdssIOUnderFlowHandler( 652 agsaRoot_t *agRoot, 653 agsaIORequest_t *agIORequest, 654 bit32 agIOStatus, 655 bit32 agIOInfoLen, 656 void *agParam, 657 bit32 agOtherInfo 658 ); 659 660osGLOBAL void 661itdssIOFailedHandler( 662 agsaRoot_t *agRoot, 663 agsaIORequest_t *agIORequest, 664 bit32 agIOStatus, 665 bit32 agIOInfoLen, 666 void *agParam, 667 bit32 agOtherInfo 668 ); 669 670osGLOBAL void 671itdssIOAbortResetHandler( 672 agsaRoot_t *agRoot, 673 agsaIORequest_t *agIORequest, 674 bit32 agIOStatus, 675 bit32 agIOInfoLen, 676 void *agParam, 677 bit32 agOtherInfo 678 ); 679osGLOBAL void 680itdssIONotValidHandler( 681 agsaRoot_t *agRoot, 682 agsaIORequest_t *agIORequest, 683 bit32 agIOStatus, 684 bit32 agIOInfoLen, 685 void *agParam, 686 bit32 agOtherInfo 687 ); 688 689osGLOBAL void 690itdssIONoDeviceHandler( 691 agsaRoot_t *agRoot, 692 agsaIORequest_t *agIORequest, 693 bit32 agIOStatus, 694 bit32 agIOInfoLen, 695 void *agParam, 696 bit32 agOtherInfo 697 ); 698 699#ifdef REMOVED /* removed from spec */ 700osGLOBAL void 701itdssIllegalParameterHandler( 702 agsaRoot_t *agRoot, 703 agsaIORequest_t *agIORequest, 704 bit32 agIOStatus, 705 bit32 agIOInfoLen, 706 void *agParam 707 ); 708#endif 709 710osGLOBAL void 711itdssLinkFailureHandler( 712 agsaRoot_t *agRoot, 713 agsaIORequest_t *agIORequest, 714 bit32 agIOStatus, 715 bit32 agIOInfoLen, 716 void *agParam, 717 bit32 agOtherInfo 718 ); 719osGLOBAL void 720itdssProgErrorHandler( 721 agsaRoot_t *agRoot, 722 agsaIORequest_t *agIORequest, 723 bit32 agIOStatus, 724 bit32 agIOInfoLen, 725 void *agParam, 726 bit32 agOtherInfo 727 ); 728osGLOBAL void 729itdssXferErrorBreakHandler( 730 agsaRoot_t *agRoot, 731 agsaIORequest_t *agIORequest, 732 bit32 agIOStatus, 733 bit32 agIOInfoLen, 734 void *agParam, 735 bit32 agOtherInfo 736 ); 737osGLOBAL void 738itdssXferErrorPhyNotReadyHandler( 739 agsaRoot_t *agRoot, 740 agsaIORequest_t *agIORequest, 741 bit32 agIOStatus, 742 bit32 agIOInfoLen, 743 void *agParam, 744 bit32 agOtherInfo 745 ); 746osGLOBAL void 747itdssOpenCnxErrorProtocolNotSupprotedHandler( 748 agsaRoot_t *agRoot, 749 agsaIORequest_t *agIORequest, 750 bit32 agIOStatus, 751 bit32 agIOInfoLen, 752 void *agParam, 753 bit32 agOtherInfo 754 ); 755osGLOBAL void 756itdssOpenCnxErrorZoneViolationHandler( 757 agsaRoot_t *agRoot, 758 agsaIORequest_t *agIORequest, 759 bit32 agIOStatus, 760 bit32 agIOInfoLen, 761 void *agParam, 762 bit32 agOtherInfo 763 ); 764osGLOBAL void 765itdssOpenCnxErrorBreakHandler( 766 agsaRoot_t *agRoot, 767 agsaIORequest_t *agIORequest, 768 bit32 agIOStatus, 769 bit32 agIOInfoLen, 770 void *agParam, 771 bit32 agOtherInfo 772 ); 773osGLOBAL void 774itdssOpenCnxErrorITNexusLossHandler( 775 agsaRoot_t *agRoot, 776 agsaIORequest_t *agIORequest, 777 bit32 agIOStatus, 778 bit32 agIOInfoLen, 779 void *agParam, 780 bit32 agOtherInfo 781 ); 782osGLOBAL void 783itdssOpenCnxErrorBadDestinationHandler( 784 agsaRoot_t *agRoot, 785 agsaIORequest_t *agIORequest, 786 bit32 agIOStatus, 787 bit32 agIOInfoLen, 788 void *agParam, 789 bit32 agOtherInfo 790 ); 791osGLOBAL void 792itdssOpenCnxErrorConnectionRateNotSupportedHandler( 793 agsaRoot_t *agRoot, 794 agsaIORequest_t *agIORequest, 795 bit32 agIOStatus, 796 bit32 agIOInfoLen, 797 void *agParam, 798 bit32 agOtherInfo 799 ); 800 801osGLOBAL void 802itdssOpenCnxErrorSTPResourceBusyHandler( 803 agsaRoot_t *agRoot, 804 agsaIORequest_t *agIORequest, 805 bit32 agIOStatus, 806 bit32 agIOInfoLen, 807 void *agParam, 808 bit32 agOtherInfo 809 ); 810osGLOBAL void 811itdssOpenCnxErrorWrongDestinationHandler( 812 agsaRoot_t *agRoot, 813 agsaIORequest_t *agIORequest, 814 bit32 agIOStatus, 815 bit32 agIOInfoLen, 816 void *agParam, 817 bit32 agOtherInfo 818 ); 819osGLOBAL void 820itdssOpenCnxErrorUnknownErrorHandler( 821 agsaRoot_t *agRoot, 822 agsaIORequest_t *agIORequest, 823 bit32 agIOStatus, 824 bit32 agIOInfoLen, 825 void *agParam, 826 bit32 agOtherInfo 827 ); 828osGLOBAL void 829itdssXferErrorNAKReceivedHandler( 830 agsaRoot_t *agRoot, 831 agsaIORequest_t *agIORequest, 832 bit32 agIOStatus, 833 bit32 agIOInfoLen, 834 void *agParam, 835 bit32 agOtherInfo 836 ); 837osGLOBAL void 838itdssXferErrorACKNAKTimeoutHandler( 839 agsaRoot_t *agRoot, 840 agsaIORequest_t *agIORequest, 841 bit32 agIOStatus, 842 bit32 agIOInfoLen, 843 void *agParam, 844 bit32 agOtherInfo 845 ); 846osGLOBAL void 847itdssXferErrorPeerAbortedHandler( 848 agsaRoot_t *agRoot, 849 agsaIORequest_t *agIORequest, 850 bit32 agIOStatus, 851 bit32 agIOInfoLen, 852 void *agParam, 853 bit32 agOtherInfo 854 ); 855osGLOBAL void 856itdssXferErrorRxFrameHandler( 857 agsaRoot_t *agRoot, 858 agsaIORequest_t *agIORequest, 859 bit32 agIOStatus, 860 bit32 agIOInfoLen, 861 void *agParam, 862 bit32 agOtherInfo 863 ); 864osGLOBAL void 865itdssXferErrorDMAHandler( 866 agsaRoot_t *agRoot, 867 agsaIORequest_t *agIORequest, 868 bit32 agIOStatus, 869 bit32 agIOInfoLen, 870 void *agParam, 871 bit32 agOtherInfo 872 ); 873osGLOBAL void 874itdssXferErrorCreditTimeoutHandler( 875 agsaRoot_t *agRoot, 876 agsaIORequest_t *agIORequest, 877 bit32 agIOStatus, 878 bit32 agIOInfoLen, 879 void *agParam, 880 bit32 agOtherInfo 881 ); 882 883osGLOBAL void 884itdssXferErrorCMDIssueACKNAKTimeoutHandler( 885 agsaRoot_t *agRoot, 886 agsaIORequest_t *agIORequest, 887 bit32 agIOStatus, 888 bit32 agIOInfoLen, 889 void *agParam, 890 bit32 agOtherInfo 891 ); 892osGLOBAL void 893itdssXferErrorCMDIssueBreakBeforeACKNAKHandler( 894 agsaRoot_t *agRoot, 895 agsaIORequest_t *agIORequest, 896 bit32 agIOStatus, 897 bit32 agIOInfoLen, 898 void *agParam, 899 bit32 agOtherInfo 900 ); 901osGLOBAL void 902itdssXferErrorCMDIssuePhyDownBeforeACKNAKHandler( 903 agsaRoot_t *agRoot, 904 agsaIORequest_t *agIORequest, 905 bit32 agIOStatus, 906 bit32 agIOInfoLen, 907 void *agParam, 908 bit32 agOtherInfo 909 ); 910osGLOBAL void 911itdssXferErrorDisruptedPhyDownHandler( 912 agsaRoot_t *agRoot, 913 agsaIORequest_t *agIORequest, 914 bit32 agIOStatus, 915 bit32 agIOInfoLen, 916 void *agParam, 917 bit32 agOtherInfo 918 ); 919osGLOBAL void 920itdssXferErrorOffsetMismatchHandler( 921 agsaRoot_t *agRoot, 922 agsaIORequest_t *agIORequest, 923 bit32 agIOStatus, 924 bit32 agIOInfoLen, 925 void *agParam, 926 bit32 agOtherInfo 927 ); 928osGLOBAL void 929itdssXferErrorXferZeroDataLenHandler( 930 agsaRoot_t *agRoot, 931 agsaIORequest_t *agIORequest, 932 bit32 agIOStatus, 933 bit32 agIOInfoLen, 934 void *agParam, 935 bit32 agOtherInfo 936 ); 937 938osGLOBAL void 939itdssXferOpenRetryTimeoutHandler( 940 agsaRoot_t *agRoot, 941 agsaIORequest_t *agIORequest, 942 bit32 agIOStatus, 943 bit32 agIOInfoLen, 944 void *agParam, 945 bit32 agOtherInfo 946 ); 947 948osGLOBAL void 949itdssPortInResetHandler( 950 agsaRoot_t *agRoot, 951 agsaIORequest_t *agIORequest, 952 bit32 agIOStatus, 953 bit32 agIOInfoLen, 954 void *agParam, 955 bit32 agOtherInfo 956 ); 957 958osGLOBAL void 959itdssDsNonOperationalHandler( 960 agsaRoot_t *agRoot, 961 agsaIORequest_t *agIORequest, 962 bit32 agIOStatus, 963 bit32 agIOInfoLen, 964 void *agParam, 965 bit32 agOtherInfo 966 ); 967osGLOBAL void 968itdssDsInRecoveryHandler( 969 agsaRoot_t *agRoot, 970 agsaIORequest_t *agIORequest, 971 bit32 agIOStatus, 972 bit32 agIOInfoLen, 973 void *agParam, 974 bit32 agOtherInfo 975 ); 976osGLOBAL void 977itdssTmTagNotFoundHandler( 978 agsaRoot_t *agRoot, 979 agsaIORequest_t *agIORequest, 980 bit32 agIOStatus, 981 bit32 agIOInfoLen, 982 void *agParam, 983 bit32 agOtherInfo 984 ); 985osGLOBAL void 986itdssSSPExtIUZeroLenHandler( 987 agsaRoot_t *agRoot, 988 agsaIORequest_t *agIORequest, 989 bit32 agIOStatus, 990 bit32 agIOInfoLen, 991 void *agParam, 992 bit32 agOtherInfo 993 ); 994osGLOBAL void 995itdssXferErrorUnexpectedPhaseHandler( 996 agsaRoot_t *agRoot, 997 agsaIORequest_t *agIORequest, 998 bit32 agIOStatus, 999 bit32 agIOInfoLen, 1000 void *agParam, 1001 bit32 agOtherInfo 1002 ); 1003 1004#ifdef REMOVED 1005osGLOBAL void 1006itdssIOUnderFlowWithChkConditionHandler( 1007 agsaRoot_t *agRoot, 1008 agsaIORequest_t *agIORequest, 1009 bit32 agIOStatus, 1010 bit32 agIOInfoLen, 1011 void *agParam 1012 ); 1013#endif 1014 1015osGLOBAL void 1016itdssEncryptionHandler ( 1017 agsaRoot_t *agRoot, 1018 agsaIORequest_t *agIORequest, 1019 bit32 agIOStatus, 1020 bit32 agIOInfoLen, 1021 void *agParam, 1022 bit32 agOtherInfo 1023 ); 1024 1025osGLOBAL void 1026itdssXferOpenRetryBackoffThresholdReachedHandler( 1027 agsaRoot_t *agRoot, 1028 agsaIORequest_t *agIORequest, 1029 bit32 agIOStatus, 1030 bit32 agIOInfoLen, 1031 void *agParam, 1032 bit32 agOtherInfo 1033 ); 1034 1035osGLOBAL void 1036itdssOpenCnxErrorItNexusLossOpenTmoHandler( 1037 agsaRoot_t *agRoot, 1038 agsaIORequest_t *agIORequest, 1039 bit32 agIOStatus, 1040 bit32 agIOInfoLen, 1041 void *agParam, 1042 bit32 agOtherInfo 1043 ); 1044osGLOBAL void 1045itdssOpenCnxErrorItNexusLossNoDestHandler( 1046 agsaRoot_t *agRoot, 1047 agsaIORequest_t *agIORequest, 1048 bit32 agIOStatus, 1049 bit32 agIOInfoLen, 1050 void *agParam, 1051 bit32 agOtherInfo 1052 ); 1053osGLOBAL void 1054itdssOpenCnxErrorItNexusLossOpenCollideHandler( 1055 agsaRoot_t *agRoot, 1056 agsaIORequest_t *agIORequest, 1057 bit32 agIOStatus, 1058 bit32 agIOInfoLen, 1059 void *agParam, 1060 bit32 agOtherInfo 1061 ); 1062osGLOBAL void 1063itdssOpenCnxErrorItNexusLossOpenPathwayBlockedHandler( 1064 agsaRoot_t *agRoot, 1065 agsaIORequest_t *agIORequest, 1066 bit32 agIOStatus, 1067 bit32 agIOInfoLen, 1068 void *agParam, 1069 bit32 agOtherInfo 1070 ); 1071osGLOBAL void 1072itdssDifHandler( 1073 agsaRoot_t *agRoot, 1074 agsaIORequest_t *agIORequest, 1075 bit32 agIOStatus, 1076 bit32 agIOInfoLen, 1077 void *agParam, 1078 bit32 agOtherInfo 1079 ); 1080 1081osGLOBAL void 1082itdssIOResourceUnavailableHandler( 1083 agsaRoot_t *agRoot, 1084 agsaIORequest_t *agIORequest, 1085 bit32 agIOStatus, 1086 bit32 agIOInfoLen, 1087 void *agParam, 1088 bit32 agOtherInfo 1089 ); 1090 1091osGLOBAL void 1092itdssIORQEBusyFullHandler( 1093 agsaRoot_t *agRoot, 1094 agsaIORequest_t *agIORequest, 1095 bit32 agIOStatus, 1096 bit32 agIOInfoLen, 1097 void *agParam, 1098 bit32 agOtherInfo 1099 ); 1100 1101osGLOBAL void 1102itdssXferErrorInvalidSSPRspFrameHandler( 1103 agsaRoot_t *agRoot, 1104 agsaIORequest_t *agIORequest, 1105 bit32 agIOStatus, 1106 bit32 agIOInfoLen, 1107 void *agParam, 1108 bit32 agOtherInfo 1109 ); 1110 1111osGLOBAL void 1112itdssXferErrorEOBDataOverrunHandler( 1113 agsaRoot_t *agRoot, 1114 agsaIORequest_t *agIORequest, 1115 bit32 agIOStatus, 1116 bit32 agIOInfoLen, 1117 void *agParam, 1118 bit32 agOtherInfo 1119 ); 1120 1121osGLOBAL void 1122itdssOpenCnxErrorOpenPreemptedHandler( 1123 agsaRoot_t *agRoot, 1124 agsaIORequest_t *agIORequest, 1125 bit32 agIOStatus, 1126 bit32 agIOInfoLen, 1127 void *agParam, 1128 bit32 agOtherInfo 1129 ); 1130 1131/* default handler */ 1132osGLOBAL void 1133itdssIODefaultHandler ( 1134 agsaRoot_t *agRoot, 1135 agsaIORequest_t *agIORequest, 1136 bit32 agIOStatus, 1137 bit32 agIOInfoLen, 1138 void *agParam, 1139 bit32 agOtherInfo 1140 ); 1141osGLOBAL void 1142itdssIOForDebugging1Completed( 1143 agsaRoot_t *agRoot, 1144 agsaIORequest_t *agIORequest, 1145 bit32 agIOStatus, 1146 bit32 agIOInfoLen, 1147 void *agParam, 1148 bit32 agOtherInfo 1149 ); 1150 1151osGLOBAL void 1152itdssIOForDebugging2Completed( 1153 agsaRoot_t *agRoot, 1154 agsaIORequest_t *agIORequest, 1155 bit32 agIOStatus, 1156 bit32 agIOInfoLen, 1157 void *agParam, 1158 bit32 agOtherInfo 1159 ); 1160 1161osGLOBAL void 1162itdssIOForDebugging3Completed( 1163 agsaRoot_t *agRoot, 1164 agsaIORequest_t *agIORequest, 1165 bit32 agIOStatus, 1166 bit32 agIOInfoLen, 1167 void *agParam, 1168 bit32 agOtherInfo 1169 ); 1170 1171osGLOBAL void 1172itdssInitDiscoveryModule ( 1173 tiRoot_t *tiRoot 1174 ); 1175 1176osGLOBAL void 1177itdssGetResource ( 1178 tiRoot_t *tiRoot, 1179 tiInitiatorResource_t *initiatorResource 1180 ); 1181 1182 1183osGLOBAL void 1184itdssGetOperatingOptionParams( 1185 tiRoot_t *tiRoot, 1186 itdssOperatingOption_t *OperatingOption 1187 ); 1188 1189 1190osGLOBAL FORCEINLINE bit32 1191itdssIOPrepareSGL( 1192 tiRoot_t *tiRoot, 1193 tdIORequestBody_t *IORequestBody, 1194 tiSgl_t *tiSgl1, 1195 void *sglVirtualAddr 1196 ); 1197 1198#ifdef FDS_SM 1199osGLOBAL void 1200smReportRemoval( 1201 tiRoot_t *tiRoot, 1202 agsaRoot_t *agRoot, 1203 tdsaDeviceData_t *oneDeviceData, 1204 tdsaPortContext_t *onePortContext 1205 ); 1206osGLOBAL void 1207smReportRemovalDirect( 1208 tiRoot_t *tiRoot, 1209 agsaRoot_t *agRoot, 1210 tdsaDeviceData_t *oneDeviceData 1211 ); 1212osGLOBAL void 1213smHandleDirect( 1214 tiRoot_t *tiRoot, 1215 agsaRoot_t *agRoot, 1216 tdsaDeviceData_t *oneDeviceData, 1217 void *IDdata 1218 ); 1219 1220osGLOBAL void 1221ossaSATAIDAbortCB( 1222 agsaRoot_t *agRoot, 1223 agsaIORequest_t *agIORequest, 1224 bit32 flag, 1225 bit32 status 1226 ); 1227 1228osGLOBAL void 1229ossaIniSetDeviceInfoCB( 1230 agsaRoot_t *agRoot, 1231 agsaContext_t *agContext, 1232 agsaDevHandle_t *agDevHandle, 1233 bit32 status, 1234 bit32 option, 1235 bit32 param 1236 ); 1237 1238#endif /* FDS_SM */ 1239 1240#endif /* INITIATOR_DRIVER */ 1241 1242#ifdef TARGET_DRIVER 1243/***************************************************************************** 1244* 1245* SAS Target only PROTOTYPES (ttdproto.h) 1246* 1247*****************************************************************************/ 1248osGLOBAL bit32 1249ttdssInit( 1250 tiRoot_t *tiRoot, 1251 tiTargetResource_t *targetResource, 1252 tiTdSharedMem_t *tdSharedMem 1253 ); 1254 1255osGLOBAL void 1256ttdssGetResource ( 1257 tiRoot_t *tiRoot, 1258 tiTargetResource_t *targetResource 1259 ); 1260 1261osGLOBAL void 1262ttdssGetTargetParams( 1263 tiRoot_t *tiRoot 1264 ); 1265 1266osGLOBAL void 1267ttdssGetOperatingOptionParams( 1268 tiRoot_t *tiRoot, 1269 ttdssOperatingOption_t *OperatingOption 1270 ); 1271 1272osGLOBAL agBOOLEAN 1273ttdsaXchgInit( 1274 tiRoot_t *tiRoot, 1275 ttdsaXchgData_t *ttdsaXchgData, 1276 tiTargetMem_t *tgtMem, 1277 bit32 maxNumXchgs 1278 ); 1279 1280osGLOBAL void 1281ttdsaXchgLinkInit( 1282 tiRoot_t *tiRoot, 1283 ttdsaXchg_t *ttdsaXchg 1284 ); 1285 1286 1287osGLOBAL void 1288ttdsaXchgFreeStruct( 1289 tiRoot_t *tiRoot, 1290 ttdsaXchg_t *ttdsaXchg 1291 ); 1292osGLOBAL void 1293ttdsaSSPReqReceived( 1294 agsaRoot_t *agRoot, 1295 agsaDevHandle_t *agDevHandle, 1296 agsaFrameHandle_t agFrameHandle, 1297 bit32 agInitiatorTag, 1298 bit32 parameter, 1299 bit32 agFrameLen 1300 ); 1301 1302osGLOBAL ttdsaXchg_t 1303*ttdsaXchgGetStruct( 1304 agsaRoot_t *agRoot 1305 ); 1306osGLOBAL void 1307ttdsaDumpallXchg(tiRoot_t *tiRoot); 1308 1309osGLOBAL void 1310tdsaProcessCDB( 1311 agsaSSPCmdInfoUnit_t *cmdIU, 1312 ttdsaXchg_t *ttdsaXchg 1313 ); 1314 1315osGLOBAL bit32 1316ttdssIOPrepareSGL( 1317 tiRoot_t *tiRoot, 1318 tdIORequestBody_t *tdIORequestBody, 1319 tiSgl_t *tiSgl1, 1320 tiSgl_t *tiSgl2, 1321 void *sglVirtualAddr); 1322 1323osGLOBAL void 1324ttdsaIOCompleted( 1325 agsaRoot_t *agRoot, 1326 agsaIORequest_t *agIORequest, 1327 bit32 agIOStatus, 1328 bit32 agIOInfoLen, 1329 agsaFrameHandle_t agFrameHandle, 1330 bit32 agOtherInfo 1331 ); 1332 1333osGLOBAL void 1334ttdsaTMProcess( 1335 tiRoot_t *tiRoot, 1336 ttdsaXchg_t *ttdsaXchg 1337 ); 1338 1339osGLOBAL void 1340ttdsaSMPReqReceived( 1341 agsaRoot_t *agRoot, 1342 agsaDevHandle_t *agDevHandle, 1343 agsaSMPFrameHeader_t *agFrameHeader, 1344 agsaFrameHandle_t agFrameHandle, 1345 bit32 agFrameLength, 1346 bit32 phyId 1347 ); 1348osGLOBAL void 1349ttdsaSMPCompleted( 1350 agsaRoot_t *agRoot, 1351 agsaIORequest_t *agIORequest, 1352 bit32 agIOStatus, 1353 //agsaSMPFrameHeader_t *agFrameHeader, (TP) 1354 bit32 agIOInfoLen, 1355 agsaFrameHandle_t agFrameHandle 1356 ); 1357osGLOBAL bit32 1358ttdsaSendResp( 1359 agsaRoot_t *agRoot, 1360 ttdsaXchg_t *ttdsaXchg 1361 ); 1362 1363osGLOBAL void 1364ttdssReportRemovals( 1365 agsaRoot_t *agRoot, 1366 tdsaPortContext_t *onePortContext, 1367 bit32 flag 1368 ); 1369 1370 1371osGLOBAL void 1372ttdsaAbortAll( 1373 tiRoot_t *tiRoot, 1374 agsaRoot_t *agRoot, 1375 tdsaDeviceData_t *oneDeviceData 1376 ); 1377 1378osGLOBAL void 1379ttdssIOAbortedHandler( 1380 agsaRoot_t *agRoot, 1381 agsaIORequest_t *agIORequest, 1382 bit32 agIOStatus, 1383 bit32 agIOInfoLen, 1384 void *agParam, 1385 bit32 agOtherInfo 1386 ); 1387 1388#endif /* TARGET_DRIVER */ 1389 1390 1391 1392/***************************************************************************** 1393* 1394* For debugging only 1395* 1396*****************************************************************************/ 1397osGLOBAL void 1398tdsaPrintSwConfig( 1399 agsaSwConfig_t *SwConfig 1400 ); 1401 1402osGLOBAL void 1403tdsaPrintHwConfig( 1404 agsaHwConfig_t *HwConfig 1405 ); 1406osGLOBAL void 1407tdssPrintSASIdentify( 1408 agsaSASIdentify_t *id 1409 ); 1410osGLOBAL void 1411print_tdlist_flink(tdList_t *hdr, int type, int flag); 1412 1413osGLOBAL void 1414print_tdlist_blink(tdList_t *hdr, int flag); 1415 1416osGLOBAL void 1417tdhexdump(const char *ptitle, bit8 *pbuf, int len); 1418 1419 1420/***************************************************************************** 1421* 1422* SAT only PROTOTYPE 1423* 1424*****************************************************************************/ 1425 1426#ifdef SATA_ENABLE 1427 1428/***************************************************************************** 1429 *! \brief satIOStart 1430 * 1431 * This routine is called to initiate a new SCSI request to SATL. 1432 * 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 1438 * 1439 * \return: 1440 * 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. 1445 * 1446 * 1447 *****************************************************************************/ 1448 1449GLOBAL bit32 satIOStart( 1450 tiRoot_t *tiRoot, 1451 tiIORequest_t *tiIORequest, 1452 tiDeviceHandle_t *tiDeviceHandle, 1453 tiScsiInitiatorRequest_t *tiScsiRequest, 1454 satIOContext_t *satIOContext 1455 ); 1456 1457/***************************************************************************** 1458 *! \brief satIOAbort 1459 * 1460 * This routine is called to initiate a I/O abort to SATL. 1461 * This routine is independent of HW/LL API. 1462 * 1463 * \param tiRoot: Pointer to TISA initiator driver/port instance. 1464 * \param taskTag: Pointer to TISA I/O request context/tag to be aborted. 1465 * 1466 * \return: 1467 * 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. 1471 * 1472 * 1473 *****************************************************************************/ 1474 1475GLOBAL bit32 satIOAbort( 1476 tiRoot_t *tiRoot, 1477 tiIORequest_t *taskTag ); 1478 1479 1480/***************************************************************************** 1481 *! \brief satTM 1482 * 1483 * This routine is called to initiate a TM request to SATL. 1484 * This routine is independent of HW/LL API. 1485 * 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. 1493 * 1494 * \return: 1495 * 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. 1500 * 1501 * 1502 *****************************************************************************/ 1503 1504osGLOBAL bit32 satTM( 1505 tiRoot_t *tiRoot, 1506 tiDeviceHandle_t *tiDeviceHandle, 1507 bit32 task, 1508 tiLUN_t *lun, 1509 tiIORequest_t *taskTag, 1510 tiIORequest_t *currentTaskTag, 1511 tdIORequestBody_t *tiRequestBody, 1512 bit32 NotifyOS 1513 ); 1514 1515 1516#endif /* SAT only */ 1517 1518#ifdef INITIATOR_DRIVER 1519#ifdef TD_DISCOVER 1520 1521osGLOBAL void 1522tdsaExpanderInit( 1523 tiRoot_t *tiRoot 1524 ); 1525 1526osGLOBAL bit32 1527tdsaDiscover( 1528 tiRoot_t *tiRoot, 1529 tdsaPortContext_t *onePortContext, 1530 bit32 type, 1531 bit32 option 1532 ); 1533 1534osGLOBAL bit32 1535tdsaSASFullDiscover( 1536 tiRoot_t *tiRoot, 1537 tdsaPortContext_t *onePortContext 1538 ); 1539 1540osGLOBAL bit32 1541tdsaSATAFullDiscover( 1542 tiRoot_t *tiRoot, 1543 tdsaPortContext_t *onePortContext 1544 ); 1545osGLOBAL bit32 1546tdsaSASIncrementalDiscover( 1547 tiRoot_t *tiRoot, 1548 tdsaPortContext_t *onePortContext 1549 ); 1550 1551osGLOBAL bit32 1552tdsaSATAIncrementalDiscover( 1553 tiRoot_t *tiRoot, 1554 tdsaPortContext_t *onePortContext 1555 ); 1556 1557osGLOBAL void 1558tdsaSASUpStreamDiscoverStart( 1559 tiRoot_t *tiRoot, 1560 tdsaPortContext_t *onePortContext, 1561 tdsaDeviceData_t *oneDeviceData 1562 ); 1563 1564osGLOBAL void 1565tdsaSASUpStreamDiscovering( 1566 tiRoot_t *tiRoot, 1567 tdsaPortContext_t *onePortContext, 1568 tdsaDeviceData_t *oneDeviceData 1569 ); 1570 1571 1572osGLOBAL void 1573tdsaSASDownStreamDiscoverStart( 1574 tiRoot_t *tiRoot, 1575 tdsaPortContext_t *onePortContext, 1576 tdsaDeviceData_t *oneDeviceData 1577 ); 1578 1579osGLOBAL void 1580tdsaSASDownStreamDiscovering( 1581 tiRoot_t *tiRoot, 1582 tdsaPortContext_t *onePortContext, 1583 tdsaDeviceData_t *oneDeviceData 1584 ); 1585 1586osGLOBAL void 1587tdsaSASDiscoverDone( 1588 tiRoot_t *tiRoot, 1589 tdsaPortContext_t *onePortContext, 1590 bit32 flag 1591 ); 1592 1593osGLOBAL void 1594tdsaSATADiscoverDone( 1595 tiRoot_t *tiRoot, 1596 tdsaPortContext_t *onePortContext, 1597 bit32 flag 1598 ); 1599 1600osGLOBAL void 1601tdsaAckBC( 1602 tiRoot_t *tiRoot, 1603 tdsaPortContext_t *onePortContext 1604 ); 1605 1606osGLOBAL void 1607tdsaDiscoveryResetProcessed( 1608 tiRoot_t *tiRoot, 1609 tdsaPortContext_t *onePortContext 1610 ); 1611 1612 1613 1614osGLOBAL void 1615tdsaSASUpStreamDiscoverExpanderPhy( 1616 tiRoot_t *tiRoot, 1617 tdsaPortContext_t *onePortContext, 1618 tdsaExpander_t *oneExpander, 1619 smpRespDiscover_t *pDiscoverResp 1620 ); 1621osGLOBAL tdsaExpander_t * 1622tdsaFindUpStreamConfigurableExp(tiRoot_t *tiRoot, 1623 tdsaExpander_t *oneExpander); 1624 1625osGLOBAL void 1626tdsaSASDownStreamDiscoverExpanderPhy( 1627 tiRoot_t *tiRoot, 1628 tdsaPortContext_t *onePortContext, 1629 tdsaExpander_t *oneExpander, 1630 smpRespDiscover_t *pDiscoverResp 1631 ); 1632osGLOBAL void 1633tdsaSASUpStreamDiscoverExpanderPhySkip( 1634 tiRoot_t *tiRoot, 1635 tdsaPortContext_t *onePortContext, 1636 tdsaExpander_t *oneExpander 1637 ); 1638osGLOBAL tdsaExpander_t * 1639tdsaFindDownStreamConfigurableExp(tiRoot_t *tiRoot, 1640 tdsaExpander_t *oneExpander); 1641 1642osGLOBAL void 1643tdsaSASDownStreamDiscoverExpanderPhySkip( 1644 tiRoot_t *tiRoot, 1645 tdsaPortContext_t *onePortContext, 1646 tdsaExpander_t *oneExpander 1647 ); 1648osGLOBAL void 1649tdsaDiscoveringStpSATADevice( 1650 tiRoot_t *tiRoot, 1651 tdsaPortContext_t *onePortContext, 1652 tdsaDeviceData_t *oneDeviceData 1653 ); 1654 1655 1656osGLOBAL void 1657tdsaSASExpanderUpStreamPhyAdd( 1658 tiRoot_t *tiRoot, 1659 tdsaExpander_t *oneExpander, 1660 bit8 phyId 1661 ); 1662 1663osGLOBAL void 1664tdsaSASExpanderDownStreamPhyAdd( 1665 tiRoot_t *tiRoot, 1666 tdsaExpander_t *oneExpander, 1667 bit8 phyId 1668 ); 1669osGLOBAL bit16 1670tdsaFindCurrentDownStreamPhyIndex( 1671 tiRoot_t *tiRoot, 1672 tdsaExpander_t *oneExpander 1673 ); 1674 1675osGLOBAL tdsaDeviceData_t * 1676tdsaPortSASDeviceFind( 1677 tiRoot_t *tiRoot, 1678 tdsaPortContext_t *onePortContext, 1679 bit32 sasAddrLo, 1680 bit32 sasAddrHi 1681 ); 1682 1683GLOBAL tdsaDeviceData_t * 1684tdsaPortSASDeviceAdd( 1685 tiRoot_t *tiRoot, 1686 tdsaPortContext_t *onePortContext, 1687 agsaSASIdentify_t sasIdentify, 1688 bit32 sasInitiator, 1689 bit8 connectionRate, 1690 bit32 itNexusTimeout, 1691 bit32 firstBurstSize, 1692 bit32 deviceType, 1693 tdsaDeviceData_t *oneExpDeviceData, 1694 bit8 phyID 1695 ); 1696 1697 1698 1699 1700 1701/* in tdport.c */ 1702osGLOBAL tdsaDeviceData_t * 1703tdssNewAddSASToSharedcontext( 1704 agsaRoot_t *agRoot, 1705 tdsaPortContext_t *onePortContext, 1706 tdsaSASSubID_t *agSASSubID, 1707 tdsaDeviceData_t *oneExpDeviceData, 1708 bit8 phyID 1709 ); 1710osGLOBAL void 1711tdsaResetValidDeviceData( 1712 agsaRoot_t *agRoot, 1713 tdsaPortContext_t *onePortContext 1714 ); 1715 1716 1717osGLOBAL void 1718tdssReportChanges( 1719 agsaRoot_t *agRoot, 1720 tdsaPortContext_t *onePortContext ); 1721 1722osGLOBAL void 1723tdssReportRemovals( 1724 agsaRoot_t *agRoot, 1725 tdsaPortContext_t *onePortContext, 1726 bit32 flag 1727 ); 1728osGLOBAL void 1729tdssInternalRemovals( 1730 agsaRoot_t *agRoot, 1731 tdsaPortContext_t *onePortContext 1732 ); 1733osGLOBAL void 1734tdssDiscoveryErrorRemovals( 1735 agsaRoot_t *agRoot, 1736 tdsaPortContext_t *onePortContext 1737 ); 1738 1739osGLOBAL void 1740tdsaSASDiscoverAbort( 1741 tiRoot_t *tiRoot, 1742 tdsaPortContext_t *onePortContext 1743 ); 1744 1745 1746osGLOBAL tdsaDeviceData_t * 1747tdsaFindRegNValid( 1748 agsaRoot_t *agRoot, 1749 tdsaPortContext_t *onePortContext, 1750 tdsaSASSubID_t *agSASSubID 1751 ); 1752bit32 1753tdssNewSASorNot( 1754 agsaRoot_t *agRoot, 1755 tdsaPortContext_t *onePortContext, 1756 tdsaSASSubID_t *agSASSubID 1757 ); 1758 1759 1760osGLOBAL tdsaExpander_t * 1761tdssSASDiscoveringExpanderAlloc( 1762 tiRoot_t *tiRoot, 1763 tdsaPortContext_t *onePortContext, 1764 tdsaDeviceData_t *oneDeviceData 1765 ); 1766 1767osGLOBAL void 1768tdssSASDiscoveringExpanderAdd( 1769 tiRoot_t *tiRoot, 1770 tdsaPortContext_t *onePortContext, 1771 tdsaExpander_t *oneExpander 1772 ); 1773 1774osGLOBAL void 1775tdssSASDiscoveringExpanderRemove( 1776 tiRoot_t *tiRoot, 1777 tdsaPortContext_t *onePortContext, 1778 tdsaExpander_t *oneExpander 1779 ); 1780 1781GLOBAL bit32 1782tdssSATADeviceTypeDecode( 1783 bit8 *pSignature 1784 ); 1785 1786 1787GLOBAL tdsaDeviceData_t * 1788tdsaPortSATADeviceAdd( 1789 tiRoot_t *tiRoot, 1790 tdsaPortContext_t *onePortContext, 1791 tdsaDeviceData_t *oneSTPBridge, 1792 bit8 *Signature, 1793 bit8 pm, 1794 bit8 pmField, 1795 bit8 connectionRate, 1796 tdsaDeviceData_t *oneExpDeviceData, 1797 bit8 phyID 1798 ); 1799 1800/* in tdport.c */ 1801osGLOBAL tdsaDeviceData_t * 1802tdssNewAddSATAToSharedcontext(tiRoot_t *tiRoot, 1803 agsaRoot_t *agRoot, 1804 tdsaPortContext_t *onePortContext, 1805 agsaSATADeviceInfo_t *agSATADeviceInfo, 1806 bit8 *Signature, 1807 bit8 pm, 1808 bit8 pmField, 1809 bit32 connectionRate, 1810 tdsaDeviceData_t *oneExpDeviceData, 1811 bit8 phyID 1812 ); 1813 1814osGLOBAL tdsaDeviceData_t * 1815tdsaFindRightDevice( 1816 tiRoot_t *tiRoot, 1817 tdsaPortContext_t *onePortContext, 1818 tdsaDeviceData_t *tdsaDeviceData 1819 ); 1820GLOBAL void 1821ossaIDCDiscoverCompleted( 1822 agsaRoot_t *agRoot, 1823 agsaIORequest_t *agIORequest, 1824 bit32 agIOStatus, 1825 void *agFirstDword, 1826 bit32 agIOInfoLen, 1827 agsaFrameHandle_t agFrameHandle 1828 ); 1829 1830osGLOBAL bit8 1831tdsaFindLocalLinkRate( 1832 tiRoot_t *tiRoot, 1833 tdsaPortStartInfo_t *tdsaPortStartInfo 1834 ); 1835 1836/* SMP related */ 1837 1838osGLOBAL bit32 1839tdSMPStart( 1840 tiRoot_t *tiRoot, 1841 agsaRoot_t *agRoot, 1842 tdsaDeviceData_t *oneDeviceData, 1843 bit32 functionCode, 1844 bit8 *pSmpBody, 1845 bit32 smpBodySize, 1846 bit32 agRequestType, 1847 tiIORequest_t *CurrentTaskTag, 1848 bit32 queueNumber 1849 ); 1850//temp for testing 1851osGLOBAL void 1852tdsaReportManInfoSend( 1853 tiRoot_t *tiRoot, 1854 tdsaDeviceData_t *oneDeviceData 1855 ); 1856 1857osGLOBAL void 1858tdsaReportManInfoRespRcvd( 1859 tiRoot_t *tiRoot, 1860 agsaRoot_t *agRoot, 1861 tdsaDeviceData_t *oneDeviceData, 1862 tdssSMPFrameHeader_t *frameHeader, 1863 agsaFrameHandle_t frameHandle 1864 ); 1865 1866//end temp for testing 1867 1868osGLOBAL void 1869tdsaReportGeneralSend( 1870 tiRoot_t *tiRoot, 1871 tdsaDeviceData_t *oneDeviceData 1872 ); 1873 1874osGLOBAL void 1875tdsaReportGeneralRespRcvd( 1876 tiRoot_t *tiRoot, 1877 agsaRoot_t *agRoot, 1878 agsaIORequest_t *agIORequest, 1879 tdsaDeviceData_t *oneDeviceData, 1880 tdssSMPFrameHeader_t *frameHeader, 1881 agsaFrameHandle_t frameHandle 1882 ); 1883osGLOBAL void 1884tdsaDiscoverSend( 1885 tiRoot_t *tiRoot, 1886 tdsaDeviceData_t *oneDeviceData 1887 ); 1888 1889osGLOBAL void 1890tdsaDiscoverRespRcvd( 1891 tiRoot_t *tiRoot, 1892 agsaRoot_t *agRoot, 1893 agsaIORequest_t *agIORequest, 1894 tdsaDeviceData_t *oneDeviceData, 1895 tdssSMPFrameHeader_t *frameHeader, 1896 agsaFrameHandle_t frameHandle 1897 ); 1898 1899 1900osGLOBAL void 1901tdsaReportPhySataSend( 1902 tiRoot_t *tiRoot, 1903 tdsaDeviceData_t *oneDeviceData, 1904 bit8 phyId 1905 ); 1906 1907 1908 1909osGLOBAL void 1910tdsaReportPhySataRcvd( 1911 tiRoot_t *tiRoot, 1912 agsaRoot_t *agRoot, 1913 agsaIORequest_t *agIORequest, 1914 tdsaDeviceData_t *oneDeviceData, 1915 tdssSMPFrameHeader_t *frameHeader, 1916 agsaFrameHandle_t frameHandle 1917 ); 1918 1919osGLOBAL bit32 1920tdsaSASRoutingEntryAdd( 1921 tiRoot_t *tiRoot, 1922 tdsaExpander_t *oneExpander, 1923 bit32 phyId, 1924 bit32 configSASAddressHi, 1925 bit32 configSASAddressLo 1926 ); 1927 1928 1929osGLOBAL void 1930tdsaConfigRoutingInfoRespRcvd( 1931 tiRoot_t *tiRoot, 1932 agsaRoot_t *agRoot, 1933 agsaIORequest_t *agIORequest, 1934 tdsaDeviceData_t *oneDeviceData, 1935 tdssSMPFrameHeader_t *frameHeader, 1936 agsaFrameHandle_t frameHandle 1937 ); 1938 1939osGLOBAL bit32 1940tdsaPhyControlSend( 1941 tiRoot_t *tiRoot, 1942 tdsaDeviceData_t *oneDeviceData, 1943 bit8 phyOp, 1944 tiIORequest_t *CurrentTaskTag, 1945 bit32 queueNumber 1946 ); 1947 1948osGLOBAL void 1949tdsaPhyControlRespRcvd( 1950 tiRoot_t *tiRoot, 1951 agsaRoot_t *agRoot, 1952 agsaIORequest_t *agIORequest, 1953 tdsaDeviceData_t *oneDeviceData, 1954 tdssSMPFrameHeader_t *frameHeader, 1955 agsaFrameHandle_t frameHandle, 1956 tiIORequest_t *CurrentTaskTag 1957 ); 1958 1959osGLOBAL void 1960tdsaPhyControlFailureRespRcvd( 1961 tiRoot_t *tiRoot, 1962 agsaRoot_t *agRoot, 1963 tdsaDeviceData_t *oneDeviceData, 1964 tdssSMPFrameHeader_t *frameHeader, 1965 agsaFrameHandle_t frameHandle, 1966 tiIORequest_t *CurrentTaskTag 1967 ); 1968 1969 1970osGLOBAL void 1971tdsaDumpAllExp( 1972 tiRoot_t *tiRoot, 1973 tdsaPortContext_t *onePortContext, 1974 tdsaExpander_t *oneExpander 1975 ); 1976osGLOBAL void 1977tdsaDumpAllUpExp( 1978 tiRoot_t *tiRoot, 1979 tdsaPortContext_t *onePortContext, 1980 tdsaExpander_t *oneExpander 1981 ); 1982osGLOBAL void 1983tdsaCleanAllExp( 1984 tiRoot_t *tiRoot, 1985 tdsaPortContext_t *onePortContext 1986 ); 1987osGLOBAL void 1988tdsaFreeAllExp( 1989 tiRoot_t *tiRoot, 1990 tdsaPortContext_t *onePortContext 1991 ); 1992osGLOBAL void 1993tdsaDumpAllFreeExp( 1994 tiRoot_t *tiRoot 1995 ); 1996 1997osGLOBAL void 1998tdsaDiscoveryTimer(tiRoot_t *tiRoot, 1999 tdsaPortContext_t *onePortContext, 2000 tdsaDeviceData_t *oneDeviceData 2001 ); 2002 2003osGLOBAL void 2004tdsaDiscoveryTimerCB( 2005 tiRoot_t * tiRoot, 2006 void * timerData1, 2007 void * timerData2, 2008 void * timerData3 2009 ); 2010 2011osGLOBAL void 2012tdsaConfigureRouteTimer(tiRoot_t *tiRoot, 2013 tdsaPortContext_t *onePortContext, 2014 tdsaExpander_t *oneExpander, 2015 smpRespDiscover_t *ptdSMPDiscoverResp 2016 ); 2017 2018osGLOBAL void 2019tdsaConfigureRouteTimerCB( 2020 tiRoot_t * tiRoot, 2021 void * timerData1, 2022 void * timerData2, 2023 void * timerData3 2024 ); 2025 2026osGLOBAL void 2027tdsaDeviceRegistrationTimer(tiRoot_t *tiRoot, 2028 tdsaPortContext_t *onePortContext, 2029 tdsaDeviceData_t *oneDeviceData 2030 ); 2031 2032osGLOBAL void 2033tdsaDeviceRegistrationTimerCB( 2034 tiRoot_t * tiRoot, 2035 void * timerData1, 2036 void * timerData2, 2037 void * timerData3 2038 ); 2039 2040osGLOBAL void 2041tdsaSMPBusyTimer(tiRoot_t *tiRoot, 2042 tdsaPortContext_t *onePortContext, 2043 tdsaDeviceData_t *oneDeviceData, 2044 tdssSMPRequestBody_t *tdSMPRequestBody 2045 ); 2046 2047osGLOBAL void 2048tdsaSMPBusyTimerCB( 2049 tiRoot_t * tiRoot, 2050 void * timerData1, 2051 void * timerData2, 2052 void * timerData3 2053 ); 2054 2055osGLOBAL void 2056tdsaSATAIDDeviceTimer(tiRoot_t *tiRoot, 2057 tdsaDeviceData_t *oneDeviceData 2058 ); 2059#ifdef FDS_SM 2060osGLOBAL void 2061tdIDStartTimer(tiRoot_t *tiRoot, 2062 smIORequest_t *smIORequest, 2063 tdsaDeviceData_t *oneDeviceData 2064 ); 2065osGLOBAL void 2066tdIDStartTimerCB( 2067 tiRoot_t * tiRoot, 2068 void * timerData1, 2069 void * timerData2, 2070 void * timerData3 2071 ); 2072#endif 2073osGLOBAL void 2074tdsaBCTimer(tiRoot_t *tiRoot, 2075 tdsaPortContext_t *onePortContext 2076 ); 2077 2078osGLOBAL void 2079tdsaBCTimerCB( 2080 tiRoot_t * tiRoot, 2081 void * timerData1, 2082 void * timerData2, 2083 void * timerData3 2084 ); 2085 2086osGLOBAL void 2087tdsaSATAIDDeviceTimerCB( 2088 tiRoot_t * tiRoot, 2089 void * timerData1, 2090 void * timerData2, 2091 void * timerData3 2092 ); 2093 2094osGLOBAL void 2095tdsaDiscoverySMPTimer(tiRoot_t *tiRoot, 2096 tdsaPortContext_t *onePortContext, 2097 bit32 functionCode, 2098 tdssSMPRequestBody_t *tdSMPRequestBody 2099 ); 2100 2101osGLOBAL void 2102tdsaDiscoverySMPTimerCB( 2103 tiRoot_t * tiRoot, 2104 void * timerData1, 2105 void * timerData2, 2106 void * timerData3 2107 ); 2108 2109osGLOBAL void 2110dumpRoutingAttributes( 2111 tiRoot_t *tiRoot, 2112 tdsaExpander_t *oneExpander, 2113 bit8 phyID 2114 ); 2115 2116osGLOBAL bit32 2117tdsaDuplicateConfigSASAddr( 2118 tiRoot_t *tiRoot, 2119 tdsaExpander_t *oneExpander, 2120 bit32 configSASAddressHi, 2121 bit32 configSASAddressLo 2122 ); 2123 2124osGLOBAL tdsaExpander_t * 2125tdsaFindConfigurableExp( 2126 tiRoot_t *tiRoot, 2127 tdsaPortContext_t *onePortContext, 2128 tdsaExpander_t *oneExpander 2129 ); 2130 2131GLOBAL bit32 2132tdsaDiscoveryStartIDDev( 2133 tiRoot_t *tiRoot, 2134 tiIORequest_t *tiIORequest, 2135 tiDeviceHandle_t *tiDeviceHandle, 2136 tiScsiInitiatorRequest_t *tiScsiRequest, 2137 tdsaDeviceData_t *oneDeviceData 2138 ); 2139 2140GLOBAL void satFreeIntIoResource( 2141 tiRoot_t *tiRoot, 2142 satDeviceData_t *satDevData, 2143 satInternalIo_t *satIntIo); 2144osGLOBAL void 2145tddmDeregisterDevicesInPort( 2146 tiRoot_t *tiRoot, 2147 tdsaPortContext_t *onePortContext 2148 ); 2149 2150#ifdef AGTIAPI_CTL 2151osGLOBAL void 2152tdsaCTLSet( 2153 tiRoot_t *tiRoot, 2154 tdsaPortContext_t *onePortContext, 2155 tiIntrEventType_t eventType, 2156 bit32 eventStatus); 2157 2158STATIC void 2159tdsaCTLNextDevice( 2160 tiRoot_t *tiRoot, 2161 tdsaPortContext_t *onePortContext, 2162 tdIORequest_t *tdIORequest, 2163 tdList_t *DeviceList); 2164 2165STATIC int 2166tdsaCTLModeSelect( 2167 tiRoot_t *tiRoot, 2168 tiDeviceHandle_t *tiDeviceHandle, 2169 tdIORequest_t *tdIORequest); 2170 2171STATIC void 2172tdsaCTLIOCompleted( 2173 agsaRoot_t *agRoot, 2174 agsaIORequest_t *agIORequest, 2175 bit32 agIOStatus, 2176 bit32 agIOInfoLen, 2177 void *agParam, 2178 bit16 sspTag, 2179 bit32 agOtherInfo); 2180#endif /* AGTIAPI_CTL */ 2181 2182#endif /* TD_DISCOVER */ 2183#endif /* INITIATOR_DRIVER */ 2184 2185#ifdef FDS_DM 2186/********** For DM *******/ 2187osGLOBAL tdsaDeviceData_t * 2188tddmPortDeviceAdd( 2189 tiRoot_t *tiRoot, 2190 tdsaPortContext_t *onePortContext, 2191 dmDeviceInfo_t *dmDeviceInfo, 2192 tdsaDeviceData_t *oneExpDeviceData 2193 ); 2194 2195osGLOBAL void 2196tddmInvalidateDevicesInPort( 2197 tiRoot_t *tiRoot, 2198 tdsaPortContext_t *onePortContext 2199 ); 2200 2201osGLOBAL bit32 2202tddmNewSASorNot( 2203 tiRoot_t *tiRoot, 2204 tdsaPortContext_t *onePortContext, 2205 tdsaSASSubID_t *agSASSubID 2206 ); 2207 2208osGLOBAL tdsaDeviceData_t * 2209tddmPortSASDeviceFind( 2210 tiRoot_t *tiRoot, 2211 tdsaPortContext_t *onePortContext, 2212 bit32 sasAddrLo, 2213 bit32 sasAddrHi 2214 ); 2215 2216osGLOBAL tdsaDeviceData_t * 2217tddmAddToSharedcontext( 2218 agsaRoot_t *agRoot, 2219 tdsaPortContext_t *onePortContext, 2220 tdsaSASSubID_t *agSASSubID, 2221 tdsaDeviceData_t *oneExpDeviceData, 2222 bit8 phyID 2223 ); 2224 2225osGLOBAL void 2226tdsaUpdateMCN( 2227 dmRoot_t *dmRoot, 2228 tdsaPortContext_t *onePortContext 2229 ); 2230#endif 2231 2232GLOBAL void 2233tdsaSingleThreadedEnter(tiRoot_t *ptiRoot, bit32 queueId); 2234 2235GLOBAL void 2236tdsaSingleThreadedLeave(tiRoot_t *ptiRoot, bit32 queueId); 2237 2238#ifdef PERF_COUNT 2239GLOBAL void 2240tdsaEnter(tiRoot_t *ptiRoot, int io); 2241 2242GLOBAL void 2243tdsaLeave(tiRoot_t *ptiRoot, int io); 2244 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) 2249#else 2250#define TDSA_INP_ENTER(root) 2251#define TDSA_INP_LEAVE(root) 2252#define TDSA_OUT_ENTER(root) 2253#define TDSA_OUT_LEAVE(root) 2254#endif 2255 2256#if defined(FDS_DM) && defined(FDS_SM) 2257GLOBAL void 2258tdIDStart( 2259 tiRoot_t *tiRoot, 2260 agsaRoot_t *agRoot, 2261 smRoot_t *smRoot, 2262 tdsaDeviceData_t *oneDeviceData, 2263 tdsaPortContext_t *onePortContext 2264 ); 2265#endif 2266 2267void t_MacroCheck( agsaRoot_t *agRoot); 2268 2269#endif /* __TDPROTO_H__ */ 2270