hal_btcoex_wifionly.c 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. #include "btc/mp_precomp.h"
  2. #include <hal_btcoex_wifionly.h>
  3. struct wifi_only_cfg GLBtCoexistWifiOnly;
  4. void halwifionly_write1byte(PVOID pwifionlyContext, u32 RegAddr, u8 Data)
  5. {
  6. struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
  7. PADAPTER Adapter = pwifionlycfg->Adapter;
  8. rtw_write8(Adapter, RegAddr, Data);
  9. }
  10. void halwifionly_write2byte(PVOID pwifionlyContext, u32 RegAddr, u16 Data)
  11. {
  12. struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
  13. PADAPTER Adapter = pwifionlycfg->Adapter;
  14. rtw_write16(Adapter, RegAddr, Data);
  15. }
  16. void halwifionly_write4byte(PVOID pwifionlyContext, u32 RegAddr, u32 Data)
  17. {
  18. struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
  19. PADAPTER Adapter = pwifionlycfg->Adapter;
  20. rtw_write32(Adapter, RegAddr, Data);
  21. }
  22. u8 halwifionly_read1byte(PVOID pwifionlyContext, u32 RegAddr)
  23. {
  24. struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
  25. PADAPTER Adapter = pwifionlycfg->Adapter;
  26. return rtw_read8(Adapter, RegAddr);
  27. }
  28. u16 halwifionly_read2byte(PVOID pwifionlyContext, u32 RegAddr)
  29. {
  30. struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
  31. PADAPTER Adapter = pwifionlycfg->Adapter;
  32. return rtw_read16(Adapter, RegAddr);
  33. }
  34. u32 halwifionly_read4byte(PVOID pwifionlyContext, u32 RegAddr)
  35. {
  36. struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
  37. PADAPTER Adapter = pwifionlycfg->Adapter;
  38. return rtw_read32(Adapter, RegAddr);
  39. }
  40. void halwifionly_bitmaskwrite1byte(PVOID pwifionlyContext, u32 regAddr, u8 bitMask, u8 data)
  41. {
  42. u8 originalValue, bitShift = 0;
  43. u8 i;
  44. struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
  45. PADAPTER Adapter = pwifionlycfg->Adapter;
  46. if (bitMask != 0xff) {
  47. originalValue = rtw_read8(Adapter, regAddr);
  48. for (i = 0; i <= 7; i++) {
  49. if ((bitMask >> i) & 0x1)
  50. break;
  51. }
  52. bitShift = i;
  53. data = ((originalValue) & (~bitMask)) | (((data << bitShift)) & bitMask);
  54. }
  55. rtw_write8(Adapter, regAddr, data);
  56. }
  57. void halwifionly_phy_set_rf_reg(PVOID pwifionlyContext, u8 eRFPath, u32 RegAddr, u32 BitMask, u32 Data)
  58. {
  59. struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
  60. PADAPTER Adapter = pwifionlycfg->Adapter;
  61. phy_set_rf_reg(Adapter, eRFPath, RegAddr, BitMask, Data);
  62. }
  63. void halwifionly_phy_set_bb_reg(PVOID pwifionlyContext, u32 RegAddr, u32 BitMask, u32 Data)
  64. {
  65. struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
  66. PADAPTER Adapter = pwifionlycfg->Adapter;
  67. phy_set_bb_reg(Adapter, RegAddr, BitMask, Data);
  68. }
  69. void hal_btcoex_wifionly_switchband_notify(PADAPTER padapter)
  70. {
  71. HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
  72. u8 is_5g = _FALSE;
  73. if (pHalData->current_band_type == BAND_ON_5G)
  74. is_5g = _TRUE;
  75. if (IS_HARDWARE_TYPE_8822B(padapter))
  76. ex_hal8822b_wifi_only_switchbandnotify(&GLBtCoexistWifiOnly, is_5g);
  77. else if (IS_HARDWARE_TYPE_8821C(padapter))
  78. ex_hal8821c_wifi_only_switchbandnotify(&GLBtCoexistWifiOnly, is_5g);
  79. }
  80. void hal_btcoex_wifionly_scan_notify(PADAPTER padapter)
  81. {
  82. HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
  83. u8 is_5g = _FALSE;
  84. if (pHalData->current_band_type == BAND_ON_5G)
  85. is_5g = _TRUE;
  86. if (IS_HARDWARE_TYPE_8822B(padapter))
  87. ex_hal8822b_wifi_only_scannotify(&GLBtCoexistWifiOnly, is_5g);
  88. else if (IS_HARDWARE_TYPE_8821C(padapter))
  89. ex_hal8821c_wifi_only_scannotify(&GLBtCoexistWifiOnly, is_5g);
  90. }
  91. void hal_btcoex_wifionly_hw_config(PADAPTER padapter)
  92. {
  93. struct wifi_only_cfg *pwifionlycfg = &GLBtCoexistWifiOnly;
  94. if (IS_HARDWARE_TYPE_8723B(padapter))
  95. ex_hal8723b_wifi_only_hw_config(pwifionlycfg);
  96. else if (IS_HARDWARE_TYPE_8822B(padapter))
  97. ex_hal8822b_wifi_only_hw_config(pwifionlycfg);
  98. else if (IS_HARDWARE_TYPE_8821C(padapter))
  99. ex_hal8821c_wifi_only_hw_config(pwifionlycfg);
  100. }
  101. void hal_btcoex_wifionly_initlizevariables(PADAPTER padapter)
  102. {
  103. struct wifi_only_cfg *pwifionlycfg = &GLBtCoexistWifiOnly;
  104. struct wifi_only_haldata *pwifionly_haldata = &pwifionlycfg->haldata_info;
  105. HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
  106. _rtw_memset(&GLBtCoexistWifiOnly, 0, sizeof(GLBtCoexistWifiOnly));
  107. pwifionlycfg->Adapter = padapter;
  108. #ifdef CONFIG_PCI_HCI
  109. pwifionlycfg->chip_interface = WIFIONLY_INTF_PCI;
  110. #elif defined(CONFIG_USB_HCI)
  111. pwifionlycfg->chip_interface = WIFIONLY_INTF_USB;
  112. #elif defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
  113. pwifionlycfg->chip_interface = WIFIONLY_INTF_SDIO;
  114. #else
  115. pwifionlycfg->chip_interface = WIFIONLY_INTF_UNKNOWN;
  116. #endif
  117. pwifionly_haldata->customer_id = CUSTOMER_NORMAL;
  118. pwifionly_haldata->efuse_pg_antnum = pHalData->EEPROMBluetoothAntNum;
  119. pwifionly_haldata->efuse_pg_antpath = pHalData->ant_path;
  120. pwifionly_haldata->rfe_type = pHalData->rfe_type;
  121. pwifionly_haldata->ant_div_cfg = pHalData->AntDivCfg;
  122. }