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 #ifndef __SMPROTO_H__ 25 #define __SMPROTO_H__ 26 27 #include <dev/pms/RefTisa/sat/src/smtypes.h> 28 29 /***************** start of util ****************************************/ 30 osGLOBAL FORCEINLINE void* 31 sm_memset(void *s, int c, bit32 n); 32 33 osGLOBAL FORCEINLINE void * 34 sm_memcpy(void *dst, const void *src, bit32 count); 35 36 osGLOBAL char 37 *sm_strncpy(char *dst, const char *src, bit32 len); 38 39 40 osGLOBAL void 41 smhexdump(const char *ptitle, bit8 *pbuf, size_t len); 42 /***************** end of util ****************************************/ 43 44 /***************** start of timer fns ****************************************/ 45 osGLOBAL void 46 smTimerTick(smRoot_t *smRoot ); 47 48 osGLOBAL void 49 smInitTimerRequest( 50 smRoot_t *smRoot, 51 smTimerRequest_t *timerRequest 52 ); 53 osGLOBAL void 54 smSetTimerRequest( 55 smRoot_t *smRoot, 56 smTimerRequest_t *timerRequest, 57 bit32 timeout, 58 smTimerCBFunc_t CBFunc, 59 void *timerData1, 60 void *timerData2, 61 void *timerData3 62 ); 63 64 osGLOBAL void 65 smAddTimer( 66 smRoot_t *smRoot, 67 smList_t *timerListHdr, 68 smTimerRequest_t *timerRequest 69 ); 70 71 osGLOBAL void 72 smKillTimer( 73 smRoot_t *smRoot, 74 smTimerRequest_t *timerRequest 75 ); 76 77 osGLOBAL void 78 smProcessTimers( 79 smRoot_t *smRoot 80 ); 81 82 83 /***************** end of timer fns ****************************************/ 84 85 osGLOBAL void 86 smInitTimers( 87 smRoot_t *smRoot 88 ); 89 90 osGLOBAL void 91 smDeviceDataInit( 92 smRoot_t *smRoot, 93 bit32 max_dev 94 ); 95 96 osGLOBAL void 97 smIOInit( 98 smRoot_t *smRoot 99 ); 100 101 osGLOBAL FORCEINLINE void 102 smIOReInit( 103 smRoot_t *smRoot, 104 smIORequestBody_t *smIORequestBody 105 ); 106 107 osGLOBAL void 108 smDeviceDataReInit( 109 smRoot_t *smRoot, 110 smDeviceData_t *oneDeviceData 111 ); 112 113 osGLOBAL void 114 smEnqueueIO( 115 smRoot_t *smRoot, 116 smSatIOContext_t *satIOContext 117 ); 118 119 osGLOBAL FORCEINLINE void 120 smsatFreeIntIoResource( 121 smRoot_t *smRoot, 122 smDeviceData_t *satDevData, 123 smSatInternalIo_t *satIntIo 124 ); 125 126 osGLOBAL smSatInternalIo_t * 127 smsatAllocIntIoResource( 128 smRoot_t *smRoot, 129 smIORequest_t *smIORequest, 130 smDeviceData_t *satDevData, 131 bit32 dmaAllocLength, 132 smSatInternalIo_t *satIntIo); 133 134 135 136 osGLOBAL smDeviceData_t * 137 smAddToSharedcontext( 138 smRoot_t *smRoot, 139 agsaDevHandle_t *agDevHandle, 140 smDeviceHandle_t *smDeviceHandle, 141 agsaDevHandle_t *agExpDevHandle, 142 bit32 phyID 143 ); 144 145 osGLOBAL bit32 146 smRemoveFromSharedcontext( 147 smRoot_t *smRoot, 148 agsaDevHandle_t *agDevHandle, 149 smDeviceHandle_t *smDeviceHandle 150 ); 151 152 osGLOBAL smDeviceData_t * 153 smFindInSharedcontext( 154 smRoot_t *smRoot, 155 agsaDevHandle_t *agDevHandle 156 ); 157 158 osGLOBAL bit32 159 smsatLogSenseAllocate( 160 smRoot_t *smRoot, 161 smIORequest_t *smIORequest, 162 smDeviceHandle_t *smDeviceHandle, 163 smScsiInitiatorRequest_t *smSCSIRequest, 164 smSatIOContext_t *satIOContext, 165 bit32 payloadSize, 166 bit32 flag 167 ); 168 169 osGLOBAL bit32 170 smsatIDSubStart( 171 smRoot_t *smRoot, 172 smIORequest_t *smIORequest, 173 smDeviceHandle_t *smDeviceHandle, 174 smScsiInitiatorRequest_t *smSCSIRequest, 175 smSatIOContext_t *satIOContext 176 ); 177 178 179 osGLOBAL bit32 180 smsatIDStart( 181 smRoot_t *smRoot, 182 smIORequest_t *smIORequest, 183 smDeviceHandle_t *smDeviceHandle, 184 smScsiInitiatorRequest_t *smSCSIRequest, 185 smSatIOContext_t *satIOContext 186 ); 187 188 189 osGLOBAL FORCEINLINE bit32 190 smsatIOStart( 191 smRoot_t *smRoot, 192 smIORequest_t *smIORequest, 193 smDeviceHandle_t *smDeviceHandle, 194 smScsiInitiatorRequest_t *smSCSIRequest, 195 smSatIOContext_t *satIOContext 196 ); 197 198 osGLOBAL void 199 smsatSetSensePayload( 200 smScsiRspSense_t *pSense, 201 bit8 SnsKey, 202 bit32 SnsInfo, 203 bit16 SnsCode, 204 smSatIOContext_t *satIOContext 205 ); 206 207 osGLOBAL void 208 smsatSetDeferredSensePayload( 209 smScsiRspSense_t *pSense, 210 bit8 SnsKey, 211 bit32 SnsInfo, 212 bit16 SnsCode, 213 smSatIOContext_t *satIOContext 214 ); 215 216 osGLOBAL FORCEINLINE bit32 217 smsatIOPrepareSGL( 218 smRoot_t *smRoot, 219 smIORequestBody_t *smIORequestBody, 220 smSgl_t *smSgl1, 221 void *sglVirtualAddr 222 ); 223 osGLOBAL FORCEINLINE void 224 smsatBitSet(smRoot_t *smRoot,bit8 *data, bit32 index); 225 226 osGLOBAL FORCEINLINE void 227 smsatBitClear(smRoot_t *smRoot,bit8 *data, bit32 index); 228 229 osGLOBAL FORCEINLINE BOOLEAN 230 smsatBitTest(smRoot_t *smRoot,bit8 *data, bit32 index); 231 232 osGLOBAL FORCEINLINE bit32 233 smsatTagAlloc( 234 smRoot_t *smRoot, 235 smDeviceData_t *pSatDevData, 236 bit8 *pTag 237 ); 238 239 osGLOBAL FORCEINLINE bit32 240 smsatTagRelease( 241 smRoot_t *smRoot, 242 smDeviceData_t *pSatDevData, 243 bit8 tag 244 ); 245 246 osGLOBAL FORCEINLINE void 247 smsatDecrementPendingIO( 248 smRoot_t *smRoot, 249 smIntContext_t *smAllShared, 250 smSatIOContext_t *satIOContext 251 ); 252 253 osGLOBAL smSatIOContext_t * 254 smsatPrepareNewIO( 255 smSatInternalIo_t *satNewIntIo, 256 smIORequest_t *smOrgIORequest, 257 smDeviceData_t *satDevData, 258 smIniScsiCmnd_t *scsiCmnd, 259 smSatIOContext_t *satOrgIOContext 260 ); 261 262 osGLOBAL void 263 smsatSetDevInfo( 264 smDeviceData_t *oneDeviceData, 265 agsaSATAIdentifyData_t *SATAIdData 266 ); 267 268 osGLOBAL void 269 smsatInquiryStandard( 270 bit8 *pInquiry, 271 agsaSATAIdentifyData_t *pSATAIdData, 272 smIniScsiCmnd_t *scsiCmnd 273 ); 274 275 osGLOBAL void 276 smsatInquiryPage0( 277 bit8 *pInquiry, 278 agsaSATAIdentifyData_t *pSATAIdData 279 ); 280 281 osGLOBAL void 282 smsatInquiryPage83( 283 bit8 *pInquiry, 284 agsaSATAIdentifyData_t *pSATAIdData, 285 smDeviceData_t *oneDeviceData 286 ); 287 288 289 osGLOBAL void 290 smsatInquiryPage89( 291 bit8 *pInquiry, 292 agsaSATAIdentifyData_t *pSATAIdData, 293 smDeviceData_t *oneDeviceData, 294 bit32 len 295 ); 296 297 osGLOBAL void 298 smsatInquiryPage80( 299 bit8 *pInquiry, 300 agsaSATAIdentifyData_t *pSATAIdData 301 ); 302 303 osGLOBAL void 304 smsatInquiryPageB1( 305 bit8 *pInquiry, 306 agsaSATAIdentifyData_t *pSATAIdData 307 ); 308 309 osGLOBAL void 310 smsatDefaultTranslation( 311 smRoot_t *smRoot, 312 smIORequest_t *smIORequest, 313 smSatIOContext_t *satIOContext, 314 smScsiRspSense_t *pSense, 315 bit8 ataStatus, 316 bit8 ataError, 317 bit32 interruptContext 318 ); 319 320 osGLOBAL bit32 321 smPhyControlSend( 322 smRoot_t *smRoot, 323 smDeviceData_t *oneDeviceData, 324 bit8 phyOp, 325 smIORequest_t *CurrentTaskTag, 326 bit32 queueNumber 327 ); 328 329 osGLOBAL bit32 330 smsatTaskManagement( 331 smRoot_t *smRoot, 332 smDeviceHandle_t *smDeviceHandle, 333 bit32 task, 334 smLUN_t *lun, 335 smIORequest_t *taskTag, 336 smIORequest_t *currentTaskTag, 337 smIORequestBody_t *smIORequestBody 338 ); 339 340 osGLOBAL bit32 341 smsatTmAbortTask( 342 smRoot_t *smRoot, 343 smIORequest_t *currentTaskTag, 344 smDeviceHandle_t *smDeviceHandle, 345 smScsiInitiatorRequest_t *tiScsiRequest, 346 smSatIOContext_t *satIOContext, 347 smIORequest_t *taskTag); 348 349 osGLOBAL bit32 350 smsatStartCheckPowerMode( 351 smRoot_t *smRoot, 352 smIORequest_t *currentTaskTag, 353 smDeviceHandle_t *smDeviceHandle, 354 smScsiInitiatorRequest_t *smScsiRequest, 355 smSatIOContext_t *satIOContext 356 ); 357 osGLOBAL bit32 358 smsatStartResetDevice( 359 smRoot_t *smRoot, 360 smIORequest_t *currentTaskTag, 361 smDeviceHandle_t *smDeviceHandle, 362 smScsiInitiatorRequest_t *smScsiRequest, 363 smSatIOContext_t *satIOContext 364 ); 365 osGLOBAL void 366 smsatAbort( 367 smRoot_t *smRoot, 368 agsaRoot_t *agRoot, 369 smSatIOContext_t *satIOContext 370 ); 371 372 osGLOBAL smIORequestBody_t * 373 smDequeueIO(smRoot_t *smRoot); 374 375 osGLOBAL bit32 376 smsatDecodeSATADeviceType(bit8 * pSignature); 377 378 /******************************** beginning of start ******************************************************/ 379 380 /*! \brief SAT implementation for ATAPI Packet Command. 381 * 382 * SAT implementation for ATAPI Packet and send FIS request to LL layer. 383 * 384 * \param smRoot: Pointer to TISA initiator driver/port instance. 385 * \param smIORequest: Pointer to TISA I/O request context for this I/O. 386 * \param smDeviceHandle: Pointer to TISA device handle for this I/O. 387 * \param smScsiRequest: Pointer to TISA SCSI I/O request and SGL list. 388 * \param smSatIOContext_t: Pointer to the SAT IO Context 389 * 390 * \return If command is started successfully 391 * - \e smIOSuccess: I/O request successfully initiated. 392 * - \e smIOBusy: No resources available, try again later. 393 * - \e smIOIONoDevice: Invalid device handle. 394 * - \e smIOError: Other errors. 395 */ 396 /*****************************************************************************/ 397 osGLOBAL bit32 398 smsatPacket( 399 smRoot_t *smRoot, 400 smIORequest_t *smIORequest, 401 smDeviceHandle_t *smDeviceHandle, 402 smScsiInitiatorRequest_t *smScsiRequest, 403 smSatIOContext_t *satIOContext 404 ); 405 406 osGLOBAL void 407 smsatPacketCB( 408 agsaRoot_t *agRoot, 409 agsaIORequest_t *agIORequest, 410 bit32 agIOStatus, 411 agsaFisHeader_t *agFirstDword, 412 bit32 agIOInfoLen, 413 void *agParam, 414 void *ioContext 415 ); 416 /*****************************************************************************/ 417 /*! \brief SAT implementation for smsatExecuteDeviceDiagnostic. 418 * 419 * This function creates Execute Device Diagnostic fis and sends the request to LL layer 420 * 421 * \param smRoot: Pointer to TISA initiator driver/port instance. 422 * \param smIORequest: Pointer to TISA I/O request context for this I/O. 423 * \param smDeviceHandle: Pointer to TISA device handle for this I/O. 424 * \param smScsiRequest: Pointer to TISA SCSI I/O request and SGL list. 425 * \param smSatIOContext_t: Pointer to the SAT IO Context 426 * 427 * \return If command is started successfully 428 * - \e smIOSuccess: I/O request successfully initiated. 429 * - \e smIOBusy: No resources available, try again later. 430 * - \e smIOIONoDevice: Invalid device handle. 431 * - \e smIOError: Other errors. 432 433 */ 434 /*****************************************************************************/ 435 osGLOBAL bit32 436 smsatExecuteDeviceDiagnostic( 437 smRoot_t *smRoot, 438 smIORequest_t *smIORequest, 439 smDeviceHandle_t *smDeviceHandle, 440 smScsiInitiatorRequest_t *smScsiRequest, 441 smSatIOContext_t *satIOContext 442 ); 443 444 osGLOBAL void 445 smsatExecuteDeviceDiagnosticCB( 446 agsaRoot_t *agRoot, 447 agsaIORequest_t *agIORequest, 448 bit32 agIOStatus, 449 agsaFisHeader_t *agFirstDword, 450 bit32 agIOInfoLen, 451 void *agParam, 452 void *ioContext 453 ); 454 /* set feature for auto activate */ 455 osGLOBAL bit32 456 smsatSetFeaturesAA( 457 smRoot_t *smRoot, 458 smIORequest_t *smIORequest, 459 smDeviceHandle_t *smDeviceHandle, 460 smScsiInitiatorRequest_t *smScsiRequest, 461 smSatIOContext_t *satIOContext 462 ); 463 osGLOBAL void 464 smsatSetFeaturesAACB( 465 agsaRoot_t *agRoot, 466 agsaIORequest_t *agIORequest, 467 bit32 agIOStatus, 468 agsaFisHeader_t *agFirstDword, 469 bit32 agIOInfoLen, 470 void *agParam, 471 void *ioContext 472 ); 473 474 /*****************************************************************************/ 475 /*! \brief SAT implementation for satSetFeatures. 476 * 477 * This function creates SetFeatures fis and sends the request to LL layer 478 * 479 * \param smRoot: Pointer to TISA initiator driver/port instance. 480 * \param smIORequest: Pointer to TISA I/O request context for this I/O. 481 * \param smDeviceHandle: Pointer to TISA device handle for this I/O. 482 * \param smScsiRequest: Pointer to TISA SCSI I/O request and SGL list. 483 * \param smSatIOContext_t: Pointer to the SAT IO Context 484 * 485 * \return If command is started successfully 486 * - \e smIOSuccess: I/O request successfully initiated. 487 * - \e smIOBusy: No resources available, try again later. 488 * - \e smIOIONoDevice: Invalid device handle. 489 * - \e smIOError: Other errors. 490 */ 491 /*****************************************************************************/ 492 osGLOBAL bit32 493 smsatSetFeaturesPIO( 494 smRoot_t *smRoot, 495 smIORequest_t *smIORequest, 496 smDeviceHandle_t *smDeviceHandle, 497 smScsiInitiatorRequest_t *smScsiRequest, 498 smSatIOContext_t *satIOContext 499 ); 500 osGLOBAL void 501 smsatSetFeaturesPIOCB( 502 agsaRoot_t *agRoot, 503 agsaIORequest_t *agIORequest, 504 bit32 agIOStatus, 505 agsaFisHeader_t *agFirstDword, 506 bit32 agIOInfoLen, 507 void *agParam, 508 void *ioContext 509 ); 510 511 osGLOBAL bit32 512 smsatSetFeaturesDMA( 513 smRoot_t *smRoot, 514 smIORequest_t *smIORequest, 515 smDeviceHandle_t *smDeviceHandle, 516 smScsiInitiatorRequest_t *smScsiRequest, 517 smSatIOContext_t *satIOContext 518 ); 519 520 osGLOBAL void 521 smsatSetFeaturesDMACB( 522 agsaRoot_t *agRoot, 523 agsaIORequest_t *agIORequest, 524 bit32 agIOStatus, 525 agsaFisHeader_t *agFirstDword, 526 bit32 agIOInfoLen, 527 void *agParam, 528 void *ioContext 529 ); 530 531 osGLOBAL bit32 532 smsatSetFeaturesReadLookAhead( 533 smRoot_t *smRoot, 534 smIORequest_t *smIORequest, 535 smDeviceHandle_t *smDeviceHandle, 536 smScsiInitiatorRequest_t *smScsiRequest, 537 smSatIOContext_t *satIOContext 538 ); 539 540 osGLOBAL void 541 smsatSetFeaturesReadLookAheadCB( 542 agsaRoot_t *agRoot, 543 agsaIORequest_t *agIORequest, 544 bit32 agIOStatus, 545 agsaFisHeader_t *agFirstDword, 546 bit32 agIOInfoLen, 547 void *agParam, 548 void *ioContext 549 ); 550 551 osGLOBAL bit32 552 smsatSetFeaturesVolatileWriteCache( 553 smRoot_t *smRoot, 554 smIORequest_t *smIORequest, 555 smDeviceHandle_t *smDeviceHandle, 556 smScsiInitiatorRequest_t *smScsiRequest, 557 smSatIOContext_t *satIOContext 558 ); 559 560 osGLOBAL void 561 smsatSetFeaturesVolatileWriteCacheCB( 562 agsaRoot_t *agRoot, 563 agsaIORequest_t *agIORequest, 564 bit32 agIOStatus, 565 agsaFisHeader_t *agFirstDword, 566 bit32 agIOInfoLen, 567 void *agParam, 568 void *ioContext 569 ); 570 571 osGLOBAL void 572 smsatSMARTEnablePassCB( 573 agsaRoot_t *agRoot, 574 agsaIORequest_t *agIORequest, 575 bit32 agIOStatus, 576 agsaFisHeader_t *agFirstDword, 577 bit32 agIOInfoLen, 578 agsaFrameHandle_t agFrameHandle, 579 void *ioContext 580 ); 581 582 osGLOBAL void 583 smsatSMARTRStatusPassCB( 584 agsaRoot_t *agRoot, 585 agsaIORequest_t *agIORequest, 586 bit32 agIOStatus, 587 agsaFisHeader_t *agFirstDword, 588 bit32 agIOInfoLen, 589 void *agParam, 590 void *ioContext 591 ); 592 osGLOBAL void 593 smsatSMARTReadLogCB( 594 agsaRoot_t *agRoot, 595 agsaIORequest_t *agIORequest, 596 bit32 agIOStatus, 597 agsaFisHeader_t *agFirstDword, 598 bit32 agIOInfoLen, 599 void *agParam, 600 void *ioContext 601 ); 602 603 604 /*****************************************************************************/ 605 /*! \brief SAT implementation for SCSI REQUEST SENSE to ATAPI device. 606 * 607 * SAT implementation for SCSI REQUEST SENSE. 608 * 609 * \param smRoot: Pointer to TISA initiator driver/port instance. 610 * \param smIORequest: Pointer to TISA I/O request context for this I/O. 611 * \param smDeviceHandle: Pointer to TISA device handle for this I/O. 612 * \param smScsiRequest: Pointer to TISA SCSI I/O request and SGL list. 613 * \param smSatIOContext_t: Pointer to the SAT IO Context 614 * 615 * \return If command is started successfully 616 * - \e smIOSuccess: I/O request successfully initiated. 617 * - \e smIOBusy: No resources available, try again later. 618 * - \e smIOIONoDevice: Invalid device handle. 619 * - \e smIOError: Other errors. 620 */ 621 /*****************************************************************************/ 622 osGLOBAL bit32 623 smsatRequestSenseForATAPI( 624 smRoot_t *smRoot, 625 smIORequest_t *smIORequest, 626 smDeviceHandle_t *smDeviceHandle, 627 smScsiInitiatorRequest_t *smScsiRequest, 628 smSatIOContext_t *satIOContext 629 ); 630 631 osGLOBAL void 632 smsatRequestSenseForATAPICB( 633 agsaRoot_t *agRoot, 634 agsaIORequest_t *agIORequest, 635 bit32 agIOStatus, 636 agsaFisHeader_t *agFirstDword, 637 bit32 agIOInfoLen, 638 void *agParam, 639 void *ioContext 640 ); 641 642 /*****************************************************************************/ 643 /*! \brief SAT implementation for smsatDeviceReset. 644 * 645 * This function creates DEVICE RESET fis and sends the request to LL layer 646 * 647 * \param smRoot: Pointer to TISA initiator driver/port instance. 648 * \param smIORequest: Pointer to TISA I/O request context for this I/O. 649 * \param smDeviceHandle: Pointer to TISA device handle for this I/O. 650 * \param smScsiRequest: Pointer to TISA SCSI I/O request and SGL list. 651 * \param smSatIOContext_t: Pointer to the SAT IO Context 652 * 653 * \return If command is started successfully 654 * - \e smIOSuccess: I/O request successfully initiated. 655 * - \e smIOBusy: No resources available, try again later. 656 * - \e smIONoDevice: Invalid device handle. 657 * - \e smIOError: Other errors. 658 */ 659 /*****************************************************************************/ 660 osGLOBAL bit32 661 smsatDeviceReset( 662 smRoot_t *smRoot, 663 smIORequest_t *smIORequest, 664 smDeviceHandle_t *smDeviceHandle, 665 smScsiInitiatorRequest_t *smScsiRequest, 666 smSatIOContext_t *satIOContext 667 ); 668 669 osGLOBAL void 670 smsatDeviceResetCB( 671 agsaRoot_t *agRoot, 672 agsaIORequest_t *agIORequest, 673 bit32 agIOStatus, 674 agsaFisHeader_t *agFirstDword, 675 bit32 agIOInfoLen, 676 void *agParam, 677 void *ioContext 678 ); 679 680 681 osGLOBAL void 682 smsatTranslateATAPIErrorsToSCSIErrors( 683 bit8 bCommand, 684 bit8 bATAStatus, 685 bit8 bATAError, 686 bit8 *pSenseKey, 687 bit16 *pSenseCodeInfo 688 ); 689 690 GLOBAL void 691 smsatTranslateATAErrorsToSCSIErrors( 692 bit8 bATAStatus, 693 bit8 bATAError, 694 bit8 *pSenseKey, 695 bit16 *pSenseCodeInfo 696 ); 697 698 /*****************************************************************************/ 699 700 osGLOBAL bit32 701 smsatRead6( 702 smRoot_t *smRoot, 703 smIORequest_t *smIORequest, 704 smDeviceHandle_t *smDeviceHandle, 705 smScsiInitiatorRequest_t *smScsiRequest, 706 smSatIOContext_t *satIOContext 707 ); 708 709 osGLOBAL FORCEINLINE bit32 710 smsatRead10( 711 smRoot_t *smRoot, 712 smIORequest_t *smIORequest, 713 smDeviceHandle_t *smDeviceHandle, 714 smScsiInitiatorRequest_t *smScsiRequest, 715 smSatIOContext_t *satIOContext 716 ); 717 718 osGLOBAL bit32 719 smsatRead12( 720 smRoot_t *smRoot, 721 smIORequest_t *smIORequest, 722 smDeviceHandle_t *smDeviceHandle, 723 smScsiInitiatorRequest_t *smScsiRequest, 724 smSatIOContext_t *satIOContext 725 ); 726 727 osGLOBAL bit32 728 smsatRead16( 729 smRoot_t *smRoot, 730 smIORequest_t *smIORequest, 731 smDeviceHandle_t *smDeviceHandle, 732 smScsiInitiatorRequest_t *smScsiRequest, 733 smSatIOContext_t *satIOContext 734 ); 735 736 osGLOBAL bit32 737 smsatWrite6( 738 smRoot_t *smRoot, 739 smIORequest_t *smIORequest, 740 smDeviceHandle_t *smDeviceHandle, 741 smScsiInitiatorRequest_t *smScsiRequest, 742 smSatIOContext_t *satIOContext 743 ); 744 745 osGLOBAL FORCEINLINE bit32 746 smsatWrite10( 747 smRoot_t *smRoot, 748 smIORequest_t *smIORequest, 749 smDeviceHandle_t *smDeviceHandle, 750 smScsiInitiatorRequest_t *smScsiRequest, 751 smSatIOContext_t *satIOContext 752 ); 753 754 osGLOBAL bit32 755 smsatWrite12( 756 smRoot_t *smRoot, 757 smIORequest_t *smIORequest, 758 smDeviceHandle_t *smDeviceHandle, 759 smScsiInitiatorRequest_t *smScsiRequest, 760 smSatIOContext_t *satIOContext 761 ); 762 763 osGLOBAL bit32 764 smsatWrite16( 765 smRoot_t *smRoot, 766 smIORequest_t *smIORequest, 767 smDeviceHandle_t *smDeviceHandle, 768 smScsiInitiatorRequest_t *smScsiRequest, 769 smSatIOContext_t *satIOContext 770 ); 771 772 osGLOBAL bit32 773 smsatVerify10( 774 smRoot_t *smRoot, 775 smIORequest_t *smIORequest, 776 smDeviceHandle_t *smDeviceHandle, 777 smScsiInitiatorRequest_t *smScsiRequest, 778 smSatIOContext_t *satIOContext 779 ); 780 781 osGLOBAL bit32 782 smsatVerify12( 783 smRoot_t *smRoot, 784 smIORequest_t *smIORequest, 785 smDeviceHandle_t *smDeviceHandle, 786 smScsiInitiatorRequest_t *smScsiRequest, 787 smSatIOContext_t *satIOContext 788 ); 789 790 osGLOBAL bit32 791 smsatVerify16( 792 smRoot_t *smRoot, 793 smIORequest_t *smIORequest, 794 smDeviceHandle_t *smDeviceHandle, 795 smScsiInitiatorRequest_t *smScsiRequest, 796 smSatIOContext_t *satIOContext 797 ); 798 799 osGLOBAL bit32 800 smsatTestUnitReady( 801 smRoot_t *smRoot, 802 smIORequest_t *smIORequest, 803 smDeviceHandle_t *smDeviceHandle, 804 smScsiInitiatorRequest_t *smScsiRequest, 805 smSatIOContext_t *satIOContext 806 ); 807 808 osGLOBAL bit32 809 smsatInquiry( 810 smRoot_t *smRoot, 811 smIORequest_t *smIORequest, 812 smDeviceHandle_t *smDeviceHandle, 813 smScsiInitiatorRequest_t *smScsiRequest, 814 smSatIOContext_t *satIOContext 815 ); 816 817 osGLOBAL bit32 818 smsatRequestSense( 819 smRoot_t *smRoot, 820 smIORequest_t *smIORequest, 821 smDeviceHandle_t *smDeviceHandle, 822 smScsiInitiatorRequest_t *smScsiRequest, 823 smSatIOContext_t *satIOContext 824 ); 825 826 osGLOBAL bit32 827 smsatModeSense6( 828 smRoot_t *smRoot, 829 smIORequest_t *smIORequest, 830 smDeviceHandle_t *smDeviceHandle, 831 smScsiInitiatorRequest_t *smScsiRequest, 832 smSatIOContext_t *satIOContext 833 ); 834 835 osGLOBAL bit32 836 smsatModeSense10( 837 smRoot_t *smRoot, 838 smIORequest_t *smIORequest, 839 smDeviceHandle_t *smDeviceHandle, 840 smScsiInitiatorRequest_t *smScsiRequest, 841 smSatIOContext_t *satIOContext 842 ); 843 844 osGLOBAL bit32 845 smsatReadCapacity10( 846 smRoot_t *smRoot, 847 smIORequest_t *smIORequest, 848 smDeviceHandle_t *smDeviceHandle, 849 smScsiInitiatorRequest_t *smScsiRequest, 850 smSatIOContext_t *satIOContext 851 ); 852 853 osGLOBAL bit32 854 smsatReadCapacity16( 855 smRoot_t *smRoot, 856 smIORequest_t *smIORequest, 857 smDeviceHandle_t *smDeviceHandle, 858 smScsiInitiatorRequest_t *smScsiRequest, 859 smSatIOContext_t *satIOContext 860 ); 861 862 osGLOBAL bit32 863 smsatReportLun( 864 smRoot_t *smRoot, 865 smIORequest_t *smIORequest, 866 smDeviceHandle_t *smDeviceHandle, 867 smScsiInitiatorRequest_t *smScsiRequest, 868 smSatIOContext_t *satIOContext 869 ); 870 871 osGLOBAL bit32 872 smsatFormatUnit( 873 smRoot_t *smRoot, 874 smIORequest_t *smIORequest, 875 smDeviceHandle_t *smDeviceHandle, 876 smScsiInitiatorRequest_t *smScsiRequest, 877 smSatIOContext_t *satIOContext 878 ); 879 880 osGLOBAL bit32 881 smsatSendDiagnostic( 882 smRoot_t *smRoot, 883 smIORequest_t *smIORequest, 884 smDeviceHandle_t *smDeviceHandle, 885 smScsiInitiatorRequest_t *smScsiRequest, 886 smSatIOContext_t *satIOContext 887 ); 888 889 osGLOBAL bit32 890 smsatStartStopUnit( 891 smRoot_t *smRoot, 892 smIORequest_t *smIORequest, 893 smDeviceHandle_t *smDeviceHandle, 894 smScsiInitiatorRequest_t *smScsiRequest, 895 smSatIOContext_t *satIOContext 896 ); 897 898 osGLOBAL bit32 899 smsatWriteSame10( 900 smRoot_t *smRoot, 901 smIORequest_t *smIORequest, 902 smDeviceHandle_t *smDeviceHandle, 903 smScsiInitiatorRequest_t *smScsiRequest, 904 smSatIOContext_t *satIOContext 905 ); 906 907 osGLOBAL bit32 908 smsatWriteSame16( 909 smRoot_t *smRoot, 910 smIORequest_t *smIORequest, 911 smDeviceHandle_t *smDeviceHandle, 912 smScsiInitiatorRequest_t *smScsiRequest, 913 smSatIOContext_t *satIOContext 914 ); 915 916 osGLOBAL bit32 917 smsatLogSense( 918 smRoot_t *smRoot, 919 smIORequest_t *smIORequest, 920 smDeviceHandle_t *smDeviceHandle, 921 smScsiInitiatorRequest_t *smScsiRequest, 922 smSatIOContext_t *satIOContext 923 ); 924 925 osGLOBAL bit32 926 smsatModeSelect6( 927 smRoot_t *smRoot, 928 smIORequest_t *smIORequest, 929 smDeviceHandle_t *smDeviceHandle, 930 smScsiInitiatorRequest_t *smScsiRequest, 931 smSatIOContext_t *satIOContext 932 ); 933 934 935 osGLOBAL bit32 936 smsatModeSelect10( 937 smRoot_t *smRoot, 938 smIORequest_t *smIORequest, 939 smDeviceHandle_t *smDeviceHandle, 940 smScsiInitiatorRequest_t *smScsiRequest, 941 smSatIOContext_t *satIOContext 942 ); 943 944 osGLOBAL bit32 945 smsatSynchronizeCache10( 946 smRoot_t *smRoot, 947 smIORequest_t *smIORequest, 948 smDeviceHandle_t *smDeviceHandle, 949 smScsiInitiatorRequest_t *smScsiRequest, 950 smSatIOContext_t *satIOContext 951 ); 952 953 osGLOBAL bit32 954 smsatSynchronizeCache16( 955 smRoot_t *smRoot, 956 smIORequest_t *smIORequest, 957 smDeviceHandle_t *smDeviceHandle, 958 smScsiInitiatorRequest_t *smScsiRequest, 959 smSatIOContext_t *satIOContext 960 ); 961 962 osGLOBAL bit32 963 smsatWriteAndVerify10( 964 smRoot_t *smRoot, 965 smIORequest_t *smIORequest, 966 smDeviceHandle_t *smDeviceHandle, 967 smScsiInitiatorRequest_t *smScsiRequest, 968 smSatIOContext_t *satIOContext 969 ); 970 971 osGLOBAL bit32 972 smsatWriteAndVerify12( 973 smRoot_t *smRoot, 974 smIORequest_t *smIORequest, 975 smDeviceHandle_t *smDeviceHandle, 976 smScsiInitiatorRequest_t *smScsiRequest, 977 smSatIOContext_t *satIOContext 978 ); 979 980 osGLOBAL bit32 981 smsatWriteAndVerify16( 982 smRoot_t *smRoot, 983 smIORequest_t *smIORequest, 984 smDeviceHandle_t *smDeviceHandle, 985 smScsiInitiatorRequest_t *smScsiRequest, 986 smSatIOContext_t *satIOContext 987 ); 988 989 osGLOBAL bit32 990 smsatReadMediaSerialNumber( 991 smRoot_t *smRoot, 992 smIORequest_t *smIORequest, 993 smDeviceHandle_t *smDeviceHandle, 994 smScsiInitiatorRequest_t *smScsiRequest, 995 smSatIOContext_t *satIOContext 996 ); 997 998 osGLOBAL bit32 999 smsatReadBuffer( 1000 smRoot_t *smRoot, 1001 smIORequest_t *smIORequest, 1002 smDeviceHandle_t *smDeviceHandle, 1003 smScsiInitiatorRequest_t *smScsiRequest, 1004 smSatIOContext_t *satIOContext 1005 ); 1006 1007 osGLOBAL bit32 1008 smsatWriteBuffer( 1009 smRoot_t *smRoot, 1010 smIORequest_t *smIORequest, 1011 smDeviceHandle_t *smDeviceHandle, 1012 smScsiInitiatorRequest_t *smScsiRequest, 1013 smSatIOContext_t *satIOContext 1014 ); 1015 1016 osGLOBAL bit32 1017 smsatReassignBlocks( 1018 smRoot_t *smRoot, 1019 smIORequest_t *smIORequest, 1020 smDeviceHandle_t *smDeviceHandle, 1021 smScsiInitiatorRequest_t *smScsiRequest, 1022 smSatIOContext_t *satIOContext 1023 ); 1024 1025 osGLOBAL bit32 1026 smsatPassthrough( 1027 smRoot_t *smRoot, 1028 smIORequest_t *smIORequest, 1029 smDeviceHandle_t *smDeviceHandle, 1030 smScsiInitiatorRequest_t *smScsiRequest, 1031 smSatIOContext_t *satIOContext 1032 ); 1033 1034 osGLOBAL FORCEINLINE bit32 1035 smsataLLIOStart( 1036 smRoot_t *smRoot, 1037 smIORequest_t *smIORequest, 1038 smDeviceHandle_t *smDeviceHandle, 1039 smScsiInitiatorRequest_t *smScsiRequest, 1040 smSatIOContext_t *satIOContext 1041 ); 1042 osGLOBAL bit32 1043 smsatTestUnitReady_1( 1044 smRoot_t *smRoot, 1045 smIORequest_t *smIORequest, 1046 smDeviceHandle_t *smDeviceHandle, 1047 smScsiInitiatorRequest_t *smScsiRequest, 1048 smSatIOContext_t *satIOContext 1049 ); 1050 osGLOBAL bit32 1051 smsatStartIDDev( 1052 smRoot_t *smRoot, 1053 smIORequest_t *smIORequest, 1054 smDeviceHandle_t *smDeviceHandle, 1055 smScsiInitiatorRequest_t *smScsiRequest, 1056 smSatIOContext_t *satIOContext 1057 ); 1058 1059 osGLOBAL bit32 1060 smsatSendIDDev( 1061 smRoot_t *smRoot, 1062 smIORequest_t *smIORequest, 1063 smDeviceHandle_t *smDeviceHandle, 1064 smScsiInitiatorRequest_t *smScsiRequest, 1065 smSatIOContext_t *satIOContext 1066 ); 1067 1068 osGLOBAL bit32 1069 smsatRequestSense_1( 1070 smRoot_t *smRoot, 1071 smIORequest_t *smIORequest, 1072 smDeviceHandle_t *smDeviceHandle, 1073 smScsiInitiatorRequest_t *smScsiRequest, 1074 smSatIOContext_t *satIOContext 1075 ); 1076 1077 osGLOBAL bit32 1078 smsatSMARTEnable( 1079 smRoot_t *smRoot, 1080 smIORequest_t *smIORequest, 1081 smDeviceHandle_t *smDeviceHandle, 1082 smScsiInitiatorRequest_t *smScsiRequest, 1083 smSatIOContext_t *satIOContext 1084 ); 1085 1086 osGLOBAL bit32 1087 smsatLogSense_2( 1088 smRoot_t *smRoot, 1089 smIORequest_t *smIORequest, 1090 smDeviceHandle_t *smDeviceHandle, 1091 smScsiInitiatorRequest_t *smScsiRequest, 1092 smSatIOContext_t *satIOContext 1093 ); 1094 1095 osGLOBAL bit32 1096 smsatLogSense_3( 1097 smRoot_t *smRoot, 1098 smIORequest_t *smIORequest, 1099 smDeviceHandle_t *smDeviceHandle, 1100 smScsiInitiatorRequest_t *smScsiRequest, 1101 smSatIOContext_t *satIOContext 1102 ); 1103 1104 osGLOBAL bit32 1105 smsatRead_1( 1106 smRoot_t *smRoot, 1107 smIORequest_t *smIORequest, 1108 smDeviceHandle_t *smDeviceHandle, 1109 smScsiInitiatorRequest_t *smScsiRequest, 1110 smSatIOContext_t *satIOContext 1111 ); 1112 1113 osGLOBAL bit32 1114 smsatWrite_1( 1115 smRoot_t *smRoot, 1116 smIORequest_t *smIORequest, 1117 smDeviceHandle_t *smDeviceHandle, 1118 smScsiInitiatorRequest_t *smScsiRequest, 1119 smSatIOContext_t *satIOContext 1120 ); 1121 1122 osGLOBAL bit32 1123 smsatNonChainedWriteNVerify_Verify( 1124 smRoot_t *smRoot, 1125 smIORequest_t *smIORequest, 1126 smDeviceHandle_t *smDeviceHandle, 1127 smScsiInitiatorRequest_t *smScsiRequest, 1128 smSatIOContext_t *satIOContext 1129 ); 1130 1131 osGLOBAL bit32 1132 smsatChainedWriteNVerify_Start_Verify( 1133 smRoot_t *smRoot, 1134 smIORequest_t *smIORequest, 1135 smDeviceHandle_t *smDeviceHandle, 1136 smScsiInitiatorRequest_t *smScsiRequest, 1137 smSatIOContext_t *satIOContext 1138 ); 1139 1140 osGLOBAL bit32 1141 smsatChainedWriteNVerify_Write( 1142 smRoot_t *smRoot, 1143 smIORequest_t *smIORequest, 1144 smDeviceHandle_t *smDeviceHandle, 1145 smScsiInitiatorRequest_t *smScsiRequest, 1146 smSatIOContext_t *satIOContext 1147 ); 1148 1149 osGLOBAL bit32 1150 smsatChainedWriteNVerify_Verify( 1151 smRoot_t *smRoot, 1152 smIORequest_t *smIORequest, 1153 smDeviceHandle_t *smDeviceHandle, 1154 smScsiInitiatorRequest_t *smScsiRequest, 1155 smSatIOContext_t *satIOContext 1156 ); 1157 osGLOBAL bit32 1158 smsatChainedVerify( 1159 smRoot_t *smRoot, 1160 smIORequest_t *smIORequest, 1161 smDeviceHandle_t *smDeviceHandle, 1162 smScsiInitiatorRequest_t *smScsiRequest, 1163 smSatIOContext_t *satIOContext 1164 ); 1165 1166 osGLOBAL bit32 1167 smsatWriteSame10_1( 1168 smRoot_t *smRoot, 1169 smIORequest_t *smIORequest, 1170 smDeviceHandle_t *smDeviceHandle, 1171 smScsiInitiatorRequest_t *smScsiRequest, 1172 smSatIOContext_t *satIOContext, 1173 bit32 lba 1174 ); 1175 1176 osGLOBAL bit32 1177 smsatWriteSame10_2( 1178 smRoot_t *smRoot, 1179 smIORequest_t *smIORequest, 1180 smDeviceHandle_t *smDeviceHandle, 1181 smScsiInitiatorRequest_t *smScsiRequest, 1182 smSatIOContext_t *satIOContext, 1183 bit32 lba 1184 ); 1185 1186 osGLOBAL bit32 1187 smsatWriteSame10_3( 1188 smRoot_t *smRoot, 1189 smIORequest_t *smIORequest, 1190 smDeviceHandle_t *smDeviceHandle, 1191 smScsiInitiatorRequest_t *smScsiRequest, 1192 smSatIOContext_t *satIOContext, 1193 bit32 lba 1194 ); 1195 1196 osGLOBAL bit32 1197 smsatStartStopUnit_1( 1198 smRoot_t *smRoot, 1199 smIORequest_t *smIORequest, 1200 smDeviceHandle_t *smDeviceHandle, 1201 smScsiInitiatorRequest_t *smScsiRequest, 1202 smSatIOContext_t *satIOContext 1203 ); 1204 1205 osGLOBAL bit32 1206 smsatSendDiagnostic_1( 1207 smRoot_t *smRoot, 1208 smIORequest_t *smIORequest, 1209 smDeviceHandle_t *smDeviceHandle, 1210 smScsiInitiatorRequest_t *smScsiRequest, 1211 smSatIOContext_t *satIOContext 1212 ); 1213 1214 osGLOBAL bit32 1215 smsatSendDiagnostic_2( 1216 smRoot_t *smRoot, 1217 smIORequest_t *smIORequest, 1218 smDeviceHandle_t *smDeviceHandle, 1219 smScsiInitiatorRequest_t *smScsiRequest, 1220 smSatIOContext_t *satIOContext 1221 ); 1222 1223 osGLOBAL bit32 1224 smsatModeSelect6n10_1( 1225 smRoot_t *smRoot, 1226 smIORequest_t *smIORequest, 1227 smDeviceHandle_t *smDeviceHandle, 1228 smScsiInitiatorRequest_t *smScsiRequest, 1229 smSatIOContext_t *satIOContext 1230 ); 1231 1232 osGLOBAL bit32 1233 smsatLogSense_1( 1234 smRoot_t *smRoot, 1235 smIORequest_t *smIORequest, 1236 smDeviceHandle_t *smDeviceHandle, 1237 smScsiInitiatorRequest_t *smScsiRequest, 1238 smSatIOContext_t *satIOContext 1239 ); 1240 1241 osGLOBAL bit32 1242 smsatReassignBlocks_2( 1243 smRoot_t *smRoot, 1244 smIORequest_t *smIORequest, 1245 smDeviceHandle_t *smDeviceHandle, 1246 smScsiInitiatorRequest_t *smScsiRequest, 1247 smSatIOContext_t *satIOContext, 1248 bit8 *LBA 1249 ); 1250 1251 osGLOBAL bit32 1252 smsatReassignBlocks_1( 1253 smRoot_t *smRoot, 1254 smIORequest_t *smIORequest, 1255 smDeviceHandle_t *smDeviceHandle, 1256 smScsiInitiatorRequest_t *smScsiRequest, 1257 smSatIOContext_t *satIOContext, 1258 smSatIOContext_t *satOrgIOContext 1259 ); 1260 1261 osGLOBAL bit32 1262 smsatSendReadLogExt( 1263 smRoot_t *smRoot, 1264 smIORequest_t *smIORequest, 1265 smDeviceHandle_t *smDeviceHandle, 1266 smScsiInitiatorRequest_t *smScsiRequest, 1267 smSatIOContext_t *satIOContext 1268 ); 1269 1270 osGLOBAL bit32 1271 smsatCheckPowerMode( 1272 smRoot_t *smRoot, 1273 smIORequest_t *smIORequest, 1274 smDeviceHandle_t *smDeviceHandle, 1275 smScsiInitiatorRequest_t *smScsiRequest, 1276 smSatIOContext_t *satIOContext 1277 ); 1278 1279 osGLOBAL bit32 1280 smsatResetDevice( 1281 smRoot_t *smRoot, 1282 smIORequest_t *smIORequest, 1283 smDeviceHandle_t *smDeviceHandle, 1284 smScsiInitiatorRequest_t *smScsiRequest, 1285 smSatIOContext_t *satIOContext 1286 ); 1287 1288 osGLOBAL bit32 1289 smsatDeResetDevice( 1290 smRoot_t *smRoot, 1291 smIORequest_t *smIORequest, 1292 smDeviceHandle_t *smDeviceHandle, 1293 smScsiInitiatorRequest_t *smScsiRequest, 1294 smSatIOContext_t *satIOContext 1295 ); 1296 /******************************** beginning of completion ******************************************************/ 1297 osGLOBAL FORCEINLINE void 1298 smllSATACompleted( 1299 agsaRoot_t *agRoot, 1300 agsaIORequest_t *agIORequest, 1301 bit32 agIOStatus, 1302 void *agFirstDword, 1303 bit32 agIOInfoLen, 1304 void *agParam 1305 ); 1306 1307 1308 osGLOBAL FORCEINLINE void 1309 smsatNonChainedDataIOCB( 1310 agsaRoot_t *agRoot, 1311 agsaIORequest_t *agIORequest, 1312 bit32 agIOStatus, 1313 agsaFisHeader_t *agFirstDword, 1314 bit32 agIOInfoLen, 1315 void *agParam, 1316 void *ioContext 1317 ); 1318 1319 osGLOBAL FORCEINLINE void 1320 smsatChainedDataIOCB( 1321 agsaRoot_t *agRoot, 1322 agsaIORequest_t *agIORequest, 1323 bit32 agIOStatus, 1324 agsaFisHeader_t *agFirstDword, 1325 bit32 agIOInfoLen, 1326 void *agParam, 1327 void *ioContext 1328 ); 1329 1330 osGLOBAL void 1331 smsatNonChainedVerifyCB( 1332 agsaRoot_t *agRoot, 1333 agsaIORequest_t *agIORequest, 1334 bit32 agIOStatus, 1335 agsaFisHeader_t *agFirstDword, 1336 bit32 agIOInfoLen, 1337 agsaFrameHandle_t agFrameHandle, 1338 void *ioContext 1339 ); 1340 1341 osGLOBAL void 1342 smsatChainedVerifyCB( 1343 agsaRoot_t *agRoot, 1344 agsaIORequest_t *agIORequest, 1345 bit32 agIOStatus, 1346 agsaFisHeader_t *agFirstDword, 1347 bit32 agIOInfoLen, 1348 agsaFrameHandle_t agFrameHandle, 1349 void *ioContext 1350 ); 1351 1352 osGLOBAL void 1353 smsatTestUnitReadyCB( 1354 agsaRoot_t *agRoot, 1355 agsaIORequest_t *agIORequest, 1356 bit32 agIOStatus, 1357 agsaFisHeader_t *agFirstDword, 1358 bit32 agIOInfoLen, 1359 agsaFrameHandle_t agFrameHandle, 1360 void *ioContext 1361 ); 1362 osGLOBAL void 1363 smsatRequestSenseCB( 1364 agsaRoot_t *agRoot, 1365 agsaIORequest_t *agIORequest, 1366 bit32 agIOStatus, 1367 agsaFisHeader_t *agFirstDword, 1368 bit32 agIOInfoLen, 1369 void *agParam, 1370 void *ioContext 1371 ); 1372 1373 osGLOBAL void 1374 smsatSendDiagnosticCB( 1375 agsaRoot_t *agRoot, 1376 agsaIORequest_t *agIORequest, 1377 bit32 agIOStatus, 1378 agsaFisHeader_t *agFirstDword, 1379 bit32 agIOInfoLen, 1380 agsaFrameHandle_t agFrameHandle, 1381 void *ioContext 1382 ); 1383 1384 osGLOBAL void 1385 smsatStartStopUnitCB( 1386 agsaRoot_t *agRoot, 1387 agsaIORequest_t *agIORequest, 1388 bit32 agIOStatus, 1389 agsaFisHeader_t *agFirstDword, 1390 bit32 agIOInfoLen, 1391 agsaFrameHandle_t agFrameHandle, 1392 void *ioContext 1393 ); 1394 1395 1396 osGLOBAL void 1397 smsatWriteSame10CB( 1398 agsaRoot_t *agRoot, 1399 agsaIORequest_t *agIORequest, 1400 bit32 agIOStatus, 1401 agsaFisHeader_t *agFirstDword, 1402 bit32 agIOInfoLen, 1403 agsaFrameHandle_t agFrameHandle, 1404 void *ioContext 1405 ); 1406 1407 1408 osGLOBAL void 1409 smsatLogSenseCB( 1410 agsaRoot_t *agRoot, 1411 agsaIORequest_t *agIORequest, 1412 bit32 agIOStatus, 1413 agsaFisHeader_t *agFirstDword, 1414 bit32 agIOInfoLen, 1415 void *agParam, 1416 void *ioCotext 1417 ); 1418 1419 osGLOBAL void 1420 smsatSMARTEnableCB( 1421 agsaRoot_t *agRoot, 1422 agsaIORequest_t *agIORequest, 1423 bit32 agIOStatus, 1424 agsaFisHeader_t *agFirstDword, 1425 bit32 agIOInfoLen, 1426 agsaFrameHandle_t agFrameHandle, 1427 void *ioContext 1428 ); 1429 1430 osGLOBAL void 1431 smsatModeSelect6n10CB( 1432 agsaRoot_t *agRoot, 1433 agsaIORequest_t *agIORequest, 1434 bit32 agIOStatus, 1435 agsaFisHeader_t *agFirstDword, 1436 bit32 agIOInfoLen, 1437 agsaFrameHandle_t agFrameHandle, 1438 void *ioContext 1439 ); 1440 1441 osGLOBAL void 1442 smsatSynchronizeCache10n16CB( 1443 agsaRoot_t *agRoot, 1444 agsaIORequest_t *agIORequest, 1445 bit32 agIOStatus, 1446 agsaFisHeader_t *agFirstDword, 1447 bit32 agIOInfoLen, 1448 agsaFrameHandle_t agFrameHandle, 1449 void *ioContext 1450 ); 1451 1452 osGLOBAL void 1453 smsatNonChainedWriteNVerifyCB( 1454 agsaRoot_t *agRoot, 1455 agsaIORequest_t *agIORequest, 1456 bit32 agIOStatus, 1457 agsaFisHeader_t *agFirstDword, 1458 bit32 agIOInfoLen, 1459 void *agParam, 1460 void *ioContext 1461 ); 1462 1463 osGLOBAL void 1464 smsatChainedWriteNVerifyCB( 1465 agsaRoot_t *agRoot, 1466 agsaIORequest_t *agIORequest, 1467 bit32 agIOStatus, 1468 agsaFisHeader_t *agFirstDword, 1469 bit32 agIOInfoLen, 1470 void *agParam, 1471 void *ioContext 1472 ); 1473 1474 osGLOBAL void 1475 smsatReadMediaSerialNumberCB( 1476 agsaRoot_t *agRoot, 1477 agsaIORequest_t *agIORequest, 1478 bit32 agIOStatus, 1479 agsaFisHeader_t *agFirstDword, 1480 bit32 agIOInfoLen, 1481 agsaFrameHandle_t agFrameHandle, 1482 void *ioContext 1483 ); 1484 1485 osGLOBAL void 1486 smsatReadBufferCB( 1487 agsaRoot_t *agRoot, 1488 agsaIORequest_t *agIORequest, 1489 bit32 agIOStatus, 1490 agsaFisHeader_t *agFirstDword, 1491 bit32 agIOInfoLen, 1492 agsaFrameHandle_t agFrameHandle, 1493 void *ioContext 1494 ); 1495 1496 osGLOBAL void 1497 smsatWriteBufferCB( 1498 agsaRoot_t *agRoot, 1499 agsaIORequest_t *agIORequest, 1500 bit32 agIOStatus, 1501 agsaFisHeader_t *agFirstDword, 1502 bit32 agIOInfoLen, 1503 agsaFrameHandle_t agFrameHandle, 1504 void *ioContext 1505 ); 1506 1507 osGLOBAL void 1508 smsatReassignBlocksCB( 1509 agsaRoot_t *agRoot, 1510 agsaIORequest_t *agIORequest, 1511 bit32 agIOStatus, 1512 agsaFisHeader_t *agFirstDword, 1513 bit32 agIOInfoLen, 1514 agsaFrameHandle_t agFrameHandle, 1515 void *ioContext 1516 ); 1517 1518 osGLOBAL void 1519 smsatProcessAbnormalCompletion( 1520 agsaRoot_t *agRoot, 1521 agsaIORequest_t *agIORequest, 1522 bit32 agIOStatus, 1523 agsaFisHeader_t *agFirstDword, 1524 bit32 agIOInfoLen, 1525 void *agParam, 1526 smSatIOContext_t *satIOContext 1527 ); 1528 1529 osGLOBAL void 1530 smsatDelayedProcessAbnormalCompletion( 1531 agsaRoot_t *agRoot, 1532 agsaIORequest_t *agIORequest, 1533 bit32 agIOStatus, 1534 agsaFisHeader_t *agFirstDword, 1535 bit32 agIOInfoLen, 1536 void *agParam, 1537 smSatIOContext_t *satIOContext 1538 ); 1539 1540 osGLOBAL void 1541 smsatIOCompleted( 1542 smRoot_t *smRoot, 1543 smIORequest_t *smIORequest, 1544 agsaFisHeader_t *agFirstDword, 1545 bit32 respFisLen, 1546 agsaFrameHandle_t agFrameHandle, 1547 smSatIOContext_t *satIOContext, 1548 bit32 interruptContext 1549 ); 1550 1551 osGLOBAL void 1552 smsatEncryptionHandler( 1553 smRoot_t *smRoot, 1554 agsaIORequest_t *agIORequest, 1555 bit32 agIOStatus, 1556 bit32 agIOInfoLen, 1557 void *agParam, 1558 bit32 agOtherInfo, 1559 bit32 interruptContext 1560 ); 1561 1562 osGLOBAL void 1563 smsatDifHandler( 1564 smRoot_t *smRoot, 1565 agsaIORequest_t *agIORequest, 1566 bit32 agIOStatus, 1567 bit32 agIOInfoLen, 1568 void *agParam, 1569 bit32 agOtherInfo, 1570 bit32 interruptContext 1571 ); 1572 1573 osGLOBAL void 1574 smsatProcessAbort( 1575 smRoot_t *smRoot, 1576 smIORequest_t *smIORequest, 1577 smSatIOContext_t *satIOContext 1578 ); 1579 1580 osGLOBAL void 1581 smsatNonDataIOCB( 1582 agsaRoot_t *agRoot, 1583 agsaIORequest_t *agIORequest, 1584 bit32 agIOStatus, 1585 agsaFisHeader_t *agFirstDword, 1586 bit32 agIOInfoLen, 1587 void *agParam, 1588 void *ioContext 1589 ); 1590 1591 osGLOBAL void 1592 smsatInquiryCB( 1593 agsaRoot_t *agRoot, 1594 agsaIORequest_t *agIORequest, 1595 bit32 agIOStatus, 1596 agsaFisHeader_t *agFirstDword, 1597 bit32 agIOInfoLen, 1598 void *agParam, 1599 void *ioContext 1600 ); 1601 1602 1603 osGLOBAL void 1604 smsatInquiryIntCB( 1605 smRoot_t *smRoot, 1606 smIORequest_t *smIORequest, 1607 smDeviceHandle_t *smDeviceHandle, 1608 smScsiInitiatorRequest_t *smScsiRequest, 1609 smSatIOContext_t *satIOContext 1610 ); 1611 1612 osGLOBAL void 1613 smsatVerify10CB( 1614 agsaRoot_t *agRoot, 1615 agsaIORequest_t *agIORequest, 1616 bit32 agIOStatus, 1617 agsaFisHeader_t *agFirstDword, 1618 bit32 agIOInfoLen, 1619 void *agParam, 1620 void *ioContext 1621 ); 1622 1623 osGLOBAL void 1624 smsatReadLogExtCB( 1625 agsaRoot_t *agRoot, 1626 agsaIORequest_t *agIORequest, 1627 bit32 agIOStatus, 1628 agsaFisHeader_t *agFirstDword, 1629 bit32 agIOInfoLen, 1630 void *agParam, 1631 void *ioContext 1632 ); 1633 1634 1635 osGLOBAL void 1636 smsatIDStartCB( 1637 agsaRoot_t *agRoot, 1638 agsaIORequest_t *agIORequest, 1639 bit32 agIOStatus, 1640 agsaFisHeader_t *agFirstDword, 1641 bit32 agIOInfoLen, 1642 void *agParam, 1643 void *ioContext 1644 ); 1645 1646 osGLOBAL void 1647 smSMPCompleted( 1648 agsaRoot_t *agRoot, 1649 agsaIORequest_t *agIORequest, 1650 bit32 agIOStatus, 1651 bit32 agIOInfoLen, 1652 agsaFrameHandle_t agFrameHandle 1653 ); 1654 1655 osGLOBAL void 1656 smSMPCompletedCB( 1657 agsaRoot_t *agRoot, 1658 agsaIORequest_t *agIORequest, 1659 bit32 agIOStatus, 1660 bit32 agIOInfoLen, 1661 agsaFrameHandle_t agFrameHandle 1662 ); 1663 1664 osGLOBAL void 1665 smPhyControlRespRcvd( 1666 smRoot_t *smRoot, 1667 agsaRoot_t *agRoot, 1668 agsaIORequest_t *agIORequest, 1669 smDeviceData_t *oneDeviceData, 1670 smSMPFrameHeader_t *frameHeader, 1671 agsaFrameHandle_t frameHandle, 1672 smIORequest_t *CurrentTaskTag 1673 ); 1674 1675 osGLOBAL void 1676 smsatCheckPowerModeCB( 1677 agsaRoot_t *agRoot, 1678 agsaIORequest_t *agIORequest, 1679 bit32 agIOStatus, 1680 agsaFisHeader_t *agFirstDword, 1681 bit32 agIOInfoLen, 1682 agsaFrameHandle_t agFrameHandle, 1683 void *ioContext 1684 ); 1685 1686 osGLOBAL void 1687 smsatCheckPowerModePassCB( 1688 agsaRoot_t *agRoot, 1689 agsaIORequest_t *agIORequest, 1690 bit32 agIOStatus, 1691 agsaFisHeader_t *agFirstDword, 1692 bit32 agIOInfoLen, 1693 agsaFrameHandle_t agFrameHandle, 1694 void *ioContext 1695 ); 1696 1697 osGLOBAL void 1698 smsatIDDataPassCB( 1699 agsaRoot_t *agRoot, 1700 agsaIORequest_t *agIORequest, 1701 bit32 agIOStatus, 1702 agsaFisHeader_t *agFirstDword, 1703 bit32 agIOInfoLen, 1704 agsaFrameHandle_t agFrameHandle, 1705 void *ioContext 1706 ); 1707 1708 osGLOBAL void 1709 smsatResetDeviceCB( 1710 agsaRoot_t *agRoot, 1711 agsaIORequest_t *agIORequest, 1712 bit32 agIOStatus, 1713 agsaFisHeader_t *agFirstDword, 1714 bit32 agIOInfoLen, 1715 agsaFrameHandle_t agFrameHandle, 1716 void *ioContext 1717 ); 1718 1719 osGLOBAL void 1720 smsatDeResetDeviceCB( 1721 agsaRoot_t *agRoot, 1722 agsaIORequest_t *agIORequest, 1723 bit32 agIOStatus, 1724 agsaFisHeader_t *agFirstDword, 1725 bit32 agIOInfoLen, 1726 agsaFrameHandle_t agFrameHandle, 1727 void *ioContext 1728 ); 1729 osGLOBAL void 1730 smaSATAAbortCB( 1731 agsaRoot_t *agRoot, 1732 agsaIORequest_t *agIORequest, 1733 bit32 flag, 1734 bit32 status 1735 ); 1736 1737 osGLOBAL void 1738 smLocalPhyControlCB( 1739 agsaRoot_t *agRoot, 1740 agsaContext_t *agContext, 1741 bit32 phyId, 1742 bit32 phyOperation, 1743 bit32 status, 1744 void *parm 1745 ); 1746 /******************************** end of completion ***********************************************************/ 1747 1748 /******************************** start of utils ***********************************************************/ 1749 osGLOBAL bit32 smsatComputeCDB10LBA(smSatIOContext_t *satIOContext); 1750 osGLOBAL bit32 smsatComputeCDB10TL(smSatIOContext_t *satIOContext); 1751 osGLOBAL bit32 smsatComputeCDB12LBA(smSatIOContext_t *satIOContext); 1752 osGLOBAL bit32 smsatComputeCDB12TL(smSatIOContext_t *satIOContext); 1753 osGLOBAL bit32 smsatComputeCDB16LBA(smSatIOContext_t *satIOContext); 1754 osGLOBAL bit32 smsatComputeCDB16TL(smSatIOContext_t *satIOContext); 1755 osGLOBAL FORCEINLINE bit32 smsatComputeLoopNum(bit32 a, bit32 b); 1756 osGLOBAL FORCEINLINE bit32 smsatCheckLimit(bit8 *lba, bit8 *tl, int flag, smDeviceData_t *pSatDevData); 1757 1758 osGLOBAL void 1759 smsatSplitSGL( 1760 smRoot_t *smRoot, 1761 smIORequest_t *smIORequest, 1762 smDeviceHandle_t *smDeviceHandle, 1763 smScsiInitiatorRequest_t *smScsiRequest, 1764 smSatIOContext_t *satIOContext, 1765 bit32 split, 1766 bit32 tl, 1767 bit32 flag 1768 ); 1769 1770 osGLOBAL void 1771 smsatPrintSgl( 1772 smRoot_t *smRoot, 1773 agsaEsgl_t *agEsgl, 1774 bit32 idx 1775 ); 1776 /******************************** end of utils ***********************************************************/ 1777 1778 1779 osGLOBAL void 1780 smsatPassthroughCB( 1781 agsaRoot_t *agRoot, 1782 agsaIORequest_t *agIORequest, 1783 bit32 agIOStatus, 1784 agsaFisHeader_t *agFirstDword, 1785 bit32 agIOInfoLen, 1786 void *agParam, 1787 void *ioContext 1788 ); 1789 1790 1791 #endif /* __SMPROTO_H__ */ 1792 1793