linux/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
<<
>>
Prefs
   1/******************************************************************************
   2 *
   3 * Copyright(c) 2009-2012  Realtek Corporation.
   4 *
   5 * This program is free software; you can redistribute it and/or modify it
   6 * under the terms of version 2 of the GNU General Public License as
   7 * published by the Free Software Foundation.
   8 *
   9 * This program is distributed in the hope that it will be useful, but WITHOUT
  10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  12 * more details.
  13 *
  14 * The full GNU General Public License is included in this distribution in the
  15 * file called LICENSE.
  16 *
  17 * Contact Information:
  18 * wlanfae <wlanfae@realtek.com>
  19 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
  20 * Hsinchu 300, Taiwan.
  21 *
  22 * Larry Finger <Larry.Finger@lwfinger.net>
  23 *
  24 *****************************************************************************/
  25#ifndef __HALBTC_OUT_SRC_H__
  26#define __HALBTC_OUT_SRC_H__
  27
  28#include        "../wifi.h"
  29
  30#define         NORMAL_EXEC                             false
  31#define         FORCE_EXEC                              true
  32
  33#define         BTC_RF_OFF                              0x0
  34#define         BTC_RF_ON                               0x1
  35
  36#define         BTC_RF_A                                RF90_PATH_A
  37#define         BTC_RF_B                                RF90_PATH_B
  38#define         BTC_RF_C                                RF90_PATH_C
  39#define         BTC_RF_D                                RF90_PATH_D
  40
  41#define         BTC_SMSP                                SINGLEMAC_SINGLEPHY
  42#define         BTC_DMDP                                DUALMAC_DUALPHY
  43#define         BTC_DMSP                                DUALMAC_SINGLEPHY
  44#define         BTC_MP_UNKNOWN                          0xff
  45
  46#define         IN
  47#define         OUT
  48
  49#define         BT_TMP_BUF_SIZE                         100
  50
  51#define         BT_COEX_ANT_TYPE_PG                     0
  52#define         BT_COEX_ANT_TYPE_ANTDIV                 1
  53#define         BT_COEX_ANT_TYPE_DETECTED               2
  54
  55#define         BTC_MIMO_PS_STATIC                      0
  56#define         BTC_MIMO_PS_DYNAMIC                     1
  57
  58#define         BTC_RATE_DISABLE                        0
  59#define         BTC_RATE_ENABLE                         1
  60
  61/* single Antenna definition */
  62#define         BTC_ANT_PATH_WIFI                       0
  63#define         BTC_ANT_PATH_BT                         1
  64#define         BTC_ANT_PATH_PTA                        2
  65/* dual Antenna definition */
  66#define         BTC_ANT_WIFI_AT_MAIN                    0
  67#define         BTC_ANT_WIFI_AT_AUX                     1
  68/* coupler Antenna definition */
  69#define         BTC_ANT_WIFI_AT_CPL_MAIN                0
  70#define         BTC_ANT_WIFI_AT_CPL_AUX                 1
  71
  72enum btc_bt_reg_type {
  73        BTC_BT_REG_RF           = 0,
  74        BTC_BT_REG_MODEM        = 1,
  75        BTC_BT_REG_BLUEWIZE     = 2,
  76        BTC_BT_REG_VENDOR       = 3,
  77        BTC_BT_REG_LE           = 4,
  78        BTC_BT_REG_MAX
  79};
  80
  81enum btc_chip_interface {
  82        BTC_INTF_UNKNOWN        = 0,
  83        BTC_INTF_PCI            = 1,
  84        BTC_INTF_USB            = 2,
  85        BTC_INTF_SDIO           = 3,
  86        BTC_INTF_GSPI           = 4,
  87        BTC_INTF_MAX
  88};
  89
  90enum btc_chip_type {
  91        BTC_CHIP_UNDEF          = 0,
  92        BTC_CHIP_CSR_BC4        = 1,
  93        BTC_CHIP_CSR_BC8        = 2,
  94        BTC_CHIP_RTL8723A       = 3,
  95        BTC_CHIP_RTL8821        = 4,
  96        BTC_CHIP_RTL8723B       = 5,
  97        BTC_CHIP_MAX
  98};
  99
 100enum btc_msg_type {
 101        BTC_MSG_INTERFACE       = 0x0,
 102        BTC_MSG_ALGORITHM       = 0x1,
 103        BTC_MSG_MAX
 104};
 105
 106extern u32 btc_dbg_type[];
 107
 108/* following is for BTC_MSG_INTERFACE */
 109#define         INTF_INIT                               BIT0
 110#define         INTF_NOTIFY                             BIT2
 111
 112/* following is for BTC_ALGORITHM */
 113#define         ALGO_BT_RSSI_STATE                      BIT0
 114#define         ALGO_WIFI_RSSI_STATE                    BIT1
 115#define         ALGO_BT_MONITOR                         BIT2
 116#define         ALGO_TRACE                              BIT3
 117#define         ALGO_TRACE_FW                           BIT4
 118#define         ALGO_TRACE_FW_DETAIL                    BIT5
 119#define         ALGO_TRACE_FW_EXEC                      BIT6
 120#define         ALGO_TRACE_SW                           BIT7
 121#define         ALGO_TRACE_SW_DETAIL                    BIT8
 122#define         ALGO_TRACE_SW_EXEC                      BIT9
 123
 124/* following is for wifi link status */
 125#define         WIFI_STA_CONNECTED                      BIT0
 126#define         WIFI_AP_CONNECTED                       BIT1
 127#define         WIFI_HS_CONNECTED                       BIT2
 128#define         WIFI_P2P_GO_CONNECTED                   BIT3
 129#define         WIFI_P2P_GC_CONNECTED                   BIT4
 130
 131#define BTC_RSSI_HIGH(_rssi_)   \
 132        ((_rssi_ == BTC_RSSI_STATE_HIGH ||      \
 133          _rssi_ == BTC_RSSI_STATE_STAY_HIGH) ? true : false)
 134#define BTC_RSSI_MEDIUM(_rssi_) \
 135        ((_rssi_ == BTC_RSSI_STATE_MEDIUM ||    \
 136          _rssi_ == BTC_RSSI_STATE_STAY_MEDIUM) ? true : false)
 137#define BTC_RSSI_LOW(_rssi_)    \
 138        ((_rssi_ == BTC_RSSI_STATE_LOW ||       \
 139          _rssi_ == BTC_RSSI_STATE_STAY_LOW) ? true : false)
 140
 141enum btc_power_save_type {
 142        BTC_PS_WIFI_NATIVE = 0,
 143        BTC_PS_LPS_ON = 1,
 144        BTC_PS_LPS_OFF = 2,
 145        BTC_PS_LPS_MAX
 146};
 147
 148struct btc_board_info {
 149        /* The following is some board information */
 150        u8 bt_chip_type;
 151        u8 pg_ant_num;  /* pg ant number */
 152        u8 btdm_ant_num;        /* ant number for btdm */
 153        u8 btdm_ant_pos;
 154        u8 single_ant_path; /* current used for 8723b only, 1=>s0,  0=>s1 */
 155        bool bt_exist;
 156        bool tfbga_package;
 157};
 158
 159enum btc_dbg_opcode {
 160        BTC_DBG_SET_COEX_NORMAL = 0x0,
 161        BTC_DBG_SET_COEX_WIFI_ONLY = 0x1,
 162        BTC_DBG_SET_COEX_BT_ONLY = 0x2,
 163        BTC_DBG_MAX
 164};
 165
 166enum btc_rssi_state {
 167        BTC_RSSI_STATE_HIGH = 0x0,
 168        BTC_RSSI_STATE_MEDIUM = 0x1,
 169        BTC_RSSI_STATE_LOW = 0x2,
 170        BTC_RSSI_STATE_STAY_HIGH = 0x3,
 171        BTC_RSSI_STATE_STAY_MEDIUM = 0x4,
 172        BTC_RSSI_STATE_STAY_LOW = 0x5,
 173        BTC_RSSI_MAX
 174};
 175
 176enum btc_wifi_role {
 177        BTC_ROLE_STATION = 0x0,
 178        BTC_ROLE_AP = 0x1,
 179        BTC_ROLE_IBSS = 0x2,
 180        BTC_ROLE_HS_MODE = 0x3,
 181        BTC_ROLE_MAX
 182};
 183
 184enum btc_wifi_bw_mode {
 185        BTC_WIFI_BW_LEGACY = 0x0,
 186        BTC_WIFI_BW_HT20 = 0x1,
 187        BTC_WIFI_BW_HT40 = 0x2,
 188        BTC_WIFI_BW_MAX
 189};
 190
 191enum btc_wifi_traffic_dir {
 192        BTC_WIFI_TRAFFIC_TX = 0x0,
 193        BTC_WIFI_TRAFFIC_RX = 0x1,
 194        BTC_WIFI_TRAFFIC_MAX
 195};
 196
 197enum btc_wifi_pnp {
 198        BTC_WIFI_PNP_WAKE_UP = 0x0,
 199        BTC_WIFI_PNP_SLEEP = 0x1,
 200        BTC_WIFI_PNP_MAX
 201};
 202
 203enum btc_iot_peer {
 204        BTC_IOT_PEER_UNKNOWN = 0,
 205        BTC_IOT_PEER_REALTEK = 1,
 206        BTC_IOT_PEER_REALTEK_92SE = 2,
 207        BTC_IOT_PEER_BROADCOM = 3,
 208        BTC_IOT_PEER_RALINK = 4,
 209        BTC_IOT_PEER_ATHEROS = 5,
 210        BTC_IOT_PEER_CISCO = 6,
 211        BTC_IOT_PEER_MERU = 7,
 212        BTC_IOT_PEER_MARVELL = 8,
 213        BTC_IOT_PEER_REALTEK_SOFTAP = 9,
 214        BTC_IOT_PEER_SELF_SOFTAP = 10, /* Self is SoftAP */
 215        BTC_IOT_PEER_AIRGO = 11,
 216        BTC_IOT_PEER_REALTEK_JAGUAR_BCUTAP = 12,
 217        BTC_IOT_PEER_REALTEK_JAGUAR_CCUTAP = 13,
 218        BTC_IOT_PEER_MAX,
 219};
 220
 221/* for 8723b-d cut large current issue */
 222enum bt_wifi_coex_state {
 223        BTC_WIFI_STAT_INIT,
 224        BTC_WIFI_STAT_IQK,
 225        BTC_WIFI_STAT_NORMAL_OFF,
 226        BTC_WIFI_STAT_MP_OFF,
 227        BTC_WIFI_STAT_NORMAL,
 228        BTC_WIFI_STAT_ANT_DIV,
 229        BTC_WIFI_STAT_MAX
 230};
 231
 232enum bt_ant_type {
 233        BTC_ANT_TYPE_0,
 234        BTC_ANT_TYPE_1,
 235        BTC_ANT_TYPE_2,
 236        BTC_ANT_TYPE_3,
 237        BTC_ANT_TYPE_4,
 238        BTC_ANT_TYPE_MAX
 239};
 240
 241enum btc_get_type {
 242        /* type bool */
 243        BTC_GET_BL_HS_OPERATION,
 244        BTC_GET_BL_HS_CONNECTING,
 245        BTC_GET_BL_WIFI_CONNECTED,
 246        BTC_GET_BL_WIFI_BUSY,
 247        BTC_GET_BL_WIFI_SCAN,
 248        BTC_GET_BL_WIFI_LINK,
 249        BTC_GET_BL_WIFI_DHCP,
 250        BTC_GET_BL_WIFI_SOFTAP_IDLE,
 251        BTC_GET_BL_WIFI_SOFTAP_LINKING,
 252        BTC_GET_BL_WIFI_IN_EARLY_SUSPEND,
 253        BTC_GET_BL_WIFI_ROAM,
 254        BTC_GET_BL_WIFI_4_WAY_PROGRESS,
 255        BTC_GET_BL_WIFI_UNDER_5G,
 256        BTC_GET_BL_WIFI_AP_MODE_ENABLE,
 257        BTC_GET_BL_WIFI_ENABLE_ENCRYPTION,
 258        BTC_GET_BL_WIFI_UNDER_B_MODE,
 259        BTC_GET_BL_EXT_SWITCH,
 260        BTC_GET_BL_WIFI_IS_IN_MP_MODE,
 261        BTC_GET_BL_IS_ASUS_8723B,
 262        BTC_GET_BL_FW_READY,
 263        BTC_GET_BL_RF4CE_CONNECTED,
 264
 265        /* type s4Byte */
 266        BTC_GET_S4_WIFI_RSSI,
 267        BTC_GET_S4_HS_RSSI,
 268
 269        /* type u32 */
 270        BTC_GET_U4_WIFI_BW,
 271        BTC_GET_U4_WIFI_TRAFFIC_DIRECTION,
 272        BTC_GET_U4_WIFI_FW_VER,
 273        BTC_GET_U4_WIFI_LINK_STATUS,
 274        BTC_GET_U4_BT_PATCH_VER,
 275        BTC_GET_U4_VENDOR,
 276        BTC_GET_U4_SUPPORTED_VERSION,
 277        BTC_GET_U4_SUPPORTED_FEATURE,
 278        BTC_GET_U4_WIFI_IQK_TOTAL,
 279        BTC_GET_U4_WIFI_IQK_OK,
 280        BTC_GET_U4_WIFI_IQK_FAIL,
 281
 282        /* type u1Byte */
 283        BTC_GET_U1_WIFI_DOT11_CHNL,
 284        BTC_GET_U1_WIFI_CENTRAL_CHNL,
 285        BTC_GET_U1_WIFI_HS_CHNL,
 286        BTC_GET_U1_MAC_PHY_MODE,
 287        BTC_GET_U1_AP_NUM,
 288        BTC_GET_U1_ANT_TYPE,
 289        BTC_GET_U1_IOT_PEER,
 290
 291        /* for 1Ant */
 292        BTC_GET_U1_LPS_MODE,
 293        BTC_GET_BL_BT_SCO_BUSY,
 294
 295        /* for test mode */
 296        BTC_GET_DRIVER_TEST_CFG,
 297        BTC_GET_MAX
 298};
 299
 300enum btc_vendor {
 301        BTC_VENDOR_LENOVO,
 302        BTC_VENDOR_ASUS,
 303        BTC_VENDOR_OTHER
 304};
 305
 306enum btc_set_type {
 307        /* type bool */
 308        BTC_SET_BL_BT_DISABLE,
 309        BTC_SET_BL_BT_TRAFFIC_BUSY,
 310        BTC_SET_BL_BT_LIMITED_DIG,
 311        BTC_SET_BL_FORCE_TO_ROAM,
 312        BTC_SET_BL_TO_REJ_AP_AGG_PKT,
 313        BTC_SET_BL_BT_CTRL_AGG_SIZE,
 314        BTC_SET_BL_INC_SCAN_DEV_NUM,
 315        BTC_SET_BL_BT_TX_RX_MASK,
 316        BTC_SET_BL_MIRACAST_PLUS_BT,
 317
 318        /* type u1Byte */
 319        BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON,
 320        BTC_SET_UI_SCAN_SIG_COMPENSATION,
 321        BTC_SET_U1_AGG_BUF_SIZE,
 322
 323        /* type trigger some action */
 324        BTC_SET_ACT_GET_BT_RSSI,
 325        BTC_SET_ACT_AGGREGATE_CTRL,
 326        BTC_SET_ACT_ANTPOSREGRISTRY_CTRL,
 327
 328        /********* for 1Ant **********/
 329        /* type bool */
 330        BTC_SET_BL_BT_SCO_BUSY,
 331        /* type u1Byte */
 332        BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE,
 333        BTC_SET_U1_LPS_VAL,
 334        BTC_SET_U1_RPWM_VAL,
 335        BTC_SET_U1_1ANT_LPS,
 336        BTC_SET_U1_1ANT_RPWM,
 337        /* type trigger some action */
 338        BTC_SET_ACT_LEAVE_LPS,
 339        BTC_SET_ACT_ENTER_LPS,
 340        BTC_SET_ACT_NORMAL_LPS,
 341        BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT,
 342        BTC_SET_ACT_DISABLE_LOW_POWER,
 343        BTC_SET_ACT_UPDATE_RAMASK,
 344        BTC_SET_ACT_SEND_MIMO_PS,
 345        /* BT Coex related */
 346        BTC_SET_ACT_CTRL_BT_INFO,
 347        BTC_SET_ACT_CTRL_BT_COEX,
 348        BTC_SET_ACT_CTRL_8723B_ANT,
 349        /***************************/
 350        BTC_SET_MAX
 351};
 352
 353enum btc_dbg_disp_type {
 354        BTC_DBG_DISP_COEX_STATISTICS = 0x0,
 355        BTC_DBG_DISP_BT_LINK_INFO = 0x1,
 356        BTC_DBG_DISP_BT_FW_VER = 0x2,
 357        BTC_DBG_DISP_FW_PWR_MODE_CMD = 0x3,
 358        BTC_DBG_DISP_MAX
 359};
 360
 361enum btc_notify_type_ips {
 362        BTC_IPS_LEAVE = 0x0,
 363        BTC_IPS_ENTER = 0x1,
 364        BTC_IPS_MAX
 365};
 366
 367enum btc_notify_type_lps {
 368        BTC_LPS_DISABLE = 0x0,
 369        BTC_LPS_ENABLE = 0x1,
 370        BTC_LPS_MAX
 371};
 372
 373enum btc_notify_type_scan {
 374        BTC_SCAN_FINISH = 0x0,
 375        BTC_SCAN_START = 0x1,
 376        BTC_SCAN_MAX
 377};
 378
 379enum btc_notify_type_associate {
 380        BTC_ASSOCIATE_FINISH = 0x0,
 381        BTC_ASSOCIATE_START = 0x1,
 382        BTC_ASSOCIATE_MAX
 383};
 384
 385enum btc_notify_type_media_status {
 386        BTC_MEDIA_DISCONNECT = 0x0,
 387        BTC_MEDIA_CONNECT = 0x1,
 388        BTC_MEDIA_MAX
 389};
 390
 391enum btc_notify_type_special_packet {
 392        BTC_PACKET_UNKNOWN = 0x0,
 393        BTC_PACKET_DHCP = 0x1,
 394        BTC_PACKET_ARP = 0x2,
 395        BTC_PACKET_EAPOL = 0x3,
 396        BTC_PACKET_MAX
 397};
 398
 399enum hci_ext_bt_operation {
 400        HCI_BT_OP_NONE = 0x0,
 401        HCI_BT_OP_INQUIRY_START = 0x1,
 402        HCI_BT_OP_INQUIRY_FINISH = 0x2,
 403        HCI_BT_OP_PAGING_START = 0x3,
 404        HCI_BT_OP_PAGING_SUCCESS = 0x4,
 405        HCI_BT_OP_PAGING_UNSUCCESS = 0x5,
 406        HCI_BT_OP_PAIRING_START = 0x6,
 407        HCI_BT_OP_PAIRING_FINISH = 0x7,
 408        HCI_BT_OP_BT_DEV_ENABLE = 0x8,
 409        HCI_BT_OP_BT_DEV_DISABLE = 0x9,
 410        HCI_BT_OP_MAX
 411};
 412
 413enum btc_notify_type_stack_operation {
 414        BTC_STACK_OP_NONE = 0x0,
 415        BTC_STACK_OP_INQ_PAGE_PAIR_START = 0x1,
 416        BTC_STACK_OP_INQ_PAGE_PAIR_FINISH = 0x2,
 417        BTC_STACK_OP_MAX
 418};
 419
 420typedef u8 (*bfp_btc_r1)(void *btc_context, u32 reg_addr);
 421
 422typedef u16 (*bfp_btc_r2)(void *btc_context, u32 reg_addr);
 423
 424typedef u32 (*bfp_btc_r4)(void *btc_context, u32 reg_addr);
 425
 426typedef void (*bfp_btc_w1)(void *btc_context, u32 reg_addr, u32 data);
 427
 428typedef void (*bfp_btc_w1_bit_mak)(void *btc_context, u32 reg_addr,
 429                                   u32 bit_mask, u8 data1b);
 430
 431typedef void (*bfp_btc_w2)(void *btc_context, u32 reg_addr, u16 data);
 432
 433typedef void (*bfp_btc_w4)(void *btc_context, u32 reg_addr, u32 data);
 434
 435typedef void (*bfp_btc_local_reg_w1)(void *btc_context, u32 reg_addr, u8 data);
 436typedef void (*bfp_btc_wr_1byte_bit_mask)(void *btc_context, u32 reg_addr,
 437                                          u8 bit_mask, u8 data);
 438
 439typedef void (*bfp_btc_set_bb_reg)(void *btc_context, u32 reg_addr,
 440                                   u32 bit_mask, u32 data);
 441
 442typedef u32 (*bfp_btc_get_bb_reg)(void *btc_context, u32 reg_addr,
 443                                  u32 bit_mask);
 444
 445typedef void (*bfp_btc_set_rf_reg)(void *btc_context, u8 rf_path, u32 reg_addr,
 446                                   u32 bit_mask, u32 data);
 447
 448typedef u32 (*bfp_btc_get_rf_reg)(void *btc_context, u8 rf_path,
 449                                  u32 reg_addr, u32 bit_mask);
 450
 451typedef void (*bfp_btc_fill_h2c)(void *btc_context, u8 element_id,
 452                                 u32 cmd_len, u8 *cmd_buffer);
 453
 454typedef bool (*bfp_btc_get)(void *btcoexist, u8 get_type, void *out_buf);
 455
 456typedef bool (*bfp_btc_set)(void *btcoexist, u8 set_type, void *in_buf);
 457
 458typedef void (*bfp_btc_set_bt_reg)(void *btc_context, u8 reg_type, u32 offset,
 459                                   u32 value);
 460
 461typedef void (*bfp_btc_disp_dbg_msg)(void *btcoexist, u8 disp_type);
 462
 463struct btc_bt_info {
 464        bool bt_disabled;
 465        u8 rssi_adjust_for_agc_table_on;
 466        u8 rssi_adjust_for_1ant_coex_type;
 467        bool pre_bt_ctrl_agg_buf_size;
 468        bool bt_busy;
 469        u8 pre_agg_buf_size;
 470        u8 agg_buf_size;
 471        bool limited_dig;
 472        bool pre_reject_agg_pkt;
 473        bool reject_agg_pkt;
 474        bool bt_ctrl_buf_size;
 475        bool increase_scan_dev_num;
 476        bool miracast_plus_bt;
 477        bool bt_ctrl_agg_buf_size;
 478        bool bt_tx_rx_mask;
 479        u16 bt_hci_ver;
 480        u16 bt_real_fw_ver;
 481        u8 bt_fw_ver;
 482
 483        bool bt_disable_low_pwr;
 484
 485        /* the following is for 1Ant solution */
 486        bool bt_ctrl_lps;
 487        bool bt_pwr_save_mode;
 488        bool bt_lps_on;
 489        bool force_to_roam;
 490        u8 force_exec_pwr_cmd_cnt;
 491        u8 lps_val;
 492        u8 rpwm_val;
 493        u32 ra_mask;
 494};
 495
 496struct btc_stack_info {
 497        bool profile_notified;
 498        u16 hci_version;        /* stack hci version */
 499        u8 num_of_link;
 500        bool bt_link_exist;
 501        bool sco_exist;
 502        bool acl_exist;
 503        bool a2dp_exist;
 504        bool hid_exist;
 505        u8 num_of_hid;
 506        bool pan_exist;
 507        bool unknown_acl_exist;
 508        s8 min_bt_rssi;
 509};
 510
 511struct btc_statistics {
 512        u32 cnt_bind;
 513        u32 cnt_init_hw_config;
 514        u32 cnt_init_coex_dm;
 515        u32 cnt_ips_notify;
 516        u32 cnt_lps_notify;
 517        u32 cnt_scan_notify;
 518        u32 cnt_connect_notify;
 519        u32 cnt_media_status_notify;
 520        u32 cnt_special_packet_notify;
 521        u32 cnt_bt_info_notify;
 522        u32 cnt_periodical;
 523        u32 cnt_coex_dm_switch;
 524        u32 cnt_stack_operation_notify;
 525        u32 cnt_dbg_ctrl;
 526        u32 cnt_pre_load_firmware;
 527        u32 cnt_power_on;
 528};
 529
 530struct btc_bt_link_info {
 531        bool bt_link_exist;
 532        bool bt_hi_pri_link_exist;
 533        bool sco_exist;
 534        bool sco_only;
 535        bool a2dp_exist;
 536        bool a2dp_only;
 537        bool hid_exist;
 538        bool hid_only;
 539        bool pan_exist;
 540        bool pan_only;
 541        bool slave_role;
 542};
 543
 544enum btc_antenna_pos {
 545        BTC_ANTENNA_AT_MAIN_PORT = 0x1,
 546        BTC_ANTENNA_AT_AUX_PORT = 0x2,
 547};
 548
 549struct btc_coexist {
 550        /* make sure only one adapter can bind the data context  */
 551        bool binded;
 552        /* default adapter */
 553        void *adapter;
 554        struct btc_board_info board_info;
 555        /* some bt info referenced by non-bt module */
 556        struct btc_bt_info bt_info;
 557        struct btc_stack_info stack_info;
 558        enum btc_chip_interface chip_interface;
 559        struct btc_bt_link_info bt_link_info;
 560
 561        /* boolean variables to replace BT_AUTO_REPORT_ONLY_XXXXY_ZANT
 562         * configuration parameters
 563         */
 564        bool auto_report_1ant;
 565        bool auto_report_2ant;
 566        bool initilized;
 567        bool stop_coex_dm;
 568        bool manual_control;
 569        struct btc_statistics statistics;
 570        u8 pwr_mode_val[10];
 571
 572        /* function pointers - io related */
 573        bfp_btc_r1 btc_read_1byte;
 574        bfp_btc_w1 btc_write_1byte;
 575        bfp_btc_w1_bit_mak btc_write_1byte_bitmask;
 576        bfp_btc_r2 btc_read_2byte;
 577        bfp_btc_w2 btc_write_2byte;
 578        bfp_btc_r4 btc_read_4byte;
 579        bfp_btc_w4 btc_write_4byte;
 580        bfp_btc_local_reg_w1 btc_write_local_reg_1byte;
 581
 582        bfp_btc_set_bb_reg btc_set_bb_reg;
 583        bfp_btc_get_bb_reg btc_get_bb_reg;
 584
 585        bfp_btc_set_rf_reg btc_set_rf_reg;
 586        bfp_btc_get_rf_reg btc_get_rf_reg;
 587
 588        bfp_btc_fill_h2c btc_fill_h2c;
 589
 590        bfp_btc_disp_dbg_msg btc_disp_dbg_msg;
 591
 592        bfp_btc_get btc_get;
 593        bfp_btc_set btc_set;
 594
 595        bfp_btc_set_bt_reg btc_set_bt_reg;
 596};
 597
 598bool halbtc_is_wifi_uplink(struct rtl_priv *adapter);
 599
 600extern struct btc_coexist gl_bt_coexist;
 601
 602bool exhalbtc_initlize_variables(void);
 603bool exhalbtc_bind_bt_coex_withadapter(void *adapter);
 604void exhalbtc_init_hw_config(struct btc_coexist *btcoexist, bool wifi_only);
 605void exhalbtc_init_coex_dm(struct btc_coexist *btcoexist);
 606void exhalbtc_ips_notify(struct btc_coexist *btcoexist, u8 type);
 607void exhalbtc_lps_notify(struct btc_coexist *btcoexist, u8 type);
 608void exhalbtc_scan_notify(struct btc_coexist *btcoexist, u8 type);
 609void exhalbtc_connect_notify(struct btc_coexist *btcoexist, u8 action);
 610void exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist,
 611                                 enum rt_media_status media_status);
 612void exhalbtc_special_packet_notify(struct btc_coexist *btcoexist, u8 pkt_type);
 613void exhalbtc_bt_info_notify(struct btc_coexist *btcoexist, u8 *tmp_buf,
 614                             u8 length);
 615void exhalbtc_stack_operation_notify(struct btc_coexist *btcoexist, u8 type);
 616void exhalbtc_halt_notify(struct btc_coexist *btcoexist);
 617void exhalbtc_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state);
 618void exhalbtc_coex_dm_switch(struct btc_coexist *btcoexist);
 619void exhalbtc_periodical(struct btc_coexist *btcoexist);
 620void exhalbtc_dbg_control(struct btc_coexist *btcoexist, u8 code, u8 len,
 621                          u8 *data);
 622void exhalbtc_stack_update_profile_info(void);
 623void exhalbtc_set_hci_version(u16 hci_version);
 624void exhalbtc_set_bt_patch_version(u16 bt_hci_version, u16 bt_patch_version);
 625void exhalbtc_update_min_bt_rssi(s8 bt_rssi);
 626void exhalbtc_set_bt_exist(bool bt_exist);
 627void exhalbtc_set_chip_type(u8 chip_type);
 628void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num);
 629void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist);
 630void exhalbtc_signal_compensation(struct btc_coexist *btcoexist,
 631                                  u8 *rssi_wifi, u8 *rssi_bt);
 632void exhalbtc_lps_leave(struct btc_coexist *btcoexist);
 633void exhalbtc_low_wifi_traffic_notify(struct btc_coexist *btcoexist);
 634void exhalbtc_set_single_ant_path(u8 single_ant_path);
 635
 636#endif
 637