xref: /freebsd/sys/dev/pms/RefTisa/tisa/api/ostiapi.h (revision 2ff63af9b88c7413b7d71715b5532625752a248e)
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