1285242Sachim/*******************************************************************************
2285242Sachim*Copyright (c) 2014 PMC-Sierra, Inc.  All rights reserved.
3285242Sachim*
4285242Sachim*Redistribution and use in source and binary forms, with or without modification, are permitted provided
5285242Sachim*that the following conditions are met:
6285242Sachim*1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
7285242Sachim*following disclaimer.
8285242Sachim*2. Redistributions in binary form must reproduce the above copyright notice,
9285242Sachim*this list of conditions and the following disclaimer in the documentation and/or other materials provided
10285242Sachim*with the distribution.
11285242Sachim*
12285242Sachim*THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13285242Sachim*WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14285242Sachim*FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15285242Sachim*FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16285242Sachim*NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17285242Sachim*BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18285242Sachim*LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19285242Sachim*SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20285242Sachim*
21285242Sachim* $FreeBSD$
22285242Sachim*
23285242Sachim********************************************************************************/
24285242Sachim/********************************************************************************
25285242Sachim*   tiapi.h
26285242Sachim*
27285242Sachim*   Abstract:   This module contains function prototype of the Transport
28285242Sachim*               Independent API (TIAPI) Layer for both initiator and target.
29285242Sachim** Version Control Information:
30285242Sachim**
31285242Sachim**
32285242Sachim*******************************************************************************/
33285242Sachim
34285242Sachim
35285242Sachim#ifndef TIAPI_H
36285242Sachim#define TIAPI_H
37285242Sachim
38285242Sachim#include <dev/pms/RefTisa/tisa/api/tiglobal.h>
39285242Sachim#include <dev/pms/RefTisa/tisa/api/titypes.h>
40285242Sachim
41285242Sachim/*****************************************************************************
42285242Sachim *  INITIATOR/TARGET SHARED APIs
43285242Sachim *****************************************************************************/
44285242Sachim
45285242SachimosGLOBAL void tiCOMGetResource (
46285242Sachim                        tiRoot_t                *tiRoot,
47285242Sachim                        tiLoLevelResource_t     *loResource,
48285242Sachim                        tiInitiatorResource_t   *initiatorResource,
49285242Sachim                        tiTargetResource_t      *targetResource,
50285242Sachim                        tiTdSharedMem_t         *tdSharedMem
51285242Sachim                        );
52285242Sachim
53285242SachimosGLOBAL bit32 tiCOMInit(
54285242Sachim                        tiRoot_t                *tiRoot,
55285242Sachim                        tiLoLevelResource_t     *loResource,
56285242Sachim                        tiInitiatorResource_t   *initiatorResource,
57285242Sachim                        tiTargetResource_t      *targetResource,
58285242Sachim                        tiTdSharedMem_t         *tdSharedMem
59285242Sachim                        );
60285242Sachim
61285242SachimosGLOBAL bit32 tiCOMPortInit(
62285242Sachim                        tiRoot_t   *tiRoot,
63285242Sachim                        bit32       sysIntsActive
64285242Sachim                        );
65285242Sachim
66285242SachimosGLOBAL bit32 tiCOMPortStart(
67285242Sachim                        tiRoot_t          *tiRoot,
68285242Sachim                        bit32             portID,
69285242Sachim                        tiPortalContext_t *portalContext,
70285242Sachim                        bit32             option
71285242Sachim                        );
72285242Sachim
73285242SachimosGLOBAL void tiCOMShutDown( tiRoot_t    *tiRoot);
74285242Sachim
75285242SachimosGLOBAL bit32 tiCOMPortStop(
76285242Sachim                        tiRoot_t          *tiRoot,
77285242Sachim                        tiPortalContext_t *portalContext
78285242Sachim                        );
79285242Sachim
80285242SachimosGLOBAL void tiCOMReset (
81285242Sachim                        tiRoot_t    *tiRoot,
82285242Sachim                        bit32       option
83285242Sachim                        );
84285242Sachim
85285242SachimosGLOBAL bit32
86285242SachimtdsaGetNumOfLUNIOCTL(
87285242Sachim               tiRoot_t            *tiRoot,
88285242Sachim               tiIOCTLPayload_t    *agIOCTLPayload,
89285242Sachim               void                *agParam1,
90285242Sachim               void                *agParam2,
91285242Sachim               void                *agParam3
92285242Sachim               );
93285242Sachim
94285242SachimosGLOBAL void ostiNumOfLUNIOCTLRsp(
95285242Sachim                        tiRoot_t            *tiRoot,
96285242Sachim                        bit32               status
97285242Sachim                        );
98285242SachimosGLOBAL bit32
99285242SachimtiNumOfLunIOCTLreq(
100285242Sachim             tiRoot_t                       *tiRoot,
101285242Sachim             tiIORequest_t                  *tiIORequest,
102285242Sachim             tiDeviceHandle_t               *tiDeviceHandle,
103285242Sachim             void                           *tiRequestBody,
104285242Sachim             tiIOCTLPayload_t               *agIOCTLPayload,
105285242Sachim             void                           *agParam1,
106285242Sachim             void                           *agParam2
107285242Sachim             );
108285242Sachim
109285242Sachim
110285242SachimosGLOBAL FORCEINLINE bit32 tiCOMInterruptHandler(
111285242Sachim                        tiRoot_t    *tiRoot,
112285242Sachim                        bit32       channelNum
113285242Sachim                        );
114285242Sachim
115285242SachimosGLOBAL FORCEINLINE bit32 tiCOMDelayedInterruptHandler (
116285242Sachim                        tiRoot_t    *tiRoot,
117285242Sachim                        bit32       channelNum,
118285242Sachim                        bit32       count,
119285242Sachim                        bit32       context
120285242Sachim                        );
121285242Sachim
122285242SachimosGLOBAL bit32  tiCOMLegacyInterruptHandler(
123285242Sachim                        tiRoot_t    *tiRoot,
124285242Sachim                        bit32       channelNum
125285242Sachim                        );
126285242Sachim
127285242Sachim
128285242SachimosGLOBAL void tiCOMLegacyDelayedInterruptHandler(
129285242Sachim                        tiRoot_t    *tiRoot,
130285242Sachim                        bit32       channelNum,
131285242Sachim                        bit32       count,
132285242Sachim                        bit32       context
133285242Sachim                        );
134285242SachimosGLOBAL void tiCOMTimerTick( tiRoot_t  *tiRoot );
135285242Sachim
136285242SachimosGLOBAL void tiCOMSystemInterruptsActive (
137285242Sachim                        tiRoot_t    *tiRoot ,
138285242Sachim                        bit32       sysIntsActive
139285242Sachim                        );
140285242Sachim
141285242Sachim
142285242SachimosGLOBAL FORCEINLINE void
143285242SachimtiCOMInterruptEnable(
144285242Sachim                      tiRoot_t * tiRoot,
145285242Sachim                      bit32      channelNum);
146285242Sachim
147285242SachimosGLOBAL void tiCOMFrameReadBlock(
148285242Sachim                        tiRoot_t          *tiRoot,
149285242Sachim                        void              *agFrame,
150285242Sachim                        bit32             FrameOffset,
151285242Sachim                        void              *FrameBuffer,
152285242Sachim                        bit32             FrameBufLen );
153285242SachimosGLOBAL bit32 tiCOMEncryptGetInfo(
154285242Sachim                        tiRoot_t            *tiRoot);
155285242Sachim
156285242SachimosGLOBAL bit32 tiCOMEncryptSetMode(
157285242Sachim                        tiRoot_t            *tiRoot,
158285242Sachim                        bit32               securityCipherMode
159285242Sachim                        );
160285242Sachim
161285242SachimosGLOBAL bit32  tiCOMSetControllerConfig (
162285242Sachim                    tiRoot_t   *tiRoot,
163285242Sachim                    bit32       modePage,
164285242Sachim                    bit32       length,
165285242Sachim                    void        *buffer,
166285242Sachim                    void        *context
167285242Sachim                    );
168285242Sachim
169285242SachimosGLOBAL bit32 tiCOMGetControllerConfig(
170285242Sachim                    tiRoot_t    *tiRoot,
171285242Sachim                    bit32       modePage,
172285242Sachim                    bit32       flag,
173285242Sachim                    void        *context
174285242Sachim                    );
175285242Sachim
176285242Sachim
177285242SachimosGLOBAL bit32 tiCOMEncryptDekAdd(
178285242Sachim                        tiRoot_t            *tiRoot,
179285242Sachim                        bit32               kekIndex,
180285242Sachim                        bit32               dekTableSelect,
181285242Sachim                        bit32               dekAddrHi,
182285242Sachim                        bit32               dekAddrLo,
183285242Sachim                        bit32               dekIndex,
184285242Sachim                        bit32               dekNumberOfEntries,
185285242Sachim                        bit32               dekBlobFormat,
186285242Sachim                        bit32               dekTableKeyEntrySize
187285242Sachim                        );
188285242Sachim
189285242SachimosGLOBAL bit32 tiCOMEncryptDekInvalidate(
190285242Sachim                        tiRoot_t            *tiRoot,
191285242Sachim                        bit32               dekTable,
192285242Sachim                        bit32               dekIndex
193285242Sachim                        );
194285242Sachim
195285242Sachim
196285242SachimosGLOBAL bit32 tiCOMEncryptKekAdd(
197285242Sachim                        tiRoot_t            *tiRoot,
198285242Sachim                        bit32               kekIndex,
199285242Sachim                        bit32               wrapperKekIndex,
200285242Sachim                        bit32               blobFormat,
201285242Sachim                        tiEncryptKekBlob_t  *encryptKekBlob
202285242Sachim                        );
203285242Sachim
204285242SachimosGLOBAL tiDeviceHandle_t *
205285242SachimtiINIGetExpDeviceHandleBySasAddress(
206285242Sachim                      tiRoot_t          * tiRoot,
207285242Sachim                      tiPortalContext_t * tiPortalContext,
208285242Sachim					  bit32 sas_addr_hi,
209285242Sachim					  bit32 sas_addr_lo,
210285242Sachim					  bit32               maxDevs
211285242Sachim                      );
212285242Sachim
213285242Sachim
214285242Sachim#ifdef HIALEAH_ENCRYPTION
215285242SachimosGLOBAL bit32 tiCOMEncryptHilSet(tiRoot_t  *tiRoot );
216285242Sachim#endif /* HIALEAH_ENCRYPTION */
217285242Sachim
218285242SachimosGLOBAL bit32 tiCOMEncryptKekStore(
219285242Sachim                        tiRoot_t            *tiRoot,
220285242Sachim                        bit32               kekIndex
221285242Sachim                        );
222285242Sachim
223285242SachimosGLOBAL bit32 tiCOMEncryptKekLoad(
224285242Sachim                        tiRoot_t            *tiRoot,
225285242Sachim                        bit32               kekIndex
226285242Sachim                        );
227285242Sachim
228285242SachimosGLOBAL bit32 tiCOMEncryptSelfTest(
229285242Sachim                        tiRoot_t  *tiRoot,
230285242Sachim                        bit32     type,
231285242Sachim                        bit32     length,
232285242Sachim                        void      *TestDescriptor
233285242Sachim                        );
234285242Sachim
235285242SachimosGLOBAL bit32 tiCOMSetOperator(
236285242Sachim                        tiRoot_t      *tiRoot,
237285242Sachim                        bit32          flag,
238285242Sachim                        void           *cert
239285242Sachim                        );
240285242Sachim
241285242SachimosGLOBAL bit32 tiCOMGetOperator(
242285242Sachim                           tiRoot_t   *tiRoot,
243285242Sachim                           bit32       option,
244285242Sachim                           bit32       AddrHi,
245285242Sachim                           bit32       AddrLo
246285242Sachim                           );
247285242Sachim
248285242SachimosGLOBAL bit32 tiCOMOperatorManagement(
249285242Sachim                        tiRoot_t            *tiRoot,
250285242Sachim                        bit32                flag,
251285242Sachim                        bit8                 role,
252285242Sachim                        tiID_t              *idString,
253285242Sachim                        tiEncryptKekBlob_t  *kekBlob
254285242Sachim                        );
255285242Sachim
256285242Sachim/*
257285242Sachim * PMC-Sierra Management IOCTL module
258285242Sachim */
259285242SachimosGLOBAL bit32 tiCOMMgntIOCTL(
260285242Sachim                        tiRoot_t            *tiRoot,
261285242Sachim                        tiIOCTLPayload_t    *agIOCTLPayload,
262285242Sachim                        void                *agParam1,
263285242Sachim                        void                *agParam2,
264285242Sachim                        void                *agParam3
265285242Sachim                        );
266285242Sachim
267285242SachimosGLOBAL void ostiCOMMgntIOCTLRsp(
268285242Sachim                        tiRoot_t            *tiRoot,
269285242Sachim                        bit32               status
270285242Sachim                        );
271285242Sachim
272285242SachimosGLOBAL void ostiRegDumpIOCTLRsp(
273285242Sachim                        tiRoot_t            *tiRoot,
274285242Sachim                        bit32               status
275285242Sachim                        );
276285242Sachim
277285242SachimosGLOBAL void ostiSetNVMDIOCTLRsp(
278285242Sachim                        tiRoot_t            *tiRoot,
279285242Sachim                        bit32               status
280285242Sachim                        );
281285242Sachim
282285242SachimosGLOBAL void ostiGetPhyProfileIOCTLRsp(
283285242Sachim                        tiRoot_t            *tiRoot,
284285242Sachim                        bit32               status
285285242Sachim                        );
286285242Sachim
287285242SachimosGLOBAL void ostiGetNVMDIOCTLRsp(
288285242Sachim                        tiRoot_t            *tiRoot,
289285242Sachim                        bit32               status
290285242Sachim                        );
291285242SachimosGLOBAL bit32 tiCOMGetPortInfo(
292285242Sachim                        tiRoot_t            *tiRoot,
293285242Sachim                        tiPortalContext_t   *portalContext,
294285242Sachim                        tiPortInfo_t        *tiPortInfo
295285242Sachim                        );
296285242Sachim
297285242SachimosGLOBAL void ostiSendSMPIOCTLRsp(
298285242Sachim                        tiRoot_t            *tiRoot,
299285242Sachim                        bit32               status
300285242Sachim                        );
301285242Sachim
302285242SachimosGLOBAL void ostiGenEventIOCTLRsp(
303285242Sachim                        tiRoot_t            *tiRoot,
304285242Sachim                        bit32               status
305285242Sachim                        );
306285242Sachim
307285242SachimosGLOBAL void
308285242SachimostiGetDeviceInfoIOCTLRsp(
309285242Sachim                        tiRoot_t    *tiRoot,
310285242Sachim                        bit32        status,
311285242Sachim                        void        *param
312285242Sachim                        );
313285242Sachim
314285242SachimosGLOBAL void
315285242SachimostiGetIoErrorStatsIOCTLRsp(
316285242Sachim                        tiRoot_t    *tiRoot,
317285242Sachim                        bit32        status,
318285242Sachim                        void        *param
319285242Sachim                        );
320285242Sachim
321285242SachimosGLOBAL void
322285242SachimostiGetIoEventStatsIOCTLRsp(
323285242Sachim                        tiRoot_t    *tiRoot,
324285242Sachim                        bit32        status,
325285242Sachim                        void        *param
326285242Sachim                        );
327285242Sachim
328285242SachimosGLOBAL void
329285242SachimostiGetForensicDataIOCTLRsp(
330285242Sachim                        tiRoot_t    *tiRoot,
331285242Sachim                        bit32        status,
332285242Sachim                        void        *param
333285242Sachim                        );
334285242Sachim
335285242Sachim
336285242Sachim#ifdef SPC_ENABLE_PROFILE
337285242SachimosGLOBAL void ostiFWProfileIOCTLRsp(
338285242Sachim                        tiRoot_t            *tiRoot,
339285242Sachim                        bit32               status,
340285242Sachim    bit32               len
341285242Sachim                        );
342285242Sachim#endif
343285242Sachim
344285242Sachim/*****************************************************************************
345285242Sachim *  INITIATOR SPECIFIC APIs
346285242Sachim *****************************************************************************/
347285242Sachim
348285242Sachim/*
349285242Sachim * Session management module.
350285242Sachim */
351285242SachimosGLOBAL bit32 tiINIGetExpander(
352285242Sachim                  tiRoot_t          * tiRoot,
353285242Sachim                  tiPortalContext_t * tiPortalContext,
354285242Sachim                  tiDeviceHandle_t  * tiDev,
355285242Sachim                  tiDeviceHandle_t  ** tiExp
356285242Sachim                 );
357285242SachimosGLOBAL bit32 tiINIGetDeviceHandles(
358285242Sachim                        tiRoot_t            *tiRoot,
359285242Sachim                        tiPortalContext_t   *portalContext,
360285242Sachim                        tiDeviceHandle_t    *agDev[],
361285242Sachim                        bit32               maxDevs
362285242Sachim                        );
363285242Sachim
364285242SachimosGLOBAL bit32 tiINIGetDeviceHandlesForWinIOCTL(
365285242Sachim                        tiRoot_t            *tiRoot,
366285242Sachim                        tiPortalContext_t   *portalContext,
367285242Sachim                        tiDeviceHandle_t    *agDev[],
368285242Sachim                        bit32               maxDevs
369285242Sachim                        );
370285242Sachim
371285242SachimosGLOBAL void tiIniGetDirectSataSasAddr(tiRoot_t * tiRoot, bit32 phyId, bit8 **sasAddressHi, bit8 **sasAddressLo);
372285242SachimosGLOBAL bit32 tiINIDiscoverTargets(
373285242Sachim                        tiRoot_t            *tiRoot,
374285242Sachim                        tiPortalContext_t   *portalContext,
375285242Sachim                        bit32               option
376285242Sachim                        );
377285242Sachim
378285242SachimosGLOBAL bit32 tiINILogin(
379285242Sachim                        tiRoot_t            *tiRoot,
380285242Sachim                        tiDeviceHandle_t    *tiDeviceHandle
381285242Sachim                        );
382285242Sachim
383285242SachimosGLOBAL bit32 tiINILogout(
384285242Sachim                        tiRoot_t            *tiRoot,
385285242Sachim                        tiDeviceHandle_t    *tiDeviceHandle
386285242Sachim                        );
387285242Sachim
388285242SachimosGLOBAL bit32 tiINIGetDeviceInfo(
389285242Sachim                        tiRoot_t            *tiRoot,
390285242Sachim                        tiDeviceHandle_t    *tiDeviceHandle,
391285242Sachim                        tiDeviceInfo_t      *tiDeviceInfo);
392285242Sachim
393285242Sachim/*
394285242Sachim * Transport recovery module.
395285242Sachim */
396285242SachimosGLOBAL void tiINITransportRecovery(
397285242Sachim                        tiRoot_t            *tiRoot,
398285242Sachim                        tiDeviceHandle_t    *tiDeviceHandle
399285242Sachim                        );
400285242Sachim
401285242SachimosGLOBAL bit32 tiINITaskManagement (
402285242Sachim                        tiRoot_t          *tiRoot,
403285242Sachim                        tiDeviceHandle_t  *tiDeviceHandle,
404285242Sachim                        bit32             task,
405285242Sachim                        tiLUN_t           *lun,
406285242Sachim                        tiIORequest_t     *taskTag,
407285242Sachim                        tiIORequest_t     *currentTaskTag
408285242Sachim                        );
409285242SachimosGLOBAL bit32 tiINISMPStart(
410285242Sachim            tiRoot_t                  *tiRoot,
411285242Sachim            tiIORequest_t             *tiIORequest,
412285242Sachim            tiDeviceHandle_t          *tiDeviceHandle,
413285242Sachim            tiSMPFrame_t              *tiScsiRequest,
414285242Sachim            void                      *tiSMPBody,
415285242Sachim            bit32                     interruptContext
416285242Sachim            );
417285242Sachim/*
418285242Sachim * I/O module.
419285242Sachim */
420285242SachimosGLOBAL bit32 tiINIIOStart(
421285242Sachim                        tiRoot_t                    *tiRoot,
422285242Sachim                        tiIORequest_t               *tiIORequest,
423285242Sachim                        tiDeviceHandle_t            *tiDeviceHandle,
424285242Sachim                        tiScsiInitiatorRequest_t   *tiScsiRequest,
425285242Sachim                        void                        *tiRequestBody,
426285242Sachim                        bit32                       interruptContext
427285242Sachim                        );
428285242Sachim
429285242SachimosGLOBAL void tiINIDebugDumpIO(
430285242Sachim                        tiRoot_t                  *tiRoot,
431285242Sachim                        tiIORequest_t             *tiIORequest
432285242Sachim                        );
433285242Sachim
434285242SachimosGLOBAL bit32 tiINIIOStartDif(
435285242Sachim                        tiRoot_t                    *tiRoot,
436285242Sachim                        tiIORequest_t               *tiIORequest,
437285242Sachim                        tiDeviceHandle_t            *tiDeviceHandle,
438285242Sachim                        tiScsiInitiatorRequest_t   *tiScsiRequest,
439285242Sachim                        void                        *tiRequestBody,
440285242Sachim                        bit32                       interruptContext,
441285242Sachim                        tiDif_t                     *difOption
442285242Sachim                        );
443285242SachimosGLOBAL bit32 tiINISuperIOStart (
444285242Sachim        tiRoot_t                      *tiRoot,
445285242Sachim        tiIORequest_t                 *tiIORequest,
446285242Sachim        tiDeviceHandle_t              *tiDeviceHandle,
447285242Sachim        tiSuperScsiInitiatorRequest_t *tiScsiRequest,
448285242Sachim        void                          *tiRequestBody,
449285242Sachim        bit32                         interruptContext
450285242Sachim        );
451285242Sachim
452285242Sachim#ifdef FAST_IO_TEST
453285242SachimosGLOBAL void *tiINIFastIOPrepare(
454285242Sachim             tiRoot_t                 *tiRoot,
455285242Sachim             void                     *ioHandle,
456285242Sachim             agsaFastCommand_t        *fc);
457285242Sachim
458285242SachimosGLOBAL void*
459285242SachimtiINIFastIOPrepare2(
460285242Sachim            tiRoot_t          *tiRoot,
461285242Sachim            void              *ioHandle,
462285242Sachim            agsaFastCommand_t *fc,
463285242Sachim            void                 *pMessage,
464285242Sachim            void  *pRequest);
465285242Sachim
466285242SachimosGLOBAL bit32 tiINIFastIOSend(void *ioHandle);
467285242SachimosGLOBAL bit32 tiINIFastIOCancel(void *ioHandle);
468285242Sachim#endif
469285242Sachim
470285242SachimosGLOBAL bit32 tiCOMEncryptGetMode(tiRoot_t            *tiRoot);
471285242SachimosGLOBAL bit32 tiCOMEncryptSetOn_Off(tiRoot_t          *tiRoot, bit32 On);
472285242Sachim
473285242SachimosGLOBAL bit32 tiInitDevEncrypt(
474285242Sachim        tiRoot_t                      *tiRoot,
475285242Sachim        void                          *tideviceptr );
476285242Sachim
477285242SachimosGLOBAL bit32 tiTGTSuperIOStart (
478285242Sachim                              tiRoot_t         *tiRoot,
479285242Sachim                              tiIORequest_t    *tiIORequest,
480285242Sachim                              tiSuperScsiTargetRequest_t *tiScsiRequest
481285242Sachim                              );
482285242Sachim
483285242SachimosGLOBAL void tiINITimerTick(
484285242Sachim                        tiRoot_t            *tiRoot
485285242Sachim                        );
486285242Sachim
487285242Sachim
488285242SachimosGLOBAL bit32 tiINIIOAbort(
489285242Sachim                        tiRoot_t            *tiRoot,
490285242Sachim                        tiIORequest_t       *taskTag
491285242Sachim                        );
492285242Sachim
493285242SachimosGLOBAL bit32 tiINIIOAbortAll(
494285242Sachim                        tiRoot_t            *tiRoot,
495285242Sachim                        tiDeviceHandle_t    *tiDeviceHandle
496285242Sachim                        );
497285242Sachim/*
498285242Sachim * Event Logging module
499285242Sachim */
500285242SachimosGLOBAL bit32 tiINIReportErrorToEventLog(
501285242Sachim                        tiRoot_t            *tiRoot,
502285242Sachim                        tiEVTData_t         *agEventData
503285242Sachim                        );
504285242Sachim
505285242Sachim
506285242Sachim/*****************************************************************************
507285242Sachim *  TARGET SPECIFIC APIs
508285242Sachim *****************************************************************************/
509285242Sachim
510285242SachimosGLOBAL void tiTGTTimerTick(
511285242Sachim                        tiRoot_t  *tiRoot
512285242Sachim                        );
513285242Sachim
514285242SachimosGLOBAL void *tiTGTSenseBufferGet(
515285242Sachim                        tiRoot_t        *tiRoot,
516285242Sachim                        tiIORequest_t   *tiIORequest,
517285242Sachim                        bit32           length
518285242Sachim                        );
519285242Sachim
520285242SachimosGLOBAL void tiTGTSetResp(
521285242Sachim                        tiRoot_t        *tiRoot,
522285242Sachim                        tiIORequest_t   *tiIORequest,
523285242Sachim                        bit32           dataSentLength,
524285242Sachim                        bit8            ScsiStatus,
525285242Sachim                        bit32           senseLength
526285242Sachim                        );
527285242Sachim
528285242SachimosGLOBAL bit32 tiTGTIOStart (
529285242Sachim                        tiRoot_t        *tiRoot,
530285242Sachim                        tiIORequest_t   *tiIORequest,
531285242Sachim                        bit32           dataOffset,
532285242Sachim                        bit32           dataLength,
533285242Sachim                        tiSgl_t         *dataSGL,
534285242Sachim                        void            *sglVirtualAddr
535285242Sachim                        );
536285242Sachim
537285242SachimosGLOBAL bit32 tiTGTIOStartMirror (
538285242Sachim                        tiRoot_t        *tiRoot,
539285242Sachim                        tiIORequest_t   *tiIORequest,
540285242Sachim                        bit32           dataOffset,
541285242Sachim                        bit32           dataLength,
542285242Sachim                        tiSgl_t         *dataSGL,
543285242Sachim                        void            *sglVirtualAddr,
544285242Sachim                        tiSgl_t         *dataSGLMirror,
545285242Sachim                        void            *sglVirtualAddrMirror
546285242Sachim                        );
547285242Sachim
548285242SachimosGLOBAL bit32 tiTGTIOStartDif (
549285242Sachim                        tiRoot_t        *tiRoot,
550285242Sachim                        tiIORequest_t   *tiIORequest,
551285242Sachim                        bit32           dataOffset,
552285242Sachim                        bit32           dataLength,
553285242Sachim                        tiSgl_t         *dataSGL,
554285242Sachim                        void            *sglVirtualAddr,
555285242Sachim                        tiDif_t         *difOption
556285242Sachim                        );
557285242Sachim
558285242Sachim
559285242SachimosGLOBAL bit32 tiTGTGetDeviceHandles(
560285242Sachim                        tiRoot_t          *tiRoot,
561285242Sachim                        tiPortalContext_t *portalContext,
562285242Sachim                        tiDeviceHandle_t  *agDev[],
563285242Sachim                        bit32             maxDevs
564285242Sachim                        );
565285242Sachim
566285242SachimosGLOBAL bit32 tiTGTGetDeviceInfo(
567285242Sachim                        tiRoot_t            *tiRoot,
568285242Sachim                        tiDeviceHandle_t    *tiDeviceHandle,
569285242Sachim                        tiDeviceInfo_t      *tiDeviceInfo);
570285242Sachim
571285242SachimosGLOBAL bit32 tiTGTIOAbort(
572285242Sachim                        tiRoot_t            *tiRoot,
573285242Sachim                        tiIORequest_t       *taskTag
574285242Sachim                        );
575285242Sachim
576285242SachimosGLOBAL bit32 tiTGTSendTmResp (
577285242Sachim                        tiRoot_t          *tiRoot,
578285242Sachim                        tiIORequest_t     *tiTMRequest,
579285242Sachim                        bit32             status
580285242Sachim                        );
581285242Sachim
582285242Sachimvoid tiPCI_TRIGGER( tiRoot_t        *tiRoot);
583285242Sachim
584285242Sachimvoid tiComCountActiveIORequests( tiRoot_t        *tiRoot);
585285242Sachim
586285242Sachim#endif  /* TIAPI_H */
587