linux/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b2ant.h
<<
>>
Prefs
   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
  26enum 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
  33enum 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
  43enum 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
  58struct 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
 116struct 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 *********************************************************************/
 163void ex_btc8723b2ant_init_hwconfig(struct btc_coexist *btcoexist);
 164void ex_btc8723b2ant_init_coex_dm(struct btc_coexist *btcoexist);
 165void ex_btc8723b2ant_ips_notify(struct btc_coexist *btcoexist, u8 type);
 166void ex_btc8723b2ant_lps_notify(struct btc_coexist *btcoexist, u8 type);
 167void ex_btc8723b2ant_scan_notify(struct btc_coexist *btcoexist, u8 type);
 168void ex_btc8723b2ant_connect_notify(struct btc_coexist *btcoexist, u8 type);
 169void ex_btc8723b2ant_media_status_notify(struct btc_coexist *btcoexist,
 170                                         u8 type);
 171void ex_btc8723b2ant_special_packet_notify(struct btc_coexist *btcoexist,
 172                                           u8 type);
 173void ex_btc8723b2ant_bt_info_notify(struct btc_coexist *btcoexist,
 174                                    u8 *tmpbuf, u8 length);
 175void ex_btc8723b2ant_halt_notify(struct btc_coexist *btcoexist);
 176void ex_btc8723b2ant_periodical(struct btc_coexist *btcoexist);
 177void ex_btc8723b2ant_display_coex_info(struct btc_coexist *btcoexist,
 178                                       struct seq_file *m);
 179void ex_btc8723b2ant_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state);
 180void ex_btc8723b2ant_pre_load_firmware(struct btc_coexist *btcoexist);
 181void ex_btc8723b2ant_power_on_setting(struct btc_coexist *btcoexist);
 182
 183#endif
 184