Commit 416a445e authored by Ching-Te Ku's avatar Ching-Te Ku Committed by Ping-Ke Shih

wifi: rtw89: coex: Check and enable reports after run coex

If there is any changes with Wi-Fi/Bluetooth, the mechanism will
trigger run_coex to update information and coexistence mechanism.
Enable/Disable reports here can make sure the action take effect
in time.
Signed-off-by: default avatarChing-Te Ku <ku920601@realtek.com>
Signed-off-by: default avatarPing-Ke Shih <pkshih@realtek.com>
Link: https://msgid.link/20240423130502.32682-9-pkshih@realtek.com
parent 11173c70
......@@ -222,6 +222,22 @@ static const union rtw89_btc_wl_state_map btc_scanning_map = {
},
};
static u32 chip_id_to_bt_rom_code_id(u32 id)
{
switch (id) {
case RTL8852A:
case RTL8852B:
case RTL8852C:
return 0x8852;
case RTL8851B:
return 0x8851;
case RTL8922A:
return 0x8922;
default:
return 0;
}
}
struct rtw89_btc_btf_tlv {
u8 type;
u8 len;
......@@ -5035,11 +5051,14 @@ static void _set_bt_rx_scan_pri(struct rtw89_dev *rtwdev)
_write_scbd(rtwdev, BTC_WSCB_RXSCAN_PRI, (bool)(!!bt->scan_rx_low_pri));
}
/* TODO add these functions */
static void _action_common(struct rtw89_dev *rtwdev)
{
struct rtw89_btc *btc = &rtwdev->btc;
struct rtw89_btc_wl_info *wl = &btc->cx.wl;
struct rtw89_btc_wl_smap *wl_smap = &wl->status.map;
struct rtw89_btc_bt_info *bt = &btc->cx.bt;
struct rtw89_btc_dm *dm = &btc->dm;
u32 bt_rom_code_id, bt_fw_ver;
_set_btg_ctrl(rtwdev);
_set_wl_preagc_ctrl(rtwdev);
......@@ -5049,6 +5068,26 @@ static void _action_common(struct rtw89_dev *rtwdev)
_set_rf_trx_para(rtwdev);
_set_bt_rx_scan_pri(rtwdev);
bt_rom_code_id = chip_id_to_bt_rom_code_id(rtwdev->btc.ver->chip_id);
bt_fw_ver = bt->ver_info.fw & 0xffff;
if (bt->enable.now &&
(bt_fw_ver == 0 ||
(bt_fw_ver == bt_rom_code_id && bt->run_patch_code && rtwdev->chip->scbd)))
rtw89_btc_fw_en_rpt(rtwdev, RPT_EN_BT_VER_INFO, 1);
else
rtw89_btc_fw_en_rpt(rtwdev, RPT_EN_BT_VER_INFO, 0);
if (dm->run_reason == BTC_RSN_NTFY_INIT ||
dm->run_reason == BTC_RSN_NTFY_RADIO_STATE ||
dm->run_reason == BTC_RSN_NTFY_POWEROFF) {
_fw_set_drv_info(rtwdev, CXDRVINFO_ROLE);
if (wl_smap->rf_off == 1 || wl_smap->lps != BTC_LPS_OFF)
rtw89_btc_fw_en_rpt(rtwdev, RPT_EN_ALL, 0);
else
rtw89_btc_fw_en_rpt(rtwdev, RPT_EN_MREG, 1);
}
if (wl->scbd_change) {
rtw89_mac_cfg_sb(rtwdev, wl->scbd);
rtw89_debug(rtwdev, RTW89_DBG_BTC, "[BTC], write scbd: 0x%08x\n",
......@@ -8020,11 +8059,6 @@ static void _show_bt_info(struct rtw89_dev *rtwdev, struct seq_file *m)
seq_puts(m, "\n");
}
if (bt->enable.now && bt->ver_info.fw == 0)
rtw89_btc_fw_en_rpt(rtwdev, RPT_EN_BT_VER_INFO, true);
else
rtw89_btc_fw_en_rpt(rtwdev, RPT_EN_BT_VER_INFO, false);
if (bt_linfo->profile_cnt.now || bt_linfo->status.map.ble_connect)
rtw89_btc_fw_en_rpt(rtwdev, RPT_EN_BT_AFH_MAP, true);
else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment