205 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/* Copyright(c) 2012 Realtek Corporation.*/3 4/**********************************************************************5 * The following is for 8723B 1ANT BT Co-exist definition6 **********************************************************************/7#define BT_INFO_8723B_1ANT_B_FTP BIT78#define BT_INFO_8723B_1ANT_B_A2DP BIT69#define BT_INFO_8723B_1ANT_B_HID BIT510#define BT_INFO_8723B_1ANT_B_SCO_BUSY BIT411#define BT_INFO_8723B_1ANT_B_ACL_BUSY BIT312#define BT_INFO_8723B_1ANT_B_INQ_PAGE BIT213#define BT_INFO_8723B_1ANT_B_SCO_ESCO BIT114#define BT_INFO_8723B_1ANT_B_CONNECTION BIT015 16#define BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_) \17 (((_BT_INFO_EXT_&BIT0)) ? true : false)18 19#define BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT 220 21#define BT_8723B_1ANT_WIFI_NOISY_THRESH 5022 23enum _BT_INFO_SRC_8723B_1ANT {24 BT_INFO_SRC_8723B_1ANT_WIFI_FW = 0x0,25 BT_INFO_SRC_8723B_1ANT_BT_RSP = 0x1,26 BT_INFO_SRC_8723B_1ANT_BT_ACTIVE_SEND = 0x2,27 BT_INFO_SRC_8723B_1ANT_MAX28};29 30enum _BT_8723B_1ANT_BT_STATUS {31 BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0,32 BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE = 0x1,33 BT_8723B_1ANT_BT_STATUS_INQ_PAGE = 0x2,34 BT_8723B_1ANT_BT_STATUS_ACL_BUSY = 0x3,35 BT_8723B_1ANT_BT_STATUS_SCO_BUSY = 0x4,36 BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY = 0x5,37 BT_8723B_1ANT_BT_STATUS_MAX38};39 40enum _BT_8723B_1ANT_WIFI_STATUS {41 BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE = 0x0,42 BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN = 0x1,43 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN = 0x2,44 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT = 0x3,45 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE = 0x4,46 BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY = 0x5,47 BT_8723B_1ANT_WIFI_STATUS_MAX48};49 50enum _BT_8723B_1ANT_COEX_ALGO {51 BT_8723B_1ANT_COEX_ALGO_UNDEFINED = 0x0,52 BT_8723B_1ANT_COEX_ALGO_SCO = 0x1,53 BT_8723B_1ANT_COEX_ALGO_HID = 0x2,54 BT_8723B_1ANT_COEX_ALGO_A2DP = 0x3,55 BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS = 0x4,56 BT_8723B_1ANT_COEX_ALGO_PANEDR = 0x5,57 BT_8723B_1ANT_COEX_ALGO_PANHS = 0x6,58 BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP = 0x7,59 BT_8723B_1ANT_COEX_ALGO_PANEDR_HID = 0x8,60 BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9,61 BT_8723B_1ANT_COEX_ALGO_HID_A2DP = 0xa,62 BT_8723B_1ANT_COEX_ALGO_MAX = 0xb,63};64 65struct coex_dm_8723b_1ant {66 /* hw setting */67 u8 pre_ant_pos_type;68 u8 cur_ant_pos_type;69 /* fw mechanism */70 bool cur_ignore_wlan_act;71 bool pre_ignore_wlan_act;72 u8 pre_ps_tdma;73 u8 cur_ps_tdma;74 u8 ps_tdma_para[5];75 u8 ps_tdma_du_adj_type;76 bool auto_tdma_adjust;77 bool pre_ps_tdma_on;78 bool cur_ps_tdma_on;79 bool pre_bt_auto_report;80 bool cur_bt_auto_report;81 u8 pre_lps;82 u8 cur_lps;83 u8 pre_rpwm;84 u8 cur_rpwm;85 86 /* sw mechanism */87 bool pre_low_penalty_ra;88 bool cur_low_penalty_ra;89 u32 pre_val0x6c0;90 u32 cur_val0x6c0;91 u32 pre_val0x6c4;92 u32 cur_val0x6c4;93 u32 pre_val0x6c8;94 u32 cur_val0x6c8;95 u8 pre_val0x6cc;96 u8 cur_val0x6cc;97 bool limited_dig;98 99 u32 backup_arfr_cnt1; /* Auto Rate Fallback Retry cnt */100 u32 backup_arfr_cnt2; /* Auto Rate Fallback Retry cnt */101 u16 backup_retry_limit;102 u8 backup_ampdu_max_time;103 104 /* algorithm related */105 u8 pre_algorithm;106 u8 cur_algorithm;107 u8 bt_status;108 u8 wifi_chnl_info[3];109 110 u32 prera_mask;111 u32 curra_mask;112 u8 pre_arfr_type;113 u8 cur_arfr_type;114 u8 pre_retry_limit_type;115 u8 cur_retry_limit_type;116 u8 pre_ampdu_time_type;117 u8 cur_ampdu_time_type;118 u32 arp_cnt;119 120 u8 error_condition;121};122 123struct coex_sta_8723b_1ant {124 bool bt_disabled;125 bool bt_link_exist;126 bool sco_exist;127 bool a2dp_exist;128 bool hid_exist;129 bool pan_exist;130 bool bt_hi_pri_link_exist;131 u8 num_of_profile;132 bool bt_abnormal_scan;133 134 bool under_lps;135 bool under_ips;136 u32 special_pkt_period_cnt;137 u32 high_priority_tx;138 u32 high_priority_rx;139 u32 low_priority_tx;140 u32 low_priority_rx;141 u8 bt_rssi;142 u8 pre_bt_rssi_state;143 u8 pre_wifi_rssi_state[4];144 bool bt_tx_rx_mask;145 bool c2h_bt_info_req_sent;146 u8 bt_info_c2h[BT_INFO_SRC_8723B_1ANT_MAX][10];147 u32 bt_info_c2h_cnt[BT_INFO_SRC_8723B_1ANT_MAX];148 bool bt_whck_test;149 bool c2h_bt_inquiry_page;150 bool c2h_bt_remote_name_req;151 bool wifi_is_high_pri_task;152 u8 bt_retry_cnt;153 u8 bt_info_ext;154 u8 scan_ap_num;155 bool cck_ever_lock;156 u8 coex_table_type;157 bool force_lps_on;158 u32 pop_event_cnt;159 160 u32 crc_ok_cck;161 u32 crc_ok_11g;162 u32 crc_ok_11n;163 u32 crc_ok_11n_agg;164 165 u32 crc_err_cck;166 u32 crc_err_11g;167 u32 crc_err_11n;168 u32 crc_err_11n_agg;169 170 bool cck_lock;171 bool pre_ccklock;172 173 u32 wrong_profile_notification;174 175 u8 a2dp_bit_pool;176 u8 cut_version;177};178 179/*************************************************************************180 * The following is interface which will notify coex module.181 *************************************************************************/182void ex_btc8723b1ant_power_on_setting(struct btc_coexist *btcoexist);183void ex_btc8723b1ant_init_hwconfig(struct btc_coexist *btcoexist,184 bool wifi_only);185void ex_btc8723b1ant_init_coex_dm(struct btc_coexist *btcoexist);186void ex_btc8723b1ant_ips_notify(struct btc_coexist *btcoexist, u8 type);187void ex_btc8723b1ant_lps_notify(struct btc_coexist *btcoexist, u8 type);188void ex_btc8723b1ant_scan_notify(struct btc_coexist *btcoexist, u8 type);189void ex_btc8723b1ant_connect_notify(struct btc_coexist *btcoexist, u8 type);190void ex_btc8723b1ant_media_status_notify(struct btc_coexist *btcoexist,191 u8 type);192void ex_btc8723b1ant_special_packet_notify(struct btc_coexist *btcoexist,193 u8 type);194void ex_btc8723b1ant_bt_info_notify(struct btc_coexist *btcoexist,195 u8 *tmpbuf, u8 length);196void ex_btc8723b1ant_rf_status_notify(struct btc_coexist *btcoexist,197 u8 type);198void ex_btc8723b1ant_halt_notify(struct btc_coexist *btcoexist);199void ex_btc8723b1ant_pnp_notify(struct btc_coexist *btcoexist, u8 pnpstate);200void ex_btc8723b1ant_coex_dm_reset(struct btc_coexist *btcoexist);201void ex_btc8723b1ant_periodical(struct btc_coexist *btcoexist);202void ex_btc8723b1ant_display_coex_info(struct btc_coexist *btcoexist,203 struct seq_file *m);204void ex_btc8723b1ant_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state);205