Commit efad6611 authored by Ping-Ke Shih's avatar Ping-Ke Shih Committed by Kalle Valo

rtw88: coex: 8723d: set antanna control owner

Without setting antenna control owner, the WiFi could be disconnected if
the BT has traffic. Because the antenna is switched to BT side for its
traffic, and the WiFi will have no chance to transfer data. Set control
owner to prevent WiFi disconnect issue.

Fixes: f5df1a8b ("rtw88: 8723d: Add 8723DE to Kconfig and Makefile")
Tested-by: default avatarYou-Sheng Yang <vicamo.yang@canonical.com>
Signed-off-by: default avatarPing-Ke Shih <pkshih@realtek.com>
Signed-off-by: default avatarYan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200529025009.2468-2-yhchuang@realtek.com
parent 53df5271
...@@ -751,10 +751,18 @@ EXPORT_SYMBOL(rtw_coex_write_indirect_reg); ...@@ -751,10 +751,18 @@ EXPORT_SYMBOL(rtw_coex_write_indirect_reg);
static void rtw_coex_coex_ctrl_owner(struct rtw_dev *rtwdev, bool wifi_control) static void rtw_coex_coex_ctrl_owner(struct rtw_dev *rtwdev, bool wifi_control)
{ {
if (wifi_control) struct rtw_chip_info *chip = rtwdev->chip;
const struct rtw_hw_reg *btg_reg = chip->btg_reg;
if (wifi_control) {
rtw_write32_set(rtwdev, REG_SYS_SDIO_CTRL, BIT_LTE_MUX_CTRL_PATH); rtw_write32_set(rtwdev, REG_SYS_SDIO_CTRL, BIT_LTE_MUX_CTRL_PATH);
else if (btg_reg)
rtw_write8_set(rtwdev, btg_reg->addr, btg_reg->mask);
} else {
rtw_write32_clr(rtwdev, REG_SYS_SDIO_CTRL, BIT_LTE_MUX_CTRL_PATH); rtw_write32_clr(rtwdev, REG_SYS_SDIO_CTRL, BIT_LTE_MUX_CTRL_PATH);
if (btg_reg)
rtw_write8_clr(rtwdev, btg_reg->addr, btg_reg->mask);
}
} }
static void rtw_coex_set_gnt_bt(struct rtw_dev *rtwdev, u8 state) static void rtw_coex_set_gnt_bt(struct rtw_dev *rtwdev, u8 state)
......
...@@ -1174,6 +1174,7 @@ struct rtw_chip_info { ...@@ -1174,6 +1174,7 @@ struct rtw_chip_info {
const struct coex_rf_para *wl_rf_para_tx; const struct coex_rf_para *wl_rf_para_tx;
const struct coex_rf_para *wl_rf_para_rx; const struct coex_rf_para *wl_rf_para_rx;
const struct coex_5g_afh_map *afh_5g; const struct coex_5g_afh_map *afh_5g;
const struct rtw_hw_reg *btg_reg;
const struct rtw_reg_domain *coex_info_hw_regs; const struct rtw_reg_domain *coex_info_hw_regs;
}; };
......
...@@ -2068,6 +2068,10 @@ static const u8 wl_rssi_step_8723d[] = {60, 50, 44, 30}; ...@@ -2068,6 +2068,10 @@ static const u8 wl_rssi_step_8723d[] = {60, 50, 44, 30};
static const u8 bt_rssi_step_8723d[] = {30, 30, 30, 30}; static const u8 bt_rssi_step_8723d[] = {30, 30, 30, 30};
static const struct coex_5g_afh_map afh_5g_8723d[] = { {0, 0, 0} }; static const struct coex_5g_afh_map afh_5g_8723d[] = { {0, 0, 0} };
static const struct rtw_hw_reg btg_reg_8723d = {
.addr = REG_BTG_SEL, .mask = BIT_MASK_BTG_WL,
};
/* wl_tx_dec_power, bt_tx_dec_power, wl_rx_gain, bt_rx_lna_constrain */ /* wl_tx_dec_power, bt_tx_dec_power, wl_rx_gain, bt_rx_lna_constrain */
static const struct coex_rf_para rf_para_tx_8723d[] = { static const struct coex_rf_para rf_para_tx_8723d[] = {
{0, 0, false, 7}, /* for normal */ {0, 0, false, 7}, /* for normal */
...@@ -2734,6 +2738,7 @@ struct rtw_chip_info rtw8723d_hw_spec = { ...@@ -2734,6 +2738,7 @@ struct rtw_chip_info rtw8723d_hw_spec = {
.bt_afh_span_bw40 = 0x30, .bt_afh_span_bw40 = 0x30,
.afh_5g_num = ARRAY_SIZE(afh_5g_8723d), .afh_5g_num = ARRAY_SIZE(afh_5g_8723d),
.afh_5g = afh_5g_8723d, .afh_5g = afh_5g_8723d,
.btg_reg = &btg_reg_8723d,
.coex_info_hw_regs_num = ARRAY_SIZE(coex_info_hw_regs_8723d), .coex_info_hw_regs_num = ARRAY_SIZE(coex_info_hw_regs_8723d),
.coex_info_hw_regs = coex_info_hw_regs_8723d, .coex_info_hw_regs = coex_info_hw_regs_8723d,
......
...@@ -145,6 +145,7 @@ static inline s32 iqk_mult(s32 x, s32 y, s32 *ext) ...@@ -145,6 +145,7 @@ static inline s32 iqk_mult(s32 x, s32 y, s32 *ext)
#define REG_GPIO_INTM 0x0048 #define REG_GPIO_INTM 0x0048
#define REG_BTG_SEL 0x0067 #define REG_BTG_SEL 0x0067
#define BIT_MASK_BTG_WL BIT(7)
#define REG_LTECOEX_PATH_CONTROL 0x0070 #define REG_LTECOEX_PATH_CONTROL 0x0070
#define REG_LTECOEX_CTRL 0x07c0 #define REG_LTECOEX_CTRL 0x07c0
#define REG_LTECOEX_WRITE_DATA 0x07c4 #define REG_LTECOEX_WRITE_DATA 0x07c4
......
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