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