dt-bindings: Document the Rockchip RGA bindings
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bs / hal / OUTSRC / phydm_interface.h
1 /******************************************************************************\r
2  *\r
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.\r
4  *                                        \r
5  * This program is free software; you can redistribute it and/or modify it\r
6  * under the terms of version 2 of the GNU General Public License as\r
7  * published by the Free Software Foundation.\r
8  *\r
9  * This program is distributed in the hope that it will be useful, but WITHOUT\r
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
12  * more details.\r
13  *\r
14  * You should have received a copy of the GNU General Public License along with\r
15  * this program; if not, write to the Free Software Foundation, Inc.,\r
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA\r
17  *\r
18  *\r
19  ******************************************************************************/\r
20 \r
21 \r
22 #ifndef __ODM_INTERFACE_H__\r
23 #define __ODM_INTERFACE_H__\r
24 \r
25 \r
26 \r
27 //\r
28 // =========== Constant/Structure/Enum/... Define\r
29 //\r
30 \r
31 \r
32 \r
33 //\r
34 // =========== Macro Define\r
35 //\r
36 \r
37 #define _reg_all(_name)                 ODM_##_name\r
38 #define _reg_ic(_name, _ic)             ODM_##_name##_ic\r
39 #define _bit_all(_name)                 BIT_##_name\r
40 #define _bit_ic(_name, _ic)             BIT_##_name##_ic\r
41 \r
42 // _cat: implemented by Token-Pasting Operator.\r
43 #if 0\r
44 #define _cat(_name, _ic_type, _func)                                                            \\r
45         (                                                                                                                       \\r
46                 _func##_all(_name)                                                                              \\r
47         )\r
48 #endif\r
49 \r
50 /*===================================\r
51 \r
52 #define ODM_REG_DIG_11N         0xC50\r
53 #define ODM_REG_DIG_11AC        0xDDD\r
54 \r
55 ODM_REG(DIG,_pDM_Odm)\r
56 =====================================*/\r
57 \r
58 #define _reg_11N(_name)                 ODM_REG_##_name##_11N \r
59 #define _reg_11AC(_name)                ODM_REG_##_name##_11AC\r
60 #define _bit_11N(_name)                 ODM_BIT_##_name##_11N \r
61 #define _bit_11AC(_name)                ODM_BIT_##_name##_11AC\r
62 \r
63 #ifdef __ECOS\r
64 #define _rtk_cat(_name, _ic_type, _func)                \\r
65         (                                       \\r
66                 ((_ic_type) & ODM_IC_11N_SERIES)? _func##_11N(_name):           \\r
67                 _func##_11AC(_name)     \\r
68         )\r
69 #else\r
70 \r
71 #define _cat(_name, _ic_type, _func)                                                                    \\r
72         (                                                                                                                       \\r
73                 ((_ic_type) & ODM_IC_11N_SERIES)? _func##_11N(_name):           \\r
74                 _func##_11AC(_name)                                                                     \\r
75         )\r
76 #endif\r
77 /* \r
78 // only sample code\r
79 //#define _cat(_name, _ic_type, _func)                                                                  \\r
80 //      (                                                                                                                       \\r
81 //              ((_ic_type) & ODM_RTL8192C)? _func##_ic(_name, _8192C):         \\r
82 //              ((_ic_type) & ODM_RTL8192D)? _func##_ic(_name, _8192D):         \\r
83 //              ((_ic_type) & ODM_RTL8192S)? _func##_ic(_name, _8192S):         \\r
84 //              ((_ic_type) & ODM_RTL8723A)? _func##_ic(_name, _8723A):         \\r
85 //              ((_ic_type) & ODM_RTL8188E)? _func##_ic(_name, _8188E):         \\r
86 //              _func##_ic(_name, _8195)                                                                        \\r
87 //      )\r
88 */\r
89 \r
90 // _name: name of register or bit.\r
91 // Example: "ODM_REG(R_A_AGC_CORE1, pDM_Odm)" \r
92 //        gets "ODM_R_A_AGC_CORE1" or "ODM_R_A_AGC_CORE1_8192C", depends on SupportICType.\r
93 #ifdef __ECOS\r
94 #define ODM_REG(_name, _pDM_Odm)        _rtk_cat(_name, _pDM_Odm->SupportICType, _reg)\r
95 #define ODM_BIT(_name, _pDM_Odm)        _rtk_cat(_name, _pDM_Odm->SupportICType, _bit)\r
96 #else\r
97 #define ODM_REG(_name, _pDM_Odm)        _cat(_name, _pDM_Odm->SupportICType, _reg)\r
98 #define ODM_BIT(_name, _pDM_Odm)        _cat(_name, _pDM_Odm->SupportICType, _bit)\r
99 #endif\r
100 typedef enum _ODM_H2C_CMD \r
101 {\r
102         ODM_H2C_RSSI_REPORT = 0,\r
103         ODM_H2C_PSD_RESULT=1,   \r
104         ODM_H2C_PathDiv = 2,\r
105         ODM_H2C_WIFI_CALIBRATION = 3,\r
106         ODM_H2C_IQ_CALIBRATION = 4,\r
107         ODM_MAX_H2CCMD\r
108 }ODM_H2C_CMD;\r
109 \r
110 \r
111 //\r
112 // 2012/02/17 MH For non-MP compile pass only. Linux does not support workitem.\r
113 // Suggest HW team to use thread instead of workitem. Windows also support the feature.\r
114 //\r
115 #if (DM_ODM_SUPPORT_TYPE != ODM_WIN)\r
116 typedef  void *PRT_WORK_ITEM ;\r
117 typedef  void RT_WORKITEM_HANDLE,*PRT_WORKITEM_HANDLE;\r
118 typedef VOID (*RT_WORKITEM_CALL_BACK)(PVOID pContext);\r
119 \r
120 #if 0\r
121 typedef struct tasklet_struct RT_WORKITEM_HANDLE, *PRT_WORKITEM_HANDLE;\r
122 \r
123 typedef struct _RT_WORK_ITEM\r
124 {\r
125         \r
126         RT_WORKITEM_HANDLE                      Handle;                 // Platform-dependent handle for this workitem, e.g. Ndis Workitem object.\r
127         PVOID                                           Adapter;                // Pointer to Adapter object.\r
128         PVOID                                           pContext;               // Parameter to passed to CallBackFunc(). \r
129         RT_WORKITEM_CALL_BACK           CallbackFunc;   // Callback function of the workitem.\r
130         u1Byte                                          RefCount;               // 0: driver is going to unload, 1: No such workitem scheduled, 2: one workitem is schedueled. \r
131         PVOID                                           pPlatformExt;   // Pointer to platform-dependent extension.     \r
132         BOOLEAN                                         bFree;\r
133         char                                            szID[36];               // An identity string of this workitem.\r
134 }RT_WORK_ITEM, *PRT_WORK_ITEM;\r
135 \r
136 #endif\r
137 \r
138 \r
139 #endif\r
140 \r
141 //\r
142 // =========== Extern Variable ??? It should be forbidden.\r
143 //\r
144 \r
145 \r
146 //\r
147 // =========== EXtern Function Prototype\r
148 //\r
149 \r
150 \r
151 u1Byte\r
152 ODM_Read1Byte(\r
153         IN      PDM_ODM_T               pDM_Odm,\r
154         IN      u4Byte                  RegAddr\r
155         );\r
156 \r
157 u2Byte\r
158 ODM_Read2Byte(\r
159         IN      PDM_ODM_T               pDM_Odm,\r
160         IN      u4Byte                  RegAddr\r
161         );\r
162 \r
163 u4Byte\r
164 ODM_Read4Byte(\r
165         IN      PDM_ODM_T               pDM_Odm,\r
166         IN      u4Byte                  RegAddr\r
167         );\r
168 \r
169 VOID\r
170 ODM_Write1Byte(\r
171         IN      PDM_ODM_T               pDM_Odm,\r
172         IN      u4Byte                  RegAddr,\r
173         IN      u1Byte                  Data\r
174         );\r
175 \r
176 VOID\r
177 ODM_Write2Byte(\r
178         IN      PDM_ODM_T               pDM_Odm,\r
179         IN      u4Byte                  RegAddr,\r
180         IN      u2Byte                  Data\r
181         );\r
182 \r
183 VOID\r
184 ODM_Write4Byte(\r
185         IN      PDM_ODM_T               pDM_Odm,\r
186         IN      u4Byte                  RegAddr,\r
187         IN      u4Byte                  Data\r
188         );\r
189 \r
190 VOID\r
191 ODM_SetMACReg(  \r
192         IN      PDM_ODM_T       pDM_Odm,\r
193         IN      u4Byte          RegAddr,\r
194         IN      u4Byte          BitMask,\r
195         IN      u4Byte          Data\r
196         );\r
197 \r
198 u4Byte \r
199 ODM_GetMACReg(  \r
200         IN      PDM_ODM_T       pDM_Odm,\r
201         IN      u4Byte          RegAddr,\r
202         IN      u4Byte          BitMask\r
203         );\r
204 \r
205 VOID\r
206 ODM_SetBBReg(   \r
207         IN      PDM_ODM_T       pDM_Odm,\r
208         IN      u4Byte          RegAddr,\r
209         IN      u4Byte          BitMask,\r
210         IN      u4Byte          Data\r
211         );\r
212 \r
213 u4Byte \r
214 ODM_GetBBReg(   \r
215         IN      PDM_ODM_T       pDM_Odm,\r
216         IN      u4Byte          RegAddr,\r
217         IN      u4Byte          BitMask\r
218         );\r
219 \r
220 VOID\r
221 ODM_SetRFReg(   \r
222         IN      PDM_ODM_T                       pDM_Odm,\r
223         IN      ODM_RF_RADIO_PATH_E     eRFPath,\r
224         IN      u4Byte                          RegAddr,\r
225         IN      u4Byte                          BitMask,\r
226         IN      u4Byte                          Data\r
227         );\r
228 \r
229 u4Byte \r
230 ODM_GetRFReg(   \r
231         IN      PDM_ODM_T                       pDM_Odm,\r
232         IN      ODM_RF_RADIO_PATH_E     eRFPath,\r
233         IN      u4Byte                          RegAddr,\r
234         IN      u4Byte                          BitMask\r
235         );\r
236 \r
237 \r
238 //\r
239 // Memory Relative Function.\r
240 //\r
241 VOID\r
242 ODM_AllocateMemory(     \r
243         IN      PDM_ODM_T       pDM_Odm,\r
244         OUT     PVOID           *pPtr,\r
245         IN      u4Byte          length\r
246         );\r
247 VOID\r
248 ODM_FreeMemory( \r
249         IN      PDM_ODM_T       pDM_Odm,\r
250         OUT     PVOID           pPtr,\r
251         IN      u4Byte          length\r
252         );\r
253 \r
254 VOID\r
255 ODM_MoveMemory( \r
256         IN      PDM_ODM_T       pDM_Odm,\r
257         OUT PVOID               pDest,\r
258         IN  PVOID               pSrc,\r
259         IN  u4Byte              Length\r
260         );\r
261 \r
262 s4Byte ODM_CompareMemory(\r
263         IN      PDM_ODM_T       pDM_Odm,\r
264         IN      PVOID           pBuf1,\r
265       IN        PVOID           pBuf2,\r
266       IN        u4Byte          length\r
267        );\r
268 \r
269 void ODM_Memory_Set\r
270         (IN     PDM_ODM_T       pDM_Odm,\r
271                 IN  PVOID       pbuf,\r
272                 IN  s1Byte      value,\r
273                 IN  u4Byte      length);\r
274         \r
275 //\r
276 // ODM MISC-spin lock relative API.\r
277 //\r
278 VOID\r
279 ODM_AcquireSpinLock(    \r
280         IN      PDM_ODM_T                       pDM_Odm,\r
281         IN      RT_SPINLOCK_TYPE        type\r
282         );\r
283 \r
284 VOID\r
285 ODM_ReleaseSpinLock(    \r
286         IN      PDM_ODM_T                       pDM_Odm,\r
287         IN      RT_SPINLOCK_TYPE        type\r
288         );\r
289 \r
290 \r
291 //\r
292 // ODM MISC-workitem relative API.\r
293 //\r
294 VOID\r
295 ODM_InitializeWorkItem( \r
296         IN      PDM_ODM_T                                       pDM_Odm,\r
297         IN      PRT_WORK_ITEM                           pRtWorkItem,\r
298         IN      RT_WORKITEM_CALL_BACK           RtWorkItemCallback,\r
299         IN      PVOID                                           pContext,\r
300         IN      const char*                                     szID\r
301         );\r
302 \r
303 VOID\r
304 ODM_StartWorkItem(      \r
305         IN      PRT_WORK_ITEM   pRtWorkItem\r
306         );\r
307 \r
308 VOID\r
309 ODM_StopWorkItem(       \r
310         IN      PRT_WORK_ITEM   pRtWorkItem\r
311         );\r
312 \r
313 VOID\r
314 ODM_FreeWorkItem(       \r
315         IN      PRT_WORK_ITEM   pRtWorkItem\r
316         );\r
317 \r
318 VOID\r
319 ODM_ScheduleWorkItem(   \r
320         IN      PRT_WORK_ITEM   pRtWorkItem\r
321         );\r
322 \r
323 VOID\r
324 ODM_IsWorkItemScheduled(        \r
325         IN      PRT_WORK_ITEM   pRtWorkItem\r
326         );\r
327 \r
328 //\r
329 // ODM Timer relative API.\r
330 //\r
331 VOID\r
332 ODM_StallExecution(     \r
333         IN      u4Byte  usDelay\r
334         );\r
335 \r
336 VOID\r
337 ODM_delay_ms(IN u4Byte  ms);\r
338 \r
339 \r
340 \r
341 VOID\r
342 ODM_delay_us(IN u4Byte  us);\r
343 \r
344 VOID\r
345 ODM_sleep_ms(IN u4Byte  ms);\r
346 \r
347 VOID\r
348 ODM_sleep_us(IN u4Byte  us);\r
349 \r
350 VOID\r
351 ODM_SetTimer(   \r
352         IN      PDM_ODM_T               pDM_Odm,\r
353         IN      PRT_TIMER               pTimer, \r
354         IN      u4Byte                  msDelay\r
355         );\r
356 \r
357 VOID\r
358 ODM_InitializeTimer(\r
359         IN      PDM_ODM_T                       pDM_Odm,\r
360         IN      PRT_TIMER                       pTimer, \r
361         IN      RT_TIMER_CALL_BACK      CallBackFunc, \r
362         IN      PVOID                           pContext,\r
363         IN      const char*                     szID\r
364         );\r
365 \r
366 VOID\r
367 ODM_CancelTimer(\r
368         IN      PDM_ODM_T               pDM_Odm,\r
369         IN      PRT_TIMER               pTimer\r
370         );\r
371 \r
372 VOID\r
373 ODM_ReleaseTimer(\r
374         IN      PDM_ODM_T               pDM_Odm,\r
375         IN      PRT_TIMER               pTimer\r
376         );\r
377 \r
378 \r
379 //\r
380 // ODM FW relative API.\r
381 //\r
382 #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))\r
383 VOID\r
384 ODM_FillH2CCmd(\r
385         IN      PDM_ODM_T               pDM_Odm,\r
386         IN      u1Byte                  ElementID,\r
387         IN      u4Byte                  CmdLen,\r
388         IN      pu1Byte                 pCmdBuffer\r
389 );\r
390 #else\r
391 u4Byte\r
392 ODM_FillH2CCmd( \r
393         IN      pu1Byte         pH2CBuffer,\r
394         IN      u4Byte          H2CBufferLen,\r
395         IN      u4Byte          CmdNum,\r
396         IN      pu4Byte         pElementID,\r
397         IN      pu4Byte         pCmdLen,\r
398         IN      pu1Byte*                pCmbBuffer,\r
399         IN      pu1Byte         CmdStartSeq\r
400         );\r
401 #endif\r
402 \r
403 u8Byte\r
404 ODM_GetCurrentTime(     \r
405         IN      PDM_ODM_T               pDM_Odm\r
406         );\r
407 u8Byte\r
408 ODM_GetProgressingTime( \r
409         IN      PDM_ODM_T               pDM_Odm,\r
410         IN      u8Byte                  Start_Time\r
411         );\r
412 \r
413 #endif  // __ODM_INTERFACE_H__\r
414 \r