1 /*******************************************************************************
2 *Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved.
4 *Redistribution and use in source and binary forms, with or without modification, are permitted provided
5 *that the following conditions are met:
6 *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
8 *2. Redistributions in binary form must reproduce the above copyright notice,
9 *this list of conditions and the following disclaimer in the documentation and/or other materials provided
10 *with the distribution.
12 *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13 *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14 *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16 *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17 *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19 *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
23 ********************************************************************************/
27 #include <dev/pms/RefTisa/sat/src/smtypes.h>
29 /***************** start of util ****************************************/
30 osGLOBAL FORCEINLINE void*
31 sm_memset(void *s, int c, bit32 n);
33 osGLOBAL FORCEINLINE void *
34 sm_memcpy(void *dst, const void *src, bit32 count);
37 *sm_strncpy(char *dst, const char *src, bit32 len);
41 smhexdump(const char *ptitle, bit8 *pbuf, size_t len);
42 /***************** end of util ****************************************/
44 /***************** start of timer fns ****************************************/
46 smTimerTick(smRoot_t *smRoot );
51 smTimerRequest_t *timerRequest
56 smTimerRequest_t *timerRequest,
58 smTimerCBFunc_t CBFunc,
67 smList_t *timerListHdr,
68 smTimerRequest_t *timerRequest
74 smTimerRequest_t *timerRequest
83 /***************** end of timer fns ****************************************/
101 osGLOBAL FORCEINLINE void
104 smIORequestBody_t *smIORequestBody
110 smDeviceData_t *oneDeviceData
116 smSatIOContext_t *satIOContext
119 osGLOBAL FORCEINLINE void
120 smsatFreeIntIoResource(
122 smDeviceData_t *satDevData,
123 smSatInternalIo_t *satIntIo
126 osGLOBAL smSatInternalIo_t *
127 smsatAllocIntIoResource(
129 smIORequest_t *smIORequest,
130 smDeviceData_t *satDevData,
131 bit32 dmaAllocLength,
132 smSatInternalIo_t *satIntIo);
136 osGLOBAL smDeviceData_t *
137 smAddToSharedcontext(
139 agsaDevHandle_t *agDevHandle,
140 smDeviceHandle_t *smDeviceHandle,
141 agsaDevHandle_t *agExpDevHandle,
146 smRemoveFromSharedcontext(
148 agsaDevHandle_t *agDevHandle,
149 smDeviceHandle_t *smDeviceHandle
152 osGLOBAL smDeviceData_t *
153 smFindInSharedcontext(
155 agsaDevHandle_t *agDevHandle
159 smsatLogSenseAllocate(
161 smIORequest_t *smIORequest,
162 smDeviceHandle_t *smDeviceHandle,
163 smScsiInitiatorRequest_t *smSCSIRequest,
164 smSatIOContext_t *satIOContext,
172 smIORequest_t *smIORequest,
173 smDeviceHandle_t *smDeviceHandle,
174 smScsiInitiatorRequest_t *smSCSIRequest,
175 smSatIOContext_t *satIOContext
182 smIORequest_t *smIORequest,
183 smDeviceHandle_t *smDeviceHandle,
184 smScsiInitiatorRequest_t *smSCSIRequest,
185 smSatIOContext_t *satIOContext
189 osGLOBAL FORCEINLINE bit32
192 smIORequest_t *smIORequest,
193 smDeviceHandle_t *smDeviceHandle,
194 smScsiInitiatorRequest_t *smSCSIRequest,
195 smSatIOContext_t *satIOContext
199 smsatSetSensePayload(
200 smScsiRspSense_t *pSense,
204 smSatIOContext_t *satIOContext
208 smsatSetDeferredSensePayload(
209 smScsiRspSense_t *pSense,
213 smSatIOContext_t *satIOContext
216 osGLOBAL FORCEINLINE bit32
219 smIORequestBody_t *smIORequestBody,
223 osGLOBAL FORCEINLINE void
224 smsatBitSet(smRoot_t *smRoot,bit8 *data, bit32 index);
226 osGLOBAL FORCEINLINE void
227 smsatBitClear(smRoot_t *smRoot,bit8 *data, bit32 index);
229 osGLOBAL FORCEINLINE BOOLEAN
230 smsatBitTest(smRoot_t *smRoot,bit8 *data, bit32 index);
232 osGLOBAL FORCEINLINE bit32
235 smDeviceData_t *pSatDevData,
239 osGLOBAL FORCEINLINE bit32
242 smDeviceData_t *pSatDevData,
246 osGLOBAL FORCEINLINE void
247 smsatDecrementPendingIO(
249 smIntContext_t *smAllShared,
250 smSatIOContext_t *satIOContext
253 osGLOBAL smSatIOContext_t *
255 smSatInternalIo_t *satNewIntIo,
256 smIORequest_t *smOrgIORequest,
257 smDeviceData_t *satDevData,
258 smIniScsiCmnd_t *scsiCmnd,
259 smSatIOContext_t *satOrgIOContext
264 smDeviceData_t *oneDeviceData,
265 agsaSATAIdentifyData_t *SATAIdData
269 smsatInquiryStandard(
271 agsaSATAIdentifyData_t *pSATAIdData,
272 smIniScsiCmnd_t *scsiCmnd
278 agsaSATAIdentifyData_t *pSATAIdData
284 agsaSATAIdentifyData_t *pSATAIdData,
285 smDeviceData_t *oneDeviceData
292 agsaSATAIdentifyData_t *pSATAIdData,
293 smDeviceData_t *oneDeviceData,
300 agsaSATAIdentifyData_t *pSATAIdData
306 agsaSATAIdentifyData_t *pSATAIdData
310 smsatDefaultTranslation(
312 smIORequest_t *smIORequest,
313 smSatIOContext_t *satIOContext,
314 smScsiRspSense_t *pSense,
317 bit32 interruptContext
323 smDeviceData_t *oneDeviceData,
325 smIORequest_t *CurrentTaskTag,
332 smDeviceHandle_t *smDeviceHandle,
335 smIORequest_t *taskTag,
336 smIORequest_t *currentTaskTag,
337 smIORequestBody_t *smIORequestBody
343 smIORequest_t *currentTaskTag,
344 smDeviceHandle_t *smDeviceHandle,
345 smScsiInitiatorRequest_t *tiScsiRequest,
346 smSatIOContext_t *satIOContext,
347 smIORequest_t *taskTag);
350 smsatStartCheckPowerMode(
352 smIORequest_t *currentTaskTag,
353 smDeviceHandle_t *smDeviceHandle,
354 smScsiInitiatorRequest_t *smScsiRequest,
355 smSatIOContext_t *satIOContext
358 smsatStartResetDevice(
360 smIORequest_t *currentTaskTag,
361 smDeviceHandle_t *smDeviceHandle,
362 smScsiInitiatorRequest_t *smScsiRequest,
363 smSatIOContext_t *satIOContext
369 smSatIOContext_t *satIOContext
372 osGLOBAL smIORequestBody_t *
373 smDequeueIO(smRoot_t *smRoot);
376 smsatDecodeSATADeviceType(bit8 * pSignature);
378 /******************************** beginning of start ******************************************************/
380 /*! \brief SAT implementation for ATAPI Packet Command.
382 * SAT implementation for ATAPI Packet and send FIS request to LL layer.
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
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.
396 /*****************************************************************************/
400 smIORequest_t *smIORequest,
401 smDeviceHandle_t *smDeviceHandle,
402 smScsiInitiatorRequest_t *smScsiRequest,
403 smSatIOContext_t *satIOContext
409 agsaIORequest_t *agIORequest,
411 agsaFisHeader_t *agFirstDword,
416 /*****************************************************************************/
417 /*! \brief SAT implementation for smsatExecuteDeviceDiagnostic.
419 * This function creates Execute Device Diagnostic fis and sends the request to LL layer
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
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.
434 /*****************************************************************************/
436 smsatExecuteDeviceDiagnostic(
438 smIORequest_t *smIORequest,
439 smDeviceHandle_t *smDeviceHandle,
440 smScsiInitiatorRequest_t *smScsiRequest,
441 smSatIOContext_t *satIOContext
445 smsatExecuteDeviceDiagnosticCB(
447 agsaIORequest_t *agIORequest,
449 agsaFisHeader_t *agFirstDword,
454 /* set feature for auto activate */
458 smIORequest_t *smIORequest,
459 smDeviceHandle_t *smDeviceHandle,
460 smScsiInitiatorRequest_t *smScsiRequest,
461 smSatIOContext_t *satIOContext
464 smsatSetFeaturesAACB(
466 agsaIORequest_t *agIORequest,
468 agsaFisHeader_t *agFirstDword,
474 /*****************************************************************************/
475 /*! \brief SAT implementation for satSetFeatures.
477 * This function creates SetFeatures fis and sends the request to LL layer
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
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.
491 /*****************************************************************************/
495 smIORequest_t *smIORequest,
496 smDeviceHandle_t *smDeviceHandle,
497 smScsiInitiatorRequest_t *smScsiRequest,
498 smSatIOContext_t *satIOContext
501 smsatSetFeaturesPIOCB(
503 agsaIORequest_t *agIORequest,
505 agsaFisHeader_t *agFirstDword,
514 smIORequest_t *smIORequest,
515 smDeviceHandle_t *smDeviceHandle,
516 smScsiInitiatorRequest_t *smScsiRequest,
517 smSatIOContext_t *satIOContext
521 smsatSetFeaturesDMACB(
523 agsaIORequest_t *agIORequest,
525 agsaFisHeader_t *agFirstDword,
532 smsatSetFeaturesReadLookAhead(
534 smIORequest_t *smIORequest,
535 smDeviceHandle_t *smDeviceHandle,
536 smScsiInitiatorRequest_t *smScsiRequest,
537 smSatIOContext_t *satIOContext
541 smsatSetFeaturesReadLookAheadCB(
543 agsaIORequest_t *agIORequest,
545 agsaFisHeader_t *agFirstDword,
552 smsatSetFeaturesVolatileWriteCache(
554 smIORequest_t *smIORequest,
555 smDeviceHandle_t *smDeviceHandle,
556 smScsiInitiatorRequest_t *smScsiRequest,
557 smSatIOContext_t *satIOContext
561 smsatSetFeaturesVolatileWriteCacheCB(
563 agsaIORequest_t *agIORequest,
565 agsaFisHeader_t *agFirstDword,
572 smsatSMARTEnablePassCB(
574 agsaIORequest_t *agIORequest,
576 agsaFisHeader_t *agFirstDword,
578 agsaFrameHandle_t agFrameHandle,
583 smsatSMARTRStatusPassCB(
585 agsaIORequest_t *agIORequest,
587 agsaFisHeader_t *agFirstDword,
595 agsaIORequest_t *agIORequest,
597 agsaFisHeader_t *agFirstDword,
604 /*****************************************************************************/
605 /*! \brief SAT implementation for SCSI REQUEST SENSE to ATAPI device.
607 * SAT implementation for SCSI REQUEST SENSE.
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
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.
621 /*****************************************************************************/
623 smsatRequestSenseForATAPI(
625 smIORequest_t *smIORequest,
626 smDeviceHandle_t *smDeviceHandle,
627 smScsiInitiatorRequest_t *smScsiRequest,
628 smSatIOContext_t *satIOContext
632 smsatRequestSenseForATAPICB(
634 agsaIORequest_t *agIORequest,
636 agsaFisHeader_t *agFirstDword,
642 /*****************************************************************************/
643 /*! \brief SAT implementation for smsatDeviceReset.
645 * This function creates DEVICE RESET fis and sends the request to LL layer
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
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.
659 /*****************************************************************************/
663 smIORequest_t *smIORequest,
664 smDeviceHandle_t *smDeviceHandle,
665 smScsiInitiatorRequest_t *smScsiRequest,
666 smSatIOContext_t *satIOContext
672 agsaIORequest_t *agIORequest,
674 agsaFisHeader_t *agFirstDword,
682 smsatTranslateATAPIErrorsToSCSIErrors(
687 bit16 *pSenseCodeInfo
691 smsatTranslateATAErrorsToSCSIErrors(
695 bit16 *pSenseCodeInfo
698 /*****************************************************************************/
703 smIORequest_t *smIORequest,
704 smDeviceHandle_t *smDeviceHandle,
705 smScsiInitiatorRequest_t *smScsiRequest,
706 smSatIOContext_t *satIOContext
709 osGLOBAL FORCEINLINE bit32
712 smIORequest_t *smIORequest,
713 smDeviceHandle_t *smDeviceHandle,
714 smScsiInitiatorRequest_t *smScsiRequest,
715 smSatIOContext_t *satIOContext
721 smIORequest_t *smIORequest,
722 smDeviceHandle_t *smDeviceHandle,
723 smScsiInitiatorRequest_t *smScsiRequest,
724 smSatIOContext_t *satIOContext
730 smIORequest_t *smIORequest,
731 smDeviceHandle_t *smDeviceHandle,
732 smScsiInitiatorRequest_t *smScsiRequest,
733 smSatIOContext_t *satIOContext
739 smIORequest_t *smIORequest,
740 smDeviceHandle_t *smDeviceHandle,
741 smScsiInitiatorRequest_t *smScsiRequest,
742 smSatIOContext_t *satIOContext
745 osGLOBAL FORCEINLINE bit32
748 smIORequest_t *smIORequest,
749 smDeviceHandle_t *smDeviceHandle,
750 smScsiInitiatorRequest_t *smScsiRequest,
751 smSatIOContext_t *satIOContext
757 smIORequest_t *smIORequest,
758 smDeviceHandle_t *smDeviceHandle,
759 smScsiInitiatorRequest_t *smScsiRequest,
760 smSatIOContext_t *satIOContext
766 smIORequest_t *smIORequest,
767 smDeviceHandle_t *smDeviceHandle,
768 smScsiInitiatorRequest_t *smScsiRequest,
769 smSatIOContext_t *satIOContext
775 smIORequest_t *smIORequest,
776 smDeviceHandle_t *smDeviceHandle,
777 smScsiInitiatorRequest_t *smScsiRequest,
778 smSatIOContext_t *satIOContext
784 smIORequest_t *smIORequest,
785 smDeviceHandle_t *smDeviceHandle,
786 smScsiInitiatorRequest_t *smScsiRequest,
787 smSatIOContext_t *satIOContext
793 smIORequest_t *smIORequest,
794 smDeviceHandle_t *smDeviceHandle,
795 smScsiInitiatorRequest_t *smScsiRequest,
796 smSatIOContext_t *satIOContext
802 smIORequest_t *smIORequest,
803 smDeviceHandle_t *smDeviceHandle,
804 smScsiInitiatorRequest_t *smScsiRequest,
805 smSatIOContext_t *satIOContext
811 smIORequest_t *smIORequest,
812 smDeviceHandle_t *smDeviceHandle,
813 smScsiInitiatorRequest_t *smScsiRequest,
814 smSatIOContext_t *satIOContext
820 smIORequest_t *smIORequest,
821 smDeviceHandle_t *smDeviceHandle,
822 smScsiInitiatorRequest_t *smScsiRequest,
823 smSatIOContext_t *satIOContext
829 smIORequest_t *smIORequest,
830 smDeviceHandle_t *smDeviceHandle,
831 smScsiInitiatorRequest_t *smScsiRequest,
832 smSatIOContext_t *satIOContext
838 smIORequest_t *smIORequest,
839 smDeviceHandle_t *smDeviceHandle,
840 smScsiInitiatorRequest_t *smScsiRequest,
841 smSatIOContext_t *satIOContext
847 smIORequest_t *smIORequest,
848 smDeviceHandle_t *smDeviceHandle,
849 smScsiInitiatorRequest_t *smScsiRequest,
850 smSatIOContext_t *satIOContext
856 smIORequest_t *smIORequest,
857 smDeviceHandle_t *smDeviceHandle,
858 smScsiInitiatorRequest_t *smScsiRequest,
859 smSatIOContext_t *satIOContext
865 smIORequest_t *smIORequest,
866 smDeviceHandle_t *smDeviceHandle,
867 smScsiInitiatorRequest_t *smScsiRequest,
868 smSatIOContext_t *satIOContext
874 smIORequest_t *smIORequest,
875 smDeviceHandle_t *smDeviceHandle,
876 smScsiInitiatorRequest_t *smScsiRequest,
877 smSatIOContext_t *satIOContext
883 smIORequest_t *smIORequest,
884 smDeviceHandle_t *smDeviceHandle,
885 smScsiInitiatorRequest_t *smScsiRequest,
886 smSatIOContext_t *satIOContext
892 smIORequest_t *smIORequest,
893 smDeviceHandle_t *smDeviceHandle,
894 smScsiInitiatorRequest_t *smScsiRequest,
895 smSatIOContext_t *satIOContext
901 smIORequest_t *smIORequest,
902 smDeviceHandle_t *smDeviceHandle,
903 smScsiInitiatorRequest_t *smScsiRequest,
904 smSatIOContext_t *satIOContext
910 smIORequest_t *smIORequest,
911 smDeviceHandle_t *smDeviceHandle,
912 smScsiInitiatorRequest_t *smScsiRequest,
913 smSatIOContext_t *satIOContext
919 smIORequest_t *smIORequest,
920 smDeviceHandle_t *smDeviceHandle,
921 smScsiInitiatorRequest_t *smScsiRequest,
922 smSatIOContext_t *satIOContext
928 smIORequest_t *smIORequest,
929 smDeviceHandle_t *smDeviceHandle,
930 smScsiInitiatorRequest_t *smScsiRequest,
931 smSatIOContext_t *satIOContext
938 smIORequest_t *smIORequest,
939 smDeviceHandle_t *smDeviceHandle,
940 smScsiInitiatorRequest_t *smScsiRequest,
941 smSatIOContext_t *satIOContext
945 smsatSynchronizeCache10(
947 smIORequest_t *smIORequest,
948 smDeviceHandle_t *smDeviceHandle,
949 smScsiInitiatorRequest_t *smScsiRequest,
950 smSatIOContext_t *satIOContext
954 smsatSynchronizeCache16(
956 smIORequest_t *smIORequest,
957 smDeviceHandle_t *smDeviceHandle,
958 smScsiInitiatorRequest_t *smScsiRequest,
959 smSatIOContext_t *satIOContext
963 smsatWriteAndVerify10(
965 smIORequest_t *smIORequest,
966 smDeviceHandle_t *smDeviceHandle,
967 smScsiInitiatorRequest_t *smScsiRequest,
968 smSatIOContext_t *satIOContext
972 smsatWriteAndVerify12(
974 smIORequest_t *smIORequest,
975 smDeviceHandle_t *smDeviceHandle,
976 smScsiInitiatorRequest_t *smScsiRequest,
977 smSatIOContext_t *satIOContext
981 smsatWriteAndVerify16(
983 smIORequest_t *smIORequest,
984 smDeviceHandle_t *smDeviceHandle,
985 smScsiInitiatorRequest_t *smScsiRequest,
986 smSatIOContext_t *satIOContext
990 smsatReadMediaSerialNumber(
992 smIORequest_t *smIORequest,
993 smDeviceHandle_t *smDeviceHandle,
994 smScsiInitiatorRequest_t *smScsiRequest,
995 smSatIOContext_t *satIOContext
1001 smIORequest_t *smIORequest,
1002 smDeviceHandle_t *smDeviceHandle,
1003 smScsiInitiatorRequest_t *smScsiRequest,
1004 smSatIOContext_t *satIOContext
1010 smIORequest_t *smIORequest,
1011 smDeviceHandle_t *smDeviceHandle,
1012 smScsiInitiatorRequest_t *smScsiRequest,
1013 smSatIOContext_t *satIOContext
1017 smsatReassignBlocks(
1019 smIORequest_t *smIORequest,
1020 smDeviceHandle_t *smDeviceHandle,
1021 smScsiInitiatorRequest_t *smScsiRequest,
1022 smSatIOContext_t *satIOContext
1028 smIORequest_t *smIORequest,
1029 smDeviceHandle_t *smDeviceHandle,
1030 smScsiInitiatorRequest_t *smScsiRequest,
1031 smSatIOContext_t *satIOContext
1034 osGLOBAL FORCEINLINE bit32
1037 smIORequest_t *smIORequest,
1038 smDeviceHandle_t *smDeviceHandle,
1039 smScsiInitiatorRequest_t *smScsiRequest,
1040 smSatIOContext_t *satIOContext
1043 smsatTestUnitReady_1(
1045 smIORequest_t *smIORequest,
1046 smDeviceHandle_t *smDeviceHandle,
1047 smScsiInitiatorRequest_t *smScsiRequest,
1048 smSatIOContext_t *satIOContext
1053 smIORequest_t *smIORequest,
1054 smDeviceHandle_t *smDeviceHandle,
1055 smScsiInitiatorRequest_t *smScsiRequest,
1056 smSatIOContext_t *satIOContext
1062 smIORequest_t *smIORequest,
1063 smDeviceHandle_t *smDeviceHandle,
1064 smScsiInitiatorRequest_t *smScsiRequest,
1065 smSatIOContext_t *satIOContext
1069 smsatRequestSense_1(
1071 smIORequest_t *smIORequest,
1072 smDeviceHandle_t *smDeviceHandle,
1073 smScsiInitiatorRequest_t *smScsiRequest,
1074 smSatIOContext_t *satIOContext
1080 smIORequest_t *smIORequest,
1081 smDeviceHandle_t *smDeviceHandle,
1082 smScsiInitiatorRequest_t *smScsiRequest,
1083 smSatIOContext_t *satIOContext
1089 smIORequest_t *smIORequest,
1090 smDeviceHandle_t *smDeviceHandle,
1091 smScsiInitiatorRequest_t *smScsiRequest,
1092 smSatIOContext_t *satIOContext
1098 smIORequest_t *smIORequest,
1099 smDeviceHandle_t *smDeviceHandle,
1100 smScsiInitiatorRequest_t *smScsiRequest,
1101 smSatIOContext_t *satIOContext
1107 smIORequest_t *smIORequest,
1108 smDeviceHandle_t *smDeviceHandle,
1109 smScsiInitiatorRequest_t *smScsiRequest,
1110 smSatIOContext_t *satIOContext
1116 smIORequest_t *smIORequest,
1117 smDeviceHandle_t *smDeviceHandle,
1118 smScsiInitiatorRequest_t *smScsiRequest,
1119 smSatIOContext_t *satIOContext
1123 smsatNonChainedWriteNVerify_Verify(
1125 smIORequest_t *smIORequest,
1126 smDeviceHandle_t *smDeviceHandle,
1127 smScsiInitiatorRequest_t *smScsiRequest,
1128 smSatIOContext_t *satIOContext
1132 smsatChainedWriteNVerify_Start_Verify(
1134 smIORequest_t *smIORequest,
1135 smDeviceHandle_t *smDeviceHandle,
1136 smScsiInitiatorRequest_t *smScsiRequest,
1137 smSatIOContext_t *satIOContext
1141 smsatChainedWriteNVerify_Write(
1143 smIORequest_t *smIORequest,
1144 smDeviceHandle_t *smDeviceHandle,
1145 smScsiInitiatorRequest_t *smScsiRequest,
1146 smSatIOContext_t *satIOContext
1150 smsatChainedWriteNVerify_Verify(
1152 smIORequest_t *smIORequest,
1153 smDeviceHandle_t *smDeviceHandle,
1154 smScsiInitiatorRequest_t *smScsiRequest,
1155 smSatIOContext_t *satIOContext
1160 smIORequest_t *smIORequest,
1161 smDeviceHandle_t *smDeviceHandle,
1162 smScsiInitiatorRequest_t *smScsiRequest,
1163 smSatIOContext_t *satIOContext
1169 smIORequest_t *smIORequest,
1170 smDeviceHandle_t *smDeviceHandle,
1171 smScsiInitiatorRequest_t *smScsiRequest,
1172 smSatIOContext_t *satIOContext,
1179 smIORequest_t *smIORequest,
1180 smDeviceHandle_t *smDeviceHandle,
1181 smScsiInitiatorRequest_t *smScsiRequest,
1182 smSatIOContext_t *satIOContext,
1189 smIORequest_t *smIORequest,
1190 smDeviceHandle_t *smDeviceHandle,
1191 smScsiInitiatorRequest_t *smScsiRequest,
1192 smSatIOContext_t *satIOContext,
1197 smsatStartStopUnit_1(
1199 smIORequest_t *smIORequest,
1200 smDeviceHandle_t *smDeviceHandle,
1201 smScsiInitiatorRequest_t *smScsiRequest,
1202 smSatIOContext_t *satIOContext
1206 smsatSendDiagnostic_1(
1208 smIORequest_t *smIORequest,
1209 smDeviceHandle_t *smDeviceHandle,
1210 smScsiInitiatorRequest_t *smScsiRequest,
1211 smSatIOContext_t *satIOContext
1215 smsatSendDiagnostic_2(
1217 smIORequest_t *smIORequest,
1218 smDeviceHandle_t *smDeviceHandle,
1219 smScsiInitiatorRequest_t *smScsiRequest,
1220 smSatIOContext_t *satIOContext
1224 smsatModeSelect6n10_1(
1226 smIORequest_t *smIORequest,
1227 smDeviceHandle_t *smDeviceHandle,
1228 smScsiInitiatorRequest_t *smScsiRequest,
1229 smSatIOContext_t *satIOContext
1235 smIORequest_t *smIORequest,
1236 smDeviceHandle_t *smDeviceHandle,
1237 smScsiInitiatorRequest_t *smScsiRequest,
1238 smSatIOContext_t *satIOContext
1242 smsatReassignBlocks_2(
1244 smIORequest_t *smIORequest,
1245 smDeviceHandle_t *smDeviceHandle,
1246 smScsiInitiatorRequest_t *smScsiRequest,
1247 smSatIOContext_t *satIOContext,
1252 smsatReassignBlocks_1(
1254 smIORequest_t *smIORequest,
1255 smDeviceHandle_t *smDeviceHandle,
1256 smScsiInitiatorRequest_t *smScsiRequest,
1257 smSatIOContext_t *satIOContext,
1258 smSatIOContext_t *satOrgIOContext
1262 smsatSendReadLogExt(
1264 smIORequest_t *smIORequest,
1265 smDeviceHandle_t *smDeviceHandle,
1266 smScsiInitiatorRequest_t *smScsiRequest,
1267 smSatIOContext_t *satIOContext
1271 smsatCheckPowerMode(
1273 smIORequest_t *smIORequest,
1274 smDeviceHandle_t *smDeviceHandle,
1275 smScsiInitiatorRequest_t *smScsiRequest,
1276 smSatIOContext_t *satIOContext
1282 smIORequest_t *smIORequest,
1283 smDeviceHandle_t *smDeviceHandle,
1284 smScsiInitiatorRequest_t *smScsiRequest,
1285 smSatIOContext_t *satIOContext
1291 smIORequest_t *smIORequest,
1292 smDeviceHandle_t *smDeviceHandle,
1293 smScsiInitiatorRequest_t *smScsiRequest,
1294 smSatIOContext_t *satIOContext
1296 /******************************** beginning of completion ******************************************************/
1297 osGLOBAL FORCEINLINE void
1300 agsaIORequest_t *agIORequest,
1308 osGLOBAL FORCEINLINE void
1309 smsatNonChainedDataIOCB(
1311 agsaIORequest_t *agIORequest,
1313 agsaFisHeader_t *agFirstDword,
1319 osGLOBAL FORCEINLINE void
1320 smsatChainedDataIOCB(
1322 agsaIORequest_t *agIORequest,
1324 agsaFisHeader_t *agFirstDword,
1331 smsatNonChainedVerifyCB(
1333 agsaIORequest_t *agIORequest,
1335 agsaFisHeader_t *agFirstDword,
1337 agsaFrameHandle_t agFrameHandle,
1342 smsatChainedVerifyCB(
1344 agsaIORequest_t *agIORequest,
1346 agsaFisHeader_t *agFirstDword,
1348 agsaFrameHandle_t agFrameHandle,
1353 smsatTestUnitReadyCB(
1355 agsaIORequest_t *agIORequest,
1357 agsaFisHeader_t *agFirstDword,
1359 agsaFrameHandle_t agFrameHandle,
1363 smsatRequestSenseCB(
1365 agsaIORequest_t *agIORequest,
1367 agsaFisHeader_t *agFirstDword,
1374 smsatSendDiagnosticCB(
1376 agsaIORequest_t *agIORequest,
1378 agsaFisHeader_t *agFirstDword,
1380 agsaFrameHandle_t agFrameHandle,
1385 smsatStartStopUnitCB(
1387 agsaIORequest_t *agIORequest,
1389 agsaFisHeader_t *agFirstDword,
1391 agsaFrameHandle_t agFrameHandle,
1399 agsaIORequest_t *agIORequest,
1401 agsaFisHeader_t *agFirstDword,
1403 agsaFrameHandle_t agFrameHandle,
1411 agsaIORequest_t *agIORequest,
1413 agsaFisHeader_t *agFirstDword,
1422 agsaIORequest_t *agIORequest,
1424 agsaFisHeader_t *agFirstDword,
1426 agsaFrameHandle_t agFrameHandle,
1431 smsatModeSelect6n10CB(
1433 agsaIORequest_t *agIORequest,
1435 agsaFisHeader_t *agFirstDword,
1437 agsaFrameHandle_t agFrameHandle,
1442 smsatSynchronizeCache10n16CB(
1444 agsaIORequest_t *agIORequest,
1446 agsaFisHeader_t *agFirstDword,
1448 agsaFrameHandle_t agFrameHandle,
1453 smsatNonChainedWriteNVerifyCB(
1455 agsaIORequest_t *agIORequest,
1457 agsaFisHeader_t *agFirstDword,
1464 smsatChainedWriteNVerifyCB(
1466 agsaIORequest_t *agIORequest,
1468 agsaFisHeader_t *agFirstDword,
1475 smsatReadMediaSerialNumberCB(
1477 agsaIORequest_t *agIORequest,
1479 agsaFisHeader_t *agFirstDword,
1481 agsaFrameHandle_t agFrameHandle,
1488 agsaIORequest_t *agIORequest,
1490 agsaFisHeader_t *agFirstDword,
1492 agsaFrameHandle_t agFrameHandle,
1499 agsaIORequest_t *agIORequest,
1501 agsaFisHeader_t *agFirstDword,
1503 agsaFrameHandle_t agFrameHandle,
1508 smsatReassignBlocksCB(
1510 agsaIORequest_t *agIORequest,
1512 agsaFisHeader_t *agFirstDword,
1514 agsaFrameHandle_t agFrameHandle,
1519 smsatProcessAbnormalCompletion(
1521 agsaIORequest_t *agIORequest,
1523 agsaFisHeader_t *agFirstDword,
1526 smSatIOContext_t *satIOContext
1530 smsatDelayedProcessAbnormalCompletion(
1532 agsaIORequest_t *agIORequest,
1534 agsaFisHeader_t *agFirstDword,
1537 smSatIOContext_t *satIOContext
1543 smIORequest_t *smIORequest,
1544 agsaFisHeader_t *agFirstDword,
1546 agsaFrameHandle_t agFrameHandle,
1547 smSatIOContext_t *satIOContext,
1548 bit32 interruptContext
1552 smsatEncryptionHandler(
1554 agsaIORequest_t *agIORequest,
1559 bit32 interruptContext
1565 agsaIORequest_t *agIORequest,
1570 bit32 interruptContext
1576 smIORequest_t *smIORequest,
1577 smSatIOContext_t *satIOContext
1583 agsaIORequest_t *agIORequest,
1585 agsaFisHeader_t *agFirstDword,
1594 agsaIORequest_t *agIORequest,
1596 agsaFisHeader_t *agFirstDword,
1606 smIORequest_t *smIORequest,
1607 smDeviceHandle_t *smDeviceHandle,
1608 smScsiInitiatorRequest_t *smScsiRequest,
1609 smSatIOContext_t *satIOContext
1615 agsaIORequest_t *agIORequest,
1617 agsaFisHeader_t *agFirstDword,
1626 agsaIORequest_t *agIORequest,
1628 agsaFisHeader_t *agFirstDword,
1638 agsaIORequest_t *agIORequest,
1640 agsaFisHeader_t *agFirstDword,
1649 agsaIORequest_t *agIORequest,
1652 agsaFrameHandle_t agFrameHandle
1658 agsaIORequest_t *agIORequest,
1661 agsaFrameHandle_t agFrameHandle
1665 smPhyControlRespRcvd(
1668 agsaIORequest_t *agIORequest,
1669 smDeviceData_t *oneDeviceData,
1670 smSMPFrameHeader_t *frameHeader,
1671 agsaFrameHandle_t frameHandle,
1672 smIORequest_t *CurrentTaskTag
1676 smsatCheckPowerModeCB(
1678 agsaIORequest_t *agIORequest,
1680 agsaFisHeader_t *agFirstDword,
1682 agsaFrameHandle_t agFrameHandle,
1687 smsatCheckPowerModePassCB(
1689 agsaIORequest_t *agIORequest,
1691 agsaFisHeader_t *agFirstDword,
1693 agsaFrameHandle_t agFrameHandle,
1700 agsaIORequest_t *agIORequest,
1702 agsaFisHeader_t *agFirstDword,
1704 agsaFrameHandle_t agFrameHandle,
1711 agsaIORequest_t *agIORequest,
1713 agsaFisHeader_t *agFirstDword,
1715 agsaFrameHandle_t agFrameHandle,
1720 smsatDeResetDeviceCB(
1722 agsaIORequest_t *agIORequest,
1724 agsaFisHeader_t *agFirstDword,
1726 agsaFrameHandle_t agFrameHandle,
1732 agsaIORequest_t *agIORequest,
1738 smLocalPhyControlCB(
1740 agsaContext_t *agContext,
1746 /******************************** end of completion ***********************************************************/
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);
1761 smIORequest_t *smIORequest,
1762 smDeviceHandle_t *smDeviceHandle,
1763 smScsiInitiatorRequest_t *smScsiRequest,
1764 smSatIOContext_t *satIOContext,
1776 /******************************** end of utils ***********************************************************/
1782 agsaIORequest_t *agIORequest,
1784 agsaFisHeader_t *agFirstDword,
1791 #endif /* __SMPROTO_H__ */