]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - sys/dev/pms/RefTisa/sat/api/tdsmapi.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / sys / dev / pms / RefTisa / sat / api / tdsmapi.h
1 /*******************************************************************************
2 *Copyright (c) 2014 PMC-Sierra, Inc.  All rights reserved. 
3 *
4 *Redistribution and use in source and binary forms, with or without modification, are permitted provided 
5 *that the following conditions are met: 
6 *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
7 *following disclaimer. 
8 *2. Redistributions in binary form must reproduce the above copyright notice, 
9 *this list of conditions and the following disclaimer in the documentation and/or other materials provided
10 *with the distribution. 
11 *
12 *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED 
13 *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14 *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
16 *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 
17 *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
18 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
19 *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20 *
21 * $FreeBSD$
22 *
23 ********************************************************************************/
24 /********************************************************************************
25 *   tmsmapi.h 
26 *
27 *   Abstract:   This module contains function prototype of the SAT
28 *               Module (SM) API callback for initiator.
29 *******************************************************************************/
30
31 #ifndef TDSMAPI_H
32 #define TDSMAPI_H
33
34 osGLOBAL void   
35 tdsmIDCompletedCB(
36                   smRoot_t   *smRoot,
37                   smIORequest_t   *smIORequest,
38                   smDeviceHandle_t   *smDeviceHandle,
39                   bit32    status,
40                   void    *IDdata
41                  );
42
43 osGLOBAL FORCEINLINE void 
44 tdsmIOCompletedCB(
45                   smRoot_t   *smRoot,
46                   smIORequest_t   *smIORequest,
47                   bit32    status,
48                   bit32    statusDetail,
49                   smSenseData_t   *senseData,
50                   bit32    interruptContext
51                   );
52 osGLOBAL void 
53 tdsmEventCB(
54                 smRoot_t          *smRoot,
55                 smDeviceHandle_t  *smDeviceHandle,
56                 smIntrEventType_t  eventType,
57                 bit32              eventStatus,
58                 void              *parm
59                 );
60
61 osGLOBAL FORCEINLINE void 
62 tdsmSingleThreadedEnter(
63                         smRoot_t   *smRoot,
64                         bit32       syncLockId
65                        );
66
67 osGLOBAL FORCEINLINE void 
68 tdsmSingleThreadedLeave(
69                         smRoot_t   *smRoot,
70                         bit32       syncLockId
71                         );
72
73 osGLOBAL FORCEINLINE bit8 
74 tdsmBitScanForward(
75                   smRoot_t   *smRoot,
76                   bit32      *Index,
77                   bit32       Mask
78                   );
79
80 #ifdef LINUX_VERSION_CODE
81
82 osGLOBAL FORCEINLINE sbit32 
83 tdsmInterlockedIncrement(
84                    smRoot_t        *smRoot,
85                    sbit32 volatile *Addend
86                    );
87
88 osGLOBAL FORCEINLINE sbit32 
89 tdsmInterlockedDecrement(
90                    smRoot_t         *smRoot,
91                    sbit32 volatile  *Addend
92                    );
93
94 osGLOBAL FORCEINLINE sbit32 
95 tdsmAtomicBitClear(
96                smRoot_t         *smRoot,
97                sbit32 volatile  *Destination,
98                sbit32            Value
99                );
100
101 osGLOBAL FORCEINLINE sbit32 
102 tdsmAtomicBitSet(
103                smRoot_t         *smRoot,
104                sbit32 volatile  *Destination,
105                sbit32            Value
106                );
107
108 osGLOBAL FORCEINLINE sbit32 
109 tdsmAtomicExchange(
110                smRoot_t        *smRoot,
111                sbit32 volatile *Target,
112                sbit32           Value
113                );
114 #else
115
116 osGLOBAL FORCEINLINE sbit32 
117 tdsmInterlockedIncrement(
118                    smRoot_t        *smRoot,
119                    sbit32 volatile *Addend
120                    );
121
122 osGLOBAL FORCEINLINE sbit32 
123 tdsmInterlockedDecrement(
124                    smRoot_t        *smRoot,
125                    sbit32 volatile *Addend
126                    );
127
128 osGLOBAL FORCEINLINE sbit32 
129 tdsmInterlockedAnd(
130                smRoot_t         *smRoot,
131                sbit32 volatile  *Destination,
132                sbit32            Value
133                );
134
135 osGLOBAL FORCEINLINE sbit32 
136 tdsmInterlockedOr(
137                smRoot_t         *smRoot,
138                sbit32 volatile  *Destination,
139                sbit32            Value
140                );
141
142 osGLOBAL FORCEINLINE sbit32 
143 tdsmInterlockedExchange(
144                smRoot_t        *smRoot,
145                sbit32 volatile *Target,
146                sbit32           Value
147                );
148
149 #endif /*LINUX_VERSION_CODE*/
150
151 osGLOBAL bit32 
152 tdsmAllocMemory(
153                 smRoot_t    *smRoot,
154                 void        **osMemHandle,
155                 void        ** virtPtr, 
156                 bit32       * physAddrUpper,
157                 bit32       * physAddrLower,
158                 bit32       alignment,
159                 bit32       allocLength,
160                 smBOOLEAN   isCacheable
161                );
162
163 osGLOBAL bit32 
164 tdsmFreeMemory(
165                smRoot_t    *smRoot,
166                void        *osDMAHandle,
167                bit32        allocLength
168               );
169
170 osGLOBAL FORCEINLINE bit32
171 tdsmRotateQnumber(smRoot_t        *smRoot,
172                          smDeviceHandle_t *smDeviceHandle
173                          );
174
175 osGLOBAL bit32
176 tdsmSetDeviceQueueDepth(smRoot_t      *smRoot,
177                                  smIORequest_t *smIORequest,
178                                  bit32          QueueDepth
179                                  );
180
181
182 #ifndef tdsmLogDebugString 
183 GLOBAL void tdsmLogDebugString(
184                          smRoot_t     *smRoot,
185                          bit32        level,
186                          char         *string,
187                          void         *ptr1,
188                          void         *ptr2,
189                          bit32        value1,
190                          bit32        value2
191                          );
192 #endif
193
194   
195
196 osGLOBAL bit32 tdsmGetTransportParam(
197                         smRoot_t    *smRoot,
198                         char        *key,
199                         char        *subkey1,
200                         char        *subkey2,
201                         char        *subkey3,
202                         char        *subkey4,
203                         char        *subkey5,
204                         char        *valueName,
205                         char        *buffer,
206                         bit32       bufferLen,
207                         bit32       *lenReceived
208                         );
209
210 #endif  /* TDSMAPI_H */
211