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*   smapi.h
26285242Sachim*
27285242Sachim*   Abstract:   This module contains function prototype of the SAT
28285242Sachim*               Module (SM) API for initiator.
29285242Sachim*******************************************************************************/
30285242Sachim
31285242Sachim#ifndef SMAPI_H
32285242Sachim#define SMAPI_H
33285242Sachim
34285242Sachim#include <dev/pms/RefTisa/sat/api/sm.h>
35285242Sachim#include <dev/pms/RefTisa/sallsdk/api/sa.h>
36285242Sachim
37285242SachimosGLOBAL bit32
38285242SachimsmRegisterDevice(
39285242Sachim                 smRoot_t                       *smRoot,
40285242Sachim                 agsaDevHandle_t                *agDevHandle,
41285242Sachim                 smDeviceHandle_t               *smDeviceHandle,
42285242Sachim                 agsaDevHandle_t                *agExpDevHandle,
43285242Sachim                 bit32                          phyID,
44285242Sachim                 bit32                          DeviceType
45285242Sachim                );
46285242Sachim
47285242SachimosGLOBAL bit32
48285242SachimsmDeregisterDevice(
49285242Sachim                   smRoot_t                     *smRoot,
50285242Sachim                   agsaDevHandle_t              *agDevHandle,
51285242Sachim                   smDeviceHandle_t             *smDeviceHandle
52285242Sachim                  );
53285242Sachim
54285242SachimosGLOBAL void
55285242SachimsmGetRequirements(
56285242Sachim                  smRoot_t                      *smRoot,
57285242Sachim                  smSwConfig_t                  *swConfig,
58285242Sachim                  smMemoryRequirement_t         *memoryRequirement,
59285242Sachim                  bit32                         *usecsPerTick,
60285242Sachim                  bit32                         *maxNumLocks
61285242Sachim                 );
62285242Sachim
63285242SachimosGLOBAL bit32
64285242SachimsmIDStart(
65285242Sachim          smRoot_t                     *smRoot,
66285242Sachim          smIORequest_t                *smIORequest,
67285242Sachim          smDeviceHandle_t             *smDeviceHandle
68285242Sachim         );
69285242Sachim
70285242SachimosGLOBAL bit32
71285242SachimsmInitialize(
72285242Sachim             smRoot_t                           *smRoot,
73285242Sachim             agsaRoot_t                         *agRoot,
74285242Sachim             smMemoryRequirement_t              *memoryAllocated,
75285242Sachim             smSwConfig_t                       *swConfig,
76285242Sachim             bit32                              usecsPerTick
77285242Sachim            );
78285242Sachim
79285242SachimosGLOBAL bit32
80285242SachimsmIOAbort(
81285242Sachim           smRoot_t                     *smRoot,
82285242Sachim           smIORequest_t                *tasktag
83285242Sachim         );
84285242Sachim
85285242SachimosGLOBAL bit32
86285242SachimsmIOAbortAll(
87285242Sachim             smRoot_t                     *smRoot,
88285242Sachim             smDeviceHandle_t             *smDeviceHandle
89285242Sachim            );
90285242Sachim
91285242SachimosGLOBAL FORCEINLINE bit32
92285242SachimsmIOStart(
93285242Sachim          smRoot_t                      *smRoot,
94285242Sachim          smIORequest_t                 *smIORequest,
95285242Sachim          smDeviceHandle_t              *smDeviceHandle,
96285242Sachim          smScsiInitiatorRequest_t      *smSCSIRequest,
97285242Sachim          bit32                         interruptContext
98285242Sachim         );
99285242Sachim
100285242SachimosGLOBAL bit32
101285242SachimsmSuperIOStart(
102285242Sachim               smRoot_t                         *smRoot,
103285242Sachim               smIORequest_t                    *smIORequest,
104285242Sachim               smDeviceHandle_t                 *smDeviceHandle,
105285242Sachim               smSuperScsiInitiatorRequest_t    *smSCSIRequest,
106285242Sachim               bit32                            AddrHi,
107285242Sachim               bit32                            AddrLo,
108285242Sachim               bit32                            interruptContext
109285242Sachim              );
110285242Sachim
111285242SachimosGLOBAL bit32
112285242SachimsmTaskManagement(
113285242Sachim                 smRoot_t                       *smRoot,
114285242Sachim                 smDeviceHandle_t               *smDeviceHandle,
115285242Sachim                 bit32                          task,
116285242Sachim                 smLUN_t                        *lun,
117285242Sachim                 smIORequest_t                  *taskTag,
118285242Sachim                 smIORequest_t                  *currentTaskTag
119285242Sachim                );
120285242Sachim
121285242Sachim#endif  /* SMAPI_H */
122285242Sachim
123