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 /******************************************************************************** 24*4e1bc9a0SAchim Leubner ** 25*4e1bc9a0SAchim Leubner ** Version Control Information: 26*4e1bc9a0SAchim Leubner ** 27*4e1bc9a0SAchim Leubner ** 28*4e1bc9a0SAchim Leubner *******************************************************************************/ 29*4e1bc9a0SAchim Leubner /******************************************************************************** 30*4e1bc9a0SAchim Leubner ** 31*4e1bc9a0SAchim Leubner ** ostiapi.h 32*4e1bc9a0SAchim Leubner ** 33*4e1bc9a0SAchim Leubner ** Abstract: This module contains function prototype of the Transport 34*4e1bc9a0SAchim Leubner ** Independent (TIAPI) OS Callback interface. 35*4e1bc9a0SAchim Leubner ** 36*4e1bc9a0SAchim Leubner ********************************************************************************/ 37*4e1bc9a0SAchim Leubner 38*4e1bc9a0SAchim Leubner #ifndef OSTIAPI_H 39*4e1bc9a0SAchim Leubner 40*4e1bc9a0SAchim Leubner #define OSTIAPI_H 41*4e1bc9a0SAchim Leubner 42*4e1bc9a0SAchim Leubner /* 43*4e1bc9a0SAchim Leubner * Definition for return status is defined in tiStatus_t in TIDEFS.H 44*4e1bc9a0SAchim Leubner */ 45*4e1bc9a0SAchim Leubner 46*4e1bc9a0SAchim Leubner /***************************************************************************** 47*4e1bc9a0SAchim Leubner * Initiator/Target Shared Callbacks 48*4e1bc9a0SAchim Leubner *****************************************************************************/ 49*4e1bc9a0SAchim Leubner 50*4e1bc9a0SAchim Leubner osGLOBAL bit32 ostiGetTransportParam( 51*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 52*4e1bc9a0SAchim Leubner char *key, 53*4e1bc9a0SAchim Leubner char *subkey1, 54*4e1bc9a0SAchim Leubner char *subkey2, 55*4e1bc9a0SAchim Leubner char *subkey3, 56*4e1bc9a0SAchim Leubner char *subkey4, 57*4e1bc9a0SAchim Leubner char *subkey5, 58*4e1bc9a0SAchim Leubner char *valueName, 59*4e1bc9a0SAchim Leubner char *buffer, 60*4e1bc9a0SAchim Leubner bit32 bufferLen, 61*4e1bc9a0SAchim Leubner bit32 *lenReceived 62*4e1bc9a0SAchim Leubner ); 63*4e1bc9a0SAchim Leubner 64*4e1bc9a0SAchim Leubner osGLOBAL void ostiPortEvent( 65*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 66*4e1bc9a0SAchim Leubner tiPortEvent_t eventType, 67*4e1bc9a0SAchim Leubner bit32 status, 68*4e1bc9a0SAchim Leubner void *pParm 69*4e1bc9a0SAchim Leubner ); 70*4e1bc9a0SAchim Leubner 71*4e1bc9a0SAchim Leubner osGLOBAL bit32 ostiTimeStamp( tiRoot_t *tiRoot); 72*4e1bc9a0SAchim Leubner osGLOBAL bit64 ostiTimeStamp64( tiRoot_t *tiRoot); 73*4e1bc9a0SAchim Leubner 74*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE bit32 ostiChipConfigReadBit32( 75*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 76*4e1bc9a0SAchim Leubner bit32 chipConfigOffset 77*4e1bc9a0SAchim Leubner ); 78*4e1bc9a0SAchim Leubner 79*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void ostiChipConfigWriteBit32( 80*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 81*4e1bc9a0SAchim Leubner bit32 chipConfigOffset, 82*4e1bc9a0SAchim Leubner bit32 chipConfigValue 83*4e1bc9a0SAchim Leubner ); 84*4e1bc9a0SAchim Leubner 85*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE bit32 ostiChipReadBit32( 86*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 87*4e1bc9a0SAchim Leubner bit32 chipOffset 88*4e1bc9a0SAchim Leubner ); 89*4e1bc9a0SAchim Leubner 90*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void ostiChipWriteBit32( 91*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 92*4e1bc9a0SAchim Leubner bit32 chipOffset, 93*4e1bc9a0SAchim Leubner bit32 chipValue 94*4e1bc9a0SAchim Leubner ); 95*4e1bc9a0SAchim Leubner 96*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE bit8 ostiChipReadBit8( 97*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 98*4e1bc9a0SAchim Leubner bit32 chipOffset 99*4e1bc9a0SAchim Leubner ); 100*4e1bc9a0SAchim Leubner 101*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void ostiChipWriteBit8( 102*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 103*4e1bc9a0SAchim Leubner bit32 chipOffset, 104*4e1bc9a0SAchim Leubner bit8 chipValue 105*4e1bc9a0SAchim Leubner ); 106*4e1bc9a0SAchim Leubner 107*4e1bc9a0SAchim Leubner osGLOBAL void ostiFlashReadBlock( 108*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 109*4e1bc9a0SAchim Leubner bit32 flashOffset, 110*4e1bc9a0SAchim Leubner void *buffer, 111*4e1bc9a0SAchim Leubner bit32 bufferLen 112*4e1bc9a0SAchim Leubner ); 113*4e1bc9a0SAchim Leubner 114*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE 115*4e1bc9a0SAchim Leubner tiDeviceHandle_t* 116*4e1bc9a0SAchim Leubner ostiGetDevHandleFromSasAddr( 117*4e1bc9a0SAchim Leubner tiRoot_t *root, 118*4e1bc9a0SAchim Leubner unsigned char *sas_addr 119*4e1bc9a0SAchim Leubner ); 120*4e1bc9a0SAchim Leubner 121*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void ostidisableEncryption(tiRoot_t *root); 122*4e1bc9a0SAchim Leubner 123*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void ostiSingleThreadedEnter( 124*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 125*4e1bc9a0SAchim Leubner bit32 queueId 126*4e1bc9a0SAchim Leubner ); 127*4e1bc9a0SAchim Leubner 128*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void ostiSingleThreadedLeave( 129*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 130*4e1bc9a0SAchim Leubner bit32 queueId 131*4e1bc9a0SAchim Leubner ); 132*4e1bc9a0SAchim Leubner 133*4e1bc9a0SAchim Leubner 134*4e1bc9a0SAchim Leubner osGLOBAL bit32 ostiNumOfLUNIOCTLreq(tiRoot_t *root, 135*4e1bc9a0SAchim Leubner void *param1, 136*4e1bc9a0SAchim Leubner void *param2, 137*4e1bc9a0SAchim Leubner void **tiRequestBody, 138*4e1bc9a0SAchim Leubner tiIORequest_t **tiIORequest 139*4e1bc9a0SAchim Leubner ); 140*4e1bc9a0SAchim Leubner 141*4e1bc9a0SAchim Leubner #ifdef PERF_COUNT 142*4e1bc9a0SAchim Leubner osGLOBAL void ostiEnter(tiRoot_t *ptiRoot, bit32 layer, int io); 143*4e1bc9a0SAchim Leubner osGLOBAL void ostiLeave(tiRoot_t *ptiRoot, bit32 layer, int io); 144*4e1bc9a0SAchim Leubner #define OSTI_INP_ENTER(root) ostiEnter(root, 2, 0) 145*4e1bc9a0SAchim Leubner #define OSTI_INP_LEAVE(root) ostiLeave(root, 2, 0) 146*4e1bc9a0SAchim Leubner #define OSTI_OUT_ENTER(root) ostiEnter(root, 2, 1) 147*4e1bc9a0SAchim Leubner #define OSTI_OUT_LEAVE(root) ostiLeave(root, 2, 1) 148*4e1bc9a0SAchim Leubner #else 149*4e1bc9a0SAchim Leubner #define OSTI_INP_ENTER(root) 150*4e1bc9a0SAchim Leubner #define OSTI_INP_LEAVE(root) 151*4e1bc9a0SAchim Leubner #define OSTI_OUT_ENTER(root) 152*4e1bc9a0SAchim Leubner #define OSTI_OUT_LEAVE(root) 153*4e1bc9a0SAchim Leubner #endif 154*4e1bc9a0SAchim Leubner 155*4e1bc9a0SAchim Leubner osGLOBAL void ostiStallThread( 156*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 157*4e1bc9a0SAchim Leubner bit32 microseconds 158*4e1bc9a0SAchim Leubner ); 159*4e1bc9a0SAchim Leubner 160*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE bit8 161*4e1bc9a0SAchim Leubner ostiBitScanForward( 162*4e1bc9a0SAchim Leubner tiRoot_t *root, 163*4e1bc9a0SAchim Leubner bit32 *Index, 164*4e1bc9a0SAchim Leubner bit32 Mask 165*4e1bc9a0SAchim Leubner ); 166*4e1bc9a0SAchim Leubner 167*4e1bc9a0SAchim Leubner #ifdef LINUX_VERSION_CODE 168*4e1bc9a0SAchim Leubner 169*4e1bc9a0SAchim Leubner osGLOBAL sbit32 170*4e1bc9a0SAchim Leubner ostiAtomicIncrement( 171*4e1bc9a0SAchim Leubner tiRoot_t *root, 172*4e1bc9a0SAchim Leubner sbit32 volatile *Addend 173*4e1bc9a0SAchim Leubner ); 174*4e1bc9a0SAchim Leubner 175*4e1bc9a0SAchim Leubner osGLOBAL sbit32 176*4e1bc9a0SAchim Leubner ostiAtomicDecrement( 177*4e1bc9a0SAchim Leubner tiRoot_t *root, 178*4e1bc9a0SAchim Leubner sbit32 volatile *Addend 179*4e1bc9a0SAchim Leubner ); 180*4e1bc9a0SAchim Leubner 181*4e1bc9a0SAchim Leubner 182*4e1bc9a0SAchim Leubner osGLOBAL sbit32 183*4e1bc9a0SAchim Leubner ostiAtomicBitClear( 184*4e1bc9a0SAchim Leubner tiRoot_t *root, 185*4e1bc9a0SAchim Leubner sbit32 volatile *Destination, 186*4e1bc9a0SAchim Leubner sbit32 Value 187*4e1bc9a0SAchim Leubner ); 188*4e1bc9a0SAchim Leubner 189*4e1bc9a0SAchim Leubner osGLOBAL sbit32 190*4e1bc9a0SAchim Leubner ostiAtomicBitSet( 191*4e1bc9a0SAchim Leubner tiRoot_t *root, 192*4e1bc9a0SAchim Leubner sbit32 volatile *Destination, 193*4e1bc9a0SAchim Leubner sbit32 Value 194*4e1bc9a0SAchim Leubner ); 195*4e1bc9a0SAchim Leubner 196*4e1bc9a0SAchim Leubner osGLOBAL sbit32 197*4e1bc9a0SAchim Leubner ostiAtomicExchange( 198*4e1bc9a0SAchim Leubner tiRoot_t *root, 199*4e1bc9a0SAchim Leubner sbit32 volatile *Target, 200*4e1bc9a0SAchim Leubner sbit32 Value 201*4e1bc9a0SAchim Leubner ); 202*4e1bc9a0SAchim Leubner 203*4e1bc9a0SAchim Leubner #else 204*4e1bc9a0SAchim Leubner 205*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 206*4e1bc9a0SAchim Leubner ostiInterlockedIncrement( 207*4e1bc9a0SAchim Leubner tiRoot_t *root, 208*4e1bc9a0SAchim Leubner sbit32 volatile *Addend 209*4e1bc9a0SAchim Leubner ); 210*4e1bc9a0SAchim Leubner 211*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 212*4e1bc9a0SAchim Leubner ostiInterlockedDecrement( 213*4e1bc9a0SAchim Leubner tiRoot_t *root, 214*4e1bc9a0SAchim Leubner sbit32 volatile *Addend 215*4e1bc9a0SAchim Leubner ); 216*4e1bc9a0SAchim Leubner 217*4e1bc9a0SAchim Leubner 218*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 219*4e1bc9a0SAchim Leubner ostiInterlockedAnd( 220*4e1bc9a0SAchim Leubner tiRoot_t *root, 221*4e1bc9a0SAchim Leubner sbit32 volatile *Destination, 222*4e1bc9a0SAchim Leubner sbit32 Value 223*4e1bc9a0SAchim Leubner ); 224*4e1bc9a0SAchim Leubner 225*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 226*4e1bc9a0SAchim Leubner ostiInterlockedOr( 227*4e1bc9a0SAchim Leubner tiRoot_t *root, 228*4e1bc9a0SAchim Leubner sbit32 volatile *Destination, 229*4e1bc9a0SAchim Leubner sbit32 Value 230*4e1bc9a0SAchim Leubner ); 231*4e1bc9a0SAchim Leubner 232*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 233*4e1bc9a0SAchim Leubner ostiInterlockedExchange( 234*4e1bc9a0SAchim Leubner tiRoot_t *root, 235*4e1bc9a0SAchim Leubner sbit32 volatile *Target, 236*4e1bc9a0SAchim Leubner sbit32 Value 237*4e1bc9a0SAchim Leubner ); 238*4e1bc9a0SAchim Leubner #endif /*LINUX_VERSION_CODE*/ 239*4e1bc9a0SAchim Leubner 240*4e1bc9a0SAchim Leubner osGLOBAL bit32 ostiAllocMemory( 241*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 242*4e1bc9a0SAchim Leubner void **osMemHandle, 243*4e1bc9a0SAchim Leubner void ** virtPtr, 244*4e1bc9a0SAchim Leubner bit32 * physAddrUpper, 245*4e1bc9a0SAchim Leubner bit32 * physAddrLower, 246*4e1bc9a0SAchim Leubner bit32 alignment, 247*4e1bc9a0SAchim Leubner bit32 allocLength, 248*4e1bc9a0SAchim Leubner agBOOLEAN isCacheable 249*4e1bc9a0SAchim Leubner ); 250*4e1bc9a0SAchim Leubner 251*4e1bc9a0SAchim Leubner osGLOBAL bit32 ostiFreeMemory( 252*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 253*4e1bc9a0SAchim Leubner void *osDMAHandle, 254*4e1bc9a0SAchim Leubner bit32 allocLength 255*4e1bc9a0SAchim Leubner ); 256*4e1bc9a0SAchim Leubner 257*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void ostiCacheFlush( 258*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 259*4e1bc9a0SAchim Leubner void *osMemHandle, 260*4e1bc9a0SAchim Leubner void *virtPtr, 261*4e1bc9a0SAchim Leubner bit32 length 262*4e1bc9a0SAchim Leubner ); 263*4e1bc9a0SAchim Leubner 264*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void ostiCacheInvalidate( 265*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 266*4e1bc9a0SAchim Leubner void *osMemHandle, 267*4e1bc9a0SAchim Leubner void *virtPtr, 268*4e1bc9a0SAchim Leubner bit32 length 269*4e1bc9a0SAchim Leubner ); 270*4e1bc9a0SAchim Leubner 271*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void ostiCachePreFlush( 272*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 273*4e1bc9a0SAchim Leubner void *osMemHandle, 274*4e1bc9a0SAchim Leubner void *virtPtr, 275*4e1bc9a0SAchim Leubner bit32 length 276*4e1bc9a0SAchim Leubner ); 277*4e1bc9a0SAchim Leubner 278*4e1bc9a0SAchim Leubner /* 279*4e1bc9a0SAchim Leubner * The following two functions are for SAS/SATA 280*4e1bc9a0SAchim Leubner */ 281*4e1bc9a0SAchim Leubner osGLOBAL void 282*4e1bc9a0SAchim Leubner ostiInterruptEnable( 283*4e1bc9a0SAchim Leubner tiRoot_t *ptiRoot, 284*4e1bc9a0SAchim Leubner bit32 channelNum 285*4e1bc9a0SAchim Leubner ); 286*4e1bc9a0SAchim Leubner 287*4e1bc9a0SAchim Leubner osGLOBAL void 288*4e1bc9a0SAchim Leubner ostiInterruptDisable( 289*4e1bc9a0SAchim Leubner tiRoot_t *ptiRoot, 290*4e1bc9a0SAchim Leubner bit32 channelNum 291*4e1bc9a0SAchim Leubner ); 292*4e1bc9a0SAchim Leubner 293*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE bit32 294*4e1bc9a0SAchim Leubner ostiChipReadBit32Ext( 295*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 296*4e1bc9a0SAchim Leubner bit32 busBaseNumber, 297*4e1bc9a0SAchim Leubner bit32 chipOffset 298*4e1bc9a0SAchim Leubner ); 299*4e1bc9a0SAchim Leubner 300*4e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void 301*4e1bc9a0SAchim Leubner ostiChipWriteBit32Ext( 302*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 303*4e1bc9a0SAchim Leubner bit32 busBaseNumber, 304*4e1bc9a0SAchim Leubner bit32 chipOffset, 305*4e1bc9a0SAchim Leubner bit32 chipValue 306*4e1bc9a0SAchim Leubner ); 307*4e1bc9a0SAchim Leubner 308*4e1bc9a0SAchim Leubner 309*4e1bc9a0SAchim Leubner /***************************************************************************** 310*4e1bc9a0SAchim Leubner * Initiator specific Callbacks 311*4e1bc9a0SAchim Leubner *****************************************************************************/ 312*4e1bc9a0SAchim Leubner 313*4e1bc9a0SAchim Leubner /* 314*4e1bc9a0SAchim Leubner * Initiator specific IO Completion 315*4e1bc9a0SAchim Leubner */ 316*4e1bc9a0SAchim Leubner osGLOBAL void ostiInitiatorIOCompleted( 317*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 318*4e1bc9a0SAchim Leubner tiIORequest_t *tiIORequest, 319*4e1bc9a0SAchim Leubner tiIOStatus_t status, 320*4e1bc9a0SAchim Leubner bit32 statusDetail, 321*4e1bc9a0SAchim Leubner tiSenseData_t *senseData, 322*4e1bc9a0SAchim Leubner bit32 context 323*4e1bc9a0SAchim Leubner ); 324*4e1bc9a0SAchim Leubner 325*4e1bc9a0SAchim Leubner osGLOBAL tiDeviceHandle_t* 326*4e1bc9a0SAchim Leubner ostiMapToDevHandle(tiRoot_t *root, 327*4e1bc9a0SAchim Leubner bit8 pathId, 328*4e1bc9a0SAchim Leubner bit8 targetId, 329*4e1bc9a0SAchim Leubner bit8 LUN 330*4e1bc9a0SAchim Leubner ); 331*4e1bc9a0SAchim Leubner osGLOBAL bit32 ostiSendResetDeviceIoctl(tiRoot_t *root, 332*4e1bc9a0SAchim Leubner void *pccb, 333*4e1bc9a0SAchim Leubner bit8 pathId, 334*4e1bc9a0SAchim Leubner bit8 targetId, 335*4e1bc9a0SAchim Leubner bit8 lun, 336*4e1bc9a0SAchim Leubner unsigned long resetType 337*4e1bc9a0SAchim Leubner ); 338*4e1bc9a0SAchim Leubner 339*4e1bc9a0SAchim Leubner osGLOBAL void 340*4e1bc9a0SAchim Leubner ostiGetSenseKeyCount(tiRoot_t *root, 341*4e1bc9a0SAchim Leubner bit32 fIsClear, 342*4e1bc9a0SAchim Leubner void *SenseKeyCount, 343*4e1bc9a0SAchim Leubner bit32 length 344*4e1bc9a0SAchim Leubner ); 345*4e1bc9a0SAchim Leubner 346*4e1bc9a0SAchim Leubner osGLOBAL void 347*4e1bc9a0SAchim Leubner ostiGetSCSIStatusCount(tiRoot_t *root, 348*4e1bc9a0SAchim Leubner bit32 fIsClear, 349*4e1bc9a0SAchim Leubner void *ScsiStatusCount, 350*4e1bc9a0SAchim Leubner bit32 length 351*4e1bc9a0SAchim Leubner ); 352*4e1bc9a0SAchim Leubner 353*4e1bc9a0SAchim Leubner osGLOBAL bit32 354*4e1bc9a0SAchim Leubner ostiSetDeviceQueueDepth(tiRoot_t *tiRoot, 355*4e1bc9a0SAchim Leubner tiIORequest_t *tiIORequest, 356*4e1bc9a0SAchim Leubner bit32 QueueDepth 357*4e1bc9a0SAchim Leubner ); 358*4e1bc9a0SAchim Leubner 359*4e1bc9a0SAchim Leubner 360*4e1bc9a0SAchim Leubner #ifdef FAST_IO_TEST 361*4e1bc9a0SAchim Leubner typedef void (*ostiFastSSPCb_t)(tiRoot_t *ptiRoot, 362*4e1bc9a0SAchim Leubner void *arg, 363*4e1bc9a0SAchim Leubner tiIOStatus_t IOStatus, 364*4e1bc9a0SAchim Leubner bit32 statusDetail); 365*4e1bc9a0SAchim Leubner 366*4e1bc9a0SAchim Leubner void osti_FastIOCb(tiRoot_t *ptiRoot, 367*4e1bc9a0SAchim Leubner void *arg, 368*4e1bc9a0SAchim Leubner tiIOStatus_t IOStatus, 369*4e1bc9a0SAchim Leubner bit32 statusDetail); 370*4e1bc9a0SAchim Leubner #endif 371*4e1bc9a0SAchim Leubner 372*4e1bc9a0SAchim Leubner osGLOBAL void 373*4e1bc9a0SAchim Leubner ostiInitiatorSMPCompleted(tiRoot_t *tiRoot, 374*4e1bc9a0SAchim Leubner tiIORequest_t *tiSMPRequest, 375*4e1bc9a0SAchim Leubner tiSMPStatus_t smpStatus, 376*4e1bc9a0SAchim Leubner bit32 tiSMPInfoLen, 377*4e1bc9a0SAchim Leubner void *tiFrameHandle, 378*4e1bc9a0SAchim Leubner bit32 context); 379*4e1bc9a0SAchim Leubner /* 380*4e1bc9a0SAchim Leubner * Initiator specific event 381*4e1bc9a0SAchim Leubner */ 382*4e1bc9a0SAchim Leubner osGLOBAL void ostiInitiatorEvent ( 383*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 384*4e1bc9a0SAchim Leubner tiPortalContext_t *portalContext, 385*4e1bc9a0SAchim Leubner tiDeviceHandle_t *tiDeviceHandle, 386*4e1bc9a0SAchim Leubner tiIntrEventType_t eventType, 387*4e1bc9a0SAchim Leubner bit32 eventStatus, 388*4e1bc9a0SAchim Leubner void *parm 389*4e1bc9a0SAchim Leubner ); 390*4e1bc9a0SAchim Leubner 391*4e1bc9a0SAchim Leubner 392*4e1bc9a0SAchim Leubner /* 393*4e1bc9a0SAchim Leubner * PMC-Sierra IOCTL semaphoring 394*4e1bc9a0SAchim Leubner */ 395*4e1bc9a0SAchim Leubner osGLOBAL void ostiIOCTLClearSignal ( 396*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 397*4e1bc9a0SAchim Leubner void **agParam1, 398*4e1bc9a0SAchim Leubner void **agParam2, 399*4e1bc9a0SAchim Leubner void **agParam3 400*4e1bc9a0SAchim Leubner ); 401*4e1bc9a0SAchim Leubner 402*4e1bc9a0SAchim Leubner osGLOBAL void ostiIOCTLWaitForSignal ( 403*4e1bc9a0SAchim Leubner tiRoot_t *tigRoot, 404*4e1bc9a0SAchim Leubner void *agParam1, 405*4e1bc9a0SAchim Leubner void *agParam2, 406*4e1bc9a0SAchim Leubner void *agParam3 407*4e1bc9a0SAchim Leubner ); 408*4e1bc9a0SAchim Leubner 409*4e1bc9a0SAchim Leubner osGLOBAL void ostiIOCTLSetSignal ( 410*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 411*4e1bc9a0SAchim Leubner void *agParam1, 412*4e1bc9a0SAchim Leubner void *agParam2, 413*4e1bc9a0SAchim Leubner void *agParam3 414*4e1bc9a0SAchim Leubner ); 415*4e1bc9a0SAchim Leubner 416*4e1bc9a0SAchim Leubner osGLOBAL void ostiIOCTLWaitForComplete ( 417*4e1bc9a0SAchim Leubner tiRoot_t *tigRoot, 418*4e1bc9a0SAchim Leubner void *agParam1, 419*4e1bc9a0SAchim Leubner void *agParam2, 420*4e1bc9a0SAchim Leubner void *agParam3 421*4e1bc9a0SAchim Leubner ); 422*4e1bc9a0SAchim Leubner 423*4e1bc9a0SAchim Leubner osGLOBAL void ostiIOCTLComplete ( 424*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 425*4e1bc9a0SAchim Leubner void *agParam1, 426*4e1bc9a0SAchim Leubner void *agParam2, 427*4e1bc9a0SAchim Leubner void *agParam3 428*4e1bc9a0SAchim Leubner ); 429*4e1bc9a0SAchim Leubner 430*4e1bc9a0SAchim Leubner /***************************************************************************** 431*4e1bc9a0SAchim Leubner * Target specific Callbacks 432*4e1bc9a0SAchim Leubner *****************************************************************************/ 433*4e1bc9a0SAchim Leubner 434*4e1bc9a0SAchim Leubner osGLOBAL void ostiProcessScsiReq( 435*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 436*4e1bc9a0SAchim Leubner tiTargetScsiCmnd_t *tiTgtScsiCmnd, 437*4e1bc9a0SAchim Leubner void *agFrameHandle, 438*4e1bc9a0SAchim Leubner bit32 immDataLength, 439*4e1bc9a0SAchim Leubner tiIORequest_t *tiIORequest, 440*4e1bc9a0SAchim Leubner tiDeviceHandle_t *tiDeviceHandle); 441*4e1bc9a0SAchim Leubner 442*4e1bc9a0SAchim Leubner osGLOBAL void ostiNextDataPhase( 443*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 444*4e1bc9a0SAchim Leubner tiIORequest_t *tiIORequest); 445*4e1bc9a0SAchim Leubner 446*4e1bc9a0SAchim Leubner osGLOBAL void ostiTaskManagement ( 447*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 448*4e1bc9a0SAchim Leubner bit32 task, 449*4e1bc9a0SAchim Leubner bit8 *scsiLun, 450*4e1bc9a0SAchim Leubner tiIORequest_t *refTiIORequest, 451*4e1bc9a0SAchim Leubner tiIORequest_t *tiTMRequest, 452*4e1bc9a0SAchim Leubner tiDeviceHandle_t *tiDeviceHandle); 453*4e1bc9a0SAchim Leubner 454*4e1bc9a0SAchim Leubner osGLOBAL void ostiTargetIOCompleted( 455*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 456*4e1bc9a0SAchim Leubner tiIORequest_t *tiIORequest, 457*4e1bc9a0SAchim Leubner tiIOStatus_t status 458*4e1bc9a0SAchim Leubner ); 459*4e1bc9a0SAchim Leubner 460*4e1bc9a0SAchim Leubner osGLOBAL bit32 ostiTargetEvent ( 461*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 462*4e1bc9a0SAchim Leubner tiPortalContext_t *portalContext, 463*4e1bc9a0SAchim Leubner tiDeviceHandle_t *tiDeviceHandle, 464*4e1bc9a0SAchim Leubner tiTgtEventType_t eventType, 465*4e1bc9a0SAchim Leubner bit32 eventStatus, 466*4e1bc9a0SAchim Leubner void *parm 467*4e1bc9a0SAchim Leubner ); 468*4e1bc9a0SAchim Leubner 469*4e1bc9a0SAchim Leubner osGLOBAL void ostiTargetIOError( 470*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 471*4e1bc9a0SAchim Leubner tiIORequest_t *tiIORequest, 472*4e1bc9a0SAchim Leubner tiIOStatus_t status, 473*4e1bc9a0SAchim Leubner bit32 statusDetail 474*4e1bc9a0SAchim Leubner ); 475*4e1bc9a0SAchim Leubner 476*4e1bc9a0SAchim Leubner osGLOBAL void ostiTargetTmCompleted( 477*4e1bc9a0SAchim Leubner tiRoot_t *tiRoot, 478*4e1bc9a0SAchim Leubner tiIORequest_t *tiTmRequest, 479*4e1bc9a0SAchim Leubner tiIOStatus_t status, 480*4e1bc9a0SAchim Leubner bit32 statusDetail 481*4e1bc9a0SAchim Leubner ); 482*4e1bc9a0SAchim Leubner 483*4e1bc9a0SAchim Leubner osGLOBAL void ostiPCI_TRIGGER( tiRoot_t *tiRoot ); 484*4e1bc9a0SAchim Leubner 485*4e1bc9a0SAchim Leubner 486*4e1bc9a0SAchim Leubner #endif /* OSTIAPI_H */ 487