dt-bindings: Document the Rockchip RGA bindings
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bs / hal / OUTSRC / phydm_interface.c
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 // include files\r
23 //============================================================\r
24 \r
25 #include "Mp_Precomp.h"\r
26 #include "phydm_precomp.h"\r
27 \r
28 //\r
29 // ODM IO Relative API.\r
30 //\r
31 \r
32 u1Byte\r
33 ODM_Read1Byte(\r
34         IN      PDM_ODM_T               pDM_Odm,\r
35         IN      u4Byte                  RegAddr\r
36         )\r
37 {\r
38 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
39         prtl8192cd_priv priv    = pDM_Odm->priv;\r
40         return  RTL_R8(RegAddr);\r
41 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
42         PADAPTER                Adapter = pDM_Odm->Adapter;\r
43         return rtw_read8(Adapter,RegAddr);\r
44 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
45         PADAPTER                Adapter = pDM_Odm->Adapter;\r
46         return  PlatformEFIORead1Byte(Adapter, RegAddr);\r
47 #endif  \r
48 \r
49 }\r
50 \r
51 \r
52 u2Byte\r
53 ODM_Read2Byte(\r
54         IN      PDM_ODM_T               pDM_Odm,\r
55         IN      u4Byte                  RegAddr\r
56         )\r
57 {\r
58 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
59         prtl8192cd_priv priv    = pDM_Odm->priv;\r
60         return  RTL_R16(RegAddr);\r
61 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
62         PADAPTER                Adapter = pDM_Odm->Adapter;\r
63         return rtw_read16(Adapter,RegAddr);\r
64 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
65         PADAPTER                Adapter = pDM_Odm->Adapter;\r
66         return  PlatformEFIORead2Byte(Adapter, RegAddr);\r
67 #endif  \r
68 \r
69 }\r
70 \r
71 \r
72 u4Byte\r
73 ODM_Read4Byte(\r
74         IN      PDM_ODM_T               pDM_Odm,\r
75         IN      u4Byte                  RegAddr\r
76         )\r
77 {\r
78 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
79         prtl8192cd_priv priv    = pDM_Odm->priv;\r
80         return  RTL_R32(RegAddr);\r
81 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
82         PADAPTER                Adapter = pDM_Odm->Adapter;\r
83         return rtw_read32(Adapter,RegAddr);\r
84 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
85         PADAPTER                Adapter = pDM_Odm->Adapter;\r
86         return  PlatformEFIORead4Byte(Adapter, RegAddr);\r
87 #endif  \r
88 \r
89 }\r
90 \r
91 \r
92 VOID\r
93 ODM_Write1Byte(\r
94         IN      PDM_ODM_T               pDM_Odm,\r
95         IN      u4Byte                  RegAddr,\r
96         IN      u1Byte                  Data\r
97         )\r
98 {\r
99 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
100         prtl8192cd_priv priv    = pDM_Odm->priv;\r
101         RTL_W8(RegAddr, Data);\r
102 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
103         PADAPTER                Adapter = pDM_Odm->Adapter;\r
104         rtw_write8(Adapter,RegAddr, Data);\r
105 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
106         PADAPTER                Adapter = pDM_Odm->Adapter;\r
107         PlatformEFIOWrite1Byte(Adapter, RegAddr, Data);\r
108 #endif\r
109         \r
110 }\r
111 \r
112 \r
113 VOID\r
114 ODM_Write2Byte(\r
115         IN      PDM_ODM_T               pDM_Odm,\r
116         IN      u4Byte                  RegAddr,\r
117         IN      u2Byte                  Data\r
118         )\r
119 {\r
120 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
121         prtl8192cd_priv priv    = pDM_Odm->priv;\r
122         RTL_W16(RegAddr, Data);\r
123 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
124         PADAPTER                Adapter = pDM_Odm->Adapter;\r
125         rtw_write16(Adapter,RegAddr, Data);\r
126 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
127         PADAPTER                Adapter = pDM_Odm->Adapter;\r
128         PlatformEFIOWrite2Byte(Adapter, RegAddr, Data);\r
129 #endif  \r
130 \r
131 }\r
132 \r
133 \r
134 VOID\r
135 ODM_Write4Byte(\r
136         IN      PDM_ODM_T               pDM_Odm,\r
137         IN      u4Byte                  RegAddr,\r
138         IN      u4Byte                  Data\r
139         )\r
140 {\r
141 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
142         prtl8192cd_priv priv    = pDM_Odm->priv;\r
143         RTL_W32(RegAddr, Data);\r
144 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
145         PADAPTER                Adapter = pDM_Odm->Adapter;\r
146         rtw_write32(Adapter,RegAddr, Data);\r
147 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
148         PADAPTER                Adapter = pDM_Odm->Adapter;\r
149         PlatformEFIOWrite4Byte(Adapter, RegAddr, Data);\r
150 #endif  \r
151 \r
152 }\r
153 \r
154 \r
155 VOID\r
156 ODM_SetMACReg(  \r
157         IN      PDM_ODM_T       pDM_Odm,\r
158         IN      u4Byte          RegAddr,\r
159         IN      u4Byte          BitMask,\r
160         IN      u4Byte          Data\r
161         )\r
162 {\r
163 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
164         PHY_SetBBReg(pDM_Odm->priv, RegAddr, BitMask, Data);\r
165 #elif(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))\r
166         PADAPTER                Adapter = pDM_Odm->Adapter;\r
167         PHY_SetBBReg(Adapter, RegAddr, BitMask, Data);\r
168 #endif  \r
169 }\r
170 \r
171 \r
172 u4Byte \r
173 ODM_GetMACReg(  \r
174         IN      PDM_ODM_T       pDM_Odm,\r
175         IN      u4Byte          RegAddr,\r
176         IN      u4Byte          BitMask\r
177         )\r
178 {\r
179 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
180         return PHY_QueryBBReg(pDM_Odm->priv, RegAddr, BitMask);\r
181 #elif(DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))\r
182         return PHY_QueryMacReg(pDM_Odm->Adapter, RegAddr, BitMask);\r
183 #endif  \r
184 }\r
185 \r
186 \r
187 VOID\r
188 ODM_SetBBReg(   \r
189         IN      PDM_ODM_T       pDM_Odm,\r
190         IN      u4Byte          RegAddr,\r
191         IN      u4Byte          BitMask,\r
192         IN      u4Byte          Data\r
193         )\r
194 {\r
195 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
196         PHY_SetBBReg(pDM_Odm->priv, RegAddr, BitMask, Data);\r
197 #elif(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))\r
198         PADAPTER                Adapter = pDM_Odm->Adapter;\r
199         PHY_SetBBReg(Adapter, RegAddr, BitMask, Data);\r
200 #endif  \r
201 }\r
202 \r
203 \r
204 u4Byte \r
205 ODM_GetBBReg(   \r
206         IN      PDM_ODM_T       pDM_Odm,\r
207         IN      u4Byte          RegAddr,\r
208         IN      u4Byte          BitMask\r
209         )\r
210 {\r
211 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
212         return PHY_QueryBBReg(pDM_Odm->priv, RegAddr, BitMask);\r
213 #elif(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))\r
214         PADAPTER                Adapter = pDM_Odm->Adapter;\r
215         return PHY_QueryBBReg(Adapter, RegAddr, BitMask);\r
216 #endif  \r
217 }\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 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
230         PHY_SetRFReg(pDM_Odm->priv, eRFPath, RegAddr, BitMask, Data);\r
231 #elif(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))\r
232         PADAPTER                Adapter = pDM_Odm->Adapter;\r
233         PHY_SetRFReg(Adapter, eRFPath, RegAddr, BitMask, Data);\r
234 #endif  \r
235 }\r
236 \r
237 \r
238 u4Byte \r
239 ODM_GetRFReg(   \r
240         IN      PDM_ODM_T                       pDM_Odm,\r
241         IN      ODM_RF_RADIO_PATH_E     eRFPath,\r
242         IN      u4Byte                          RegAddr,\r
243         IN      u4Byte                          BitMask\r
244         )\r
245 {\r
246 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
247         return PHY_QueryRFReg(pDM_Odm->priv, eRFPath, RegAddr, BitMask, 1);\r
248 #elif(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))\r
249         PADAPTER                Adapter = pDM_Odm->Adapter;\r
250         return PHY_QueryRFReg(Adapter, eRFPath, RegAddr, BitMask);\r
251 #endif  \r
252 }\r
253 \r
254 \r
255 \r
256 \r
257 //\r
258 // ODM Memory relative API.\r
259 //\r
260 VOID\r
261 ODM_AllocateMemory(     \r
262         IN      PDM_ODM_T       pDM_Odm,\r
263         OUT     PVOID           *pPtr,\r
264         IN      u4Byte          length\r
265         )\r
266 {\r
267 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
268         *pPtr = kmalloc(length, GFP_ATOMIC);\r
269 #elif (DM_ODM_SUPPORT_TYPE & ODM_CE )\r
270         *pPtr = rtw_zvmalloc(length);\r
271 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
272         PADAPTER                Adapter = pDM_Odm->Adapter;\r
273         PlatformAllocateMemory(Adapter, pPtr, length);\r
274 #endif  \r
275 }\r
276 \r
277 // length could be ignored, used to detect memory leakage.\r
278 VOID\r
279 ODM_FreeMemory( \r
280         IN      PDM_ODM_T       pDM_Odm,\r
281         OUT     PVOID           pPtr,\r
282         IN      u4Byte          length\r
283         )\r
284 {\r
285 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
286         kfree(pPtr);\r
287 #elif (DM_ODM_SUPPORT_TYPE & ODM_CE )   \r
288         rtw_vmfree(pPtr, length);\r
289 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
290         //PADAPTER    Adapter = pDM_Odm->Adapter;\r
291         PlatformFreeMemory(pPtr, length);\r
292 #endif  \r
293 }\r
294 \r
295 VOID\r
296 ODM_MoveMemory( \r
297         IN      PDM_ODM_T       pDM_Odm,\r
298         OUT PVOID               pDest,\r
299         IN  PVOID               pSrc,\r
300         IN  u4Byte              Length\r
301         )\r
302 {\r
303 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
304         memcpy(pDest, pSrc, Length);\r
305 #elif (DM_ODM_SUPPORT_TYPE & ODM_CE )   \r
306         _rtw_memcpy(pDest, pSrc, Length);\r
307 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
308         PlatformMoveMemory(pDest, pSrc, Length);\r
309 #endif  \r
310 }\r
311 \r
312 void ODM_Memory_Set\r
313         (IN     PDM_ODM_T       pDM_Odm,\r
314                 IN  PVOID       pbuf,\r
315                 IN  s1Byte      value,\r
316                 IN  u4Byte      length)\r
317 {\r
318 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
319         \r
320 #elif (DM_ODM_SUPPORT_TYPE & ODM_CE )   \r
321         _rtw_memset(pbuf,value, length);\r
322 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
323         PlatformFillMemory(pbuf,length,value);\r
324 #endif\r
325 }\r
326 s4Byte ODM_CompareMemory(\r
327         IN      PDM_ODM_T               pDM_Odm,\r
328         IN      PVOID           pBuf1,\r
329         IN      PVOID           pBuf2,\r
330         IN      u4Byte          length\r
331        )\r
332 {\r
333 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
334         return memcmp(pBuf1,pBuf2,length);\r
335 #elif (DM_ODM_SUPPORT_TYPE & ODM_CE )   \r
336         return _rtw_memcmp(pBuf1,pBuf2,length);\r
337 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)    \r
338         return PlatformCompareMemory(pBuf1,pBuf2,length);\r
339 #endif  \r
340 }\r
341 \r
342 \r
343 \r
344 //\r
345 // ODM MISC relative API.\r
346 //\r
347 VOID\r
348 ODM_AcquireSpinLock(    \r
349         IN      PDM_ODM_T                       pDM_Odm,\r
350         IN      RT_SPINLOCK_TYPE        type\r
351         )\r
352 {\r
353 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
354         \r
355 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
356         PADAPTER Adapter = pDM_Odm->Adapter;\r
357         rtw_odm_acquirespinlock(Adapter, type);\r
358 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
359         PADAPTER                Adapter = pDM_Odm->Adapter;\r
360         PlatformAcquireSpinLock(Adapter, type);\r
361 #endif  \r
362 }\r
363 VOID\r
364 ODM_ReleaseSpinLock(    \r
365         IN      PDM_ODM_T                       pDM_Odm,\r
366         IN      RT_SPINLOCK_TYPE        type\r
367         )\r
368 {\r
369 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
370 \r
371 #elif (DM_ODM_SUPPORT_TYPE & ODM_CE )\r
372         PADAPTER Adapter = pDM_Odm->Adapter;\r
373         rtw_odm_releasespinlock(Adapter, type);\r
374 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
375         PADAPTER                Adapter = pDM_Odm->Adapter;\r
376         PlatformReleaseSpinLock(Adapter, type);\r
377 #endif  \r
378 }\r
379 \r
380 //\r
381 // Work item relative API. FOr MP driver only~!\r
382 //\r
383 VOID\r
384 ODM_InitializeWorkItem( \r
385         IN      PDM_ODM_T                                       pDM_Odm,\r
386         IN      PRT_WORK_ITEM                           pRtWorkItem,\r
387         IN      RT_WORKITEM_CALL_BACK           RtWorkItemCallback,\r
388         IN      PVOID                                           pContext,\r
389         IN      const char*                                     szID\r
390         )\r
391 {\r
392 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
393         \r
394 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
395         \r
396 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
397         PADAPTER                Adapter = pDM_Odm->Adapter;\r
398         PlatformInitializeWorkItem(Adapter, pRtWorkItem, RtWorkItemCallback, pContext, szID);\r
399 #endif  \r
400 }\r
401 \r
402 \r
403 VOID\r
404 ODM_StartWorkItem(      \r
405         IN      PRT_WORK_ITEM   pRtWorkItem\r
406         )\r
407 {\r
408 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
409         \r
410 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
411 \r
412 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
413         PlatformStartWorkItem(pRtWorkItem);\r
414 #endif  \r
415 }\r
416 \r
417 \r
418 VOID\r
419 ODM_StopWorkItem(       \r
420         IN      PRT_WORK_ITEM   pRtWorkItem\r
421         )\r
422 {\r
423 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
424         \r
425 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
426 \r
427 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
428         PlatformStopWorkItem(pRtWorkItem);\r
429 #endif  \r
430 }\r
431 \r
432 \r
433 VOID\r
434 ODM_FreeWorkItem(       \r
435         IN      PRT_WORK_ITEM   pRtWorkItem\r
436         )\r
437 {\r
438 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
439         \r
440 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
441 \r
442 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
443         PlatformFreeWorkItem(pRtWorkItem);\r
444 #endif  \r
445 }\r
446 \r
447 \r
448 VOID\r
449 ODM_ScheduleWorkItem(   \r
450         IN      PRT_WORK_ITEM   pRtWorkItem\r
451         )\r
452 {\r
453 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
454         \r
455 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
456 \r
457 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
458         PlatformScheduleWorkItem(pRtWorkItem);\r
459 #endif  \r
460 }\r
461 \r
462 \r
463 VOID\r
464 ODM_IsWorkItemScheduled(        \r
465         IN      PRT_WORK_ITEM   pRtWorkItem\r
466         )\r
467 {\r
468 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
469         \r
470 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
471 \r
472 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
473         PlatformIsWorkItemScheduled(pRtWorkItem);\r
474 #endif  \r
475 }\r
476 \r
477 \r
478 \r
479 //\r
480 // ODM Timer relative API.\r
481 //\r
482 VOID\r
483 ODM_StallExecution(     \r
484         IN      u4Byte  usDelay\r
485         )\r
486 {\r
487 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
488         \r
489 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
490         rtw_udelay_os(usDelay);\r
491 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
492         PlatformStallExecution(usDelay);\r
493 #endif  \r
494 }\r
495 \r
496 VOID\r
497 ODM_delay_ms(IN u4Byte  ms)\r
498 {\r
499 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
500         delay_ms(ms);\r
501 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
502         rtw_mdelay_os(ms);\r
503 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
504         delay_ms(ms);\r
505 #endif                  \r
506 }\r
507 \r
508 VOID\r
509 ODM_delay_us(IN u4Byte  us)\r
510 {\r
511 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
512         delay_us(us);\r
513 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
514         rtw_udelay_os(us);\r
515 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
516         PlatformStallExecution(us);\r
517 #endif                  \r
518 }\r
519 \r
520 VOID\r
521 ODM_sleep_ms(IN u4Byte  ms)\r
522 {\r
523 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
524         \r
525 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
526         rtw_msleep_os(ms);\r
527 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)    \r
528 #endif          \r
529 }\r
530 \r
531 VOID\r
532 ODM_sleep_us(IN u4Byte  us)\r
533 {\r
534 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
535         \r
536 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
537         rtw_usleep_os(us);\r
538 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)    \r
539 #endif          \r
540 }\r
541 \r
542 VOID\r
543 ODM_SetTimer(   \r
544         IN      PDM_ODM_T               pDM_Odm,\r
545         IN      PRT_TIMER               pTimer, \r
546         IN      u4Byte                  msDelay\r
547         )\r
548 {\r
549 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
550         mod_timer(pTimer, jiffies + RTL_MILISECONDS_TO_JIFFIES(msDelay));\r
551 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
552         _set_timer(pTimer,msDelay ); //ms\r
553 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
554         PADAPTER                Adapter = pDM_Odm->Adapter;\r
555         PlatformSetTimer(Adapter, pTimer, msDelay);\r
556 #endif  \r
557 \r
558 }\r
559 \r
560 VOID\r
561 ODM_InitializeTimer(\r
562         IN      PDM_ODM_T                       pDM_Odm,\r
563         IN      PRT_TIMER                       pTimer, \r
564         IN      RT_TIMER_CALL_BACK      CallBackFunc, \r
565         IN      PVOID                           pContext,\r
566         IN      const char*                     szID\r
567         )\r
568 {\r
569 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
570         init_timer(pTimer);\r
571         pTimer->function = CallBackFunc;\r
572         pTimer->data = (unsigned long)pDM_Odm;\r
573         mod_timer(pTimer, jiffies+RTL_MILISECONDS_TO_JIFFIES(10));      \r
574 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
575         PADAPTER Adapter = pDM_Odm->Adapter;\r
576         _init_timer(pTimer,Adapter->pnetdev,CallBackFunc,pDM_Odm);\r
577 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
578         PADAPTER Adapter = pDM_Odm->Adapter;\r
579         PlatformInitializeTimer(Adapter, pTimer, CallBackFunc,pContext,szID);\r
580 #endif  \r
581 }\r
582 \r
583 \r
584 VOID\r
585 ODM_CancelTimer(\r
586         IN      PDM_ODM_T               pDM_Odm,\r
587         IN      PRT_TIMER               pTimer\r
588         )\r
589 {\r
590 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
591         del_timer_sync(pTimer);\r
592 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
593         _cancel_timer_ex(pTimer);\r
594 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
595         PADAPTER Adapter = pDM_Odm->Adapter;\r
596         PlatformCancelTimer(Adapter, pTimer);\r
597 #endif\r
598 }\r
599 \r
600 \r
601 VOID\r
602 ODM_ReleaseTimer(\r
603         IN      PDM_ODM_T               pDM_Odm,\r
604         IN      PRT_TIMER               pTimer\r
605         )\r
606 {\r
607 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
608 \r
609 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
610 \r
611 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
612 \r
613         PADAPTER Adapter = pDM_Odm->Adapter;\r
614 \r
615     // <20120301, Kordan> If the initilization fails, InitializeAdapterXxx will return regardless of InitHalDm. \r
616     // Hence, uninitialized timers cause BSOD when the driver releases resources since the init fail.\r
617     if (pTimer == 0) \r
618     {\r
619         ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_SERIOUS, ("=====>ODM_ReleaseTimer(), The timer is NULL! Please check it!\n"));\r
620         return;\r
621     }\r
622         \r
623         PlatformReleaseTimer(Adapter, pTimer);\r
624 #endif\r
625 }\r
626 \r
627 \r
628 //\r
629 // ODM FW relative API.\r
630 //\r
631 #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))\r
632 VOID\r
633 ODM_FillH2CCmd(\r
634         IN      PDM_ODM_T               pDM_Odm,\r
635         IN      u1Byte                  ElementID,\r
636         IN      u4Byte                  CmdLen,\r
637         IN      pu1Byte                 pCmdBuffer\r
638 )\r
639 {\r
640         PADAPTER                Adapter = pDM_Odm->Adapter;\r
641 \r
642         if(pDM_Odm->SupportICType & ODM_IC_11AC_SERIES)\r
643         {\r
644                 switch(ElementID)\r
645                 {\r
646                         case ODM_H2C_RSSI_REPORT:\r
647 \r
648 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
649                                 FillH2CCmd(Adapter, H2C_RSSI_REPORT, CmdLen, pCmdBuffer);\r
650 #else\r
651         #if((RTL8812A_SUPPORT==1) ||(RTL8821A_SUPPORT==1))\r
652                                 FillH2CCmd_8812(Adapter, H2C_8812_RSSI_REPORT, CmdLen, pCmdBuffer);\r
653         #endif\r
654 #endif\r
655                                 break;\r
656                         case ODM_H2C_IQ_CALIBRATION:\r
657 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
658                                 FillH2CCmd(Adapter, H2C_IQ_CALIBRATION, CmdLen, pCmdBuffer);\r
659 #else\r
660         #if((RTL8812A_SUPPORT==1) ||(RTL8821A_SUPPORT==1))\r
661                                 FillH2CCmd_8812(Adapter, H2C_8812_IQ_CALIBRATION, CmdLen, pCmdBuffer);\r
662         #endif\r
663 #endif\r
664                                 break;\r
665                         default:\r
666                                 break;\r
667                 }\r
668 \r
669         }\r
670         else if(pDM_Odm->SupportICType == ODM_RTL8192E)\r
671         {\r
672                 switch(ElementID)\r
673                 {\r
674                         case ODM_H2C_RSSI_REPORT:\r
675 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
676                                 FillH2CCmd(Adapter, H2C_RSSI_REPORT, CmdLen, pCmdBuffer);\r
677 #else\r
678         #if(RTL8192E_SUPPORT==1)\r
679                                 FillH2CCmd_8192E(Adapter, H2C_8192E_RSSI_REPORT, CmdLen, pCmdBuffer);\r
680         #endif\r
681 #endif\r
682                                 break;\r
683                         default:\r
684                                 break;\r
685                 }       \r
686         }\r
687         else if(pDM_Odm->SupportICType == ODM_RTL8723B)\r
688         {\r
689                 switch(ElementID)\r
690                 {\r
691                         case ODM_H2C_RSSI_REPORT:\r
692 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
693                                 FillH2CCmd(Adapter, H2C_RSSI_REPORT, CmdLen, pCmdBuffer);\r
694 #else\r
695         #if(RTL8723B_SUPPORT==1)\r
696                                 FillH2CCmd8723B(Adapter, H2C_8723B_RSSI_SETTING, CmdLen, pCmdBuffer);\r
697         #endif\r
698 #endif\r
699                                 break;\r
700                         case ODM_H2C_WIFI_CALIBRATION:\r
701 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
702                                 FillH2CCmd(Adapter, H2C_WIFI_CALIBRATION, CmdLen, pCmdBuffer);\r
703 #else\r
704         #if(RTL8723B_SUPPORT==1)\r
705                                 FillH2CCmd8723B(Adapter, H2C_8723B_BT_WLAN_CALIBRATION, CmdLen, pCmdBuffer);\r
706         #endif\r
707 #endif\r
708                                 break;\r
709                         default:\r
710                                 break;                     \r
711                 }\r
712 \r
713         }\r
714         else if(pDM_Odm->SupportICType == ODM_RTL8188E)\r
715         {\r
716                 switch(ElementID)\r
717                 {\r
718                         case ODM_H2C_RSSI_REPORT:\r
719                                 //if((pDM_Odm->CutVersion == ODM_CUT_I) && (!pDM_Odm->RaSupport88E)){\r
720                                 if(!pDM_Odm->RaSupport88E){\r
721 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
722                                         FillH2CCmd88E(Adapter, H2C_88E_RSSI_REPORT, CmdLen, pCmdBuffer);\r
723 #else\r
724         #if(RTL8188E_SUPPORT==1)\r
725                                         FillH2CCmd_88E(Adapter, H2C_RSSI_REPORT, CmdLen, pCmdBuffer);\r
726         #endif\r
727 #endif                  \r
728                                 }\r
729                                 break;\r
730                         default:\r
731                                 break;\r
732                 }\r
733         }\r
734 #if(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
735         else if(pDM_Odm->SupportICType == ODM_RTL8723A)\r
736         {\r
737                 switch(ElementID)\r
738                 {\r
739                         case ODM_H2C_RSSI_REPORT:\r
740         #if(RTL8723A_SUPPORT==1)\r
741                                 FillH2CCmd(Adapter, RSSI_SETTING_EID, CmdLen, pCmdBuffer);\r
742         #endif\r
743                                 break;\r
744                         default:\r
745                                 break;\r
746                 }\r
747         }\r
748         else if(pDM_Odm->SupportICType == ODM_RTL8192D)\r
749         {\r
750                 switch(ElementID)\r
751                 {\r
752                         case ODM_H2C_RSSI_REPORT:\r
753         #if(RTL8192D_SUPPORT==1)\r
754                         FillH2CCmd92D(Adapter, H2C_RSSI_REPORT, CmdLen, pCmdBuffer);    \r
755         #endif\r
756                                 break;\r
757                         default:\r
758                                 break;\r
759                 }\r
760         }\r
761 #endif\r
762         else\r
763         {\r
764                 switch(ElementID)\r
765                 {\r
766                         case ODM_H2C_RSSI_REPORT:\r
767 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
768                                 FillH2CCmd92C(Adapter, H2C_RSSI_REPORT, CmdLen, pCmdBuffer);\r
769 #else\r
770         #if(RTL8192C_SUPPORT==1)\r
771                                 rtl8192c_FillH2CCmd(Adapter, RSSI_SETTING_EID, CmdLen, pCmdBuffer);\r
772         #endif\r
773 #endif\r
774                                 break;\r
775                         default:\r
776                                 break;\r
777                 }\r
778         }\r
779 }\r
780 #else\r
781 u4Byte\r
782 ODM_FillH2CCmd( \r
783         IN      pu1Byte         pH2CBuffer,\r
784         IN      u4Byte          H2CBufferLen,\r
785         IN      u4Byte          CmdNum,\r
786         IN      pu4Byte         pElementID,\r
787         IN      pu4Byte         pCmdLen,\r
788         IN      pu1Byte*                pCmbBuffer,\r
789         IN      pu1Byte         CmdStartSeq\r
790         )\r
791 {\r
792 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
793         \r
794 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
795 \r
796 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)    \r
797         //FillH2CCmd(pH2CBuffer, H2CBufferLen, CmdNum, pElementID, pCmdLen, pCmbBuffer, CmdStartSeq);\r
798         return  FALSE;\r
799 #endif\r
800 \r
801         return  TRUE;\r
802 }\r
803 #endif\r
804 \r
805 \r
806 u8Byte\r
807 ODM_GetCurrentTime(     \r
808         IN      PDM_ODM_T               pDM_Odm\r
809         )\r
810 {\r
811 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
812         return  0;\r
813 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
814         return (u8Byte)rtw_get_current_time();\r
815 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)    \r
816         return  PlatformGetCurrentTime();\r
817 #endif\r
818 }\r
819 \r
820 u8Byte\r
821 ODM_GetProgressingTime( \r
822         IN      PDM_ODM_T               pDM_Odm,\r
823         IN      u8Byte                  Start_Time\r
824         )\r
825 {\r
826 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
827         return  0;\r
828 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)\r
829         return rtw_get_passing_time_ms((u4Byte)Start_Time);\r
830 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)    \r
831         return   ((PlatformGetCurrentTime() - Start_Time)>>10);\r
832 #endif\r
833 }\r
834 \r
835 \r