1 /******************************************************************************
\r
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
\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
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
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
19 ******************************************************************************/
\r
21 //============================================================
\r
23 //============================================================
\r
25 #include "Mp_Precomp.h"
\r
26 #include "phydm_precomp.h"
\r
29 // ODM IO Relative API.
\r
34 IN PDM_ODM_T pDM_Odm,
\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
54 IN PDM_ODM_T pDM_Odm,
\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
74 IN PDM_ODM_T pDM_Odm,
\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
94 IN PDM_ODM_T pDM_Odm,
\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
115 IN PDM_ODM_T pDM_Odm,
\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
136 IN PDM_ODM_T pDM_Odm,
\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
157 IN PDM_ODM_T pDM_Odm,
\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
174 IN PDM_ODM_T pDM_Odm,
\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
189 IN PDM_ODM_T pDM_Odm,
\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
206 IN PDM_ODM_T pDM_Odm,
\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
222 IN PDM_ODM_T pDM_Odm,
\r
223 IN ODM_RF_RADIO_PATH_E eRFPath,
\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
240 IN PDM_ODM_T pDM_Odm,
\r
241 IN ODM_RF_RADIO_PATH_E eRFPath,
\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
258 // ODM Memory relative API.
\r
261 ODM_AllocateMemory(
\r
262 IN PDM_ODM_T pDM_Odm,
\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
277 // length could be ignored, used to detect memory leakage.
\r
280 IN PDM_ODM_T pDM_Odm,
\r
285 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\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
297 IN PDM_ODM_T pDM_Odm,
\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
312 void ODM_Memory_Set
\r
313 (IN PDM_ODM_T pDM_Odm,
\r
318 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\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
326 s4Byte ODM_CompareMemory(
\r
327 IN PDM_ODM_T pDM_Odm,
\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
345 // ODM MISC relative API.
\r
348 ODM_AcquireSpinLock(
\r
349 IN PDM_ODM_T pDM_Odm,
\r
350 IN RT_SPINLOCK_TYPE type
\r
353 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\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
364 ODM_ReleaseSpinLock(
\r
365 IN PDM_ODM_T pDM_Odm,
\r
366 IN RT_SPINLOCK_TYPE type
\r
369 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\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
381 // Work item relative API. FOr MP driver only~!
\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
389 IN const char* szID
\r
392 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
394 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\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
404 ODM_StartWorkItem(
\r
405 IN PRT_WORK_ITEM pRtWorkItem
\r
408 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
410 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
412 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
413 PlatformStartWorkItem(pRtWorkItem);
\r
420 IN PRT_WORK_ITEM pRtWorkItem
\r
423 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
425 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
427 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
428 PlatformStopWorkItem(pRtWorkItem);
\r
435 IN PRT_WORK_ITEM pRtWorkItem
\r
438 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
440 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
442 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
443 PlatformFreeWorkItem(pRtWorkItem);
\r
449 ODM_ScheduleWorkItem(
\r
450 IN PRT_WORK_ITEM pRtWorkItem
\r
453 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
455 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
457 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
458 PlatformScheduleWorkItem(pRtWorkItem);
\r
464 ODM_IsWorkItemScheduled(
\r
465 IN PRT_WORK_ITEM pRtWorkItem
\r
468 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
470 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
472 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
473 PlatformIsWorkItemScheduled(pRtWorkItem);
\r
480 // ODM Timer relative API.
\r
483 ODM_StallExecution(
\r
487 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\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
497 ODM_delay_ms(IN u4Byte ms)
\r
499 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
501 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
503 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
509 ODM_delay_us(IN u4Byte us)
\r
511 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
513 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
515 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
516 PlatformStallExecution(us);
\r
521 ODM_sleep_ms(IN u4Byte ms)
\r
523 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
525 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
527 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
532 ODM_sleep_us(IN u4Byte us)
\r
534 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
536 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
538 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
544 IN PDM_ODM_T pDM_Odm,
\r
545 IN PRT_TIMER pTimer,
\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
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
566 IN const char* szID
\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
586 IN PDM_ODM_T pDM_Odm,
\r
587 IN PRT_TIMER pTimer
\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
603 IN PDM_ODM_T pDM_Odm,
\r
604 IN PRT_TIMER pTimer
\r
607 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
609 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
611 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
613 PADAPTER Adapter = pDM_Odm->Adapter;
\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
619 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_SERIOUS, ("=====>ODM_ReleaseTimer(), The timer is NULL! Please check it!\n"));
\r
623 PlatformReleaseTimer(Adapter, pTimer);
\r
629 // ODM FW relative API.
\r
631 #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))
\r
634 IN PDM_ODM_T pDM_Odm,
\r
635 IN u1Byte ElementID,
\r
637 IN pu1Byte pCmdBuffer
\r
640 PADAPTER Adapter = pDM_Odm->Adapter;
\r
642 if(pDM_Odm->SupportICType & ODM_IC_11AC_SERIES)
\r
646 case ODM_H2C_RSSI_REPORT:
\r
648 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
649 FillH2CCmd(Adapter, H2C_RSSI_REPORT, CmdLen, pCmdBuffer);
\r
651 #if((RTL8812A_SUPPORT==1) ||(RTL8821A_SUPPORT==1))
\r
652 FillH2CCmd_8812(Adapter, H2C_8812_RSSI_REPORT, CmdLen, pCmdBuffer);
\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
660 #if((RTL8812A_SUPPORT==1) ||(RTL8821A_SUPPORT==1))
\r
661 FillH2CCmd_8812(Adapter, H2C_8812_IQ_CALIBRATION, CmdLen, pCmdBuffer);
\r
670 else if(pDM_Odm->SupportICType == ODM_RTL8192E)
\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
678 #if(RTL8192E_SUPPORT==1)
\r
679 FillH2CCmd_8192E(Adapter, H2C_8192E_RSSI_REPORT, CmdLen, pCmdBuffer);
\r
687 else if(pDM_Odm->SupportICType == ODM_RTL8723B)
\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
695 #if(RTL8723B_SUPPORT==1)
\r
696 FillH2CCmd8723B(Adapter, H2C_8723B_RSSI_SETTING, CmdLen, pCmdBuffer);
\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
704 #if(RTL8723B_SUPPORT==1)
\r
705 FillH2CCmd8723B(Adapter, H2C_8723B_BT_WLAN_CALIBRATION, CmdLen, pCmdBuffer);
\r
714 else if(pDM_Odm->SupportICType == ODM_RTL8188E)
\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
724 #if(RTL8188E_SUPPORT==1)
\r
725 FillH2CCmd_88E(Adapter, H2C_RSSI_REPORT, CmdLen, pCmdBuffer);
\r
734 #if(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
735 else if(pDM_Odm->SupportICType == ODM_RTL8723A)
\r
739 case ODM_H2C_RSSI_REPORT:
\r
740 #if(RTL8723A_SUPPORT==1)
\r
741 FillH2CCmd(Adapter, RSSI_SETTING_EID, CmdLen, pCmdBuffer);
\r
748 else if(pDM_Odm->SupportICType == ODM_RTL8192D)
\r
752 case ODM_H2C_RSSI_REPORT:
\r
753 #if(RTL8192D_SUPPORT==1)
\r
754 FillH2CCmd92D(Adapter, H2C_RSSI_REPORT, CmdLen, pCmdBuffer);
\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
770 #if(RTL8192C_SUPPORT==1)
\r
771 rtl8192c_FillH2CCmd(Adapter, RSSI_SETTING_EID, CmdLen, pCmdBuffer);
\r
783 IN pu1Byte pH2CBuffer,
\r
784 IN u4Byte H2CBufferLen,
\r
786 IN pu4Byte pElementID,
\r
787 IN pu4Byte pCmdLen,
\r
788 IN pu1Byte* pCmbBuffer,
\r
789 IN pu1Byte CmdStartSeq
\r
792 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
794 #elif(DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
796 #elif(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
797 //FillH2CCmd(pH2CBuffer, H2CBufferLen, CmdNum, pElementID, pCmdLen, pCmbBuffer, CmdStartSeq);
\r
807 ODM_GetCurrentTime(
\r
808 IN PDM_ODM_T pDM_Odm
\r
811 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\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
821 ODM_GetProgressingTime(
\r
822 IN PDM_ODM_T pDM_Odm,
\r
823 IN u8Byte Start_Time
\r
826 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\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