root/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b2ant.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /* Copyright(c) 2012  Realtek Corporation.*/
   3 
   4 #ifndef _HAL8723B_2_ANT
   5 #define _HAL8723B_2_ANT
   6 
   7 /************************************************************************
   8  * The following is for 8723B 2Ant BT Co-exist definition
   9  ************************************************************************/
  10 #define BT_INFO_8723B_2ANT_B_FTP                        BIT7
  11 #define BT_INFO_8723B_2ANT_B_A2DP                       BIT6
  12 #define BT_INFO_8723B_2ANT_B_HID                        BIT5
  13 #define BT_INFO_8723B_2ANT_B_SCO_BUSY                   BIT4
  14 #define BT_INFO_8723B_2ANT_B_ACL_BUSY                   BIT3
  15 #define BT_INFO_8723B_2ANT_B_INQ_PAGE                   BIT2
  16 #define BT_INFO_8723B_2ANT_B_SCO_ESCO                   BIT1
  17 #define BT_INFO_8723B_2ANT_B_CONNECTION                 BIT0
  18 
  19 #define BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT             2
  20 
  21 /* WiFi RSSI Threshold for 2-Ant TDMA/1-Ant PS-TDMA translation */
  22 #define BT_8723B_2ANT_WIFI_RSSI_COEXSWITCH_THRES        42
  23 /* BT RSSI Threshold for 2-Ant TDMA/1-Ant PS-TDMA translation */
  24 #define BT_8723B_2ANT_BT_RSSI_COEXSWITCH_THRES          46
  25 
  26 enum BT_INFO_SRC_8723B_2ANT {
  27         BT_INFO_SRC_8723B_2ANT_WIFI_FW                  = 0x0,
  28         BT_INFO_SRC_8723B_2ANT_BT_RSP                   = 0x1,
  29         BT_INFO_SRC_8723B_2ANT_BT_ACTIVE_SEND           = 0x2,
  30         BT_INFO_SRC_8723B_2ANT_MAX
  31 };
  32 
  33 enum BT_8723B_2ANT_BT_STATUS {
  34         BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE      = 0x0,
  35         BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE          = 0x1,
  36         BT_8723B_2ANT_BT_STATUS_INQ_PAGE                = 0x2,
  37         BT_8723B_2ANT_BT_STATUS_ACL_BUSY                = 0x3,
  38         BT_8723B_2ANT_BT_STATUS_SCO_BUSY                = 0x4,
  39         BT_8723B_2ANT_BT_STATUS_ACL_SCO_BUSY            = 0x5,
  40         BT_8723B_2ANT_BT_STATUS_MAX
  41 };
  42 
  43 enum BT_8723B_2ANT_COEX_ALGO {
  44         BT_8723B_2ANT_COEX_ALGO_UNDEFINED               = 0x0,
  45         BT_8723B_2ANT_COEX_ALGO_SCO                     = 0x1,
  46         BT_8723B_2ANT_COEX_ALGO_HID                     = 0x2,
  47         BT_8723B_2ANT_COEX_ALGO_A2DP                    = 0x3,
  48         BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS              = 0x4,
  49         BT_8723B_2ANT_COEX_ALGO_PANEDR                  = 0x5,
  50         BT_8723B_2ANT_COEX_ALGO_PANHS                   = 0x6,
  51         BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP             = 0x7,
  52         BT_8723B_2ANT_COEX_ALGO_PANEDR_HID              = 0x8,
  53         BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR         = 0x9,
  54         BT_8723B_2ANT_COEX_ALGO_HID_A2DP                = 0xa,
  55         BT_8723B_2ANT_COEX_ALGO_MAX                     = 0xb,
  56 };
  57 
  58 struct coex_dm_8723b_2ant {
  59         /* fw mechanism */
  60         bool pre_dec_bt_pwr_lvl;
  61         bool cur_dec_bt_pwr_lvl;
  62         u8 pre_fw_dac_swing_lvl;
  63         u8 cur_fw_dac_swing_lvl;
  64         bool cur_ignore_wlan_act;
  65         bool pre_ignore_wlan_act;
  66         u8 pre_ps_tdma;
  67         u8 cur_ps_tdma;
  68         u8 ps_tdma_para[5];
  69         u8 ps_tdma_du_adj_type;
  70         bool reset_tdma_adjust;
  71         bool auto_tdma_adjust;
  72         bool pre_ps_tdma_on;
  73         bool cur_ps_tdma_on;
  74         bool pre_bt_auto_report;
  75         bool cur_bt_auto_report;
  76 
  77         /* sw mechanism */
  78         bool pre_rf_rx_lpf_shrink;
  79         bool cur_rf_rx_lpf_shrink;
  80         u32 bt_rf0x1e_backup;
  81         bool pre_low_penalty_ra;
  82         bool cur_low_penalty_ra;
  83         bool pre_dac_swing_on;
  84         u32 pre_dac_swing_lvl;
  85         bool cur_dac_swing_on;
  86         u32 cur_dac_swing_lvl;
  87         bool pre_adc_back_off;
  88         bool cur_adc_back_off;
  89         bool pre_agc_table_en;
  90         bool cur_agc_table_en;
  91         u32 pre_val0x6c0;
  92         u32 cur_val0x6c0;
  93         u32 pre_val0x6c4;
  94         u32 cur_val0x6c4;
  95         u32 pre_val0x6c8;
  96         u32 cur_val0x6c8;
  97         u8 pre_val0x6cc;
  98         u8 cur_val0x6cc;
  99         bool limited_dig;
 100 
 101         /* algorithm related */
 102         u8 pre_algorithm;
 103         u8 cur_algorithm;
 104         u8 bt_status;
 105         u8 wifi_chnl_info[3];
 106 
 107         u8 pre_lps;
 108         u8 cur_lps;
 109         u8 pre_rpwm;
 110         u8 cur_rpwm;
 111 
 112         bool is_switch_to_1dot5_ant;
 113         u8 switch_thres_offset;
 114 };
 115 
 116 struct coex_sta_8723b_2ant {
 117         bool bt_link_exist;
 118         bool sco_exist;
 119         bool a2dp_exist;
 120         bool hid_exist;
 121         bool pan_exist;
 122         bool bt_abnormal_scan;
 123 
 124         bool under_lps;
 125         bool under_ips;
 126         u32 high_priority_tx;
 127         u32 high_priority_rx;
 128         u32 low_priority_tx;
 129         u32 low_priority_rx;
 130         u8 bt_rssi;
 131         bool bt_tx_rx_mask;
 132         u8 pre_bt_rssi_state;
 133         u8 pre_wifi_rssi_state[4];
 134         bool c2h_bt_info_req_sent;
 135         u8 bt_info_c2h[BT_INFO_SRC_8723B_2ANT_MAX][10];
 136         u32 bt_info_c2h_cnt[BT_INFO_SRC_8723B_2ANT_MAX];
 137         bool c2h_bt_inquiry_page;
 138         bool c2h_bt_remote_name_req;
 139         u8 bt_retry_cnt;
 140         u8 bt_info_ext;
 141         u32 pop_event_cnt;
 142         u8 scan_ap_num;
 143 
 144         u32 crc_ok_cck;
 145         u32 crc_ok_11g;
 146         u32 crc_ok_11n;
 147         u32 crc_ok_11n_agg;
 148 
 149         u32 crc_err_cck;
 150         u32 crc_err_11g;
 151         u32 crc_err_11n;
 152         u32 crc_err_11n_agg;
 153         bool force_lps_on;
 154 
 155         u8 dis_ver_info_cnt;
 156 
 157         u8 a2dp_bit_pool;
 158 };
 159 
 160 /*********************************************************************
 161  * The following is interface which will notify coex module.
 162  *********************************************************************/
 163 void ex_btc8723b2ant_init_hwconfig(struct btc_coexist *btcoexist);
 164 void ex_btc8723b2ant_init_coex_dm(struct btc_coexist *btcoexist);
 165 void ex_btc8723b2ant_ips_notify(struct btc_coexist *btcoexist, u8 type);
 166 void ex_btc8723b2ant_lps_notify(struct btc_coexist *btcoexist, u8 type);
 167 void ex_btc8723b2ant_scan_notify(struct btc_coexist *btcoexist, u8 type);
 168 void ex_btc8723b2ant_connect_notify(struct btc_coexist *btcoexist, u8 type);
 169 void ex_btc8723b2ant_media_status_notify(struct btc_coexist *btcoexist,
 170                                          u8 type);
 171 void ex_btc8723b2ant_special_packet_notify(struct btc_coexist *btcoexist,
 172                                            u8 type);
 173 void ex_btc8723b2ant_bt_info_notify(struct btc_coexist *btcoexist,
 174                                     u8 *tmpbuf, u8 length);
 175 void ex_btc8723b2ant_halt_notify(struct btc_coexist *btcoexist);
 176 void ex_btc8723b2ant_periodical(struct btc_coexist *btcoexist);
 177 void ex_btc8723b2ant_display_coex_info(struct btc_coexist *btcoexist,
 178                                        struct seq_file *m);
 179 void ex_btc8723b2ant_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state);
 180 void ex_btc8723b2ant_pre_load_firmware(struct btc_coexist *btcoexist);
 181 void ex_btc8723b2ant_power_on_setting(struct btc_coexist *btcoexist);
 182 
 183 #endif

/* [<][>][^][v][top][bottom][index][help] */