1 #include "btc/mp_precomp.h"
2 #include <hal_btcoex_wifionly.h>
4 struct wifi_only_cfg GLBtCoexistWifiOnly;
6 void halwifionly_write1byte(PVOID pwifionlyContext, u32 RegAddr, u8 Data)
8 struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
9 PADAPTER Adapter = pwifionlycfg->Adapter;
11 rtw_write8(Adapter, RegAddr, Data);
14 void halwifionly_write2byte(PVOID pwifionlyContext, u32 RegAddr, u16 Data)
16 struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
17 PADAPTER Adapter = pwifionlycfg->Adapter;
19 rtw_write16(Adapter, RegAddr, Data);
22 void halwifionly_write4byte(PVOID pwifionlyContext, u32 RegAddr, u32 Data)
24 struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
25 PADAPTER Adapter = pwifionlycfg->Adapter;
27 rtw_write32(Adapter, RegAddr, Data);
30 u8 halwifionly_read1byte(PVOID pwifionlyContext, u32 RegAddr)
32 struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
33 PADAPTER Adapter = pwifionlycfg->Adapter;
35 return rtw_read8(Adapter, RegAddr);
38 u16 halwifionly_read2byte(PVOID pwifionlyContext, u32 RegAddr)
40 struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
41 PADAPTER Adapter = pwifionlycfg->Adapter;
43 return rtw_read16(Adapter, RegAddr);
46 u32 halwifionly_read4byte(PVOID pwifionlyContext, u32 RegAddr)
48 struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
49 PADAPTER Adapter = pwifionlycfg->Adapter;
51 return rtw_read32(Adapter, RegAddr);
54 void halwifionly_bitmaskwrite1byte(PVOID pwifionlyContext, u32 regAddr, u8 bitMask, u8 data)
56 u8 originalValue, bitShift = 0;
59 struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
60 PADAPTER Adapter = pwifionlycfg->Adapter;
62 if (bitMask != 0xff) {
63 originalValue = rtw_read8(Adapter, regAddr);
64 for (i = 0; i <= 7; i++) {
65 if ((bitMask >> i) & 0x1)
69 data = ((originalValue) & (~bitMask)) | (((data << bitShift)) & bitMask);
71 rtw_write8(Adapter, regAddr, data);
74 void halwifionly_phy_set_rf_reg(PVOID pwifionlyContext, u8 eRFPath, u32 RegAddr, u32 BitMask, u32 Data)
76 struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
77 PADAPTER Adapter = pwifionlycfg->Adapter;
79 phy_set_rf_reg(Adapter, eRFPath, RegAddr, BitMask, Data);
82 void halwifionly_phy_set_bb_reg(PVOID pwifionlyContext, u32 RegAddr, u32 BitMask, u32 Data)
84 struct wifi_only_cfg *pwifionlycfg = (struct wifi_only_cfg *)pwifionlyContext;
85 PADAPTER Adapter = pwifionlycfg->Adapter;
87 phy_set_bb_reg(Adapter, RegAddr, BitMask, Data);
90 void hal_btcoex_wifionly_switchband_notify(PADAPTER padapter)
92 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
95 if (pHalData->current_band_type == BAND_ON_5G)
98 if (IS_HARDWARE_TYPE_8822B(padapter))
99 ex_hal8822b_wifi_only_switchbandnotify(&GLBtCoexistWifiOnly, is_5g);
100 else if (IS_HARDWARE_TYPE_8821C(padapter))
101 ex_hal8821c_wifi_only_switchbandnotify(&GLBtCoexistWifiOnly, is_5g);
104 void hal_btcoex_wifionly_scan_notify(PADAPTER padapter)
106 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
109 if (pHalData->current_band_type == BAND_ON_5G)
112 if (IS_HARDWARE_TYPE_8822B(padapter))
113 ex_hal8822b_wifi_only_scannotify(&GLBtCoexistWifiOnly, is_5g);
114 else if (IS_HARDWARE_TYPE_8821C(padapter))
115 ex_hal8821c_wifi_only_scannotify(&GLBtCoexistWifiOnly, is_5g);
118 void hal_btcoex_wifionly_hw_config(PADAPTER padapter)
120 struct wifi_only_cfg *pwifionlycfg = &GLBtCoexistWifiOnly;
122 if (IS_HARDWARE_TYPE_8723B(padapter))
123 ex_hal8723b_wifi_only_hw_config(pwifionlycfg);
124 else if (IS_HARDWARE_TYPE_8822B(padapter))
125 ex_hal8822b_wifi_only_hw_config(pwifionlycfg);
126 else if (IS_HARDWARE_TYPE_8821C(padapter))
127 ex_hal8821c_wifi_only_hw_config(pwifionlycfg);
130 void hal_btcoex_wifionly_initlizevariables(PADAPTER padapter)
132 struct wifi_only_cfg *pwifionlycfg = &GLBtCoexistWifiOnly;
133 struct wifi_only_haldata *pwifionly_haldata = &pwifionlycfg->haldata_info;
134 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
136 _rtw_memset(&GLBtCoexistWifiOnly, 0, sizeof(GLBtCoexistWifiOnly));
138 pwifionlycfg->Adapter = padapter;
140 #ifdef CONFIG_PCI_HCI
141 pwifionlycfg->chip_interface = WIFIONLY_INTF_PCI;
142 #elif defined(CONFIG_USB_HCI)
143 pwifionlycfg->chip_interface = WIFIONLY_INTF_USB;
144 #elif defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
145 pwifionlycfg->chip_interface = WIFIONLY_INTF_SDIO;
147 pwifionlycfg->chip_interface = WIFIONLY_INTF_UNKNOWN;
150 pwifionly_haldata->customer_id = CUSTOMER_NORMAL;
151 pwifionly_haldata->efuse_pg_antnum = pHalData->EEPROMBluetoothAntNum;
152 pwifionly_haldata->efuse_pg_antpath = pHalData->ant_path;
153 pwifionly_haldata->rfe_type = pHalData->rfe_type;
154 pwifionly_haldata->ant_div_cfg = pHalData->AntDivCfg;