xref: /freebsd/sys/dev/pms/RefTisa/sat/src/smproto.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 #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