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