1*4882a593Smuzhiyun /****************************************************************************** 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Copyright(c) 2016 - 2017 Realtek Corporation. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify it 6*4882a593Smuzhiyun * under the terms of version 2 of the GNU General Public License as 7*4882a593Smuzhiyun * published by the Free Software Foundation. 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * This program is distributed in the hope that it will be useful, but WITHOUT 10*4882a593Smuzhiyun * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12*4882a593Smuzhiyun * more details. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun *****************************************************************************/ 15*4882a593Smuzhiyun #ifndef __HALBTC_OUT_SRC_H__ 16*4882a593Smuzhiyun #define __HALBTC_OUT_SRC_H__ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun enum { 19*4882a593Smuzhiyun BTC_CCK_1, 20*4882a593Smuzhiyun BTC_CCK_2, 21*4882a593Smuzhiyun BTC_CCK_5_5, 22*4882a593Smuzhiyun BTC_CCK_11, 23*4882a593Smuzhiyun BTC_OFDM_6, 24*4882a593Smuzhiyun BTC_OFDM_9, 25*4882a593Smuzhiyun BTC_OFDM_12, 26*4882a593Smuzhiyun BTC_OFDM_18, 27*4882a593Smuzhiyun BTC_OFDM_24, 28*4882a593Smuzhiyun BTC_OFDM_36, 29*4882a593Smuzhiyun BTC_OFDM_48, 30*4882a593Smuzhiyun BTC_OFDM_54, 31*4882a593Smuzhiyun BTC_MCS_0, 32*4882a593Smuzhiyun BTC_MCS_1, 33*4882a593Smuzhiyun BTC_MCS_2, 34*4882a593Smuzhiyun BTC_MCS_3, 35*4882a593Smuzhiyun BTC_MCS_4, 36*4882a593Smuzhiyun BTC_MCS_5, 37*4882a593Smuzhiyun BTC_MCS_6, 38*4882a593Smuzhiyun BTC_MCS_7, 39*4882a593Smuzhiyun BTC_MCS_8, 40*4882a593Smuzhiyun BTC_MCS_9, 41*4882a593Smuzhiyun BTC_MCS_10, 42*4882a593Smuzhiyun BTC_MCS_11, 43*4882a593Smuzhiyun BTC_MCS_12, 44*4882a593Smuzhiyun BTC_MCS_13, 45*4882a593Smuzhiyun BTC_MCS_14, 46*4882a593Smuzhiyun BTC_MCS_15, 47*4882a593Smuzhiyun BTC_MCS_16, 48*4882a593Smuzhiyun BTC_MCS_17, 49*4882a593Smuzhiyun BTC_MCS_18, 50*4882a593Smuzhiyun BTC_MCS_19, 51*4882a593Smuzhiyun BTC_MCS_20, 52*4882a593Smuzhiyun BTC_MCS_21, 53*4882a593Smuzhiyun BTC_MCS_22, 54*4882a593Smuzhiyun BTC_MCS_23, 55*4882a593Smuzhiyun BTC_MCS_24, 56*4882a593Smuzhiyun BTC_MCS_25, 57*4882a593Smuzhiyun BTC_MCS_26, 58*4882a593Smuzhiyun BTC_MCS_27, 59*4882a593Smuzhiyun BTC_MCS_28, 60*4882a593Smuzhiyun BTC_MCS_29, 61*4882a593Smuzhiyun BTC_MCS_30, 62*4882a593Smuzhiyun BTC_MCS_31, 63*4882a593Smuzhiyun BTC_VHT_1SS_MCS_0, 64*4882a593Smuzhiyun BTC_VHT_1SS_MCS_1, 65*4882a593Smuzhiyun BTC_VHT_1SS_MCS_2, 66*4882a593Smuzhiyun BTC_VHT_1SS_MCS_3, 67*4882a593Smuzhiyun BTC_VHT_1SS_MCS_4, 68*4882a593Smuzhiyun BTC_VHT_1SS_MCS_5, 69*4882a593Smuzhiyun BTC_VHT_1SS_MCS_6, 70*4882a593Smuzhiyun BTC_VHT_1SS_MCS_7, 71*4882a593Smuzhiyun BTC_VHT_1SS_MCS_8, 72*4882a593Smuzhiyun BTC_VHT_1SS_MCS_9, 73*4882a593Smuzhiyun BTC_VHT_2SS_MCS_0, 74*4882a593Smuzhiyun BTC_VHT_2SS_MCS_1, 75*4882a593Smuzhiyun BTC_VHT_2SS_MCS_2, 76*4882a593Smuzhiyun BTC_VHT_2SS_MCS_3, 77*4882a593Smuzhiyun BTC_VHT_2SS_MCS_4, 78*4882a593Smuzhiyun BTC_VHT_2SS_MCS_5, 79*4882a593Smuzhiyun BTC_VHT_2SS_MCS_6, 80*4882a593Smuzhiyun BTC_VHT_2SS_MCS_7, 81*4882a593Smuzhiyun BTC_VHT_2SS_MCS_8, 82*4882a593Smuzhiyun BTC_VHT_2SS_MCS_9, 83*4882a593Smuzhiyun BTC_VHT_3SS_MCS_0, 84*4882a593Smuzhiyun BTC_VHT_3SS_MCS_1, 85*4882a593Smuzhiyun BTC_VHT_3SS_MCS_2, 86*4882a593Smuzhiyun BTC_VHT_3SS_MCS_3, 87*4882a593Smuzhiyun BTC_VHT_3SS_MCS_4, 88*4882a593Smuzhiyun BTC_VHT_3SS_MCS_5, 89*4882a593Smuzhiyun BTC_VHT_3SS_MCS_6, 90*4882a593Smuzhiyun BTC_VHT_3SS_MCS_7, 91*4882a593Smuzhiyun BTC_VHT_3SS_MCS_8, 92*4882a593Smuzhiyun BTC_VHT_3SS_MCS_9, 93*4882a593Smuzhiyun BTC_VHT_4SS_MCS_0, 94*4882a593Smuzhiyun BTC_VHT_4SS_MCS_1, 95*4882a593Smuzhiyun BTC_VHT_4SS_MCS_2, 96*4882a593Smuzhiyun BTC_VHT_4SS_MCS_3, 97*4882a593Smuzhiyun BTC_VHT_4SS_MCS_4, 98*4882a593Smuzhiyun BTC_VHT_4SS_MCS_5, 99*4882a593Smuzhiyun BTC_VHT_4SS_MCS_6, 100*4882a593Smuzhiyun BTC_VHT_4SS_MCS_7, 101*4882a593Smuzhiyun BTC_VHT_4SS_MCS_8, 102*4882a593Smuzhiyun BTC_VHT_4SS_MCS_9, 103*4882a593Smuzhiyun BTC_MCS_32, 104*4882a593Smuzhiyun BTC_UNKNOWN, 105*4882a593Smuzhiyun BTC_PKT_MGNT, 106*4882a593Smuzhiyun BTC_PKT_CTRL, 107*4882a593Smuzhiyun BTC_PKT_UNKNOWN, 108*4882a593Smuzhiyun BTC_PKT_NOT_FOR_ME, 109*4882a593Smuzhiyun BTC_RATE_MAX 110*4882a593Smuzhiyun }; 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun enum { 113*4882a593Smuzhiyun BTC_MULTIPORT_SCC, 114*4882a593Smuzhiyun BTC_MULTIPORT_MCC_DUAL_CHANNEL, 115*4882a593Smuzhiyun BTC_MULTIPORT_MCC_DUAL_BAND, 116*4882a593Smuzhiyun BTC_MULTIPORT_MAX 117*4882a593Smuzhiyun }; 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun #define BTC_COEX_8822B_COMMON_CODE 0 120*4882a593Smuzhiyun #define BTC_COEX_OFFLOAD 0 121*4882a593Smuzhiyun #define BTC_TMP_BUF_SHORT 20 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun extern u1Byte gl_btc_trace_buf[]; 124*4882a593Smuzhiyun #define BTC_SPRINTF rsprintf 125*4882a593Smuzhiyun #define BTC_TRACE(_MSG_)\ 126*4882a593Smuzhiyun do {\ 127*4882a593Smuzhiyun if (GLBtcDbgType[COMP_COEX] & BIT(DBG_LOUD)) {\ 128*4882a593Smuzhiyun RTW_INFO("%s", _MSG_);\ 129*4882a593Smuzhiyun } \ 130*4882a593Smuzhiyun } while (0) 131*4882a593Smuzhiyun #define BT_PrintData(adapter, _MSG_, len, data) RTW_DBG_DUMP((_MSG_), data, len) 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun #define NORMAL_EXEC FALSE 135*4882a593Smuzhiyun #define FORCE_EXEC TRUE 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun #define NM_EXCU FALSE 138*4882a593Smuzhiyun #define FC_EXCU TRUE 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun #define BTC_RF_OFF 0x0 141*4882a593Smuzhiyun #define BTC_RF_ON 0x1 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun #define BTC_RF_A 0x0 144*4882a593Smuzhiyun #define BTC_RF_B 0x1 145*4882a593Smuzhiyun #define BTC_RF_C 0x2 146*4882a593Smuzhiyun #define BTC_RF_D 0x3 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun #define BTC_SMSP SINGLEMAC_SINGLEPHY 149*4882a593Smuzhiyun #define BTC_DMDP DUALMAC_DUALPHY 150*4882a593Smuzhiyun #define BTC_DMSP DUALMAC_SINGLEPHY 151*4882a593Smuzhiyun #define BTC_MP_UNKNOWN 0xff 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun #define BT_COEX_ANT_TYPE_PG 0 154*4882a593Smuzhiyun #define BT_COEX_ANT_TYPE_ANTDIV 1 155*4882a593Smuzhiyun #define BT_COEX_ANT_TYPE_DETECTED 2 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun #define BTC_MIMO_PS_STATIC 0 /* 1ss */ 158*4882a593Smuzhiyun #define BTC_MIMO_PS_DYNAMIC 1 /* 2ss */ 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun #define BTC_RATE_DISABLE 0 161*4882a593Smuzhiyun #define BTC_RATE_ENABLE 1 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun /* single Antenna definition */ 164*4882a593Smuzhiyun #define BTC_ANT_PATH_WIFI 0 165*4882a593Smuzhiyun #define BTC_ANT_PATH_BT 1 166*4882a593Smuzhiyun #define BTC_ANT_PATH_PTA 2 167*4882a593Smuzhiyun #define BTC_ANT_PATH_WIFI5G 3 168*4882a593Smuzhiyun #define BTC_ANT_PATH_AUTO 4 169*4882a593Smuzhiyun /* dual Antenna definition */ 170*4882a593Smuzhiyun #define BTC_ANT_WIFI_AT_MAIN 0 171*4882a593Smuzhiyun #define BTC_ANT_WIFI_AT_AUX 1 172*4882a593Smuzhiyun #define BTC_ANT_WIFI_AT_DIVERSITY 2 173*4882a593Smuzhiyun /* coupler Antenna definition */ 174*4882a593Smuzhiyun #define BTC_ANT_WIFI_AT_CPL_MAIN 0 175*4882a593Smuzhiyun #define BTC_ANT_WIFI_AT_CPL_AUX 1 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun /* for common code request */ 178*4882a593Smuzhiyun #define REG_LTE_IDR_COEX_CTRL 0x0038 179*4882a593Smuzhiyun #define REG_SYS_SDIO_CTRL 0x0070 180*4882a593Smuzhiyun #define REG_SYS_SDIO_CTRL3 0x0073 181*4882a593Smuzhiyun /* #define REG_RETRY_LIMIT 0x042a */ 182*4882a593Smuzhiyun /* #define REG_DARFRC 0x0430 */ 183*4882a593Smuzhiyun #define REG_DARFRCH 0x0434 184*4882a593Smuzhiyun #define REG_CCK_CHECK 0x0454 185*4882a593Smuzhiyun #define REG_AMPDU_MAX_TIME_V1 0x0455 186*4882a593Smuzhiyun #define REG_TX_HANG_CTRL 0x045E 187*4882a593Smuzhiyun #define REG_LIFETIME_EN 0x0426 188*4882a593Smuzhiyun #define REG_BT_COEX_TABLE0 0x06C0 189*4882a593Smuzhiyun #define REG_BT_COEX_TABLE1 0x06C4 190*4882a593Smuzhiyun #define REG_BT_COEX_BRK_TABLE 0x06C8 191*4882a593Smuzhiyun #define REG_BT_COEX_TABLE_H 0x06CC 192*4882a593Smuzhiyun #define REG_BT_ACT_STATISTICS 0x0770 193*4882a593Smuzhiyun #define REG_BT_ACT_STATISTICS_1 0x0774 194*4882a593Smuzhiyun #define REG_BT_STAT_CTRL 0x0778 195*4882a593Smuzhiyun 196*4882a593Smuzhiyun #define BIT_EN_GNT_BT_AWAKE BIT(3) 197*4882a593Smuzhiyun #define BIT_EN_BCN_FUNCTION BIT(3) 198*4882a593Smuzhiyun #define BIT_EN_BCN_PKT_REL BIT(6) 199*4882a593Smuzhiyun #define BIT_FEN_BB_GLB_RST BIT(1) 200*4882a593Smuzhiyun #define BIT_FEN_BB_RSTB BIT(0) 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun #define TDMA_4SLOT BIT(8) 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun /* for 2T2R -> 2T1R coex MIMO-PS mechanism tranlation */ 205*4882a593Smuzhiyun #define BTC_2GTDD_MAX_TRY 3 /* the max retry count for 1R->2R */ 206*4882a593Smuzhiyun #define BTC_2GFDD_MAX_STAY 300 /* the max stay time at 1R if 2R try-able (unit: 2s) */ 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun typedef enum _BTC_POWERSAVE_TYPE { 209*4882a593Smuzhiyun BTC_PS_WIFI_NATIVE = 0, /* wifi original power save behavior */ 210*4882a593Smuzhiyun BTC_PS_LPS_ON = 1, 211*4882a593Smuzhiyun BTC_PS_LPS_OFF = 2, 212*4882a593Smuzhiyun BTC_PS_MAX 213*4882a593Smuzhiyun } BTC_POWERSAVE_TYPE, *PBTC_POWERSAVE_TYPE; 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun typedef enum _BTC_BT_REG_TYPE { 216*4882a593Smuzhiyun BTC_BT_REG_RF = 0, 217*4882a593Smuzhiyun BTC_BT_REG_MODEM = 1, 218*4882a593Smuzhiyun BTC_BT_REG_BLUEWIZE = 2, 219*4882a593Smuzhiyun BTC_BT_REG_VENDOR = 3, 220*4882a593Smuzhiyun BTC_BT_REG_LE = 4, 221*4882a593Smuzhiyun BTC_BT_REG_MAX 222*4882a593Smuzhiyun } BTC_BT_REG_TYPE, *PBTC_BT_REG_TYPE; 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun typedef enum _BTC_CHIP_INTERFACE { 225*4882a593Smuzhiyun BTC_INTF_UNKNOWN = 0, 226*4882a593Smuzhiyun BTC_INTF_PCI = 1, 227*4882a593Smuzhiyun BTC_INTF_USB = 2, 228*4882a593Smuzhiyun BTC_INTF_SDIO = 3, 229*4882a593Smuzhiyun BTC_INTF_MAX 230*4882a593Smuzhiyun } BTC_CHIP_INTERFACE, *PBTC_CHIP_INTERFACE; 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun typedef enum _BTC_CHIP_TYPE { 233*4882a593Smuzhiyun BTC_CHIP_UNDEF = 0, 234*4882a593Smuzhiyun BTC_CHIP_CSR_BC4 = 1, 235*4882a593Smuzhiyun BTC_CHIP_CSR_BC8 = 2, 236*4882a593Smuzhiyun BTC_CHIP_RTL8723A = 3, 237*4882a593Smuzhiyun BTC_CHIP_RTL8821 = 4, 238*4882a593Smuzhiyun BTC_CHIP_RTL8723B = 5, 239*4882a593Smuzhiyun BTC_CHIP_RTL8822B = 6, 240*4882a593Smuzhiyun BTC_CHIP_RTL8822C = 7, 241*4882a593Smuzhiyun BTC_CHIP_RTL8821C = 8, 242*4882a593Smuzhiyun BTC_CHIP_RTL8821A = 9, 243*4882a593Smuzhiyun BTC_CHIP_RTL8723D = 10, 244*4882a593Smuzhiyun BTC_CHIP_RTL8703B = 11, 245*4882a593Smuzhiyun BTC_CHIP_RTL8725A = 12, 246*4882a593Smuzhiyun BTC_CHIP_RTL8723F = 13, 247*4882a593Smuzhiyun BTC_CHIP_MAX 248*4882a593Smuzhiyun } BTC_CHIP_TYPE, *PBTC_CHIP_TYPE; 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun /* following is for wifi link status */ 251*4882a593Smuzhiyun #define WIFI_STA_CONNECTED BIT0 252*4882a593Smuzhiyun #define WIFI_AP_CONNECTED BIT1 253*4882a593Smuzhiyun #define WIFI_HS_CONNECTED BIT2 254*4882a593Smuzhiyun #define WIFI_P2P_GO_CONNECTED BIT3 255*4882a593Smuzhiyun #define WIFI_P2P_GC_CONNECTED BIT4 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun /* following is for command line utility */ 258*4882a593Smuzhiyun #define CL_SPRINTF rsprintf 259*4882a593Smuzhiyun #define CL_PRINTF DCMD_Printf 260*4882a593Smuzhiyun #define CL_STRNCAT(dst, dst_size, src, src_size) rstrncat(dst, src, src_size) 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun static const char *const glbt_info_src[] = { 263*4882a593Smuzhiyun "BT Info[wifi fw]", 264*4882a593Smuzhiyun "BT Info[bt rsp]", 265*4882a593Smuzhiyun "BT Info[bt auto report]", 266*4882a593Smuzhiyun }; 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun #define BTC_INFO_FTP BIT(7) 269*4882a593Smuzhiyun #define BTC_INFO_A2DP BIT(6) 270*4882a593Smuzhiyun #define BTC_INFO_HID BIT(5) 271*4882a593Smuzhiyun #define BTC_INFO_SCO_BUSY BIT(4) 272*4882a593Smuzhiyun #define BTC_INFO_ACL_BUSY BIT(3) 273*4882a593Smuzhiyun #define BTC_INFO_INQ_PAGE BIT(2) 274*4882a593Smuzhiyun #define BTC_INFO_SCO_ESCO BIT(1) 275*4882a593Smuzhiyun #define BTC_INFO_CONNECTION BIT(0) 276*4882a593Smuzhiyun 277*4882a593Smuzhiyun #define BTC_BTINFO_LENGTH_MAX 10 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun enum btc_gnt_setup_state { 280*4882a593Smuzhiyun BTC_GNT_SET_SW_LOW = 0x0, 281*4882a593Smuzhiyun BTC_GNT_SET_SW_HIGH = 0x1, 282*4882a593Smuzhiyun BTC_GNT_SET_HW_PTA = 0x2, 283*4882a593Smuzhiyun BTC_GNT_SET_MAX 284*4882a593Smuzhiyun }; 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun enum btc_gnt_setup_state_2 { 287*4882a593Smuzhiyun BTC_GNT_HW_PTA = 0x0, 288*4882a593Smuzhiyun BTC_GNT_SW_LOW = 0x1, 289*4882a593Smuzhiyun BTC_GNT_SW_HIGH = 0x3, 290*4882a593Smuzhiyun BTC_GNT_MAX 291*4882a593Smuzhiyun }; 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun enum btc_path_ctrl_owner { 294*4882a593Smuzhiyun BTC_OWNER_BT = 0x0, 295*4882a593Smuzhiyun BTC_OWNER_WL = 0x1, 296*4882a593Smuzhiyun BTC_OWNER_MAX 297*4882a593Smuzhiyun }; 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun enum btc_gnt_ctrl_type { 300*4882a593Smuzhiyun BTC_GNT_CTRL_BY_PTA = 0x0, 301*4882a593Smuzhiyun BTC_GNT_CTRL_BY_SW = 0x1, 302*4882a593Smuzhiyun BTC_GNT_CTRL_MAX 303*4882a593Smuzhiyun }; 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun enum btc_gnt_ctrl_block { 306*4882a593Smuzhiyun BTC_GNT_BLOCK_RFC_BB = 0x0, 307*4882a593Smuzhiyun BTC_GNT_BLOCK_RFC = 0x1, 308*4882a593Smuzhiyun BTC_GNT_BLOCK_BB = 0x2, 309*4882a593Smuzhiyun BTC_GNT_BLOCK_MAX 310*4882a593Smuzhiyun }; 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun enum btc_lte_coex_table_type { 313*4882a593Smuzhiyun BTC_CTT_WL_VS_LTE = 0x0, 314*4882a593Smuzhiyun BTC_CTT_BT_VS_LTE = 0x1, 315*4882a593Smuzhiyun BTC_CTT_MAX 316*4882a593Smuzhiyun }; 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun enum btc_lte_break_table_type { 319*4882a593Smuzhiyun BTC_LBTT_WL_BREAK_LTE = 0x0, 320*4882a593Smuzhiyun BTC_LBTT_BT_BREAK_LTE = 0x1, 321*4882a593Smuzhiyun BTC_LBTT_LTE_BREAK_WL = 0x2, 322*4882a593Smuzhiyun BTC_LBTT_LTE_BREAK_BT = 0x3, 323*4882a593Smuzhiyun BTC_LBTT_MAX 324*4882a593Smuzhiyun }; 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun enum btc_btinfo_src { 327*4882a593Smuzhiyun BTC_BTINFO_SRC_WL_FW = 0x0, 328*4882a593Smuzhiyun BTC_BTINFO_SRC_BT_RSP = 0x1, 329*4882a593Smuzhiyun BTC_BTINFO_SRC_BT_ACT = 0x2, 330*4882a593Smuzhiyun BTC_BTINFO_SRC_BT_IQK = 0x3, 331*4882a593Smuzhiyun BTC_BTINFO_SRC_BT_SCBD = 0x4, 332*4882a593Smuzhiyun BTC_BTINFO_SRC_H2C60 = 0x5, 333*4882a593Smuzhiyun BTC_BTINFO_SRC_MAX 334*4882a593Smuzhiyun }; 335*4882a593Smuzhiyun 336*4882a593Smuzhiyun enum btc_bt_profile { 337*4882a593Smuzhiyun BTC_BTPROFILE_NONE = 0, 338*4882a593Smuzhiyun BTC_BTPROFILE_HFP = BIT(0), 339*4882a593Smuzhiyun BTC_BTPROFILE_HID = BIT(1), 340*4882a593Smuzhiyun BTC_BTPROFILE_A2DP = BIT(2), 341*4882a593Smuzhiyun BTC_BTPROFILE_PAN = BIT(3), 342*4882a593Smuzhiyun BTC_BTPROFILE_MAX = 0xf 343*4882a593Smuzhiyun }; 344*4882a593Smuzhiyun 345*4882a593Smuzhiyun static const char *const bt_profile_string[] = { 346*4882a593Smuzhiyun "None", 347*4882a593Smuzhiyun "HFP", 348*4882a593Smuzhiyun "HID", 349*4882a593Smuzhiyun "HID + HFP", 350*4882a593Smuzhiyun "A2DP", 351*4882a593Smuzhiyun "A2DP + HFP", 352*4882a593Smuzhiyun "A2DP + HID", 353*4882a593Smuzhiyun "PAN + HID + HFP", 354*4882a593Smuzhiyun "PAN", 355*4882a593Smuzhiyun "PAN + HFP", 356*4882a593Smuzhiyun "PAN + HID", 357*4882a593Smuzhiyun "PAN + HID + HFP", 358*4882a593Smuzhiyun "PAN + A2DP", 359*4882a593Smuzhiyun "PAN + A2DP + HFP", 360*4882a593Smuzhiyun "PAN + A2DP + HID", 361*4882a593Smuzhiyun "PAN + A2DP + HID + HFP" 362*4882a593Smuzhiyun }; 363*4882a593Smuzhiyun 364*4882a593Smuzhiyun enum btc_bt_status { 365*4882a593Smuzhiyun BTC_BTSTATUS_NCON_IDLE = 0x0, 366*4882a593Smuzhiyun BTC_BTSTATUS_CON_IDLE = 0x1, 367*4882a593Smuzhiyun BTC_BTSTATUS_INQ_PAGE = 0x2, 368*4882a593Smuzhiyun BTC_BTSTATUS_ACL_BUSY = 0x3, 369*4882a593Smuzhiyun BTC_BTSTATUS_SCO_BUSY = 0x4, 370*4882a593Smuzhiyun BTC_BTSTATUS_ACL_SCO_BUSY = 0x5, 371*4882a593Smuzhiyun BTC_BTSTATUS_MAX 372*4882a593Smuzhiyun }; 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun static const char *const bt_status_string[] = { 375*4882a593Smuzhiyun "BT Non-Connected-idle", 376*4882a593Smuzhiyun "BT Connected-idle", 377*4882a593Smuzhiyun "BT Inq-page", 378*4882a593Smuzhiyun "BT ACL-busy", 379*4882a593Smuzhiyun "BT SCO-busy", 380*4882a593Smuzhiyun "BT ACL-SCO-busy", 381*4882a593Smuzhiyun "BT Non-Defined-state" 382*4882a593Smuzhiyun }; 383*4882a593Smuzhiyun 384*4882a593Smuzhiyun enum btc_coex_algo { 385*4882a593Smuzhiyun BTC_COEX_NOPROFILE = 0x0, 386*4882a593Smuzhiyun BTC_COEX_HFP = 0x1, 387*4882a593Smuzhiyun BTC_COEX_HID = 0x2, 388*4882a593Smuzhiyun BTC_COEX_A2DP = 0x3, 389*4882a593Smuzhiyun BTC_COEX_PAN = 0x4, 390*4882a593Smuzhiyun BTC_COEX_A2DP_HID = 0x5, 391*4882a593Smuzhiyun BTC_COEX_A2DP_PAN = 0x6, 392*4882a593Smuzhiyun BTC_COEX_PAN_HID = 0x7, 393*4882a593Smuzhiyun BTC_COEX_A2DP_PAN_HID = 0x8, 394*4882a593Smuzhiyun BTC_COEX_MAX 395*4882a593Smuzhiyun }; 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun static const char *const coex_algo_string[] = { 398*4882a593Smuzhiyun "No Profile", 399*4882a593Smuzhiyun "HFP", 400*4882a593Smuzhiyun "HID", 401*4882a593Smuzhiyun "A2DP", 402*4882a593Smuzhiyun "PAN", 403*4882a593Smuzhiyun "A2DP + HID", 404*4882a593Smuzhiyun "A2DP + PAN", 405*4882a593Smuzhiyun "PAN + HID", 406*4882a593Smuzhiyun "A2DP + PAN + HID" 407*4882a593Smuzhiyun }; 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun enum btc_ext_ant_switch_type { 410*4882a593Smuzhiyun BTC_SWITCH_NONE = 0x0, 411*4882a593Smuzhiyun BTC_SWITCH_SPDT = 0x1, 412*4882a593Smuzhiyun BTC_SWITCH_SP3T = 0x2, 413*4882a593Smuzhiyun BTC_SWITCH_DPDT = 0x3, 414*4882a593Smuzhiyun BTC_SWITCH_ANTMAX 415*4882a593Smuzhiyun }; 416*4882a593Smuzhiyun 417*4882a593Smuzhiyun enum btc_ext_ant_switch_ctrl_type { 418*4882a593Smuzhiyun BTC_SWITCH_CTRL_BY_BBSW = 0x0, 419*4882a593Smuzhiyun BTC_SWITCH_CTRL_BY_PTA = 0x1, 420*4882a593Smuzhiyun BTC_SWITCH_CTRL_BY_ANTDIV = 0x2, 421*4882a593Smuzhiyun BTC_SWITCH_CTRL_BY_MAC = 0x3, 422*4882a593Smuzhiyun BTC_SWITCH_CTRL_BY_BT = 0x4, 423*4882a593Smuzhiyun BTC_SWITCH_CTRL_BY_FW = 0x5, 424*4882a593Smuzhiyun BTC_SWITCH_CTRL_MAX 425*4882a593Smuzhiyun }; 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun enum btc_ext_ant_switch_pos_type { 428*4882a593Smuzhiyun BTC_SWITCH_TO_BT = 0x0, 429*4882a593Smuzhiyun BTC_SWITCH_TO_WLG = 0x1, 430*4882a593Smuzhiyun BTC_SWITCH_TO_WLA = 0x2, 431*4882a593Smuzhiyun BTC_SWITCH_TO_NOCARE = 0x3, 432*4882a593Smuzhiyun BTC_SWITCH_TO_WLG_BT = 0x4, 433*4882a593Smuzhiyun BTC_SWITCH_TO_MAX 434*4882a593Smuzhiyun }; 435*4882a593Smuzhiyun 436*4882a593Smuzhiyun enum btx_set_ant_phase { 437*4882a593Smuzhiyun BTC_ANT_INIT = 0x0, 438*4882a593Smuzhiyun BTC_ANT_WONLY = 0x1, 439*4882a593Smuzhiyun BTC_ANT_WOFF = 0x2, 440*4882a593Smuzhiyun BTC_ANT_2G = 0x3, 441*4882a593Smuzhiyun BTC_ANT_5G = 0x4, 442*4882a593Smuzhiyun BTC_ANT_BTMP = 0x5, 443*4882a593Smuzhiyun BTC_ANT_POWERON = 0x6, 444*4882a593Smuzhiyun BTC_ANT_2G_WL = 0x7, 445*4882a593Smuzhiyun BTC_ANT_2G_BT = 0x8, 446*4882a593Smuzhiyun BTC_ANT_MCC = 0x9, 447*4882a593Smuzhiyun BTC_ANT_2G_WLBT = 0xa, 448*4882a593Smuzhiyun BTC_ANT_2G_FREERUN = 0xb, 449*4882a593Smuzhiyun BTC_ANT_MAX 450*4882a593Smuzhiyun }; 451*4882a593Smuzhiyun 452*4882a593Smuzhiyun /*ADD SCOREBOARD TO FIX BT LPS 32K ISSUE WHILE WL BUSY*/ 453*4882a593Smuzhiyun enum btc_wl2bt_scoreboard { 454*4882a593Smuzhiyun BTC_SCBD_ACTIVE = BIT(0), 455*4882a593Smuzhiyun BTC_SCBD_ON = BIT(1), 456*4882a593Smuzhiyun BTC_SCBD_SCAN = BIT(2), 457*4882a593Smuzhiyun BTC_SCBD_UNDERTEST = BIT(3), 458*4882a593Smuzhiyun BTC_SCBD_RXGAIN = BIT(4), 459*4882a593Smuzhiyun BTC_SCBD_WLBUSY = BIT(7), 460*4882a593Smuzhiyun BTC_SCBD_EXTFEM = BIT(8), 461*4882a593Smuzhiyun BTC_SCBD_TDMA = BIT(9), 462*4882a593Smuzhiyun BTC_SCBD_FIX2M = BIT(10), 463*4882a593Smuzhiyun BTC_SCBD_MAILBOX_DBG = BIT(14), 464*4882a593Smuzhiyun BTC_SCBD_ALL = 0xffff, 465*4882a593Smuzhiyun BTC_SCBD_ALL_32BIT = 0xffffffff 466*4882a593Smuzhiyun }; 467*4882a593Smuzhiyun 468*4882a593Smuzhiyun enum btc_bt2wl_scoreboard { 469*4882a593Smuzhiyun BTC_SCBD_BT_ONOFF = BIT(1), 470*4882a593Smuzhiyun BTC_SCBD_BT_LPS = BIT(7) 471*4882a593Smuzhiyun }; 472*4882a593Smuzhiyun enum btc_scoreboard_bit_num { 473*4882a593Smuzhiyun BTC_SCBD_16_BIT = BIT(0), 474*4882a593Smuzhiyun BTC_SCBD_32_BIT = BIT(1) 475*4882a593Smuzhiyun }; 476*4882a593Smuzhiyun 477*4882a593Smuzhiyun enum btc_runreason { 478*4882a593Smuzhiyun BTC_RSN_2GSCANSTART = 0x0, 479*4882a593Smuzhiyun BTC_RSN_5GSCANSTART = 0x1, 480*4882a593Smuzhiyun BTC_RSN_SCANFINISH = 0x2, 481*4882a593Smuzhiyun BTC_RSN_2GSWITCHBAND = 0x3, 482*4882a593Smuzhiyun BTC_RSN_5GSWITCHBAND = 0x4, 483*4882a593Smuzhiyun BTC_RSN_2GCONSTART = 0x5, 484*4882a593Smuzhiyun BTC_RSN_5GCONSTART = 0x6, 485*4882a593Smuzhiyun BTC_RSN_2GCONFINISH = 0x7, 486*4882a593Smuzhiyun BTC_RSN_5GCONFINISH = 0x8, 487*4882a593Smuzhiyun BTC_RSN_2GMEDIA = 0x9, 488*4882a593Smuzhiyun BTC_RSN_5GMEDIA = 0xa, 489*4882a593Smuzhiyun BTC_RSN_MEDIADISCON = 0xb, 490*4882a593Smuzhiyun BTC_RSN_2GSPECIALPKT = 0xc, 491*4882a593Smuzhiyun BTC_RSN_5GSPECIALPKT = 0xd, 492*4882a593Smuzhiyun BTC_RSN_BTINFO = 0xe, 493*4882a593Smuzhiyun BTC_RSN_PERIODICAL = 0xf, 494*4882a593Smuzhiyun BTC_RSN_PNP = 0x10, 495*4882a593Smuzhiyun BTC_RSN_LPS = 0x11, 496*4882a593Smuzhiyun BTC_RSN_TIMERUP = 0x12, 497*4882a593Smuzhiyun BTC_RSN_WLSTATUS = 0x13, 498*4882a593Smuzhiyun BTC_RSN_BTCNT = 0x14, 499*4882a593Smuzhiyun BTC_RSN_RFK = 0x15, 500*4882a593Smuzhiyun BTC_RSN_MAX 501*4882a593Smuzhiyun }; 502*4882a593Smuzhiyun 503*4882a593Smuzhiyun static const char *const run_reason_string[] = { 504*4882a593Smuzhiyun "2G_SCAN_START", 505*4882a593Smuzhiyun "5G_SCAN_START", 506*4882a593Smuzhiyun "SCAN_FINISH", 507*4882a593Smuzhiyun "2G_SWITCH_BAND", 508*4882a593Smuzhiyun "5G_SWITCH_BAND", 509*4882a593Smuzhiyun "2G_CONNECT_START", 510*4882a593Smuzhiyun "5G_CONNECT_START", 511*4882a593Smuzhiyun "2G_CONNECT_FINISH", 512*4882a593Smuzhiyun "5G_CONNECT_FINISH", 513*4882a593Smuzhiyun "2G_MEDIA_STATUS", 514*4882a593Smuzhiyun "5G_MEDIA_STATUS", 515*4882a593Smuzhiyun "MEDIA_DISCONNECT", 516*4882a593Smuzhiyun "2G_SPECIALPKT", 517*4882a593Smuzhiyun "5G_SPECIALPKT", 518*4882a593Smuzhiyun "BTINFO", 519*4882a593Smuzhiyun "PERIODICAL", 520*4882a593Smuzhiyun "PNPNotify", 521*4882a593Smuzhiyun "LPSNotify", 522*4882a593Smuzhiyun "TimerUp", 523*4882a593Smuzhiyun "WL_STATUS_CHANGE", 524*4882a593Smuzhiyun "BT_CNT_CHANGE", 525*4882a593Smuzhiyun "WL_RFK", 526*4882a593Smuzhiyun "Reason Max" 527*4882a593Smuzhiyun }; 528*4882a593Smuzhiyun 529*4882a593Smuzhiyun enum btc_wl_link_mode { 530*4882a593Smuzhiyun BTC_WLINK_2G1PORT = 0x0, 531*4882a593Smuzhiyun BTC_WLINK_2GMPORT = 0x1, 532*4882a593Smuzhiyun BTC_WLINK_25GMPORT = 0x2, 533*4882a593Smuzhiyun BTC_WLINK_5G = 0x3, 534*4882a593Smuzhiyun BTC_WLINK_2GGO = 0x4, 535*4882a593Smuzhiyun BTC_WLINK_2GGC = 0x5, 536*4882a593Smuzhiyun BTC_WLINK_BTMR = 0x6, 537*4882a593Smuzhiyun BTC_WLINK_2GFREE = 0x7, 538*4882a593Smuzhiyun BTC_WLINK_MAX 539*4882a593Smuzhiyun }; 540*4882a593Smuzhiyun 541*4882a593Smuzhiyun static const char *const coex_mode_string[] = { 542*4882a593Smuzhiyun "2G-SP", 543*4882a593Smuzhiyun "2G-MP", 544*4882a593Smuzhiyun "25G-MP", 545*4882a593Smuzhiyun "5G", 546*4882a593Smuzhiyun "2G-P2P-GO", 547*4882a593Smuzhiyun "2G-P2P-GC", 548*4882a593Smuzhiyun "BT-MR", 549*4882a593Smuzhiyun "2G1RFREE", 550*4882a593Smuzhiyun "unknow" 551*4882a593Smuzhiyun }; 552*4882a593Smuzhiyun 553*4882a593Smuzhiyun enum btc_bt_state_cnt { 554*4882a593Smuzhiyun BTC_CNT_BT_RETRY = 0x0, 555*4882a593Smuzhiyun BTC_CNT_BT_REINIT = 0x1, 556*4882a593Smuzhiyun BTC_CNT_BT_POPEVENT = 0x2, 557*4882a593Smuzhiyun BTC_CNT_BT_SETUPLINK = 0x3, 558*4882a593Smuzhiyun BTC_CNT_BT_IGNWLANACT = 0x4, 559*4882a593Smuzhiyun BTC_CNT_BT_INQ = 0x5, 560*4882a593Smuzhiyun BTC_CNT_BT_PAGE = 0x6, 561*4882a593Smuzhiyun BTC_CNT_BT_ROLESWITCH = 0x7, 562*4882a593Smuzhiyun BTC_CNT_BT_AFHUPDATE = 0x8, 563*4882a593Smuzhiyun BTC_CNT_BT_DISABLE = 0x9, 564*4882a593Smuzhiyun BTC_CNT_BT_INFOUPDATE = 0xa, 565*4882a593Smuzhiyun BTC_CNT_BT_IQK = 0xb, 566*4882a593Smuzhiyun BTC_CNT_BT_IQKFAIL = 0xc, 567*4882a593Smuzhiyun BTC_CNT_BT_TRX = 0xd, 568*4882a593Smuzhiyun BTC_CNT_BT_MAX 569*4882a593Smuzhiyun }; 570*4882a593Smuzhiyun 571*4882a593Smuzhiyun enum btc_wl_state_cnt { 572*4882a593Smuzhiyun BTC_CNT_WL_SCANAP = 0x0, 573*4882a593Smuzhiyun BTC_CNT_WL_ARP = 0x1, 574*4882a593Smuzhiyun BTC_CNT_WL_GNTERR = 0x2, 575*4882a593Smuzhiyun BTC_CNT_WL_PSFAIL = 0x3, 576*4882a593Smuzhiyun BTC_CNT_WL_COEXRUN = 0x4, 577*4882a593Smuzhiyun BTC_CNT_WL_COEXINFO1 = 0x5, 578*4882a593Smuzhiyun BTC_CNT_WL_COEXINFO2 = 0x6, 579*4882a593Smuzhiyun BTC_CNT_WL_AUTOSLOT_HANG = 0x7, 580*4882a593Smuzhiyun BTC_CNT_WL_NOISY0 = 0x8, 581*4882a593Smuzhiyun BTC_CNT_WL_NOISY1 = 0x9, 582*4882a593Smuzhiyun BTC_CNT_WL_NOISY2 = 0xa, 583*4882a593Smuzhiyun BTC_CNT_WL_ACTIVEPORT = 0xb, 584*4882a593Smuzhiyun BTC_CNT_WL_LEAKAP_NORX = 0xc, 585*4882a593Smuzhiyun BTC_CNT_WL_FW_NOTIFY = 0xd, 586*4882a593Smuzhiyun BTC_CNT_WL_2G_TDDTRY = 0xe, 587*4882a593Smuzhiyun BTC_CNT_WL_2G_FDDSTAY = 0xf, 588*4882a593Smuzhiyun BTC_CNT_WL_MAX 589*4882a593Smuzhiyun }; 590*4882a593Smuzhiyun 591*4882a593Smuzhiyun enum btc_wl_crc_cnt { 592*4882a593Smuzhiyun BTC_WLCRC_11BOK = 0x0, 593*4882a593Smuzhiyun BTC_WLCRC_11GOK = 0x1, 594*4882a593Smuzhiyun BTC_WLCRC_11NOK = 0x2, 595*4882a593Smuzhiyun BTC_WLCRC_11VHTOK = 0x3, 596*4882a593Smuzhiyun BTC_WLCRC_11BERR = 0x4, 597*4882a593Smuzhiyun BTC_WLCRC_11GERR = 0x5, 598*4882a593Smuzhiyun BTC_WLCRC_11NERR = 0x6, 599*4882a593Smuzhiyun BTC_WLCRC_11VHTERR = 0x7, 600*4882a593Smuzhiyun BTC_WLCRC_MAX 601*4882a593Smuzhiyun }; 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun enum btc_timer_cnt { 604*4882a593Smuzhiyun BTC_TIMER_WL_STAYBUSY = 0x0, 605*4882a593Smuzhiyun BTC_TIMER_WL_COEXFREEZE = 0x1, 606*4882a593Smuzhiyun BTC_TIMER_WL_SPECPKT = 0x2, 607*4882a593Smuzhiyun BTC_TIMER_WL_CONNPKT = 0x3, 608*4882a593Smuzhiyun BTC_TIMER_WL_PNPWAKEUP = 0x4, 609*4882a593Smuzhiyun BTC_TIMER_WL_CCKLOCK = 0x5, 610*4882a593Smuzhiyun BTC_TIMER_WL_FWDBG = 0x6, 611*4882a593Smuzhiyun BTC_TIMER_BT_RELINK = 0x7, 612*4882a593Smuzhiyun BTC_TIMER_BT_REENABLE = 0x8, 613*4882a593Smuzhiyun BTC_TIMER_BT_MULTILINK = 0x9, 614*4882a593Smuzhiyun BTC_TIMER_BT_INQPAGE = 0xa, 615*4882a593Smuzhiyun BTC_TIMER_BT_A2DP_ACT = 0xb, 616*4882a593Smuzhiyun BTC_TIMER_MAX 617*4882a593Smuzhiyun }; 618*4882a593Smuzhiyun 619*4882a593Smuzhiyun enum btc_wl_status_change { 620*4882a593Smuzhiyun BTC_WLSTATUS_CHANGE_TOIDLE = 0x0, 621*4882a593Smuzhiyun BTC_WLSTATUS_CHANGE_TOBUSY = 0x1, 622*4882a593Smuzhiyun BTC_WLSTATUS_CHANGE_RSSI = 0x2, 623*4882a593Smuzhiyun BTC_WLSTATUS_CHANGE_LINKINFO = 0x3, 624*4882a593Smuzhiyun BTC_WLSTATUS_CHANGE_DIR = 0x4, 625*4882a593Smuzhiyun BTC_WLSTATUS_CHANGE_NOISY = 0x5, 626*4882a593Smuzhiyun BTC_WLSTATUS_CHANGE_BTCNT = 0x6, 627*4882a593Smuzhiyun BTC_WLSTATUS_CHANGE_LOCKTRY = 0x7, 628*4882a593Smuzhiyun BTC_WLSTATUS_CHANGE_MAX 629*4882a593Smuzhiyun }; 630*4882a593Smuzhiyun 631*4882a593Smuzhiyun enum btc_commom_chip_setup { 632*4882a593Smuzhiyun BTC_CSETUP_INIT_HW = 0x0, 633*4882a593Smuzhiyun BTC_CSETUP_ANT_SWITCH = 0x1, 634*4882a593Smuzhiyun BTC_CSETUP_GNT_FIX = 0x2, 635*4882a593Smuzhiyun BTC_CSETUP_GNT_DEBUG = 0x3, 636*4882a593Smuzhiyun BTC_CSETUP_RFE_TYPE = 0x4, 637*4882a593Smuzhiyun BTC_CSETUP_COEXINFO_HW = 0x5, 638*4882a593Smuzhiyun BTC_CSETUP_WL_TX_POWER = 0x6, 639*4882a593Smuzhiyun BTC_CSETUP_WL_RX_GAIN = 0x7, 640*4882a593Smuzhiyun BTC_CSETUP_WLAN_ACT_IPS = 0x8, 641*4882a593Smuzhiyun BTC_CSETUP_BT_CTRL_ACT = 0x9, 642*4882a593Smuzhiyun BTC_CSETUP_MAX 643*4882a593Smuzhiyun }; 644*4882a593Smuzhiyun 645*4882a593Smuzhiyun enum btc_indirect_reg_type { 646*4882a593Smuzhiyun BTC_INDIRECT_1700 = 0x0, 647*4882a593Smuzhiyun BTC_INDIRECT_7C0 = 0x1, 648*4882a593Smuzhiyun BTC_INDIRECT_MAX 649*4882a593Smuzhiyun }; 650*4882a593Smuzhiyun 651*4882a593Smuzhiyun enum btc_pstdma_type { 652*4882a593Smuzhiyun BTC_PSTDMA_FORCE_LPSOFF = 0x0, 653*4882a593Smuzhiyun BTC_PSTDMA_FORCE_LPSON = 0x1, 654*4882a593Smuzhiyun BTC_PSTDMA_MAX 655*4882a593Smuzhiyun }; 656*4882a593Smuzhiyun 657*4882a593Smuzhiyun enum btc_btrssi_type { 658*4882a593Smuzhiyun BTC_BTRSSI_RATIO = 0x0, 659*4882a593Smuzhiyun BTC_BTRSSI_DBM = 0x1, 660*4882a593Smuzhiyun BTC_BTRSSI_MAX 661*4882a593Smuzhiyun }; 662*4882a593Smuzhiyun 663*4882a593Smuzhiyun enum btc_wl_priority_mask { 664*4882a593Smuzhiyun BTC_WLPRI_RX_RSP = 2, 665*4882a593Smuzhiyun BTC_WLPRI_TX_RSP = 3, 666*4882a593Smuzhiyun BTC_WLPRI_TX_BEACON = 4, 667*4882a593Smuzhiyun BTC_WLPRI_TX_OFDM = 11, 668*4882a593Smuzhiyun BTC_WLPRI_TX_CCK = 12, 669*4882a593Smuzhiyun BTC_WLPRI_TX_BEACONQ = 27, 670*4882a593Smuzhiyun BTC_WLPRI_RX_CCK = 28, 671*4882a593Smuzhiyun BTC_WLPRI_RX_OFDM = 29, 672*4882a593Smuzhiyun BTC_WLPRI_MAX 673*4882a593Smuzhiyun }; 674*4882a593Smuzhiyun 675*4882a593Smuzhiyun enum btc_ext_chip_id{ 676*4882a593Smuzhiyun BTC_EXT_CHIP_NONE, 677*4882a593Smuzhiyun BTC_EXT_CHIP_RF4CE, 678*4882a593Smuzhiyun BTC_EXT_CHIP_MAX 679*4882a593Smuzhiyun }; 680*4882a593Smuzhiyun 681*4882a593Smuzhiyun enum btc_ext_chip_mode{ 682*4882a593Smuzhiyun BTC_EXTMODE_NORMAL, 683*4882a593Smuzhiyun BTC_EXTMODE_VOICE, 684*4882a593Smuzhiyun BTC_EXTMODE_MAX 685*4882a593Smuzhiyun }; 686*4882a593Smuzhiyun 687*4882a593Smuzhiyun enum btc_wl_rfk_type { 688*4882a593Smuzhiyun BTC_PWR_TRK = 0, 689*4882a593Smuzhiyun BTC_IQK = 1, 690*4882a593Smuzhiyun BTC_LCK = 2, 691*4882a593Smuzhiyun BTC_DPK = 3, 692*4882a593Smuzhiyun BTC_TXGAPK = 4, 693*4882a593Smuzhiyun BTC_RFK_TYPE_MAX 694*4882a593Smuzhiyun }; 695*4882a593Smuzhiyun 696*4882a593Smuzhiyun enum btc_wl_rfk_state { 697*4882a593Smuzhiyun BTC_RFK_START = 0, 698*4882a593Smuzhiyun BTC_RFK_END = 1, 699*4882a593Smuzhiyun BTC_RFK_STATE_MAX 700*4882a593Smuzhiyun }; 701*4882a593Smuzhiyun 702*4882a593Smuzhiyun struct btc_board_info { 703*4882a593Smuzhiyun /* The following is some board information */ 704*4882a593Smuzhiyun u8 bt_chip_type; 705*4882a593Smuzhiyun u8 pg_ant_num; /* pg ant number */ 706*4882a593Smuzhiyun u8 btdm_ant_num; /* ant number for btdm */ 707*4882a593Smuzhiyun u8 btdm_ant_num_by_ant_det; /* ant number for btdm after antenna detection */ 708*4882a593Smuzhiyun u8 btdm_ant_pos; /* Bryant Add to indicate Antenna Position for (pg_ant_num = 2) && (btdm_ant_num =1) (DPDT+1Ant case) */ 709*4882a593Smuzhiyun u8 single_ant_path; /* current used for 8723b only, 1=>s0, 0=>s1 */ 710*4882a593Smuzhiyun boolean tfbga_package; /* for Antenna detect threshold */ 711*4882a593Smuzhiyun boolean btdm_ant_det_finish; 712*4882a593Smuzhiyun boolean btdm_ant_det_already_init_phydm; 713*4882a593Smuzhiyun u8 ant_type; 714*4882a593Smuzhiyun u8 rfe_type; 715*4882a593Smuzhiyun u8 ant_div_cfg; 716*4882a593Smuzhiyun boolean btdm_ant_det_complete_fail; 717*4882a593Smuzhiyun u8 ant_det_result; 718*4882a593Smuzhiyun boolean ant_det_result_five_complete; 719*4882a593Smuzhiyun u32 antdetval; 720*4882a593Smuzhiyun u8 customerID; 721*4882a593Smuzhiyun u8 customer_id; 722*4882a593Smuzhiyun u8 ant_distance; /* WL-BT antenna space for non-shared antenna */ 723*4882a593Smuzhiyun u8 ext_chip_id; 724*4882a593Smuzhiyun }; 725*4882a593Smuzhiyun 726*4882a593Smuzhiyun struct btc_coex_dm { 727*4882a593Smuzhiyun boolean cur_ignore_wlan_act; 728*4882a593Smuzhiyun boolean cur_ps_tdma_on; 729*4882a593Smuzhiyun boolean cur_low_penalty_ra; 730*4882a593Smuzhiyun boolean cur_wl_rx_low_gain_en; 731*4882a593Smuzhiyun 732*4882a593Smuzhiyun u8 bt_rssi_state[4]; 733*4882a593Smuzhiyun u8 wl_rssi_state[4]; 734*4882a593Smuzhiyun u8 cur_ps_tdma; 735*4882a593Smuzhiyun u8 ps_tdma_para[5]; 736*4882a593Smuzhiyun u8 fw_tdma_para[5]; 737*4882a593Smuzhiyun u8 cur_lps; 738*4882a593Smuzhiyun u8 cur_rpwm; 739*4882a593Smuzhiyun u8 cur_bt_pwr_lvl; 740*4882a593Smuzhiyun u8 cur_bt_lna_lvl; 741*4882a593Smuzhiyun u8 cur_wl_pwr_lvl; 742*4882a593Smuzhiyun u8 cur_algorithm; 743*4882a593Smuzhiyun u8 bt_status; 744*4882a593Smuzhiyun u8 wl_chnl_info[3]; 745*4882a593Smuzhiyun u8 cur_toggle_para[6]; 746*4882a593Smuzhiyun u32 cur_ant_pos_type; 747*4882a593Smuzhiyun u32 cur_switch_status; 748*4882a593Smuzhiyun u32 setting_tdma; 749*4882a593Smuzhiyun }; 750*4882a593Smuzhiyun 751*4882a593Smuzhiyun struct btc_coex_sta { 752*4882a593Smuzhiyun boolean coex_freeze; 753*4882a593Smuzhiyun boolean coex_freerun; 754*4882a593Smuzhiyun boolean rf4ce_en; 755*4882a593Smuzhiyun boolean force_freerun; 756*4882a593Smuzhiyun boolean force_tdd; 757*4882a593Smuzhiyun 758*4882a593Smuzhiyun boolean bt_disabled; 759*4882a593Smuzhiyun boolean bt_disabled_pre; 760*4882a593Smuzhiyun boolean bt_link_exist; 761*4882a593Smuzhiyun boolean bt_whck_test; 762*4882a593Smuzhiyun boolean bt_inq_page; 763*4882a593Smuzhiyun boolean bt_inq_page_pre; 764*4882a593Smuzhiyun boolean bt_inq_page_remain; 765*4882a593Smuzhiyun boolean bt_inq; 766*4882a593Smuzhiyun boolean bt_page; 767*4882a593Smuzhiyun boolean bt_ble_voice; 768*4882a593Smuzhiyun boolean bt_ble_exist; 769*4882a593Smuzhiyun boolean bt_hfp_exist; 770*4882a593Smuzhiyun boolean bt_a2dp_exist; 771*4882a593Smuzhiyun boolean bt_hid_exist; 772*4882a593Smuzhiyun boolean bt_pan_exist; // PAN or OPP 773*4882a593Smuzhiyun boolean bt_opp_exist; //OPP only 774*4882a593Smuzhiyun boolean bt_msft_mr_exist; 775*4882a593Smuzhiyun boolean bt_acl_busy; 776*4882a593Smuzhiyun boolean bt_fix_2M; 777*4882a593Smuzhiyun boolean bt_setup_link; 778*4882a593Smuzhiyun boolean bt_multi_link; 779*4882a593Smuzhiyun boolean bt_multi_link_pre; 780*4882a593Smuzhiyun boolean bt_multi_link_remain; 781*4882a593Smuzhiyun boolean bt_a2dp_sink; 782*4882a593Smuzhiyun boolean bt_reenable; 783*4882a593Smuzhiyun boolean bt_ble_scan_en; 784*4882a593Smuzhiyun boolean bt_slave; 785*4882a593Smuzhiyun boolean bt_a2dp_active; 786*4882a593Smuzhiyun boolean bt_a2dp_active_pre; 787*4882a593Smuzhiyun boolean bt_a2dp_active_remain; 788*4882a593Smuzhiyun boolean bt_slave_latency; 789*4882a593Smuzhiyun boolean bt_init_scan; 790*4882a593Smuzhiyun boolean bt_418_hid_exist; 791*4882a593Smuzhiyun boolean bt_ble_hid_exist; 792*4882a593Smuzhiyun boolean bt_mesh; 793*4882a593Smuzhiyun boolean bt_ctr_ok; 794*4882a593Smuzhiyun 795*4882a593Smuzhiyun boolean wl_under_lps; 796*4882a593Smuzhiyun boolean wl_under_ips; 797*4882a593Smuzhiyun boolean wl_under_4way; 798*4882a593Smuzhiyun boolean wl_hi_pri_task1; 799*4882a593Smuzhiyun boolean wl_hi_pri_task2; 800*4882a593Smuzhiyun boolean wl_cck_lock; 801*4882a593Smuzhiyun boolean wl_cck_lock_pre; 802*4882a593Smuzhiyun boolean wl_cck_lock_ever; 803*4882a593Smuzhiyun boolean wl_force_lps_ctrl; 804*4882a593Smuzhiyun boolean wl_busy_pre; 805*4882a593Smuzhiyun boolean wl_gl_busy; 806*4882a593Smuzhiyun boolean wl_gl_busy_pre; 807*4882a593Smuzhiyun boolean wl_linkscan_proc; 808*4882a593Smuzhiyun boolean wl_mimo_ps; 809*4882a593Smuzhiyun boolean wl_cck_dead_lock_ap; 810*4882a593Smuzhiyun boolean wl_tx_limit_en; 811*4882a593Smuzhiyun boolean wl_ampdu_limit_en; 812*4882a593Smuzhiyun boolean wl_rxagg_limit_en; 813*4882a593Smuzhiyun boolean wl_connecting; 814*4882a593Smuzhiyun boolean wl_pnp_wakeup; 815*4882a593Smuzhiyun boolean wl_slot_toggle; 816*4882a593Smuzhiyun boolean wl_slot_toggle_change; /* if toggle to no-toggle */ 817*4882a593Smuzhiyun boolean wl_leak_ap; /* !is_no_wl_5ms_extend */ 818*4882a593Smuzhiyun boolean wl_blacklist_ap; 819*4882a593Smuzhiyun boolean wl_rfk; 820*4882a593Smuzhiyun 821*4882a593Smuzhiyun u8 coex_table_type; 822*4882a593Smuzhiyun u8 coex_run_reason; 823*4882a593Smuzhiyun u8 tdma_byte4_modify_pre; 824*4882a593Smuzhiyun u8 kt_ver; 825*4882a593Smuzhiyun u8 gnt_workaround_state; 826*4882a593Smuzhiyun u8 tdma_timer_base; 827*4882a593Smuzhiyun u8 bt_rssi; 828*4882a593Smuzhiyun u8 bt_profile_num; 829*4882a593Smuzhiyun u8 bt_profile_num_pre; 830*4882a593Smuzhiyun u8 bt_info_c2h[BTC_BTINFO_SRC_MAX][BTC_BTINFO_LENGTH_MAX]; 831*4882a593Smuzhiyun u8 bt_info_lb2; 832*4882a593Smuzhiyun u8 bt_info_lb3; 833*4882a593Smuzhiyun u8 bt_info_hb0; 834*4882a593Smuzhiyun u8 bt_info_hb1; 835*4882a593Smuzhiyun u8 bt_info_hb2; 836*4882a593Smuzhiyun u8 bt_info_hb3; 837*4882a593Smuzhiyun u8 bt_ble_scan_type; 838*4882a593Smuzhiyun u8 bt_afh_map[10]; 839*4882a593Smuzhiyun u8 bt_a2dp_vendor_id; 840*4882a593Smuzhiyun u8 bt_hid_pair_num; 841*4882a593Smuzhiyun u8 bt_hid_slot; 842*4882a593Smuzhiyun u8 bt_a2dp_bitpool; 843*4882a593Smuzhiyun u8 bt_iqk_state; 844*4882a593Smuzhiyun u8 bt_sut_pwr_lvl[4]; 845*4882a593Smuzhiyun u8 bt_golden_rx_shift[4]; 846*4882a593Smuzhiyun u8 bt_ext_autoslot_thres; 847*4882a593Smuzhiyun u8 ext_chip_mode; 848*4882a593Smuzhiyun 849*4882a593Smuzhiyun u8 wl_pnp_state_pre; 850*4882a593Smuzhiyun u8 wl_noisy_level; 851*4882a593Smuzhiyun u8 wl_fw_dbg_info[10]; 852*4882a593Smuzhiyun u8 wl_fw_dbg_info_pre[10]; 853*4882a593Smuzhiyun u8 wl_rx_rate; 854*4882a593Smuzhiyun u8 wl_tx_rate; 855*4882a593Smuzhiyun u8 wl_rts_rx_rate; 856*4882a593Smuzhiyun u8 wl_center_ch; 857*4882a593Smuzhiyun u8 wl_tx_macid; 858*4882a593Smuzhiyun u8 wl_tx_retry_ratio; 859*4882a593Smuzhiyun u8 wl_coex_mode; 860*4882a593Smuzhiyun u8 wl_iot_peer; 861*4882a593Smuzhiyun u8 wl_ra_thres; 862*4882a593Smuzhiyun u8 wl_ampdulen; 863*4882a593Smuzhiyun u8 wl_rxagg_size; 864*4882a593Smuzhiyun u8 wl_toggle_para[6]; 865*4882a593Smuzhiyun u8 wl_toggle_interval; 866*4882a593Smuzhiyun 867*4882a593Smuzhiyun u16 score_board_BW; 868*4882a593Smuzhiyun u32 score_board_WB; 869*4882a593Smuzhiyun u16 bt_reg_vendor_ac; 870*4882a593Smuzhiyun u16 bt_reg_vendor_ae; 871*4882a593Smuzhiyun u32 bt_reg_vendor_dac; 872*4882a593Smuzhiyun u16 bt_reg_modem_a; 873*4882a593Smuzhiyun u16 bt_reg_rf_2; 874*4882a593Smuzhiyun u16 bt_reg_rf_9; 875*4882a593Smuzhiyun u16 wl_txlimit; 876*4882a593Smuzhiyun 877*4882a593Smuzhiyun u32 score_board_BW_32bit; 878*4882a593Smuzhiyun u32 score_board_WB_32bit; 879*4882a593Smuzhiyun u32 hi_pri_tx; 880*4882a593Smuzhiyun u32 hi_pri_rx; 881*4882a593Smuzhiyun u32 lo_pri_tx; 882*4882a593Smuzhiyun u32 lo_pri_rx; 883*4882a593Smuzhiyun u32 bt_supported_feature; 884*4882a593Smuzhiyun u32 bt_supported_version; 885*4882a593Smuzhiyun u32 bt_ble_scan_para[3]; 886*4882a593Smuzhiyun u32 bt_a2dp_device_name; 887*4882a593Smuzhiyun u32 bt_a2dp_flush_time; 888*4882a593Smuzhiyun u32 wl_arfb1; 889*4882a593Smuzhiyun u32 wl_arfb2; 890*4882a593Smuzhiyun u32 wl_traffic_dir; 891*4882a593Smuzhiyun u32 wl_bw; 892*4882a593Smuzhiyun u32 cnt_bt_info_c2h[BTC_BTINFO_SRC_MAX]; 893*4882a593Smuzhiyun u32 cnt_bt[BTC_CNT_BT_MAX]; 894*4882a593Smuzhiyun u32 cnt_wl[BTC_CNT_WL_MAX]; 895*4882a593Smuzhiyun u32 cnt_timer[BTC_TIMER_MAX]; 896*4882a593Smuzhiyun }; 897*4882a593Smuzhiyun 898*4882a593Smuzhiyun struct btc_rfe_type { 899*4882a593Smuzhiyun boolean ant_switch_exist; 900*4882a593Smuzhiyun boolean ant_switch_diversity; /* If diversity on */ 901*4882a593Smuzhiyun boolean ant_switch_with_bt; /* If WL_2G/BT use ext-switch at shared-ant */ 902*4882a593Smuzhiyun u8 rfe_module_type; 903*4882a593Smuzhiyun u8 ant_switch_type; 904*4882a593Smuzhiyun u8 ant_switch_polarity; 905*4882a593Smuzhiyun 906*4882a593Smuzhiyun boolean band_switch_exist; 907*4882a593Smuzhiyun u8 band_switch_type; /* 0:DPDT, 1:SPDT */ 908*4882a593Smuzhiyun u8 band_switch_polarity; 909*4882a593Smuzhiyun 910*4882a593Smuzhiyun /* If TRUE: WLG at BTG, If FALSE: WLG at WLAG */ 911*4882a593Smuzhiyun boolean wlg_at_btg; 912*4882a593Smuzhiyun }; 913*4882a593Smuzhiyun 914*4882a593Smuzhiyun 915*4882a593Smuzhiyun struct btc_wifi_link_info_ext { 916*4882a593Smuzhiyun boolean is_all_under_5g; 917*4882a593Smuzhiyun boolean is_mcc_25g; 918*4882a593Smuzhiyun boolean is_p2p_connected; 919*4882a593Smuzhiyun boolean is_ap_mode; 920*4882a593Smuzhiyun boolean is_scan; 921*4882a593Smuzhiyun boolean is_link; 922*4882a593Smuzhiyun boolean is_roam; 923*4882a593Smuzhiyun boolean is_4way; 924*4882a593Smuzhiyun boolean is_32k; 925*4882a593Smuzhiyun boolean is_connected; 926*4882a593Smuzhiyun u8 num_of_active_port; 927*4882a593Smuzhiyun u32 port_connect_status; 928*4882a593Smuzhiyun u32 traffic_dir; 929*4882a593Smuzhiyun u32 wifi_bw; 930*4882a593Smuzhiyun }; 931*4882a593Smuzhiyun 932*4882a593Smuzhiyun struct btc_coex_table_para { 933*4882a593Smuzhiyun u32 bt; //0x6c0 934*4882a593Smuzhiyun u32 wl; //0x6c4 935*4882a593Smuzhiyun }; 936*4882a593Smuzhiyun 937*4882a593Smuzhiyun struct btc_tdma_para { 938*4882a593Smuzhiyun u8 para[5]; 939*4882a593Smuzhiyun }; 940*4882a593Smuzhiyun 941*4882a593Smuzhiyun struct btc_reg_byte_modify { 942*4882a593Smuzhiyun u32 addr; 943*4882a593Smuzhiyun u8 bitmask; 944*4882a593Smuzhiyun u8 val; 945*4882a593Smuzhiyun }; 946*4882a593Smuzhiyun 947*4882a593Smuzhiyun struct btc_5g_afh_map { 948*4882a593Smuzhiyun u32 wl_5g_ch; 949*4882a593Smuzhiyun u8 bt_skip_ch; 950*4882a593Smuzhiyun u8 bt_skip_span; 951*4882a593Smuzhiyun }; 952*4882a593Smuzhiyun 953*4882a593Smuzhiyun struct btc_rf_para { 954*4882a593Smuzhiyun u8 wl_pwr_dec_lvl; 955*4882a593Smuzhiyun u8 bt_pwr_dec_lvl; 956*4882a593Smuzhiyun boolean wl_low_gain_en; 957*4882a593Smuzhiyun u8 bt_lna_lvl; 958*4882a593Smuzhiyun }; 959*4882a593Smuzhiyun 960*4882a593Smuzhiyun typedef enum _BTC_DBG_OPCODE { 961*4882a593Smuzhiyun BTC_DBG_SET_COEX_NORMAL = 0x0, 962*4882a593Smuzhiyun BTC_DBG_SET_COEX_WIFI_ONLY = 0x1, 963*4882a593Smuzhiyun BTC_DBG_SET_COEX_BT_ONLY = 0x2, 964*4882a593Smuzhiyun BTC_DBG_SET_COEX_DEC_BT_PWR = 0x3, 965*4882a593Smuzhiyun BTC_DBG_SET_COEX_BT_AFH_MAP = 0x4, 966*4882a593Smuzhiyun BTC_DBG_SET_COEX_BT_IGNORE_WLAN_ACT = 0x5, 967*4882a593Smuzhiyun BTC_DBG_SET_COEX_MANUAL_CTRL = 0x6, 968*4882a593Smuzhiyun BTC_DBG_MAX 969*4882a593Smuzhiyun } BTC_DBG_OPCODE, *PBTC_DBG_OPCODE; 970*4882a593Smuzhiyun 971*4882a593Smuzhiyun typedef enum _BTC_RSSI_STATE { 972*4882a593Smuzhiyun BTC_RSSI_STATE_HIGH = 0x0, 973*4882a593Smuzhiyun BTC_RSSI_STATE_MEDIUM = 0x1, 974*4882a593Smuzhiyun BTC_RSSI_STATE_LOW = 0x2, 975*4882a593Smuzhiyun BTC_RSSI_STATE_STAY_HIGH = 0x3, 976*4882a593Smuzhiyun BTC_RSSI_STATE_STAY_MEDIUM = 0x4, 977*4882a593Smuzhiyun BTC_RSSI_STATE_STAY_LOW = 0x5, 978*4882a593Smuzhiyun BTC_RSSI_MAX 979*4882a593Smuzhiyun } BTC_RSSI_STATE, *PBTC_RSSI_STATE; 980*4882a593Smuzhiyun #define BTC_RSSI_HIGH(_rssi_) ((_rssi_ == BTC_RSSI_STATE_HIGH || _rssi_ == BTC_RSSI_STATE_STAY_HIGH) ? TRUE:FALSE) 981*4882a593Smuzhiyun #define BTC_RSSI_MEDIUM(_rssi_) ((_rssi_ == BTC_RSSI_STATE_MEDIUM || _rssi_ == BTC_RSSI_STATE_STAY_MEDIUM) ? TRUE:FALSE) 982*4882a593Smuzhiyun #define BTC_RSSI_LOW(_rssi_) ((_rssi_ == BTC_RSSI_STATE_LOW || _rssi_ == BTC_RSSI_STATE_STAY_LOW) ? TRUE:FALSE) 983*4882a593Smuzhiyun 984*4882a593Smuzhiyun typedef enum _BTC_WIFI_ROLE { 985*4882a593Smuzhiyun BTC_ROLE_STATION = 0x0, 986*4882a593Smuzhiyun BTC_ROLE_AP = 0x1, 987*4882a593Smuzhiyun BTC_ROLE_IBSS = 0x2, 988*4882a593Smuzhiyun BTC_ROLE_HS_MODE = 0x3, 989*4882a593Smuzhiyun BTC_ROLE_MAX 990*4882a593Smuzhiyun } BTC_WIFI_ROLE, *PBTC_WIFI_ROLE; 991*4882a593Smuzhiyun 992*4882a593Smuzhiyun typedef enum _BTC_WIRELESS_FREQ { 993*4882a593Smuzhiyun BTC_FREQ_2_4G = 0x0, 994*4882a593Smuzhiyun BTC_FREQ_5G = 0x1, 995*4882a593Smuzhiyun BTC_FREQ_25G = 0x2, 996*4882a593Smuzhiyun BTC_FREQ_MAX 997*4882a593Smuzhiyun } BTC_WIRELESS_FREQ, *PBTC_WIRELESS_FREQ; 998*4882a593Smuzhiyun 999*4882a593Smuzhiyun typedef enum _BTC_WIFI_BW_MODE { 1000*4882a593Smuzhiyun BTC_WIFI_BW_LEGACY = 0x0, 1001*4882a593Smuzhiyun BTC_WIFI_BW_HT20 = 0x1, 1002*4882a593Smuzhiyun BTC_WIFI_BW_HT40 = 0x2, 1003*4882a593Smuzhiyun BTC_WIFI_BW_HT80 = 0x3, 1004*4882a593Smuzhiyun BTC_WIFI_BW_HT160 = 0x4, 1005*4882a593Smuzhiyun BTC_WIFI_BW_MAX 1006*4882a593Smuzhiyun } BTC_WIFI_BW_MODE, *PBTC_WIFI_BW_MODE; 1007*4882a593Smuzhiyun 1008*4882a593Smuzhiyun typedef enum _BTC_WIFI_TRAFFIC_DIR { 1009*4882a593Smuzhiyun BTC_WIFI_TRAFFIC_TX = 0x0, 1010*4882a593Smuzhiyun BTC_WIFI_TRAFFIC_RX = 0x1, 1011*4882a593Smuzhiyun BTC_WIFI_TRAFFIC_MAX 1012*4882a593Smuzhiyun } BTC_WIFI_TRAFFIC_DIR, *PBTC_WIFI_TRAFFIC_DIR; 1013*4882a593Smuzhiyun 1014*4882a593Smuzhiyun typedef enum _BTC_WIFI_PNP { 1015*4882a593Smuzhiyun BTC_WIFI_PNP_WAKE_UP = 0x0, 1016*4882a593Smuzhiyun BTC_WIFI_PNP_SLEEP = 0x1, 1017*4882a593Smuzhiyun BTC_WIFI_PNP_SLEEP_KEEP_ANT = 0x2, 1018*4882a593Smuzhiyun BTC_WIFI_PNP_WOWLAN = 0x3, 1019*4882a593Smuzhiyun BTC_WIFI_PNP_MAX 1020*4882a593Smuzhiyun } BTC_WIFI_PNP, *PBTC_WIFI_PNP; 1021*4882a593Smuzhiyun 1022*4882a593Smuzhiyun typedef enum _BTC_IOT_PEER { 1023*4882a593Smuzhiyun BTC_IOT_PEER_UNKNOWN = 0, 1024*4882a593Smuzhiyun BTC_IOT_PEER_REALTEK = 1, 1025*4882a593Smuzhiyun BTC_IOT_PEER_REALTEK_92SE = 2, 1026*4882a593Smuzhiyun BTC_IOT_PEER_BROADCOM = 3, 1027*4882a593Smuzhiyun BTC_IOT_PEER_RALINK = 4, 1028*4882a593Smuzhiyun BTC_IOT_PEER_ATHEROS = 5, 1029*4882a593Smuzhiyun BTC_IOT_PEER_CISCO = 6, 1030*4882a593Smuzhiyun BTC_IOT_PEER_MERU = 7, 1031*4882a593Smuzhiyun BTC_IOT_PEER_MARVELL = 8, 1032*4882a593Smuzhiyun BTC_IOT_PEER_REALTEK_SOFTAP = 9, /* peer is RealTek SOFT_AP, by Bohn, 2009.12.17 */ 1033*4882a593Smuzhiyun BTC_IOT_PEER_SELF_SOFTAP = 10, /* Self is SoftAP */ 1034*4882a593Smuzhiyun BTC_IOT_PEER_AIRGO = 11, 1035*4882a593Smuzhiyun BTC_IOT_PEER_INTEL = 12, 1036*4882a593Smuzhiyun BTC_IOT_PEER_RTK_APCLIENT = 13, 1037*4882a593Smuzhiyun BTC_IOT_PEER_REALTEK_81XX = 14, 1038*4882a593Smuzhiyun BTC_IOT_PEER_REALTEK_WOW = 15, 1039*4882a593Smuzhiyun BTC_IOT_PEER_REALTEK_JAGUAR_BCUTAP = 16, 1040*4882a593Smuzhiyun BTC_IOT_PEER_REALTEK_JAGUAR_CCUTAP = 17, 1041*4882a593Smuzhiyun BTC_IOT_PEER_MAX, 1042*4882a593Smuzhiyun } BTC_IOT_PEER, *PBTC_IOT_PEER; 1043*4882a593Smuzhiyun 1044*4882a593Smuzhiyun /* for 8723b-d cut large current issue */ 1045*4882a593Smuzhiyun typedef enum _BTC_WIFI_COEX_STATE { 1046*4882a593Smuzhiyun BTC_WIFI_STAT_INIT, 1047*4882a593Smuzhiyun BTC_WIFI_STAT_IQK, 1048*4882a593Smuzhiyun BTC_WIFI_STAT_NORMAL_OFF, 1049*4882a593Smuzhiyun BTC_WIFI_STAT_MP_OFF, 1050*4882a593Smuzhiyun BTC_WIFI_STAT_NORMAL, 1051*4882a593Smuzhiyun BTC_WIFI_STAT_ANT_DIV, 1052*4882a593Smuzhiyun BTC_WIFI_STAT_MAX 1053*4882a593Smuzhiyun } BTC_WIFI_COEX_STATE, *PBTC_WIFI_COEX_STATE; 1054*4882a593Smuzhiyun 1055*4882a593Smuzhiyun typedef enum _BTC_ANT_TYPE { 1056*4882a593Smuzhiyun BTC_ANT_TYPE_0, 1057*4882a593Smuzhiyun BTC_ANT_TYPE_1, 1058*4882a593Smuzhiyun BTC_ANT_TYPE_2, 1059*4882a593Smuzhiyun BTC_ANT_TYPE_3, 1060*4882a593Smuzhiyun BTC_ANT_TYPE_4, 1061*4882a593Smuzhiyun BTC_ANT_TYPE_MAX 1062*4882a593Smuzhiyun } BTC_ANT_TYPE, *PBTC_ANT_TYPE; 1063*4882a593Smuzhiyun 1064*4882a593Smuzhiyun typedef enum _BTC_VENDOR { 1065*4882a593Smuzhiyun BTC_VENDOR_LENOVO, 1066*4882a593Smuzhiyun BTC_VENDOR_ASUS, 1067*4882a593Smuzhiyun BTC_VENDOR_OTHER 1068*4882a593Smuzhiyun } BTC_VENDOR, *PBTC_VENDOR; 1069*4882a593Smuzhiyun 1070*4882a593Smuzhiyun 1071*4882a593Smuzhiyun /* defined for BFP_BTC_GET */ 1072*4882a593Smuzhiyun typedef enum _BTC_GET_TYPE { 1073*4882a593Smuzhiyun /* type BOOLEAN */ 1074*4882a593Smuzhiyun BTC_GET_BL_HS_OPERATION, 1075*4882a593Smuzhiyun BTC_GET_BL_HS_CONNECTING, 1076*4882a593Smuzhiyun BTC_GET_BL_WIFI_FW_READY, 1077*4882a593Smuzhiyun BTC_GET_BL_WIFI_CONNECTED, 1078*4882a593Smuzhiyun BTC_GET_BL_WIFI_DUAL_BAND_CONNECTED, 1079*4882a593Smuzhiyun BTC_GET_BL_WIFI_LINK_INFO, 1080*4882a593Smuzhiyun BTC_GET_BL_WIFI_BUSY, 1081*4882a593Smuzhiyun BTC_GET_BL_WIFI_SCAN, 1082*4882a593Smuzhiyun BTC_GET_BL_WIFI_LINK, 1083*4882a593Smuzhiyun BTC_GET_BL_WIFI_ROAM, 1084*4882a593Smuzhiyun BTC_GET_BL_WIFI_4_WAY_PROGRESS, 1085*4882a593Smuzhiyun BTC_GET_BL_WIFI_UNDER_5G, 1086*4882a593Smuzhiyun BTC_GET_BL_WIFI_AP_MODE_ENABLE, 1087*4882a593Smuzhiyun BTC_GET_BL_WIFI_ENABLE_ENCRYPTION, 1088*4882a593Smuzhiyun BTC_GET_BL_WIFI_UNDER_B_MODE, 1089*4882a593Smuzhiyun BTC_GET_BL_EXT_SWITCH, 1090*4882a593Smuzhiyun BTC_GET_BL_WIFI_IS_IN_MP_MODE, 1091*4882a593Smuzhiyun BTC_GET_BL_IS_ASUS_8723B, 1092*4882a593Smuzhiyun BTC_GET_BL_RF4CE_CONNECTED, 1093*4882a593Smuzhiyun BTC_GET_BL_WIFI_LW_PWR_STATE, 1094*4882a593Smuzhiyun 1095*4882a593Smuzhiyun /* type s4Byte */ 1096*4882a593Smuzhiyun BTC_GET_S4_WIFI_RSSI, 1097*4882a593Smuzhiyun BTC_GET_S4_HS_RSSI, 1098*4882a593Smuzhiyun 1099*4882a593Smuzhiyun /* type u4Byte */ 1100*4882a593Smuzhiyun BTC_GET_U4_WIFI_BW, 1101*4882a593Smuzhiyun BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, 1102*4882a593Smuzhiyun BTC_GET_U4_WIFI_TRAFFIC_DIR, 1103*4882a593Smuzhiyun BTC_GET_U4_WIFI_FW_VER, 1104*4882a593Smuzhiyun BTC_GET_U4_WIFI_PHY_VER, 1105*4882a593Smuzhiyun BTC_GET_U4_WIFI_LINK_STATUS, 1106*4882a593Smuzhiyun BTC_GET_U4_BT_PATCH_VER, 1107*4882a593Smuzhiyun BTC_GET_U4_VENDOR, 1108*4882a593Smuzhiyun BTC_GET_U4_SUPPORTED_VERSION, 1109*4882a593Smuzhiyun BTC_GET_U4_SUPPORTED_FEATURE, 1110*4882a593Smuzhiyun BTC_GET_U4_BT_DEVICE_INFO, 1111*4882a593Smuzhiyun BTC_GET_U4_BT_FORBIDDEN_SLOT_VAL, 1112*4882a593Smuzhiyun BTC_GET_U4_BT_A2DP_FLUSH_VAL, 1113*4882a593Smuzhiyun BTC_GET_U4_WIFI_IQK_TOTAL, 1114*4882a593Smuzhiyun BTC_GET_U4_WIFI_IQK_OK, 1115*4882a593Smuzhiyun BTC_GET_U4_WIFI_IQK_FAIL, 1116*4882a593Smuzhiyun 1117*4882a593Smuzhiyun /* type u1Byte */ 1118*4882a593Smuzhiyun BTC_GET_U1_WIFI_DOT11_CHNL, 1119*4882a593Smuzhiyun BTC_GET_U1_WIFI_CENTRAL_CHNL, 1120*4882a593Smuzhiyun BTC_GET_U1_WIFI_HS_CHNL, 1121*4882a593Smuzhiyun BTC_GET_U1_WIFI_P2P_CHNL, 1122*4882a593Smuzhiyun BTC_GET_U1_MAC_PHY_MODE, 1123*4882a593Smuzhiyun BTC_GET_U1_AP_NUM, 1124*4882a593Smuzhiyun BTC_GET_U1_ANT_TYPE, 1125*4882a593Smuzhiyun BTC_GET_U1_IOT_PEER, 1126*4882a593Smuzhiyun BTC_GET_BL_WIFI_BSSID, 1127*4882a593Smuzhiyun 1128*4882a593Smuzhiyun /* type u2Byte */ 1129*4882a593Smuzhiyun BTC_GET_U2_BEACON_PERIOD, 1130*4882a593Smuzhiyun 1131*4882a593Smuzhiyun /*===== for 1Ant ======*/ 1132*4882a593Smuzhiyun BTC_GET_U1_LPS_MODE, 1133*4882a593Smuzhiyun 1134*4882a593Smuzhiyun BTC_GET_MAX 1135*4882a593Smuzhiyun } BTC_GET_TYPE, *PBTC_GET_TYPE; 1136*4882a593Smuzhiyun 1137*4882a593Smuzhiyun /* defined for BFP_BTC_SET */ 1138*4882a593Smuzhiyun typedef enum _BTC_SET_TYPE { 1139*4882a593Smuzhiyun /* type BOOLEAN */ 1140*4882a593Smuzhiyun BTC_SET_BL_BT_DISABLE, 1141*4882a593Smuzhiyun BTC_SET_BL_BT_ENABLE_DISABLE_CHANGE, 1142*4882a593Smuzhiyun BTC_SET_BL_BT_TRAFFIC_BUSY, 1143*4882a593Smuzhiyun BTC_SET_BL_BT_LIMITED_DIG, 1144*4882a593Smuzhiyun BTC_SET_BL_FORCE_TO_ROAM, 1145*4882a593Smuzhiyun BTC_SET_BL_TO_REJ_AP_AGG_PKT, 1146*4882a593Smuzhiyun BTC_SET_BL_BT_CTRL_AGG_SIZE, 1147*4882a593Smuzhiyun BTC_SET_BL_INC_SCAN_DEV_NUM, 1148*4882a593Smuzhiyun BTC_SET_BL_BT_TX_RX_MASK, 1149*4882a593Smuzhiyun BTC_SET_BL_MIRACAST_PLUS_BT, 1150*4882a593Smuzhiyun BTC_SET_BL_BT_LNA_CONSTRAIN_LEVEL, 1151*4882a593Smuzhiyun BTC_SET_BL_BT_GOLDEN_RX_RANGE, 1152*4882a593Smuzhiyun 1153*4882a593Smuzhiyun /* type u1Byte */ 1154*4882a593Smuzhiyun BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, 1155*4882a593Smuzhiyun BTC_SET_U1_AGG_BUF_SIZE, 1156*4882a593Smuzhiyun 1157*4882a593Smuzhiyun /* type trigger some action */ 1158*4882a593Smuzhiyun BTC_SET_ACT_GET_BT_RSSI, 1159*4882a593Smuzhiyun BTC_SET_ACT_AGGREGATE_CTRL, 1160*4882a593Smuzhiyun BTC_SET_ACT_ANTPOSREGRISTRY_CTRL, 1161*4882a593Smuzhiyun 1162*4882a593Smuzhiyun // for mimo ps mode setting 1163*4882a593Smuzhiyun BTC_SET_MIMO_PS_MODE, 1164*4882a593Smuzhiyun /*===== for 1Ant ======*/ 1165*4882a593Smuzhiyun /* type BOOLEAN */ 1166*4882a593Smuzhiyun 1167*4882a593Smuzhiyun /* type u1Byte */ 1168*4882a593Smuzhiyun BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE, 1169*4882a593Smuzhiyun BTC_SET_U1_LPS_VAL, 1170*4882a593Smuzhiyun BTC_SET_U1_RPWM_VAL, 1171*4882a593Smuzhiyun /* type trigger some action */ 1172*4882a593Smuzhiyun BTC_SET_ACT_LEAVE_LPS, 1173*4882a593Smuzhiyun BTC_SET_ACT_ENTER_LPS, 1174*4882a593Smuzhiyun BTC_SET_ACT_NORMAL_LPS, 1175*4882a593Smuzhiyun BTC_SET_ACT_PRE_NORMAL_LPS, 1176*4882a593Smuzhiyun BTC_SET_ACT_POST_NORMAL_LPS, 1177*4882a593Smuzhiyun BTC_SET_ACT_DISABLE_LOW_POWER, 1178*4882a593Smuzhiyun BTC_SET_ACT_UPDATE_RAMASK, 1179*4882a593Smuzhiyun BTC_SET_ACT_SEND_MIMO_PS, 1180*4882a593Smuzhiyun /* BT Coex related */ 1181*4882a593Smuzhiyun BTC_SET_ACT_CTRL_BT_INFO, 1182*4882a593Smuzhiyun BTC_SET_ACT_CTRL_BT_COEX, 1183*4882a593Smuzhiyun BTC_SET_ACT_CTRL_8723B_ANT, 1184*4882a593Smuzhiyun BTC_SET_RESET_COEX_VAR, 1185*4882a593Smuzhiyun /*=================*/ 1186*4882a593Smuzhiyun BTC_SET_MAX 1187*4882a593Smuzhiyun } BTC_SET_TYPE, *PBTC_SET_TYPE; 1188*4882a593Smuzhiyun 1189*4882a593Smuzhiyun typedef enum _BTC_DBG_DISP_TYPE { 1190*4882a593Smuzhiyun BTC_DBG_DISP_COEX_STATISTICS = 0x0, 1191*4882a593Smuzhiyun BTC_DBG_DISP_BT_LINK_INFO = 0x1, 1192*4882a593Smuzhiyun BTC_DBG_DISP_WIFI_STATUS = 0x2, 1193*4882a593Smuzhiyun BTC_DBG_DISP_MAX 1194*4882a593Smuzhiyun } BTC_DBG_DISP_TYPE, *PBTC_DBG_DISP_TYPE; 1195*4882a593Smuzhiyun 1196*4882a593Smuzhiyun typedef enum _BTC_NOTIFY_TYPE_IPS { 1197*4882a593Smuzhiyun BTC_IPS_LEAVE = 0x0, 1198*4882a593Smuzhiyun BTC_IPS_ENTER = 0x1, 1199*4882a593Smuzhiyun BTC_IPS_MAX 1200*4882a593Smuzhiyun } BTC_NOTIFY_TYPE_IPS, *PBTC_NOTIFY_TYPE_IPS; 1201*4882a593Smuzhiyun typedef enum _BTC_NOTIFY_TYPE_LPS { 1202*4882a593Smuzhiyun BTC_LPS_DISABLE = 0x0, 1203*4882a593Smuzhiyun BTC_LPS_ENABLE = 0x1, 1204*4882a593Smuzhiyun BTC_LPS_MAX 1205*4882a593Smuzhiyun } BTC_NOTIFY_TYPE_LPS, *PBTC_NOTIFY_TYPE_LPS; 1206*4882a593Smuzhiyun typedef enum _BTC_NOTIFY_TYPE_SCAN { 1207*4882a593Smuzhiyun BTC_SCAN_FINISH = 0x0, 1208*4882a593Smuzhiyun BTC_SCAN_START = 0x1, 1209*4882a593Smuzhiyun BTC_SCAN_START_2G = 0x2, 1210*4882a593Smuzhiyun BTC_SCAN_START_5G = 0x3, 1211*4882a593Smuzhiyun BTC_SCAN_MAX 1212*4882a593Smuzhiyun } BTC_NOTIFY_TYPE_SCAN, *PBTC_NOTIFY_TYPE_SCAN; 1213*4882a593Smuzhiyun typedef enum _BTC_NOTIFY_TYPE_SWITCHBAND { 1214*4882a593Smuzhiyun BTC_NOT_SWITCH = 0x0, 1215*4882a593Smuzhiyun BTC_SWITCH_TO_24G = 0x1, 1216*4882a593Smuzhiyun BTC_SWITCH_TO_5G = 0x2, 1217*4882a593Smuzhiyun BTC_SWITCH_TO_24G_NOFORSCAN = 0x3, 1218*4882a593Smuzhiyun BTC_SWITCH_MAX 1219*4882a593Smuzhiyun } BTC_NOTIFY_TYPE_SWITCHBAND, *PBTC_NOTIFY_TYPE_SWITCHBAND; 1220*4882a593Smuzhiyun typedef enum _BTC_NOTIFY_TYPE_ASSOCIATE { 1221*4882a593Smuzhiyun BTC_ASSOCIATE_FINISH = 0x0, 1222*4882a593Smuzhiyun BTC_ASSOCIATE_START = 0x1, 1223*4882a593Smuzhiyun BTC_ASSOCIATE_5G_FINISH = 0x2, 1224*4882a593Smuzhiyun BTC_ASSOCIATE_5G_START = 0x3, 1225*4882a593Smuzhiyun BTC_ASSOCIATE_MAX 1226*4882a593Smuzhiyun } BTC_NOTIFY_TYPE_ASSOCIATE, *PBTC_NOTIFY_TYPE_ASSOCIATE; 1227*4882a593Smuzhiyun typedef enum _BTC_NOTIFY_TYPE_MEDIA_STATUS { 1228*4882a593Smuzhiyun BTC_MEDIA_DISCONNECT = 0x0, 1229*4882a593Smuzhiyun BTC_MEDIA_CONNECT = 0x1, 1230*4882a593Smuzhiyun BTC_MEDIA_CONNECT_5G = 0x02, 1231*4882a593Smuzhiyun BTC_MEDIA_MAX 1232*4882a593Smuzhiyun } BTC_NOTIFY_TYPE_MEDIA_STATUS, *PBTC_NOTIFY_TYPE_MEDIA_STATUS; 1233*4882a593Smuzhiyun typedef enum _BTC_NOTIFY_TYPE_SPECIFIC_PACKET { 1234*4882a593Smuzhiyun BTC_PACKET_UNKNOWN = 0x0, 1235*4882a593Smuzhiyun BTC_PACKET_DHCP = 0x1, 1236*4882a593Smuzhiyun BTC_PACKET_ARP = 0x2, 1237*4882a593Smuzhiyun BTC_PACKET_EAPOL = 0x3, 1238*4882a593Smuzhiyun BTC_PACKET_MAX 1239*4882a593Smuzhiyun } BTC_NOTIFY_TYPE_SPECIFIC_PACKET, *PBTC_NOTIFY_TYPE_SPECIFIC_PACKET; 1240*4882a593Smuzhiyun typedef enum _BTC_NOTIFY_TYPE_STACK_OPERATION { 1241*4882a593Smuzhiyun BTC_STACK_OP_NONE = 0x0, 1242*4882a593Smuzhiyun BTC_STACK_OP_INQ_PAGE_PAIR_START = 0x1, 1243*4882a593Smuzhiyun BTC_STACK_OP_INQ_PAGE_PAIR_FINISH = 0x2, 1244*4882a593Smuzhiyun BTC_STACK_OP_MAX 1245*4882a593Smuzhiyun } BTC_NOTIFY_TYPE_STACK_OPERATION, *PBTC_NOTIFY_TYPE_STACK_OPERATION; 1246*4882a593Smuzhiyun 1247*4882a593Smuzhiyun typedef enum _BTC_LINK_CHANGE_TYPE{ 1248*4882a593Smuzhiyun BTC_LINK_CHANGE_TYPE_NONE = 0x0, 1249*4882a593Smuzhiyun BTC_LINK_CHANGE_TYPE_ECSA_START = 0x1, 1250*4882a593Smuzhiyun BTC_LINK_CHANGE_TYPE_ECSA_DONE = 0x2, 1251*4882a593Smuzhiyun BTC_LINK_CHANGE_TYPE_MAX 1252*4882a593Smuzhiyun }BTC_LINK_CHANGE_TYPE,*PBTC_LINK_CHANGE_TYPE; 1253*4882a593Smuzhiyun 1254*4882a593Smuzhiyun /* Bryant Add */ 1255*4882a593Smuzhiyun typedef enum _BTC_ANTENNA_POS { 1256*4882a593Smuzhiyun BTC_ANTENNA_AT_MAIN_PORT = 0x1, 1257*4882a593Smuzhiyun BTC_ANTENNA_AT_AUX_PORT = 0x2, 1258*4882a593Smuzhiyun } BTC_ANTENNA_POS, *PBTC_ANTENNA_POS; 1259*4882a593Smuzhiyun 1260*4882a593Smuzhiyun /* Bryant Add */ 1261*4882a593Smuzhiyun typedef enum _BTC_BT_OFFON { 1262*4882a593Smuzhiyun BTC_BT_OFF = 0x0, 1263*4882a593Smuzhiyun BTC_BT_ON = 0x1, 1264*4882a593Smuzhiyun } BTC_BTOFFON, *PBTC_BT_OFFON; 1265*4882a593Smuzhiyun 1266*4882a593Smuzhiyun #define BTC_5G_BAND 0x80 1267*4882a593Smuzhiyun 1268*4882a593Smuzhiyun /*================================================== 1269*4882a593Smuzhiyun For following block is for coex offload 1270*4882a593Smuzhiyun ==================================================*/ 1271*4882a593Smuzhiyun typedef struct _COL_H2C { 1272*4882a593Smuzhiyun u1Byte opcode; 1273*4882a593Smuzhiyun u1Byte opcode_ver:4; 1274*4882a593Smuzhiyun u1Byte req_num:4; 1275*4882a593Smuzhiyun u1Byte buf[1]; 1276*4882a593Smuzhiyun } COL_H2C, *PCOL_H2C; 1277*4882a593Smuzhiyun 1278*4882a593Smuzhiyun #define COL_C2H_ACK_HDR_LEN 3 1279*4882a593Smuzhiyun typedef struct _COL_C2H_ACK { 1280*4882a593Smuzhiyun u1Byte status; 1281*4882a593Smuzhiyun u1Byte opcode_ver:4; 1282*4882a593Smuzhiyun u1Byte req_num:4; 1283*4882a593Smuzhiyun u1Byte ret_len; 1284*4882a593Smuzhiyun u1Byte buf[1]; 1285*4882a593Smuzhiyun } COL_C2H_ACK, *PCOL_C2H_ACK; 1286*4882a593Smuzhiyun 1287*4882a593Smuzhiyun #define COL_C2H_IND_HDR_LEN 3 1288*4882a593Smuzhiyun typedef struct _COL_C2H_IND { 1289*4882a593Smuzhiyun u1Byte type; 1290*4882a593Smuzhiyun u1Byte version; 1291*4882a593Smuzhiyun u1Byte length; 1292*4882a593Smuzhiyun u1Byte data[1]; 1293*4882a593Smuzhiyun } COL_C2H_IND, *PCOL_C2H_IND; 1294*4882a593Smuzhiyun 1295*4882a593Smuzhiyun /*============================================ 1296*4882a593Smuzhiyun NOTE: for debug message, the following define should match 1297*4882a593Smuzhiyun the strings in coexH2cResultString. 1298*4882a593Smuzhiyun ============================================*/ 1299*4882a593Smuzhiyun typedef enum _COL_H2C_STATUS { 1300*4882a593Smuzhiyun /* c2h status */ 1301*4882a593Smuzhiyun COL_STATUS_C2H_OK = 0x00, /* Wifi received H2C request and check content ok. */ 1302*4882a593Smuzhiyun COL_STATUS_C2H_UNKNOWN = 0x01, /* Not handled routine */ 1303*4882a593Smuzhiyun COL_STATUS_C2H_UNKNOWN_OPCODE = 0x02, /* Invalid OP code, It means that wifi firmware received an undefiend OP code. */ 1304*4882a593Smuzhiyun COL_STATUS_C2H_OPCODE_VER_MISMATCH = 0x03, /* Wifi firmware and wifi driver mismatch, need to update wifi driver or wifi or. */ 1305*4882a593Smuzhiyun COL_STATUS_C2H_PARAMETER_ERROR = 0x04, /* Error paraneter.(ex: parameters = NULL but it should have values) */ 1306*4882a593Smuzhiyun COL_STATUS_C2H_PARAMETER_OUT_OF_RANGE = 0x05, /* Wifi firmware needs to check the parameters from H2C request and return the status.(ex: ch = 500, it's wrong) */ 1307*4882a593Smuzhiyun /* other COL status start from here */ 1308*4882a593Smuzhiyun COL_STATUS_C2H_REQ_NUM_MISMATCH , /* c2h req_num mismatch, means this c2h is not we expected. */ 1309*4882a593Smuzhiyun COL_STATUS_H2C_HALMAC_FAIL , /* HALMAC return fail. */ 1310*4882a593Smuzhiyun COL_STATUS_H2C_TIMTOUT , /* not received the c2h response from fw */ 1311*4882a593Smuzhiyun COL_STATUS_INVALID_C2H_LEN , /* invalid coex offload c2h ack length, must >= 3 */ 1312*4882a593Smuzhiyun COL_STATUS_COEX_DATA_OVERFLOW , /* coex returned length over the c2h ack length. */ 1313*4882a593Smuzhiyun COL_STATUS_MAX 1314*4882a593Smuzhiyun } COL_H2C_STATUS, *PCOL_H2C_STATUS; 1315*4882a593Smuzhiyun 1316*4882a593Smuzhiyun #define COL_MAX_H2C_REQ_NUM 16 1317*4882a593Smuzhiyun 1318*4882a593Smuzhiyun #define COL_H2C_BUF_LEN 20 1319*4882a593Smuzhiyun typedef enum _COL_OPCODE { 1320*4882a593Smuzhiyun COL_OP_WIFI_STATUS_NOTIFY = 0x0, 1321*4882a593Smuzhiyun COL_OP_WIFI_PROGRESS_NOTIFY = 0x1, 1322*4882a593Smuzhiyun COL_OP_WIFI_INFO_NOTIFY = 0x2, 1323*4882a593Smuzhiyun COL_OP_WIFI_POWER_STATE_NOTIFY = 0x3, 1324*4882a593Smuzhiyun COL_OP_SET_CONTROL = 0x4, 1325*4882a593Smuzhiyun COL_OP_GET_CONTROL = 0x5, 1326*4882a593Smuzhiyun COL_OP_WIFI_OPCODE_MAX 1327*4882a593Smuzhiyun } COL_OPCODE, *PCOL_OPCODE; 1328*4882a593Smuzhiyun 1329*4882a593Smuzhiyun typedef enum _COL_IND_TYPE { 1330*4882a593Smuzhiyun COL_IND_BT_INFO = 0x0, 1331*4882a593Smuzhiyun COL_IND_PSTDMA = 0x1, 1332*4882a593Smuzhiyun COL_IND_LIMITED_TX_RX = 0x2, 1333*4882a593Smuzhiyun COL_IND_COEX_TABLE = 0x3, 1334*4882a593Smuzhiyun COL_IND_REQ = 0x4, 1335*4882a593Smuzhiyun COL_IND_MAX 1336*4882a593Smuzhiyun } COL_IND_TYPE, *PCOL_IND_TYPE; 1337*4882a593Smuzhiyun 1338*4882a593Smuzhiyun typedef struct _COL_SINGLE_H2C_RECORD { 1339*4882a593Smuzhiyun u1Byte h2c_buf[COL_H2C_BUF_LEN]; /* the latest sent h2c buffer */ 1340*4882a593Smuzhiyun u4Byte h2c_len; 1341*4882a593Smuzhiyun u1Byte c2h_ack_buf[COL_H2C_BUF_LEN]; /* the latest received c2h buffer */ 1342*4882a593Smuzhiyun u4Byte c2h_ack_len; 1343*4882a593Smuzhiyun u4Byte count; /* the total number of the sent h2c command */ 1344*4882a593Smuzhiyun u4Byte status[COL_STATUS_MAX]; /* the c2h status for the sent h2c command */ 1345*4882a593Smuzhiyun } COL_SINGLE_H2C_RECORD, *PCOL_SINGLE_H2C_RECORD; 1346*4882a593Smuzhiyun 1347*4882a593Smuzhiyun typedef struct _COL_SINGLE_C2H_IND_RECORD { 1348*4882a593Smuzhiyun u1Byte ind_buf[COL_H2C_BUF_LEN]; /* the latest received c2h indication buffer */ 1349*4882a593Smuzhiyun u4Byte ind_len; 1350*4882a593Smuzhiyun u4Byte count; /* the total number of the rcvd c2h indication */ 1351*4882a593Smuzhiyun u4Byte status[COL_STATUS_MAX]; /* the c2h indication verified status */ 1352*4882a593Smuzhiyun } COL_SINGLE_C2H_IND_RECORD, *PCOL_SINGLE_C2H_IND_RECORD; 1353*4882a593Smuzhiyun 1354*4882a593Smuzhiyun typedef struct _BTC_OFFLOAD { 1355*4882a593Smuzhiyun /* H2C command related */ 1356*4882a593Smuzhiyun u1Byte h2c_req_num; 1357*4882a593Smuzhiyun u4Byte cnt_h2c_sent; 1358*4882a593Smuzhiyun COL_SINGLE_H2C_RECORD h2c_record[COL_OP_WIFI_OPCODE_MAX]; 1359*4882a593Smuzhiyun 1360*4882a593Smuzhiyun /* C2H Ack related */ 1361*4882a593Smuzhiyun u4Byte cnt_c2h_ack; 1362*4882a593Smuzhiyun u4Byte status[COL_STATUS_MAX]; 1363*4882a593Smuzhiyun struct completion c2h_event[COL_MAX_H2C_REQ_NUM]; /* for req_num = 1~COL_MAX_H2C_REQ_NUM */ 1364*4882a593Smuzhiyun u1Byte c2h_ack_buf[COL_MAX_H2C_REQ_NUM][COL_H2C_BUF_LEN]; 1365*4882a593Smuzhiyun u1Byte c2h_ack_len[COL_MAX_H2C_REQ_NUM]; 1366*4882a593Smuzhiyun 1367*4882a593Smuzhiyun /* C2H Indication related */ 1368*4882a593Smuzhiyun u4Byte cnt_c2h_ind; 1369*4882a593Smuzhiyun COL_SINGLE_C2H_IND_RECORD c2h_ind_record[COL_IND_MAX]; 1370*4882a593Smuzhiyun u4Byte c2h_ind_status[COL_STATUS_MAX]; 1371*4882a593Smuzhiyun u1Byte c2h_ind_buf[COL_H2C_BUF_LEN]; 1372*4882a593Smuzhiyun u1Byte c2h_ind_len; 1373*4882a593Smuzhiyun } BTC_OFFLOAD, *PBTC_OFFLOAD; 1374*4882a593Smuzhiyun extern BTC_OFFLOAD gl_coex_offload; 1375*4882a593Smuzhiyun /*==================================================*/ 1376*4882a593Smuzhiyun 1377*4882a593Smuzhiyun /* BTC_LINK_MODE same as WIFI_LINK_MODE */ 1378*4882a593Smuzhiyun typedef enum _BTC_LINK_MODE{ 1379*4882a593Smuzhiyun BTC_LINK_NONE=0, 1380*4882a593Smuzhiyun BTC_LINK_ONLY_GO, 1381*4882a593Smuzhiyun BTC_LINK_ONLY_GC, 1382*4882a593Smuzhiyun BTC_LINK_ONLY_STA, 1383*4882a593Smuzhiyun BTC_LINK_ONLY_AP, 1384*4882a593Smuzhiyun BTC_LINK_2G_MCC_GO_STA, 1385*4882a593Smuzhiyun BTC_LINK_5G_MCC_GO_STA, 1386*4882a593Smuzhiyun BTC_LINK_25G_MCC_GO_STA, 1387*4882a593Smuzhiyun BTC_LINK_2G_MCC_GC_STA, 1388*4882a593Smuzhiyun BTC_LINK_5G_MCC_GC_STA, 1389*4882a593Smuzhiyun BTC_LINK_25G_MCC_GC_STA, 1390*4882a593Smuzhiyun BTC_LINK_2G_SCC_GO_STA, 1391*4882a593Smuzhiyun BTC_LINK_5G_SCC_GO_STA, 1392*4882a593Smuzhiyun BTC_LINK_2G_SCC_GC_STA, 1393*4882a593Smuzhiyun BTC_LINK_5G_SCC_GC_STA, 1394*4882a593Smuzhiyun BTC_LINK_MAX=30 1395*4882a593Smuzhiyun }BTC_LINK_MODE, *PBTC_LINK_MODE; 1396*4882a593Smuzhiyun 1397*4882a593Smuzhiyun 1398*4882a593Smuzhiyun struct btc_wifi_link_info { 1399*4882a593Smuzhiyun BTC_LINK_MODE link_mode; /* LinkMode */ 1400*4882a593Smuzhiyun u1Byte sta_center_channel; /* StaCenterChannel */ 1401*4882a593Smuzhiyun u1Byte p2p_center_channel; /* P2PCenterChannel */ 1402*4882a593Smuzhiyun BOOLEAN bany_client_join_go; 1403*4882a593Smuzhiyun BOOLEAN benable_noa; 1404*4882a593Smuzhiyun BOOLEAN bhotspot; 1405*4882a593Smuzhiyun }; 1406*4882a593Smuzhiyun 1407*4882a593Smuzhiyun #if 0 1408*4882a593Smuzhiyun typedef enum _BTC_MULTI_PORT_TDMA_MODE { 1409*4882a593Smuzhiyun BTC_MULTI_PORT_TDMA_MODE_NONE=0, 1410*4882a593Smuzhiyun BTC_MULTI_PORT_TDMA_MODE_2G_SCC_GO, 1411*4882a593Smuzhiyun BTC_MULTI_PORT_TDMA_MODE_2G_P2P_GO, 1412*4882a593Smuzhiyun BTC_MULTI_PORT_TDMA_MODE_2G_HOTSPOT_GO 1413*4882a593Smuzhiyun } BTC_MULTI_PORT_TDMA_MODE, *PBTC_MULTI_PORT_TDMA_MODE; 1414*4882a593Smuzhiyun 1415*4882a593Smuzhiyun typedef struct btc_multi_port_tdma_info { 1416*4882a593Smuzhiyun BTC_MULTI_PORT_TDMA_MODE btc_multi_port_tdma_mode; 1417*4882a593Smuzhiyun u1Byte start_time_from_bcn; 1418*4882a593Smuzhiyun u1Byte bt_time; 1419*4882a593Smuzhiyun } BTC_MULTI_PORT_TDMA_INFO, *PBTC_MULTI_PORT_TDMA_INFO; 1420*4882a593Smuzhiyun #endif 1421*4882a593Smuzhiyun 1422*4882a593Smuzhiyun typedef enum _btc_concurrent_mode { 1423*4882a593Smuzhiyun btc_concurrent_mode_none = 0, 1424*4882a593Smuzhiyun btc_concurrent_mode_2g_go_miracast, 1425*4882a593Smuzhiyun btc_concurrent_mode_2g_go_hotspot, 1426*4882a593Smuzhiyun btc_concurrent_mode_2g_scc_go_miracast_sta, 1427*4882a593Smuzhiyun btc_concurrent_mode_2g_scc_go_hotspot_sta, 1428*4882a593Smuzhiyun btc_concurrent_mode_2g_gc, 1429*4882a593Smuzhiyun } btc_concurrent_mode, *pbtc_concurrent_mode; 1430*4882a593Smuzhiyun 1431*4882a593Smuzhiyun struct btc_concurrent_setting { 1432*4882a593Smuzhiyun btc_concurrent_mode btc_concurrent_mode; 1433*4882a593Smuzhiyun u1Byte start_time_from_bcn; 1434*4882a593Smuzhiyun u1Byte bt_time; 1435*4882a593Smuzhiyun }; 1436*4882a593Smuzhiyun 1437*4882a593Smuzhiyun typedef u1Byte 1438*4882a593Smuzhiyun (*BFP_BTC_R1)( 1439*4882a593Smuzhiyun IN PVOID pBtcContext, 1440*4882a593Smuzhiyun IN u4Byte RegAddr 1441*4882a593Smuzhiyun ); 1442*4882a593Smuzhiyun typedef u2Byte 1443*4882a593Smuzhiyun (*BFP_BTC_R2)( 1444*4882a593Smuzhiyun IN PVOID pBtcContext, 1445*4882a593Smuzhiyun IN u4Byte RegAddr 1446*4882a593Smuzhiyun ); 1447*4882a593Smuzhiyun typedef u4Byte 1448*4882a593Smuzhiyun (*BFP_BTC_R4)( 1449*4882a593Smuzhiyun IN PVOID pBtcContext, 1450*4882a593Smuzhiyun IN u4Byte RegAddr 1451*4882a593Smuzhiyun ); 1452*4882a593Smuzhiyun typedef VOID 1453*4882a593Smuzhiyun (*BFP_BTC_W1)( 1454*4882a593Smuzhiyun IN PVOID pBtcContext, 1455*4882a593Smuzhiyun IN u4Byte RegAddr, 1456*4882a593Smuzhiyun IN u1Byte Data 1457*4882a593Smuzhiyun ); 1458*4882a593Smuzhiyun typedef VOID 1459*4882a593Smuzhiyun (*BFP_BTC_W1_BIT_MASK)( 1460*4882a593Smuzhiyun IN PVOID pBtcContext, 1461*4882a593Smuzhiyun IN u4Byte regAddr, 1462*4882a593Smuzhiyun IN u1Byte bitMask, 1463*4882a593Smuzhiyun IN u1Byte data1b 1464*4882a593Smuzhiyun ); 1465*4882a593Smuzhiyun typedef VOID 1466*4882a593Smuzhiyun (*BFP_BTC_W2)( 1467*4882a593Smuzhiyun IN PVOID pBtcContext, 1468*4882a593Smuzhiyun IN u4Byte RegAddr, 1469*4882a593Smuzhiyun IN u2Byte Data 1470*4882a593Smuzhiyun ); 1471*4882a593Smuzhiyun typedef VOID 1472*4882a593Smuzhiyun (*BFP_BTC_W4)( 1473*4882a593Smuzhiyun IN PVOID pBtcContext, 1474*4882a593Smuzhiyun IN u4Byte RegAddr, 1475*4882a593Smuzhiyun IN u4Byte Data 1476*4882a593Smuzhiyun ); 1477*4882a593Smuzhiyun typedef VOID 1478*4882a593Smuzhiyun (*BFP_BTC_LOCAL_REG_W1)( 1479*4882a593Smuzhiyun IN PVOID pBtcContext, 1480*4882a593Smuzhiyun IN u4Byte RegAddr, 1481*4882a593Smuzhiyun IN u1Byte Data 1482*4882a593Smuzhiyun ); 1483*4882a593Smuzhiyun typedef u4Byte 1484*4882a593Smuzhiyun (*BFP_BTC_R_LINDIRECT)( 1485*4882a593Smuzhiyun IN PVOID pBtcContext, 1486*4882a593Smuzhiyun IN u2Byte reg_addr 1487*4882a593Smuzhiyun ); 1488*4882a593Smuzhiyun typedef u2Byte 1489*4882a593Smuzhiyun (*BFP_BTC_R_SCBD)( 1490*4882a593Smuzhiyun IN PVOID pBtcContext, 1491*4882a593Smuzhiyun IN pu2Byte score_board_val 1492*4882a593Smuzhiyun ); 1493*4882a593Smuzhiyun typedef u4Byte 1494*4882a593Smuzhiyun (*BFP_BTC_R_SCBD_32BIT)( 1495*4882a593Smuzhiyun IN PVOID pBtcContext, 1496*4882a593Smuzhiyun IN pu4Byte score_board_val 1497*4882a593Smuzhiyun ); 1498*4882a593Smuzhiyun typedef VOID 1499*4882a593Smuzhiyun (*BFP_BTC_W_SCBD)( 1500*4882a593Smuzhiyun IN PVOID pBtcContext, 1501*4882a593Smuzhiyun IN u2Byte bitpos, 1502*4882a593Smuzhiyun IN BOOLEAN state 1503*4882a593Smuzhiyun ); 1504*4882a593Smuzhiyun typedef VOID 1505*4882a593Smuzhiyun (*BFP_BTC_W_SCBD_32BIT)( 1506*4882a593Smuzhiyun IN PVOID pBtcContext, 1507*4882a593Smuzhiyun IN u4Byte bitpos, 1508*4882a593Smuzhiyun IN BOOLEAN state 1509*4882a593Smuzhiyun ); 1510*4882a593Smuzhiyun typedef VOID 1511*4882a593Smuzhiyun (*BFP_BTC_W_LINDIRECT)( 1512*4882a593Smuzhiyun IN PVOID pBtcContext, 1513*4882a593Smuzhiyun IN u2Byte reg_addr, 1514*4882a593Smuzhiyun IN u4Byte bit_mask, 1515*4882a593Smuzhiyun IN u4Byte reg_value 1516*4882a593Smuzhiyun ); 1517*4882a593Smuzhiyun typedef VOID 1518*4882a593Smuzhiyun (*BFP_BTC_SET_BB_REG)( 1519*4882a593Smuzhiyun IN PVOID pBtcContext, 1520*4882a593Smuzhiyun IN u4Byte RegAddr, 1521*4882a593Smuzhiyun IN u4Byte BitMask, 1522*4882a593Smuzhiyun IN u4Byte Data 1523*4882a593Smuzhiyun ); 1524*4882a593Smuzhiyun typedef u4Byte 1525*4882a593Smuzhiyun (*BFP_BTC_GET_BB_REG)( 1526*4882a593Smuzhiyun IN PVOID pBtcContext, 1527*4882a593Smuzhiyun IN u4Byte RegAddr, 1528*4882a593Smuzhiyun IN u4Byte BitMask 1529*4882a593Smuzhiyun ); 1530*4882a593Smuzhiyun typedef VOID 1531*4882a593Smuzhiyun (*BFP_BTC_SET_RF_REG)( 1532*4882a593Smuzhiyun IN PVOID pBtcContext, 1533*4882a593Smuzhiyun IN enum rf_path eRFPath, 1534*4882a593Smuzhiyun IN u4Byte RegAddr, 1535*4882a593Smuzhiyun IN u4Byte BitMask, 1536*4882a593Smuzhiyun IN u4Byte Data 1537*4882a593Smuzhiyun ); 1538*4882a593Smuzhiyun typedef u4Byte 1539*4882a593Smuzhiyun (*BFP_BTC_GET_RF_REG)( 1540*4882a593Smuzhiyun IN PVOID pBtcContext, 1541*4882a593Smuzhiyun IN enum rf_path eRFPath, 1542*4882a593Smuzhiyun IN u4Byte RegAddr, 1543*4882a593Smuzhiyun IN u4Byte BitMask 1544*4882a593Smuzhiyun ); 1545*4882a593Smuzhiyun typedef VOID 1546*4882a593Smuzhiyun (*BFP_BTC_FILL_H2C)( 1547*4882a593Smuzhiyun IN PVOID pBtcContext, 1548*4882a593Smuzhiyun IN u1Byte elementId, 1549*4882a593Smuzhiyun IN u4Byte cmdLen, 1550*4882a593Smuzhiyun IN pu1Byte pCmdBuffer 1551*4882a593Smuzhiyun ); 1552*4882a593Smuzhiyun 1553*4882a593Smuzhiyun typedef BOOLEAN 1554*4882a593Smuzhiyun (*BFP_BTC_GET)( 1555*4882a593Smuzhiyun IN PVOID pBtCoexist, 1556*4882a593Smuzhiyun IN u1Byte getType, 1557*4882a593Smuzhiyun OUT PVOID pOutBuf 1558*4882a593Smuzhiyun ); 1559*4882a593Smuzhiyun 1560*4882a593Smuzhiyun typedef BOOLEAN 1561*4882a593Smuzhiyun (*BFP_BTC_SET)( 1562*4882a593Smuzhiyun IN PVOID pBtCoexist, 1563*4882a593Smuzhiyun IN u1Byte setType, 1564*4882a593Smuzhiyun OUT PVOID pInBuf 1565*4882a593Smuzhiyun ); 1566*4882a593Smuzhiyun typedef u2Byte 1567*4882a593Smuzhiyun (*BFP_BTC_SET_BT_REG)( 1568*4882a593Smuzhiyun IN PVOID pBtcContext, 1569*4882a593Smuzhiyun IN u1Byte regType, 1570*4882a593Smuzhiyun IN u4Byte offset, 1571*4882a593Smuzhiyun IN u4Byte value 1572*4882a593Smuzhiyun ); 1573*4882a593Smuzhiyun typedef BOOLEAN 1574*4882a593Smuzhiyun (*BFP_BTC_SET_BT_ANT_DETECTION)( 1575*4882a593Smuzhiyun IN PVOID pBtcContext, 1576*4882a593Smuzhiyun IN u1Byte txTime, 1577*4882a593Smuzhiyun IN u1Byte btChnl 1578*4882a593Smuzhiyun ); 1579*4882a593Smuzhiyun 1580*4882a593Smuzhiyun typedef BOOLEAN 1581*4882a593Smuzhiyun (*BFP_BTC_SET_BT_TRX_MASK)( 1582*4882a593Smuzhiyun IN PVOID pBtcContext, 1583*4882a593Smuzhiyun IN u1Byte bt_trx_mask 1584*4882a593Smuzhiyun ); 1585*4882a593Smuzhiyun 1586*4882a593Smuzhiyun typedef u4Byte 1587*4882a593Smuzhiyun (*BFP_BTC_GET_BT_REG)( 1588*4882a593Smuzhiyun IN PVOID pBtcContext, 1589*4882a593Smuzhiyun IN u1Byte regType, 1590*4882a593Smuzhiyun IN u4Byte offset 1591*4882a593Smuzhiyun ); 1592*4882a593Smuzhiyun typedef VOID 1593*4882a593Smuzhiyun (*BFP_BTC_DISP_DBG_MSG)( 1594*4882a593Smuzhiyun IN PVOID pBtCoexist, 1595*4882a593Smuzhiyun IN u1Byte dispType 1596*4882a593Smuzhiyun ); 1597*4882a593Smuzhiyun 1598*4882a593Smuzhiyun typedef COL_H2C_STATUS 1599*4882a593Smuzhiyun (*BFP_BTC_COEX_H2C_PROCESS)( 1600*4882a593Smuzhiyun IN PVOID pBtCoexist, 1601*4882a593Smuzhiyun IN u1Byte opcode, 1602*4882a593Smuzhiyun IN u1Byte opcode_ver, 1603*4882a593Smuzhiyun IN pu1Byte ph2c_par, 1604*4882a593Smuzhiyun IN u1Byte h2c_par_len 1605*4882a593Smuzhiyun ); 1606*4882a593Smuzhiyun 1607*4882a593Smuzhiyun typedef u4Byte 1608*4882a593Smuzhiyun (*BFP_BTC_GET_BT_COEX_SUPPORTED_FEATURE)( 1609*4882a593Smuzhiyun IN PVOID pBtcContext 1610*4882a593Smuzhiyun ); 1611*4882a593Smuzhiyun 1612*4882a593Smuzhiyun typedef u4Byte 1613*4882a593Smuzhiyun (*BFP_BTC_GET_BT_COEX_SUPPORTED_VERSION)( 1614*4882a593Smuzhiyun IN PVOID pBtcContext 1615*4882a593Smuzhiyun ); 1616*4882a593Smuzhiyun 1617*4882a593Smuzhiyun typedef u4Byte 1618*4882a593Smuzhiyun (*BFP_BTC_GET_PHYDM_VERSION)( 1619*4882a593Smuzhiyun IN PVOID pBtcContext 1620*4882a593Smuzhiyun ); 1621*4882a593Smuzhiyun 1622*4882a593Smuzhiyun typedef u1Byte 1623*4882a593Smuzhiyun (*BFP_BTC_SET_TIMER) ( 1624*4882a593Smuzhiyun IN PVOID pBtcContext, 1625*4882a593Smuzhiyun IN u4Byte type, 1626*4882a593Smuzhiyun IN u4Byte val 1627*4882a593Smuzhiyun ); 1628*4882a593Smuzhiyun 1629*4882a593Smuzhiyun typedef u4Byte 1630*4882a593Smuzhiyun (*BFP_BTC_SET_ATOMIC) ( 1631*4882a593Smuzhiyun IN PVOID pBtcContext, 1632*4882a593Smuzhiyun IN pu4Byte target, 1633*4882a593Smuzhiyun IN u4Byte val 1634*4882a593Smuzhiyun ); 1635*4882a593Smuzhiyun 1636*4882a593Smuzhiyun 1637*4882a593Smuzhiyun typedef VOID 1638*4882a593Smuzhiyun (*BTC_PHYDM_MODIFY_RA_PCR_THRESHLOD)( 1639*4882a593Smuzhiyun IN PVOID pDM_Odm, 1640*4882a593Smuzhiyun IN u1Byte RA_offset_direction, 1641*4882a593Smuzhiyun IN u1Byte RA_threshold_offset 1642*4882a593Smuzhiyun ); 1643*4882a593Smuzhiyun 1644*4882a593Smuzhiyun typedef u4Byte 1645*4882a593Smuzhiyun (*BTC_PHYDM_CMNINFOQUERY)( 1646*4882a593Smuzhiyun IN PVOID pDM_Odm, 1647*4882a593Smuzhiyun IN u1Byte info_type 1648*4882a593Smuzhiyun ); 1649*4882a593Smuzhiyun 1650*4882a593Smuzhiyun typedef VOID 1651*4882a593Smuzhiyun (*BTC_REDUCE_WL_TX_POWER)( 1652*4882a593Smuzhiyun IN PVOID pDM_Odm, 1653*4882a593Smuzhiyun IN s1Byte tx_power 1654*4882a593Smuzhiyun ); 1655*4882a593Smuzhiyun 1656*4882a593Smuzhiyun typedef VOID 1657*4882a593Smuzhiyun (*BTC_PHYDM_MODIFY_ANTDIV_HWSW)( 1658*4882a593Smuzhiyun IN PVOID pDM_Odm, 1659*4882a593Smuzhiyun IN u1Byte type 1660*4882a593Smuzhiyun ); 1661*4882a593Smuzhiyun 1662*4882a593Smuzhiyun typedef u1Byte 1663*4882a593Smuzhiyun (*BFP_BTC_GET_ANT_DET_VAL_FROM_BT)( 1664*4882a593Smuzhiyun 1665*4882a593Smuzhiyun IN PVOID pBtcContext 1666*4882a593Smuzhiyun ); 1667*4882a593Smuzhiyun 1668*4882a593Smuzhiyun typedef u1Byte 1669*4882a593Smuzhiyun (*BFP_BTC_GET_BLE_SCAN_TYPE_FROM_BT)( 1670*4882a593Smuzhiyun IN PVOID pBtcContext 1671*4882a593Smuzhiyun ); 1672*4882a593Smuzhiyun 1673*4882a593Smuzhiyun typedef u4Byte 1674*4882a593Smuzhiyun (*BFP_BTC_GET_BLE_SCAN_PARA_FROM_BT)( 1675*4882a593Smuzhiyun IN PVOID pBtcContext, 1676*4882a593Smuzhiyun IN u1Byte scanType 1677*4882a593Smuzhiyun ); 1678*4882a593Smuzhiyun 1679*4882a593Smuzhiyun typedef BOOLEAN 1680*4882a593Smuzhiyun (*BFP_BTC_GET_BT_AFH_MAP_FROM_BT)( 1681*4882a593Smuzhiyun IN PVOID pBtcContext, 1682*4882a593Smuzhiyun IN u1Byte mapType, 1683*4882a593Smuzhiyun OUT pu1Byte afhMap 1684*4882a593Smuzhiyun ); 1685*4882a593Smuzhiyun 1686*4882a593Smuzhiyun struct btc_bt_info { 1687*4882a593Smuzhiyun boolean bt_disabled; 1688*4882a593Smuzhiyun boolean bt_enable_disable_change; 1689*4882a593Smuzhiyun u8 rssi_adjust_for_agc_table_on; 1690*4882a593Smuzhiyun u8 rssi_adjust_for_1ant_coex_type; 1691*4882a593Smuzhiyun boolean pre_bt_ctrl_agg_buf_size; 1692*4882a593Smuzhiyun boolean bt_ctrl_agg_buf_size; 1693*4882a593Smuzhiyun boolean pre_reject_agg_pkt; 1694*4882a593Smuzhiyun boolean reject_agg_pkt; 1695*4882a593Smuzhiyun boolean increase_scan_dev_num; 1696*4882a593Smuzhiyun boolean bt_tx_rx_mask; 1697*4882a593Smuzhiyun u8 pre_agg_buf_size; 1698*4882a593Smuzhiyun u8 agg_buf_size; 1699*4882a593Smuzhiyun boolean bt_busy; 1700*4882a593Smuzhiyun boolean limited_dig; 1701*4882a593Smuzhiyun u16 bt_hci_ver; 1702*4882a593Smuzhiyun u32 bt_real_fw_ver; 1703*4882a593Smuzhiyun u32 get_bt_fw_ver_cnt; 1704*4882a593Smuzhiyun u32 bt_get_fw_ver; 1705*4882a593Smuzhiyun boolean miracast_plus_bt; 1706*4882a593Smuzhiyun 1707*4882a593Smuzhiyun boolean bt_disable_low_pwr; 1708*4882a593Smuzhiyun 1709*4882a593Smuzhiyun boolean bt_ctrl_lps; 1710*4882a593Smuzhiyun boolean bt_lps_on; 1711*4882a593Smuzhiyun boolean force_to_roam; /* for 1Ant solution */ 1712*4882a593Smuzhiyun u8 lps_val; 1713*4882a593Smuzhiyun u8 rpwm_val; 1714*4882a593Smuzhiyun u32 ra_mask; 1715*4882a593Smuzhiyun }; 1716*4882a593Smuzhiyun 1717*4882a593Smuzhiyun struct btc_stack_info { 1718*4882a593Smuzhiyun boolean profile_notified; 1719*4882a593Smuzhiyun u16 hci_version; /* stack hci version */ 1720*4882a593Smuzhiyun u8 num_of_link; 1721*4882a593Smuzhiyun boolean bt_link_exist; 1722*4882a593Smuzhiyun boolean sco_exist; 1723*4882a593Smuzhiyun boolean acl_exist; 1724*4882a593Smuzhiyun boolean a2dp_exist; 1725*4882a593Smuzhiyun boolean hid_exist; 1726*4882a593Smuzhiyun u8 num_of_hid; 1727*4882a593Smuzhiyun boolean pan_exist; 1728*4882a593Smuzhiyun boolean unknown_acl_exist; 1729*4882a593Smuzhiyun s8 min_bt_rssi; 1730*4882a593Smuzhiyun }; 1731*4882a593Smuzhiyun 1732*4882a593Smuzhiyun struct btc_bt_link_info { 1733*4882a593Smuzhiyun boolean bt_link_exist; 1734*4882a593Smuzhiyun boolean bt_hi_pri_link_exist; 1735*4882a593Smuzhiyun boolean sco_exist; 1736*4882a593Smuzhiyun boolean sco_only; 1737*4882a593Smuzhiyun boolean a2dp_exist; 1738*4882a593Smuzhiyun boolean a2dp_only; 1739*4882a593Smuzhiyun boolean hid_exist; 1740*4882a593Smuzhiyun boolean hid_only; 1741*4882a593Smuzhiyun boolean pan_exist; 1742*4882a593Smuzhiyun boolean pan_only; 1743*4882a593Smuzhiyun boolean slave_role; 1744*4882a593Smuzhiyun boolean acl_busy; 1745*4882a593Smuzhiyun }; 1746*4882a593Smuzhiyun 1747*4882a593Smuzhiyun #ifdef CONFIG_RF4CE_COEXIST 1748*4882a593Smuzhiyun struct btc_rf4ce_info { 1749*4882a593Smuzhiyun u8 link_state; 1750*4882a593Smuzhiyun }; 1751*4882a593Smuzhiyun #endif 1752*4882a593Smuzhiyun 1753*4882a593Smuzhiyun struct btc_statistics { 1754*4882a593Smuzhiyun u32 cnt_bind; 1755*4882a593Smuzhiyun u32 cnt_power_on; 1756*4882a593Smuzhiyun u32 cnt_pre_load_firmware; 1757*4882a593Smuzhiyun u32 cnt_init_hw_config; 1758*4882a593Smuzhiyun u32 cnt_init_coex_dm; 1759*4882a593Smuzhiyun u32 cnt_ips_notify; 1760*4882a593Smuzhiyun u32 cnt_lps_notify; 1761*4882a593Smuzhiyun u32 cnt_scan_notify; 1762*4882a593Smuzhiyun u32 cnt_connect_notify; 1763*4882a593Smuzhiyun u32 cnt_media_status_notify; 1764*4882a593Smuzhiyun u32 cnt_specific_packet_notify; 1765*4882a593Smuzhiyun u32 cnt_bt_info_notify; 1766*4882a593Smuzhiyun u32 cnt_rf_status_notify; 1767*4882a593Smuzhiyun u32 cnt_periodical; 1768*4882a593Smuzhiyun u32 cnt_coex_dm_switch; 1769*4882a593Smuzhiyun u32 cnt_stack_operation_notify; 1770*4882a593Smuzhiyun u32 cnt_dbg_ctrl; 1771*4882a593Smuzhiyun u32 cnt_rate_id_notify; 1772*4882a593Smuzhiyun u32 cnt_halt_notify; 1773*4882a593Smuzhiyun u32 cnt_pnp_notify; 1774*4882a593Smuzhiyun }; 1775*4882a593Smuzhiyun 1776*4882a593Smuzhiyun struct btc_coexist { 1777*4882a593Smuzhiyun BOOLEAN bBinded; /*make sure only one adapter can bind the data context*/ 1778*4882a593Smuzhiyun PVOID Adapter; /*default adapter*/ 1779*4882a593Smuzhiyun struct btc_board_info board_info; 1780*4882a593Smuzhiyun struct btc_bt_info bt_info; /*some bt info referenced by non-bt module*/ 1781*4882a593Smuzhiyun struct btc_stack_info stack_info; 1782*4882a593Smuzhiyun struct btc_bt_link_info bt_link_info; 1783*4882a593Smuzhiyun struct btc_wifi_link_info wifi_link_info; 1784*4882a593Smuzhiyun struct btc_wifi_link_info_ext wifi_link_info_ext; 1785*4882a593Smuzhiyun struct btc_coex_dm coex_dm; 1786*4882a593Smuzhiyun struct btc_coex_sta coex_sta; 1787*4882a593Smuzhiyun struct btc_rfe_type rfe_type; 1788*4882a593Smuzhiyun const struct btc_chip_para *chip_para; 1789*4882a593Smuzhiyun u8 wifi_black_bssid[6]; 1790*4882a593Smuzhiyun u8 wifi_bssid[6]; 1791*4882a593Smuzhiyun 1792*4882a593Smuzhiyun #ifdef CONFIG_RF4CE_COEXIST 1793*4882a593Smuzhiyun struct btc_rf4ce_info rf4ce_info; 1794*4882a593Smuzhiyun #endif 1795*4882a593Smuzhiyun BTC_CHIP_INTERFACE chip_interface; 1796*4882a593Smuzhiyun PVOID odm_priv; 1797*4882a593Smuzhiyun 1798*4882a593Smuzhiyun BOOLEAN initilized; 1799*4882a593Smuzhiyun BOOLEAN stop_coex_dm; 1800*4882a593Smuzhiyun BOOLEAN manual_control; 1801*4882a593Smuzhiyun BOOLEAN bdontenterLPS; 1802*4882a593Smuzhiyun pu1Byte cli_buf; 1803*4882a593Smuzhiyun struct btc_statistics statistics; 1804*4882a593Smuzhiyun u1Byte pwrModeVal[10]; 1805*4882a593Smuzhiyun BOOLEAN dbg_mode; 1806*4882a593Smuzhiyun BOOLEAN auto_report; 1807*4882a593Smuzhiyun u8 chip_type; 1808*4882a593Smuzhiyun BOOLEAN wl_rf_state_off; 1809*4882a593Smuzhiyun 1810*4882a593Smuzhiyun /* function pointers */ 1811*4882a593Smuzhiyun /* io related */ 1812*4882a593Smuzhiyun BFP_BTC_R1 btc_read_1byte; 1813*4882a593Smuzhiyun BFP_BTC_W1 btc_write_1byte; 1814*4882a593Smuzhiyun BFP_BTC_W1_BIT_MASK btc_write_1byte_bitmask; 1815*4882a593Smuzhiyun BFP_BTC_R2 btc_read_2byte; 1816*4882a593Smuzhiyun BFP_BTC_W2 btc_write_2byte; 1817*4882a593Smuzhiyun BFP_BTC_R4 btc_read_4byte; 1818*4882a593Smuzhiyun BFP_BTC_W4 btc_write_4byte; 1819*4882a593Smuzhiyun BFP_BTC_LOCAL_REG_W1 btc_write_local_reg_1byte; 1820*4882a593Smuzhiyun BFP_BTC_R_LINDIRECT btc_read_linderct; 1821*4882a593Smuzhiyun BFP_BTC_W_LINDIRECT btc_write_linderct; 1822*4882a593Smuzhiyun BFP_BTC_R_SCBD btc_read_scbd; 1823*4882a593Smuzhiyun BFP_BTC_R_SCBD_32BIT btc_read_scbd_32bit; 1824*4882a593Smuzhiyun BFP_BTC_W_SCBD btc_write_scbd; 1825*4882a593Smuzhiyun BFP_BTC_W_SCBD_32BIT btc_write_scbd_32bit; 1826*4882a593Smuzhiyun 1827*4882a593Smuzhiyun /* read/write bb related */ 1828*4882a593Smuzhiyun BFP_BTC_SET_BB_REG btc_set_bb_reg; 1829*4882a593Smuzhiyun BFP_BTC_GET_BB_REG btc_get_bb_reg; 1830*4882a593Smuzhiyun 1831*4882a593Smuzhiyun /* read/write rf related */ 1832*4882a593Smuzhiyun BFP_BTC_SET_RF_REG btc_set_rf_reg; 1833*4882a593Smuzhiyun BFP_BTC_GET_RF_REG btc_get_rf_reg; 1834*4882a593Smuzhiyun 1835*4882a593Smuzhiyun /* fill h2c related */ 1836*4882a593Smuzhiyun BFP_BTC_FILL_H2C btc_fill_h2c; 1837*4882a593Smuzhiyun /* other */ 1838*4882a593Smuzhiyun BFP_BTC_DISP_DBG_MSG btc_disp_dbg_msg; 1839*4882a593Smuzhiyun /* normal get/set related */ 1840*4882a593Smuzhiyun BFP_BTC_GET btc_get; 1841*4882a593Smuzhiyun BFP_BTC_SET btc_set; 1842*4882a593Smuzhiyun 1843*4882a593Smuzhiyun BFP_BTC_GET_BT_REG btc_get_bt_reg; 1844*4882a593Smuzhiyun BFP_BTC_SET_BT_REG btc_set_bt_reg; 1845*4882a593Smuzhiyun 1846*4882a593Smuzhiyun BFP_BTC_SET_BT_ANT_DETECTION btc_set_bt_ant_detection; 1847*4882a593Smuzhiyun 1848*4882a593Smuzhiyun BFP_BTC_COEX_H2C_PROCESS btc_coex_h2c_process; 1849*4882a593Smuzhiyun BFP_BTC_SET_BT_TRX_MASK btc_set_bt_trx_mask; 1850*4882a593Smuzhiyun BFP_BTC_GET_BT_COEX_SUPPORTED_FEATURE btc_get_bt_coex_supported_feature; 1851*4882a593Smuzhiyun BFP_BTC_GET_BT_COEX_SUPPORTED_VERSION btc_get_bt_coex_supported_version; 1852*4882a593Smuzhiyun BFP_BTC_GET_PHYDM_VERSION btc_get_bt_phydm_version; 1853*4882a593Smuzhiyun BFP_BTC_SET_TIMER btc_set_timer; 1854*4882a593Smuzhiyun BFP_BTC_SET_ATOMIC btc_set_atomic; 1855*4882a593Smuzhiyun BTC_PHYDM_MODIFY_RA_PCR_THRESHLOD btc_phydm_modify_RA_PCR_threshold; 1856*4882a593Smuzhiyun BTC_PHYDM_CMNINFOQUERY btc_phydm_query_PHY_counter; 1857*4882a593Smuzhiyun BTC_REDUCE_WL_TX_POWER btc_reduce_wl_tx_power; 1858*4882a593Smuzhiyun BTC_PHYDM_MODIFY_ANTDIV_HWSW btc_phydm_modify_antdiv_hwsw; 1859*4882a593Smuzhiyun BFP_BTC_GET_ANT_DET_VAL_FROM_BT btc_get_ant_det_val_from_bt; 1860*4882a593Smuzhiyun BFP_BTC_GET_BLE_SCAN_TYPE_FROM_BT btc_get_ble_scan_type_from_bt; 1861*4882a593Smuzhiyun BFP_BTC_GET_BLE_SCAN_PARA_FROM_BT btc_get_ble_scan_para_from_bt; 1862*4882a593Smuzhiyun BFP_BTC_GET_BT_AFH_MAP_FROM_BT btc_get_bt_afh_map_from_bt; 1863*4882a593Smuzhiyun 1864*4882a593Smuzhiyun union { 1865*4882a593Smuzhiyun #ifdef CONFIG_RTL8822B 1866*4882a593Smuzhiyun struct coex_dm_8822b_1ant coex_dm_8822b_1ant; 1867*4882a593Smuzhiyun struct coex_dm_8822b_2ant coex_dm_8822b_2ant; 1868*4882a593Smuzhiyun #endif /* 8822B */ 1869*4882a593Smuzhiyun #ifdef CONFIG_RTL8821C 1870*4882a593Smuzhiyun struct coex_dm_8821c_1ant coex_dm_8821c_1ant; 1871*4882a593Smuzhiyun struct coex_dm_8821c_2ant coex_dm_8821c_2ant; 1872*4882a593Smuzhiyun #endif /* 8821C */ 1873*4882a593Smuzhiyun #ifdef CONFIG_RTL8723D 1874*4882a593Smuzhiyun struct coex_dm_8723d_1ant coex_dm_8723d_1ant; 1875*4882a593Smuzhiyun struct coex_dm_8723d_2ant coex_dm_8723d_2ant; 1876*4882a593Smuzhiyun #endif /* 8723D */ 1877*4882a593Smuzhiyun }; 1878*4882a593Smuzhiyun 1879*4882a593Smuzhiyun union { 1880*4882a593Smuzhiyun #ifdef CONFIG_RTL8822B 1881*4882a593Smuzhiyun struct coex_sta_8822b_1ant coex_sta_8822b_1ant; 1882*4882a593Smuzhiyun struct coex_sta_8822b_2ant coex_sta_8822b_2ant; 1883*4882a593Smuzhiyun #endif /* 8822B */ 1884*4882a593Smuzhiyun #ifdef CONFIG_RTL8821C 1885*4882a593Smuzhiyun struct coex_sta_8821c_1ant coex_sta_8821c_1ant; 1886*4882a593Smuzhiyun struct coex_sta_8821c_2ant coex_sta_8821c_2ant; 1887*4882a593Smuzhiyun #endif /* 8821C */ 1888*4882a593Smuzhiyun #ifdef CONFIG_RTL8723D 1889*4882a593Smuzhiyun struct coex_sta_8723d_1ant coex_sta_8723d_1ant; 1890*4882a593Smuzhiyun struct coex_sta_8723d_2ant coex_sta_8723d_2ant; 1891*4882a593Smuzhiyun #endif /* 8723D */ 1892*4882a593Smuzhiyun }; 1893*4882a593Smuzhiyun 1894*4882a593Smuzhiyun union { 1895*4882a593Smuzhiyun #ifdef CONFIG_RTL8822B 1896*4882a593Smuzhiyun struct rfe_type_8822b_1ant rfe_type_8822b_1ant; 1897*4882a593Smuzhiyun struct rfe_type_8822b_2ant rfe_type_8822b_2ant; 1898*4882a593Smuzhiyun #endif /* 8822B */ 1899*4882a593Smuzhiyun #ifdef CONFIG_RTL8821C 1900*4882a593Smuzhiyun struct rfe_type_8821c_1ant rfe_type_8821c_1ant; 1901*4882a593Smuzhiyun struct rfe_type_8821c_2ant rfe_type_8821c_2ant; 1902*4882a593Smuzhiyun #endif /* 8821C */ 1903*4882a593Smuzhiyun }; 1904*4882a593Smuzhiyun 1905*4882a593Smuzhiyun union { 1906*4882a593Smuzhiyun #ifdef CONFIG_RTL8822B 1907*4882a593Smuzhiyun struct wifi_link_info_8822b_1ant wifi_link_info_8822b_1ant; 1908*4882a593Smuzhiyun struct wifi_link_info_8822b_2ant wifi_link_info_8822b_2ant; 1909*4882a593Smuzhiyun #endif /* 8822B */ 1910*4882a593Smuzhiyun #ifdef CONFIG_RTL8821C 1911*4882a593Smuzhiyun struct wifi_link_info_8821c_1ant wifi_link_info_8821c_1ant; 1912*4882a593Smuzhiyun struct wifi_link_info_8821c_2ant wifi_link_info_8821c_2ant; 1913*4882a593Smuzhiyun #endif /* 8821C */ 1914*4882a593Smuzhiyun }; 1915*4882a593Smuzhiyun 1916*4882a593Smuzhiyun }; 1917*4882a593Smuzhiyun typedef struct btc_coexist *PBTC_COEXIST; 1918*4882a593Smuzhiyun 1919*4882a593Smuzhiyun extern struct btc_coexist GLBtCoexist; 1920*4882a593Smuzhiyun 1921*4882a593Smuzhiyun typedef void 1922*4882a593Smuzhiyun (*BFP_BTC_CHIP_SETUP)( 1923*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 1924*4882a593Smuzhiyun IN u1Byte setType 1925*4882a593Smuzhiyun ); 1926*4882a593Smuzhiyun 1927*4882a593Smuzhiyun struct btc_chip_para { 1928*4882a593Smuzhiyun const char *chip_name; 1929*4882a593Smuzhiyun u32 para_ver_date; 1930*4882a593Smuzhiyun u32 para_ver; 1931*4882a593Smuzhiyun u32 bt_desired_ver; 1932*4882a593Smuzhiyun u32 wl_desired_ver; 1933*4882a593Smuzhiyun boolean scbd_support; 1934*4882a593Smuzhiyun u32 scbd_reg; 1935*4882a593Smuzhiyun u8 scbd_bit_num; 1936*4882a593Smuzhiyun boolean mailbox_support; 1937*4882a593Smuzhiyun boolean lte_indirect_access; 1938*4882a593Smuzhiyun boolean new_scbd10_def; /* TRUE: 1:fix 2M(8822c) */ 1939*4882a593Smuzhiyun u8 indirect_type; /* 0:17xx, 1:7cx */ 1940*4882a593Smuzhiyun u8 pstdma_type; /* 0: LPSoff, 1:LPSon */ 1941*4882a593Smuzhiyun u8 bt_rssi_type; 1942*4882a593Smuzhiyun u8 ant_isolation; 1943*4882a593Smuzhiyun u8 rssi_tolerance; 1944*4882a593Smuzhiyun u8 rx_path_num; 1945*4882a593Smuzhiyun u8 wl_rssi_step_num; 1946*4882a593Smuzhiyun const u8 *wl_rssi_step; 1947*4882a593Smuzhiyun u8 bt_rssi_step_num; 1948*4882a593Smuzhiyun const u8 *bt_rssi_step; 1949*4882a593Smuzhiyun u8 table_sant_num; 1950*4882a593Smuzhiyun const struct btc_coex_table_para *table_sant; 1951*4882a593Smuzhiyun u8 table_nsant_num; 1952*4882a593Smuzhiyun const struct btc_coex_table_para *table_nsant; 1953*4882a593Smuzhiyun u8 tdma_sant_num; 1954*4882a593Smuzhiyun const struct btc_tdma_para *tdma_sant; 1955*4882a593Smuzhiyun u8 tdma_nsant_num; 1956*4882a593Smuzhiyun const struct btc_tdma_para *tdma_nsant; 1957*4882a593Smuzhiyun u8 wl_rf_para_tx_num; 1958*4882a593Smuzhiyun const struct btc_rf_para *wl_rf_para_tx; 1959*4882a593Smuzhiyun const struct btc_rf_para *wl_rf_para_rx; 1960*4882a593Smuzhiyun u8 bt_afh_span_bw20; 1961*4882a593Smuzhiyun u8 bt_afh_span_bw40; 1962*4882a593Smuzhiyun u8 afh_5g_num; 1963*4882a593Smuzhiyun const struct btc_5g_afh_map *afh_5g; 1964*4882a593Smuzhiyun BFP_BTC_CHIP_SETUP chip_setup; 1965*4882a593Smuzhiyun }; 1966*4882a593Smuzhiyun 1967*4882a593Smuzhiyun BOOLEAN 1968*4882a593Smuzhiyun EXhalbtcoutsrc_InitlizeVariables( 1969*4882a593Smuzhiyun IN PVOID Adapter 1970*4882a593Smuzhiyun ); 1971*4882a593Smuzhiyun VOID 1972*4882a593Smuzhiyun EXhalbtcoutsrc_PowerOnSetting( 1973*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist 1974*4882a593Smuzhiyun ); 1975*4882a593Smuzhiyun VOID 1976*4882a593Smuzhiyun EXhalbtcoutsrc_PreLoadFirmware( 1977*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist 1978*4882a593Smuzhiyun ); 1979*4882a593Smuzhiyun VOID 1980*4882a593Smuzhiyun EXhalbtcoutsrc_InitHwConfig( 1981*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 1982*4882a593Smuzhiyun IN BOOLEAN bWifiOnly 1983*4882a593Smuzhiyun ); 1984*4882a593Smuzhiyun VOID 1985*4882a593Smuzhiyun EXhalbtcoutsrc_InitCoexDm( 1986*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist 1987*4882a593Smuzhiyun ); 1988*4882a593Smuzhiyun VOID 1989*4882a593Smuzhiyun EXhalbtcoutsrc_IpsNotify( 1990*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 1991*4882a593Smuzhiyun IN u1Byte type 1992*4882a593Smuzhiyun ); 1993*4882a593Smuzhiyun VOID 1994*4882a593Smuzhiyun EXhalbtcoutsrc_LpsNotify( 1995*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 1996*4882a593Smuzhiyun IN u1Byte type 1997*4882a593Smuzhiyun ); 1998*4882a593Smuzhiyun VOID 1999*4882a593Smuzhiyun EXhalbtcoutsrc_ScanNotify( 2000*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2001*4882a593Smuzhiyun IN u1Byte type 2002*4882a593Smuzhiyun ); 2003*4882a593Smuzhiyun VOID 2004*4882a593Smuzhiyun EXhalbtcoutsrc_SetAntennaPathNotify( 2005*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2006*4882a593Smuzhiyun IN u1Byte type 2007*4882a593Smuzhiyun ); 2008*4882a593Smuzhiyun VOID 2009*4882a593Smuzhiyun EXhalbtcoutsrc_ConnectNotify( 2010*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2011*4882a593Smuzhiyun IN u1Byte action 2012*4882a593Smuzhiyun ); 2013*4882a593Smuzhiyun VOID 2014*4882a593Smuzhiyun EXhalbtcoutsrc_MediaStatusNotify( 2015*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2016*4882a593Smuzhiyun IN RT_MEDIA_STATUS mediaStatus 2017*4882a593Smuzhiyun ); 2018*4882a593Smuzhiyun VOID 2019*4882a593Smuzhiyun EXhalbtcoutsrc_SpecificPacketNotify( 2020*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2021*4882a593Smuzhiyun IN u1Byte pktType 2022*4882a593Smuzhiyun ); 2023*4882a593Smuzhiyun VOID 2024*4882a593Smuzhiyun EXhalbtcoutsrc_BtInfoNotify( 2025*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2026*4882a593Smuzhiyun IN pu1Byte tmpBuf, 2027*4882a593Smuzhiyun IN u1Byte length 2028*4882a593Smuzhiyun ); 2029*4882a593Smuzhiyun VOID 2030*4882a593Smuzhiyun EXhalbtcoutsrc_RfStatusNotify( 2031*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2032*4882a593Smuzhiyun IN u1Byte type 2033*4882a593Smuzhiyun ); 2034*4882a593Smuzhiyun u4Byte 2035*4882a593Smuzhiyun EXhalbtcoutsrc_CoexTimerCheck( 2036*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist 2037*4882a593Smuzhiyun ); 2038*4882a593Smuzhiyun u4Byte 2039*4882a593Smuzhiyun EXhalbtcoutsrc_WLStatusCheck( 2040*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist 2041*4882a593Smuzhiyun ); 2042*4882a593Smuzhiyun VOID 2043*4882a593Smuzhiyun EXhalbtcoutsrc_WlFwDbgInfoNotify( 2044*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2045*4882a593Smuzhiyun IN pu1Byte tmpBuf, 2046*4882a593Smuzhiyun IN u1Byte length 2047*4882a593Smuzhiyun ); 2048*4882a593Smuzhiyun VOID 2049*4882a593Smuzhiyun EXhalbtcoutsrc_rx_rate_change_notify( 2050*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2051*4882a593Smuzhiyun IN BOOLEAN is_data_frame, 2052*4882a593Smuzhiyun IN u1Byte btc_rate_id 2053*4882a593Smuzhiyun ); 2054*4882a593Smuzhiyun VOID 2055*4882a593Smuzhiyun EXhalbtcoutsrc_StackOperationNotify( 2056*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2057*4882a593Smuzhiyun IN u1Byte type 2058*4882a593Smuzhiyun ); 2059*4882a593Smuzhiyun VOID 2060*4882a593Smuzhiyun EXhalbtcoutsrc_HaltNotify( 2061*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist 2062*4882a593Smuzhiyun ); 2063*4882a593Smuzhiyun VOID 2064*4882a593Smuzhiyun EXhalbtcoutsrc_PnpNotify( 2065*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2066*4882a593Smuzhiyun IN u1Byte pnpState 2067*4882a593Smuzhiyun ); 2068*4882a593Smuzhiyun VOID 2069*4882a593Smuzhiyun EXhalbtcoutsrc_TimerNotify( 2070*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2071*4882a593Smuzhiyun IN u4Byte timer_type 2072*4882a593Smuzhiyun ); 2073*4882a593Smuzhiyun VOID 2074*4882a593Smuzhiyun EXhalbtcoutsrc_WLStatusChangeNotify( 2075*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2076*4882a593Smuzhiyun IN u4Byte change_type 2077*4882a593Smuzhiyun ); 2078*4882a593Smuzhiyun VOID 2079*4882a593Smuzhiyun EXhalbtcoutsrc_WL_RFK_Notify( 2080*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2081*4882a593Smuzhiyun IN u1Byte path, 2082*4882a593Smuzhiyun IN u1Byte type, 2083*4882a593Smuzhiyun IN u1Byte state 2084*4882a593Smuzhiyun ); 2085*4882a593Smuzhiyun VOID 2086*4882a593Smuzhiyun EXhalbtcoutsrc_CoexDmSwitch( 2087*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist 2088*4882a593Smuzhiyun ); 2089*4882a593Smuzhiyun VOID 2090*4882a593Smuzhiyun EXhalbtcoutsrc_Periodical( 2091*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist 2092*4882a593Smuzhiyun ); 2093*4882a593Smuzhiyun VOID 2094*4882a593Smuzhiyun EXhalbtcoutsrc_DbgControl( 2095*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2096*4882a593Smuzhiyun IN u1Byte opCode, 2097*4882a593Smuzhiyun IN u1Byte opLen, 2098*4882a593Smuzhiyun IN pu1Byte pData 2099*4882a593Smuzhiyun ); 2100*4882a593Smuzhiyun VOID 2101*4882a593Smuzhiyun EXhalbtcoutsrc_AntennaDetection( 2102*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist, 2103*4882a593Smuzhiyun IN u4Byte centFreq, 2104*4882a593Smuzhiyun IN u4Byte offset, 2105*4882a593Smuzhiyun IN u4Byte span, 2106*4882a593Smuzhiyun IN u4Byte seconds 2107*4882a593Smuzhiyun ); 2108*4882a593Smuzhiyun VOID 2109*4882a593Smuzhiyun EXhalbtcoutsrc_StackUpdateProfileInfo( 2110*4882a593Smuzhiyun VOID 2111*4882a593Smuzhiyun ); 2112*4882a593Smuzhiyun VOID 2113*4882a593Smuzhiyun EXhalbtcoutsrc_SetHciVersion( 2114*4882a593Smuzhiyun IN u2Byte hciVersion 2115*4882a593Smuzhiyun ); 2116*4882a593Smuzhiyun VOID 2117*4882a593Smuzhiyun EXhalbtcoutsrc_SetBtPatchVersion( 2118*4882a593Smuzhiyun IN u2Byte btHciVersion, 2119*4882a593Smuzhiyun IN u2Byte btPatchVersion 2120*4882a593Smuzhiyun ); 2121*4882a593Smuzhiyun VOID 2122*4882a593Smuzhiyun EXhalbtcoutsrc_UpdateMinBtRssi( 2123*4882a593Smuzhiyun IN s1Byte btRssi 2124*4882a593Smuzhiyun ); 2125*4882a593Smuzhiyun #if 0 2126*4882a593Smuzhiyun VOID 2127*4882a593Smuzhiyun EXhalbtcoutsrc_SetBtExist( 2128*4882a593Smuzhiyun IN BOOLEAN bBtExist 2129*4882a593Smuzhiyun ); 2130*4882a593Smuzhiyun #endif 2131*4882a593Smuzhiyun VOID 2132*4882a593Smuzhiyun EXhalbtcoutsrc_SetChipType( 2133*4882a593Smuzhiyun IN u1Byte chipType 2134*4882a593Smuzhiyun ); 2135*4882a593Smuzhiyun VOID 2136*4882a593Smuzhiyun EXhalbtcoutsrc_SetAntNum( 2137*4882a593Smuzhiyun IN u1Byte type, 2138*4882a593Smuzhiyun IN u1Byte antNum 2139*4882a593Smuzhiyun ); 2140*4882a593Smuzhiyun VOID 2141*4882a593Smuzhiyun EXhalbtcoutsrc_SetSingleAntPath( 2142*4882a593Smuzhiyun IN u1Byte singleAntPath 2143*4882a593Smuzhiyun ); 2144*4882a593Smuzhiyun VOID 2145*4882a593Smuzhiyun EXhalbtcoutsrc_DisplayBtCoexInfo( 2146*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist 2147*4882a593Smuzhiyun ); 2148*4882a593Smuzhiyun VOID 2149*4882a593Smuzhiyun EXhalbtcoutsrc_DisplayAntDetection( 2150*4882a593Smuzhiyun IN PBTC_COEXIST pBtCoexist 2151*4882a593Smuzhiyun ); 2152*4882a593Smuzhiyun 2153*4882a593Smuzhiyun #define MASKBYTE0 0xff 2154*4882a593Smuzhiyun #define MASKBYTE1 0xff00 2155*4882a593Smuzhiyun #define MASKBYTE2 0xff0000 2156*4882a593Smuzhiyun #define MASKBYTE3 0xff000000 2157*4882a593Smuzhiyun #define MASKHWORD 0xffff0000 2158*4882a593Smuzhiyun #define MASKLWORD 0x0000ffff 2159*4882a593Smuzhiyun #define MASKDWORD 0xffffffff 2160*4882a593Smuzhiyun #define MASK12BITS 0xfff 2161*4882a593Smuzhiyun #define MASKH4BITS 0xf0000000 2162*4882a593Smuzhiyun #define MASKOFDM_D 0xffc00000 2163*4882a593Smuzhiyun #define MASKCCK 0x3f3f3f3f 2164*4882a593Smuzhiyun 2165*4882a593Smuzhiyun #endif 2166