rtlwifi: btcoex: Add switch band notify for btc
BT shares 2.4G band but not 5G band, so inform current band to btcoex to setup antenna properly. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Acked-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
66d0f9deba
commit
17bf851011
drivers/net/wireless/realtek/rtlwifi
@ -1910,3 +1910,16 @@ void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist,
|
|||||||
|
|
||||||
halbtc_normal_low_power(btcoexist);
|
halbtc_normal_low_power(btcoexist);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void exhalbtc_switch_band_notify(struct btc_coexist *btcoexist, u8 type)
|
||||||
|
{
|
||||||
|
if (!halbtc_is_bt_coexist_available(btcoexist))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (btcoexist->manual_control)
|
||||||
|
return;
|
||||||
|
|
||||||
|
halbtc_leave_low_power(btcoexist);
|
||||||
|
|
||||||
|
halbtc_normal_low_power(btcoexist);
|
||||||
|
}
|
||||||
|
@ -385,6 +385,14 @@ enum btc_notify_type_scan {
|
|||||||
BTC_SCAN_MAX
|
BTC_SCAN_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum btc_notify_type_switchband {
|
||||||
|
BTC_NOT_SWITCH = 0x0,
|
||||||
|
BTC_SWITCH_TO_24G = 0x1,
|
||||||
|
BTC_SWITCH_TO_5G = 0x2,
|
||||||
|
BTC_SWITCH_TO_24G_NOFORSCAN = 0x3,
|
||||||
|
BTC_SWITCH_MAX
|
||||||
|
};
|
||||||
|
|
||||||
enum btc_notify_type_associate {
|
enum btc_notify_type_associate {
|
||||||
BTC_ASSOCIATE_FINISH = 0x0,
|
BTC_ASSOCIATE_FINISH = 0x0,
|
||||||
BTC_ASSOCIATE_START = 0x1,
|
BTC_ASSOCIATE_START = 0x1,
|
||||||
@ -659,6 +667,7 @@ void exhalbtc_set_chip_type(struct btc_coexist *btcoexist, u8 chip_type);
|
|||||||
void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num);
|
void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num);
|
||||||
void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist,
|
void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist,
|
||||||
struct seq_file *m);
|
struct seq_file *m);
|
||||||
|
void exhalbtc_switch_band_notify(struct btc_coexist *btcoexist, u8 type);
|
||||||
void exhalbtc_signal_compensation(struct btc_coexist *btcoexist,
|
void exhalbtc_signal_compensation(struct btc_coexist *btcoexist,
|
||||||
u8 *rssi_wifi, u8 *rssi_bt);
|
u8 *rssi_wifi, u8 *rssi_bt);
|
||||||
void exhalbtc_lps_leave(struct btc_coexist *btcoexist);
|
void exhalbtc_lps_leave(struct btc_coexist *btcoexist);
|
||||||
|
@ -48,6 +48,7 @@ static struct rtl_btc_ops rtl_btc_operation = {
|
|||||||
.btc_is_disable_edca_turbo = rtl_btc_is_disable_edca_turbo,
|
.btc_is_disable_edca_turbo = rtl_btc_is_disable_edca_turbo,
|
||||||
.btc_is_bt_disabled = rtl_btc_is_bt_disabled,
|
.btc_is_bt_disabled = rtl_btc_is_bt_disabled,
|
||||||
.btc_special_packet_notify = rtl_btc_special_packet_notify,
|
.btc_special_packet_notify = rtl_btc_special_packet_notify,
|
||||||
|
.btc_switch_band_notify = rtl_btc_switch_band_notify,
|
||||||
.btc_record_pwr_mode = rtl_btc_record_pwr_mode,
|
.btc_record_pwr_mode = rtl_btc_record_pwr_mode,
|
||||||
.btc_get_lps_val = rtl_btc_get_lps_val,
|
.btc_get_lps_val = rtl_btc_get_lps_val,
|
||||||
.btc_get_rpwm_val = rtl_btc_get_rpwm_val,
|
.btc_get_rpwm_val = rtl_btc_get_rpwm_val,
|
||||||
@ -423,6 +424,32 @@ void rtl_btc_special_packet_notify(struct rtl_priv *rtlpriv, u8 pkt_type)
|
|||||||
return exhalbtc_special_packet_notify(btcoexist, pkt_type);
|
return exhalbtc_special_packet_notify(btcoexist, pkt_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rtl_btc_switch_band_notify(struct rtl_priv *rtlpriv, u8 band_type,
|
||||||
|
bool scanning)
|
||||||
|
{
|
||||||
|
struct btc_coexist *btcoexist = rtl_btc_coexist(rtlpriv);
|
||||||
|
u8 type = BTC_NOT_SWITCH;
|
||||||
|
|
||||||
|
if (!btcoexist)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (band_type) {
|
||||||
|
case BAND_ON_2_4G:
|
||||||
|
if (scanning)
|
||||||
|
type = BTC_SWITCH_TO_24G;
|
||||||
|
else
|
||||||
|
type = BTC_SWITCH_TO_24G_NOFORSCAN;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BAND_ON_5G:
|
||||||
|
type = BTC_SWITCH_TO_5G;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type != BTC_NOT_SWITCH)
|
||||||
|
exhalbtc_switch_band_notify(btcoexist, type);
|
||||||
|
}
|
||||||
|
|
||||||
struct rtl_btc_ops *rtl_btc_get_ops_pointer(void)
|
struct rtl_btc_ops *rtl_btc_get_ops_pointer(void)
|
||||||
{
|
{
|
||||||
return &rtl_btc_operation;
|
return &rtl_btc_operation;
|
||||||
|
@ -46,6 +46,8 @@ bool rtl_btc_is_limited_dig(struct rtl_priv *rtlpriv);
|
|||||||
bool rtl_btc_is_disable_edca_turbo(struct rtl_priv *rtlpriv);
|
bool rtl_btc_is_disable_edca_turbo(struct rtl_priv *rtlpriv);
|
||||||
bool rtl_btc_is_bt_disabled(struct rtl_priv *rtlpriv);
|
bool rtl_btc_is_bt_disabled(struct rtl_priv *rtlpriv);
|
||||||
void rtl_btc_special_packet_notify(struct rtl_priv *rtlpriv, u8 pkt_type);
|
void rtl_btc_special_packet_notify(struct rtl_priv *rtlpriv, u8 pkt_type);
|
||||||
|
void rtl_btc_switch_band_notify(struct rtl_priv *rtlpriv, u8 band_type,
|
||||||
|
bool scanning);
|
||||||
void rtl_btc_display_bt_coex_info(struct rtl_priv *rtlpriv, struct seq_file *m);
|
void rtl_btc_display_bt_coex_info(struct rtl_priv *rtlpriv, struct seq_file *m);
|
||||||
void rtl_btc_record_pwr_mode(struct rtl_priv *rtlpriv, u8 *buf, u8 len);
|
void rtl_btc_record_pwr_mode(struct rtl_priv *rtlpriv, u8 *buf, u8 len);
|
||||||
u8 rtl_btc_get_lps_val(struct rtl_priv *rtlpriv);
|
u8 rtl_btc_get_lps_val(struct rtl_priv *rtlpriv);
|
||||||
|
@ -2579,6 +2579,8 @@ struct rtl_btc_ops {
|
|||||||
bool (*btc_is_bt_disabled) (struct rtl_priv *rtlpriv);
|
bool (*btc_is_bt_disabled) (struct rtl_priv *rtlpriv);
|
||||||
void (*btc_special_packet_notify)(struct rtl_priv *rtlpriv,
|
void (*btc_special_packet_notify)(struct rtl_priv *rtlpriv,
|
||||||
u8 pkt_type);
|
u8 pkt_type);
|
||||||
|
void (*btc_switch_band_notify)(struct rtl_priv *rtlpriv, u8 type,
|
||||||
|
bool scanning);
|
||||||
void (*btc_display_bt_coex_info)(struct rtl_priv *rtlpriv,
|
void (*btc_display_bt_coex_info)(struct rtl_priv *rtlpriv,
|
||||||
struct seq_file *m);
|
struct seq_file *m);
|
||||||
void (*btc_record_pwr_mode)(struct rtl_priv *rtlpriv, u8 *buf, u8 len);
|
void (*btc_record_pwr_mode)(struct rtl_priv *rtlpriv, u8 *buf, u8 len);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user