162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright(c) 2009-2012 Realtek Corporation.*/ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef __HALBTC_OUT_SRC_H__ 562306a36Sopenharmony_ci#define __HALBTC_OUT_SRC_H__ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include "../wifi.h" 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#define NORMAL_EXEC false 1062306a36Sopenharmony_ci#define FORCE_EXEC true 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#define BTC_RF_OFF 0x0 1362306a36Sopenharmony_ci#define BTC_RF_ON 0x1 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define BTC_RF_A RF90_PATH_A 1662306a36Sopenharmony_ci#define BTC_RF_B RF90_PATH_B 1762306a36Sopenharmony_ci#define BTC_RF_C RF90_PATH_C 1862306a36Sopenharmony_ci#define BTC_RF_D RF90_PATH_D 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#define BTC_SMSP SINGLEMAC_SINGLEPHY 2162306a36Sopenharmony_ci#define BTC_DMDP DUALMAC_DUALPHY 2262306a36Sopenharmony_ci#define BTC_DMSP DUALMAC_SINGLEPHY 2362306a36Sopenharmony_ci#define BTC_MP_UNKNOWN 0xff 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci#define IN 2662306a36Sopenharmony_ci#define OUT 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci#define BT_TMP_BUF_SIZE 100 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci#define BT_COEX_ANT_TYPE_PG 0 3162306a36Sopenharmony_ci#define BT_COEX_ANT_TYPE_ANTDIV 1 3262306a36Sopenharmony_ci#define BT_COEX_ANT_TYPE_DETECTED 2 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci#define BTC_MIMO_PS_STATIC 0 3562306a36Sopenharmony_ci#define BTC_MIMO_PS_DYNAMIC 1 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci#define BTC_RATE_DISABLE 0 3862306a36Sopenharmony_ci#define BTC_RATE_ENABLE 1 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci/* single Antenna definition */ 4162306a36Sopenharmony_ci#define BTC_ANT_PATH_WIFI 0 4262306a36Sopenharmony_ci#define BTC_ANT_PATH_BT 1 4362306a36Sopenharmony_ci#define BTC_ANT_PATH_PTA 2 4462306a36Sopenharmony_ci#define BTC_ANT_PATH_WIFI5G 3 4562306a36Sopenharmony_ci#define BTC_ANT_PATH_AUTO 4 4662306a36Sopenharmony_ci/* dual Antenna definition */ 4762306a36Sopenharmony_ci#define BTC_ANT_WIFI_AT_MAIN 0 4862306a36Sopenharmony_ci#define BTC_ANT_WIFI_AT_AUX 1 4962306a36Sopenharmony_ci/* coupler Antenna definition */ 5062306a36Sopenharmony_ci#define BTC_ANT_WIFI_AT_CPL_MAIN 0 5162306a36Sopenharmony_ci#define BTC_ANT_WIFI_AT_CPL_AUX 1 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_cienum btc_bt_reg_type { 5462306a36Sopenharmony_ci BTC_BT_REG_RF = 0, 5562306a36Sopenharmony_ci BTC_BT_REG_MODEM = 1, 5662306a36Sopenharmony_ci BTC_BT_REG_BLUEWIZE = 2, 5762306a36Sopenharmony_ci BTC_BT_REG_VENDOR = 3, 5862306a36Sopenharmony_ci BTC_BT_REG_LE = 4, 5962306a36Sopenharmony_ci BTC_BT_REG_MAX 6062306a36Sopenharmony_ci}; 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_cienum btc_chip_interface { 6362306a36Sopenharmony_ci BTC_INTF_UNKNOWN = 0, 6462306a36Sopenharmony_ci BTC_INTF_PCI = 1, 6562306a36Sopenharmony_ci BTC_INTF_USB = 2, 6662306a36Sopenharmony_ci BTC_INTF_SDIO = 3, 6762306a36Sopenharmony_ci BTC_INTF_GSPI = 4, 6862306a36Sopenharmony_ci BTC_INTF_MAX 6962306a36Sopenharmony_ci}; 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_cienum btc_chip_type { 7262306a36Sopenharmony_ci BTC_CHIP_UNDEF = 0, 7362306a36Sopenharmony_ci BTC_CHIP_CSR_BC4 = 1, 7462306a36Sopenharmony_ci BTC_CHIP_CSR_BC8 = 2, 7562306a36Sopenharmony_ci BTC_CHIP_RTL8723A = 3, 7662306a36Sopenharmony_ci BTC_CHIP_RTL8821 = 4, 7762306a36Sopenharmony_ci BTC_CHIP_RTL8723B = 5, 7862306a36Sopenharmony_ci BTC_CHIP_MAX 7962306a36Sopenharmony_ci}; 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_cienum btc_msg_type { 8262306a36Sopenharmony_ci BTC_MSG_INTERFACE = 0x0, 8362306a36Sopenharmony_ci BTC_MSG_ALGORITHM = 0x1, 8462306a36Sopenharmony_ci BTC_MSG_MAX 8562306a36Sopenharmony_ci}; 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci/* following is for BTC_MSG_INTERFACE */ 8862306a36Sopenharmony_ci#define INTF_INIT BIT0 8962306a36Sopenharmony_ci#define INTF_NOTIFY BIT2 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci/* following is for BTC_ALGORITHM */ 9262306a36Sopenharmony_ci#define ALGO_BT_RSSI_STATE BIT0 9362306a36Sopenharmony_ci#define ALGO_WIFI_RSSI_STATE BIT1 9462306a36Sopenharmony_ci#define ALGO_BT_MONITOR BIT2 9562306a36Sopenharmony_ci#define ALGO_TRACE BIT3 9662306a36Sopenharmony_ci#define ALGO_TRACE_FW BIT4 9762306a36Sopenharmony_ci#define ALGO_TRACE_FW_DETAIL BIT5 9862306a36Sopenharmony_ci#define ALGO_TRACE_FW_EXEC BIT6 9962306a36Sopenharmony_ci#define ALGO_TRACE_SW BIT7 10062306a36Sopenharmony_ci#define ALGO_TRACE_SW_DETAIL BIT8 10162306a36Sopenharmony_ci#define ALGO_TRACE_SW_EXEC BIT9 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci/* following is for wifi link status */ 10462306a36Sopenharmony_ci#define WIFI_STA_CONNECTED BIT0 10562306a36Sopenharmony_ci#define WIFI_AP_CONNECTED BIT1 10662306a36Sopenharmony_ci#define WIFI_HS_CONNECTED BIT2 10762306a36Sopenharmony_ci#define WIFI_P2P_GO_CONNECTED BIT3 10862306a36Sopenharmony_ci#define WIFI_P2P_GC_CONNECTED BIT4 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci#define BTC_RSSI_HIGH(_rssi_) \ 11162306a36Sopenharmony_ci ((_rssi_ == BTC_RSSI_STATE_HIGH || \ 11262306a36Sopenharmony_ci _rssi_ == BTC_RSSI_STATE_STAY_HIGH) ? true : false) 11362306a36Sopenharmony_ci#define BTC_RSSI_MEDIUM(_rssi_) \ 11462306a36Sopenharmony_ci ((_rssi_ == BTC_RSSI_STATE_MEDIUM || \ 11562306a36Sopenharmony_ci _rssi_ == BTC_RSSI_STATE_STAY_MEDIUM) ? true : false) 11662306a36Sopenharmony_ci#define BTC_RSSI_LOW(_rssi_) \ 11762306a36Sopenharmony_ci ((_rssi_ == BTC_RSSI_STATE_LOW || \ 11862306a36Sopenharmony_ci _rssi_ == BTC_RSSI_STATE_STAY_LOW) ? true : false) 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_cienum btc_power_save_type { 12162306a36Sopenharmony_ci BTC_PS_WIFI_NATIVE = 0, 12262306a36Sopenharmony_ci BTC_PS_LPS_ON = 1, 12362306a36Sopenharmony_ci BTC_PS_LPS_OFF = 2, 12462306a36Sopenharmony_ci BTC_PS_LPS_MAX 12562306a36Sopenharmony_ci}; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_cistruct btc_board_info { 12862306a36Sopenharmony_ci /* The following is some board information */ 12962306a36Sopenharmony_ci u8 bt_chip_type; 13062306a36Sopenharmony_ci u8 pg_ant_num; /* pg ant number */ 13162306a36Sopenharmony_ci u8 btdm_ant_num; /* ant number for btdm */ 13262306a36Sopenharmony_ci u8 btdm_ant_pos; 13362306a36Sopenharmony_ci u8 single_ant_path; /* current used for 8723b only, 1=>s0, 0=>s1 */ 13462306a36Sopenharmony_ci bool tfbga_package; 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci u8 rfe_type; 13762306a36Sopenharmony_ci u8 ant_div_cfg; 13862306a36Sopenharmony_ci u8 customer_id; 13962306a36Sopenharmony_ci}; 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_cienum btc_dbg_opcode { 14262306a36Sopenharmony_ci BTC_DBG_SET_COEX_NORMAL = 0x0, 14362306a36Sopenharmony_ci BTC_DBG_SET_COEX_WIFI_ONLY = 0x1, 14462306a36Sopenharmony_ci BTC_DBG_SET_COEX_BT_ONLY = 0x2, 14562306a36Sopenharmony_ci BTC_DBG_MAX 14662306a36Sopenharmony_ci}; 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_cienum btc_rssi_state { 14962306a36Sopenharmony_ci BTC_RSSI_STATE_HIGH = 0x0, 15062306a36Sopenharmony_ci BTC_RSSI_STATE_MEDIUM = 0x1, 15162306a36Sopenharmony_ci BTC_RSSI_STATE_LOW = 0x2, 15262306a36Sopenharmony_ci BTC_RSSI_STATE_STAY_HIGH = 0x3, 15362306a36Sopenharmony_ci BTC_RSSI_STATE_STAY_MEDIUM = 0x4, 15462306a36Sopenharmony_ci BTC_RSSI_STATE_STAY_LOW = 0x5, 15562306a36Sopenharmony_ci BTC_RSSI_MAX 15662306a36Sopenharmony_ci}; 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_cienum btc_wifi_role { 15962306a36Sopenharmony_ci BTC_ROLE_STATION = 0x0, 16062306a36Sopenharmony_ci BTC_ROLE_AP = 0x1, 16162306a36Sopenharmony_ci BTC_ROLE_IBSS = 0x2, 16262306a36Sopenharmony_ci BTC_ROLE_HS_MODE = 0x3, 16362306a36Sopenharmony_ci BTC_ROLE_MAX 16462306a36Sopenharmony_ci}; 16562306a36Sopenharmony_ci 16662306a36Sopenharmony_cienum btc_wireless_freq { 16762306a36Sopenharmony_ci BTC_FREQ_2_4G = 0x0, 16862306a36Sopenharmony_ci BTC_FREQ_5G = 0x1, 16962306a36Sopenharmony_ci BTC_FREQ_MAX 17062306a36Sopenharmony_ci}; 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_cienum btc_wifi_bw_mode { 17362306a36Sopenharmony_ci BTC_WIFI_BW_LEGACY = 0x0, 17462306a36Sopenharmony_ci BTC_WIFI_BW_HT20 = 0x1, 17562306a36Sopenharmony_ci BTC_WIFI_BW_HT40 = 0x2, 17662306a36Sopenharmony_ci BTC_WIFI_BW_HT80 = 0x3, 17762306a36Sopenharmony_ci BTC_WIFI_BW_MAX 17862306a36Sopenharmony_ci}; 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_cienum btc_wifi_traffic_dir { 18162306a36Sopenharmony_ci BTC_WIFI_TRAFFIC_TX = 0x0, 18262306a36Sopenharmony_ci BTC_WIFI_TRAFFIC_RX = 0x1, 18362306a36Sopenharmony_ci BTC_WIFI_TRAFFIC_MAX 18462306a36Sopenharmony_ci}; 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_cienum btc_wifi_pnp { 18762306a36Sopenharmony_ci BTC_WIFI_PNP_WAKE_UP = 0x0, 18862306a36Sopenharmony_ci BTC_WIFI_PNP_SLEEP = 0x1, 18962306a36Sopenharmony_ci BTC_WIFI_PNP_SLEEP_KEEP_ANT = 0x2, 19062306a36Sopenharmony_ci BTC_WIFI_PNP_MAX 19162306a36Sopenharmony_ci}; 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_cienum btc_iot_peer { 19462306a36Sopenharmony_ci BTC_IOT_PEER_UNKNOWN = 0, 19562306a36Sopenharmony_ci BTC_IOT_PEER_REALTEK = 1, 19662306a36Sopenharmony_ci BTC_IOT_PEER_REALTEK_92SE = 2, 19762306a36Sopenharmony_ci BTC_IOT_PEER_BROADCOM = 3, 19862306a36Sopenharmony_ci BTC_IOT_PEER_RALINK = 4, 19962306a36Sopenharmony_ci BTC_IOT_PEER_ATHEROS = 5, 20062306a36Sopenharmony_ci BTC_IOT_PEER_CISCO = 6, 20162306a36Sopenharmony_ci BTC_IOT_PEER_MERU = 7, 20262306a36Sopenharmony_ci BTC_IOT_PEER_MARVELL = 8, 20362306a36Sopenharmony_ci BTC_IOT_PEER_REALTEK_SOFTAP = 9, 20462306a36Sopenharmony_ci BTC_IOT_PEER_SELF_SOFTAP = 10, /* Self is SoftAP */ 20562306a36Sopenharmony_ci BTC_IOT_PEER_AIRGO = 11, 20662306a36Sopenharmony_ci BTC_IOT_PEER_REALTEK_JAGUAR_BCUTAP = 12, 20762306a36Sopenharmony_ci BTC_IOT_PEER_REALTEK_JAGUAR_CCUTAP = 13, 20862306a36Sopenharmony_ci BTC_IOT_PEER_MAX, 20962306a36Sopenharmony_ci}; 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_ci/* for 8723b-d cut large current issue */ 21262306a36Sopenharmony_cienum bt_wifi_coex_state { 21362306a36Sopenharmony_ci BTC_WIFI_STAT_INIT, 21462306a36Sopenharmony_ci BTC_WIFI_STAT_IQK, 21562306a36Sopenharmony_ci BTC_WIFI_STAT_NORMAL_OFF, 21662306a36Sopenharmony_ci BTC_WIFI_STAT_MP_OFF, 21762306a36Sopenharmony_ci BTC_WIFI_STAT_NORMAL, 21862306a36Sopenharmony_ci BTC_WIFI_STAT_ANT_DIV, 21962306a36Sopenharmony_ci BTC_WIFI_STAT_MAX 22062306a36Sopenharmony_ci}; 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_cienum bt_ant_type { 22362306a36Sopenharmony_ci BTC_ANT_TYPE_0, 22462306a36Sopenharmony_ci BTC_ANT_TYPE_1, 22562306a36Sopenharmony_ci BTC_ANT_TYPE_2, 22662306a36Sopenharmony_ci BTC_ANT_TYPE_3, 22762306a36Sopenharmony_ci BTC_ANT_TYPE_4, 22862306a36Sopenharmony_ci BTC_ANT_TYPE_MAX 22962306a36Sopenharmony_ci}; 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_cienum btc_get_type { 23262306a36Sopenharmony_ci /* type bool */ 23362306a36Sopenharmony_ci BTC_GET_BL_HS_OPERATION, 23462306a36Sopenharmony_ci BTC_GET_BL_HS_CONNECTING, 23562306a36Sopenharmony_ci BTC_GET_BL_WIFI_CONNECTED, 23662306a36Sopenharmony_ci BTC_GET_BL_WIFI_DUAL_BAND_CONNECTED, 23762306a36Sopenharmony_ci BTC_GET_BL_WIFI_BUSY, 23862306a36Sopenharmony_ci BTC_GET_BL_WIFI_SCAN, 23962306a36Sopenharmony_ci BTC_GET_BL_WIFI_LINK, 24062306a36Sopenharmony_ci BTC_GET_BL_WIFI_DHCP, 24162306a36Sopenharmony_ci BTC_GET_BL_WIFI_SOFTAP_IDLE, 24262306a36Sopenharmony_ci BTC_GET_BL_WIFI_SOFTAP_LINKING, 24362306a36Sopenharmony_ci BTC_GET_BL_WIFI_IN_EARLY_SUSPEND, 24462306a36Sopenharmony_ci BTC_GET_BL_WIFI_ROAM, 24562306a36Sopenharmony_ci BTC_GET_BL_WIFI_4_WAY_PROGRESS, 24662306a36Sopenharmony_ci BTC_GET_BL_WIFI_UNDER_5G, 24762306a36Sopenharmony_ci BTC_GET_BL_WIFI_AP_MODE_ENABLE, 24862306a36Sopenharmony_ci BTC_GET_BL_WIFI_ENABLE_ENCRYPTION, 24962306a36Sopenharmony_ci BTC_GET_BL_WIFI_UNDER_B_MODE, 25062306a36Sopenharmony_ci BTC_GET_BL_EXT_SWITCH, 25162306a36Sopenharmony_ci BTC_GET_BL_WIFI_IS_IN_MP_MODE, 25262306a36Sopenharmony_ci BTC_GET_BL_IS_ASUS_8723B, 25362306a36Sopenharmony_ci BTC_GET_BL_FW_READY, 25462306a36Sopenharmony_ci BTC_GET_BL_RF4CE_CONNECTED, 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ci /* type s4Byte */ 25762306a36Sopenharmony_ci BTC_GET_S4_WIFI_RSSI, 25862306a36Sopenharmony_ci BTC_GET_S4_HS_RSSI, 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ci /* type u32 */ 26162306a36Sopenharmony_ci BTC_GET_U4_WIFI_BW, 26262306a36Sopenharmony_ci BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, 26362306a36Sopenharmony_ci BTC_GET_U4_WIFI_FW_VER, 26462306a36Sopenharmony_ci BTC_GET_U4_WIFI_LINK_STATUS, 26562306a36Sopenharmony_ci BTC_GET_U4_BT_PATCH_VER, 26662306a36Sopenharmony_ci BTC_GET_U4_VENDOR, 26762306a36Sopenharmony_ci BTC_GET_U4_SUPPORTED_VERSION, 26862306a36Sopenharmony_ci BTC_GET_U4_SUPPORTED_FEATURE, 26962306a36Sopenharmony_ci BTC_GET_U4_BT_DEVICE_INFO, 27062306a36Sopenharmony_ci BTC_GET_U4_BT_FORBIDDEN_SLOT_VAL, 27162306a36Sopenharmony_ci BTC_GET_U4_WIFI_IQK_TOTAL, 27262306a36Sopenharmony_ci BTC_GET_U4_WIFI_IQK_OK, 27362306a36Sopenharmony_ci BTC_GET_U4_WIFI_IQK_FAIL, 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_ci /* type u1Byte */ 27662306a36Sopenharmony_ci BTC_GET_U1_WIFI_DOT11_CHNL, 27762306a36Sopenharmony_ci BTC_GET_U1_WIFI_CENTRAL_CHNL, 27862306a36Sopenharmony_ci BTC_GET_U1_WIFI_HS_CHNL, 27962306a36Sopenharmony_ci BTC_GET_U1_MAC_PHY_MODE, 28062306a36Sopenharmony_ci BTC_GET_U1_AP_NUM, 28162306a36Sopenharmony_ci BTC_GET_U1_ANT_TYPE, 28262306a36Sopenharmony_ci BTC_GET_U1_IOT_PEER, 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ci /* for 1Ant */ 28562306a36Sopenharmony_ci BTC_GET_U1_LPS_MODE, 28662306a36Sopenharmony_ci BTC_GET_BL_BT_SCO_BUSY, 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ci /* for test mode */ 28962306a36Sopenharmony_ci BTC_GET_DRIVER_TEST_CFG, 29062306a36Sopenharmony_ci BTC_GET_MAX 29162306a36Sopenharmony_ci}; 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_cienum btc_vendor { 29462306a36Sopenharmony_ci BTC_VENDOR_LENOVO, 29562306a36Sopenharmony_ci BTC_VENDOR_ASUS, 29662306a36Sopenharmony_ci BTC_VENDOR_OTHER 29762306a36Sopenharmony_ci}; 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_cienum btc_set_type { 30062306a36Sopenharmony_ci /* type bool */ 30162306a36Sopenharmony_ci BTC_SET_BL_BT_DISABLE, 30262306a36Sopenharmony_ci BTC_SET_BL_BT_TRAFFIC_BUSY, 30362306a36Sopenharmony_ci BTC_SET_BL_BT_LIMITED_DIG, 30462306a36Sopenharmony_ci BTC_SET_BL_FORCE_TO_ROAM, 30562306a36Sopenharmony_ci BTC_SET_BL_TO_REJ_AP_AGG_PKT, 30662306a36Sopenharmony_ci BTC_SET_BL_BT_CTRL_AGG_SIZE, 30762306a36Sopenharmony_ci BTC_SET_BL_INC_SCAN_DEV_NUM, 30862306a36Sopenharmony_ci BTC_SET_BL_BT_TX_RX_MASK, 30962306a36Sopenharmony_ci BTC_SET_BL_MIRACAST_PLUS_BT, 31062306a36Sopenharmony_ci 31162306a36Sopenharmony_ci /* type u1Byte */ 31262306a36Sopenharmony_ci BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, 31362306a36Sopenharmony_ci BTC_SET_UI_SCAN_SIG_COMPENSATION, 31462306a36Sopenharmony_ci BTC_SET_U1_AGG_BUF_SIZE, 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ci /* type trigger some action */ 31762306a36Sopenharmony_ci BTC_SET_ACT_GET_BT_RSSI, 31862306a36Sopenharmony_ci BTC_SET_ACT_AGGREGATE_CTRL, 31962306a36Sopenharmony_ci BTC_SET_ACT_ANTPOSREGRISTRY_CTRL, 32062306a36Sopenharmony_ci BTC_SET_MIMO_PS_MODE, 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_ci /********* for 1Ant **********/ 32362306a36Sopenharmony_ci /* type bool */ 32462306a36Sopenharmony_ci BTC_SET_BL_BT_SCO_BUSY, 32562306a36Sopenharmony_ci /* type u1Byte */ 32662306a36Sopenharmony_ci BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE, 32762306a36Sopenharmony_ci BTC_SET_U1_LPS_VAL, 32862306a36Sopenharmony_ci BTC_SET_U1_RPWM_VAL, 32962306a36Sopenharmony_ci BTC_SET_U1_1ANT_LPS, 33062306a36Sopenharmony_ci BTC_SET_U1_1ANT_RPWM, 33162306a36Sopenharmony_ci /* type trigger some action */ 33262306a36Sopenharmony_ci BTC_SET_ACT_LEAVE_LPS, 33362306a36Sopenharmony_ci BTC_SET_ACT_ENTER_LPS, 33462306a36Sopenharmony_ci BTC_SET_ACT_NORMAL_LPS, 33562306a36Sopenharmony_ci BTC_SET_ACT_PRE_NORMAL_LPS, 33662306a36Sopenharmony_ci BTC_SET_ACT_POST_NORMAL_LPS, 33762306a36Sopenharmony_ci BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT, 33862306a36Sopenharmony_ci BTC_SET_ACT_DISABLE_LOW_POWER, 33962306a36Sopenharmony_ci BTC_SET_BL_BT_LNA_CONSTRAIN_LEVEL, 34062306a36Sopenharmony_ci BTC_SET_ACT_UPDATE_RAMASK, 34162306a36Sopenharmony_ci BTC_SET_ACT_SEND_MIMO_PS, 34262306a36Sopenharmony_ci /* BT Coex related */ 34362306a36Sopenharmony_ci BTC_SET_ACT_CTRL_BT_INFO, 34462306a36Sopenharmony_ci BTC_SET_ACT_CTRL_BT_COEX, 34562306a36Sopenharmony_ci BTC_SET_ACT_CTRL_8723B_ANT, 34662306a36Sopenharmony_ci /***************************/ 34762306a36Sopenharmony_ci BTC_SET_MAX 34862306a36Sopenharmony_ci}; 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_cienum btc_dbg_disp_type { 35162306a36Sopenharmony_ci BTC_DBG_DISP_COEX_STATISTICS = 0x0, 35262306a36Sopenharmony_ci BTC_DBG_DISP_BT_LINK_INFO = 0x1, 35362306a36Sopenharmony_ci BTC_DBG_DISP_BT_FW_VER = 0x2, 35462306a36Sopenharmony_ci BTC_DBG_DISP_FW_PWR_MODE_CMD = 0x3, 35562306a36Sopenharmony_ci BTC_DBG_DISP_WIFI_STATUS = 0x04, 35662306a36Sopenharmony_ci BTC_DBG_DISP_MAX 35762306a36Sopenharmony_ci}; 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_cienum btc_notify_type_ips { 36062306a36Sopenharmony_ci BTC_IPS_LEAVE = 0x0, 36162306a36Sopenharmony_ci BTC_IPS_ENTER = 0x1, 36262306a36Sopenharmony_ci BTC_IPS_MAX 36362306a36Sopenharmony_ci}; 36462306a36Sopenharmony_ci 36562306a36Sopenharmony_cienum btc_notify_type_lps { 36662306a36Sopenharmony_ci BTC_LPS_DISABLE = 0x0, 36762306a36Sopenharmony_ci BTC_LPS_ENABLE = 0x1, 36862306a36Sopenharmony_ci BTC_LPS_MAX 36962306a36Sopenharmony_ci}; 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_cienum btc_notify_type_scan { 37262306a36Sopenharmony_ci BTC_SCAN_FINISH = 0x0, 37362306a36Sopenharmony_ci BTC_SCAN_START = 0x1, 37462306a36Sopenharmony_ci BTC_SCAN_START_2G = 0x2, 37562306a36Sopenharmony_ci BTC_SCAN_MAX 37662306a36Sopenharmony_ci}; 37762306a36Sopenharmony_ci 37862306a36Sopenharmony_cienum btc_notify_type_switchband { 37962306a36Sopenharmony_ci BTC_NOT_SWITCH = 0x0, 38062306a36Sopenharmony_ci BTC_SWITCH_TO_24G = 0x1, 38162306a36Sopenharmony_ci BTC_SWITCH_TO_5G = 0x2, 38262306a36Sopenharmony_ci BTC_SWITCH_TO_24G_NOFORSCAN = 0x3, 38362306a36Sopenharmony_ci BTC_SWITCH_MAX 38462306a36Sopenharmony_ci}; 38562306a36Sopenharmony_ci 38662306a36Sopenharmony_cienum btc_notify_type_associate { 38762306a36Sopenharmony_ci BTC_ASSOCIATE_FINISH = 0x0, 38862306a36Sopenharmony_ci BTC_ASSOCIATE_START = 0x1, 38962306a36Sopenharmony_ci BTC_ASSOCIATE_5G_FINISH = 0x2, 39062306a36Sopenharmony_ci BTC_ASSOCIATE_5G_START = 0x3, 39162306a36Sopenharmony_ci BTC_ASSOCIATE_MAX 39262306a36Sopenharmony_ci}; 39362306a36Sopenharmony_ci 39462306a36Sopenharmony_cienum btc_notify_type_media_status { 39562306a36Sopenharmony_ci BTC_MEDIA_DISCONNECT = 0x0, 39662306a36Sopenharmony_ci BTC_MEDIA_CONNECT = 0x1, 39762306a36Sopenharmony_ci BTC_MEDIA_MAX 39862306a36Sopenharmony_ci}; 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_cienum btc_notify_type_special_packet { 40162306a36Sopenharmony_ci BTC_PACKET_UNKNOWN = 0x0, 40262306a36Sopenharmony_ci BTC_PACKET_DHCP = 0x1, 40362306a36Sopenharmony_ci BTC_PACKET_ARP = 0x2, 40462306a36Sopenharmony_ci BTC_PACKET_EAPOL = 0x3, 40562306a36Sopenharmony_ci BTC_PACKET_MAX 40662306a36Sopenharmony_ci}; 40762306a36Sopenharmony_ci 40862306a36Sopenharmony_cienum hci_ext_bt_operation { 40962306a36Sopenharmony_ci HCI_BT_OP_NONE = 0x0, 41062306a36Sopenharmony_ci HCI_BT_OP_INQUIRY_START = 0x1, 41162306a36Sopenharmony_ci HCI_BT_OP_INQUIRY_FINISH = 0x2, 41262306a36Sopenharmony_ci HCI_BT_OP_PAGING_START = 0x3, 41362306a36Sopenharmony_ci HCI_BT_OP_PAGING_SUCCESS = 0x4, 41462306a36Sopenharmony_ci HCI_BT_OP_PAGING_UNSUCCESS = 0x5, 41562306a36Sopenharmony_ci HCI_BT_OP_PAIRING_START = 0x6, 41662306a36Sopenharmony_ci HCI_BT_OP_PAIRING_FINISH = 0x7, 41762306a36Sopenharmony_ci HCI_BT_OP_BT_DEV_ENABLE = 0x8, 41862306a36Sopenharmony_ci HCI_BT_OP_BT_DEV_DISABLE = 0x9, 41962306a36Sopenharmony_ci HCI_BT_OP_MAX 42062306a36Sopenharmony_ci}; 42162306a36Sopenharmony_ci 42262306a36Sopenharmony_cienum btc_notify_type_stack_operation { 42362306a36Sopenharmony_ci BTC_STACK_OP_NONE = 0x0, 42462306a36Sopenharmony_ci BTC_STACK_OP_INQ_PAGE_PAIR_START = 0x1, 42562306a36Sopenharmony_ci BTC_STACK_OP_INQ_PAGE_PAIR_FINISH = 0x2, 42662306a36Sopenharmony_ci BTC_STACK_OP_MAX 42762306a36Sopenharmony_ci}; 42862306a36Sopenharmony_ci 42962306a36Sopenharmony_cienum { 43062306a36Sopenharmony_ci BTC_CCK_1, 43162306a36Sopenharmony_ci BTC_CCK_2, 43262306a36Sopenharmony_ci BTC_CCK_5_5, 43362306a36Sopenharmony_ci BTC_CCK_11, 43462306a36Sopenharmony_ci BTC_OFDM_6, 43562306a36Sopenharmony_ci BTC_OFDM_9, 43662306a36Sopenharmony_ci BTC_OFDM_12, 43762306a36Sopenharmony_ci BTC_OFDM_18, 43862306a36Sopenharmony_ci BTC_OFDM_24, 43962306a36Sopenharmony_ci BTC_OFDM_36, 44062306a36Sopenharmony_ci BTC_OFDM_48, 44162306a36Sopenharmony_ci BTC_OFDM_54, 44262306a36Sopenharmony_ci BTC_MCS_0, 44362306a36Sopenharmony_ci BTC_MCS_1, 44462306a36Sopenharmony_ci BTC_MCS_2, 44562306a36Sopenharmony_ci BTC_MCS_3, 44662306a36Sopenharmony_ci BTC_MCS_4, 44762306a36Sopenharmony_ci BTC_MCS_5, 44862306a36Sopenharmony_ci BTC_MCS_6, 44962306a36Sopenharmony_ci BTC_MCS_7, 45062306a36Sopenharmony_ci BTC_MCS_8, 45162306a36Sopenharmony_ci BTC_MCS_9, 45262306a36Sopenharmony_ci BTC_MCS_10, 45362306a36Sopenharmony_ci BTC_MCS_11, 45462306a36Sopenharmony_ci BTC_MCS_12, 45562306a36Sopenharmony_ci BTC_MCS_13, 45662306a36Sopenharmony_ci BTC_MCS_14, 45762306a36Sopenharmony_ci BTC_MCS_15, 45862306a36Sopenharmony_ci BTC_MCS_16, 45962306a36Sopenharmony_ci BTC_MCS_17, 46062306a36Sopenharmony_ci BTC_MCS_18, 46162306a36Sopenharmony_ci BTC_MCS_19, 46262306a36Sopenharmony_ci BTC_MCS_20, 46362306a36Sopenharmony_ci BTC_MCS_21, 46462306a36Sopenharmony_ci BTC_MCS_22, 46562306a36Sopenharmony_ci BTC_MCS_23, 46662306a36Sopenharmony_ci BTC_MCS_24, 46762306a36Sopenharmony_ci BTC_MCS_25, 46862306a36Sopenharmony_ci BTC_MCS_26, 46962306a36Sopenharmony_ci BTC_MCS_27, 47062306a36Sopenharmony_ci BTC_MCS_28, 47162306a36Sopenharmony_ci BTC_MCS_29, 47262306a36Sopenharmony_ci BTC_MCS_30, 47362306a36Sopenharmony_ci BTC_MCS_31, 47462306a36Sopenharmony_ci BTC_VHT_1SS_MCS_0, 47562306a36Sopenharmony_ci BTC_VHT_1SS_MCS_1, 47662306a36Sopenharmony_ci BTC_VHT_1SS_MCS_2, 47762306a36Sopenharmony_ci BTC_VHT_1SS_MCS_3, 47862306a36Sopenharmony_ci BTC_VHT_1SS_MCS_4, 47962306a36Sopenharmony_ci BTC_VHT_1SS_MCS_5, 48062306a36Sopenharmony_ci BTC_VHT_1SS_MCS_6, 48162306a36Sopenharmony_ci BTC_VHT_1SS_MCS_7, 48262306a36Sopenharmony_ci BTC_VHT_1SS_MCS_8, 48362306a36Sopenharmony_ci BTC_VHT_1SS_MCS_9, 48462306a36Sopenharmony_ci BTC_VHT_2SS_MCS_0, 48562306a36Sopenharmony_ci BTC_VHT_2SS_MCS_1, 48662306a36Sopenharmony_ci BTC_VHT_2SS_MCS_2, 48762306a36Sopenharmony_ci BTC_VHT_2SS_MCS_3, 48862306a36Sopenharmony_ci BTC_VHT_2SS_MCS_4, 48962306a36Sopenharmony_ci BTC_VHT_2SS_MCS_5, 49062306a36Sopenharmony_ci BTC_VHT_2SS_MCS_6, 49162306a36Sopenharmony_ci BTC_VHT_2SS_MCS_7, 49262306a36Sopenharmony_ci BTC_VHT_2SS_MCS_8, 49362306a36Sopenharmony_ci BTC_VHT_2SS_MCS_9, 49462306a36Sopenharmony_ci BTC_VHT_3SS_MCS_0, 49562306a36Sopenharmony_ci BTC_VHT_3SS_MCS_1, 49662306a36Sopenharmony_ci BTC_VHT_3SS_MCS_2, 49762306a36Sopenharmony_ci BTC_VHT_3SS_MCS_3, 49862306a36Sopenharmony_ci BTC_VHT_3SS_MCS_4, 49962306a36Sopenharmony_ci BTC_VHT_3SS_MCS_5, 50062306a36Sopenharmony_ci BTC_VHT_3SS_MCS_6, 50162306a36Sopenharmony_ci BTC_VHT_3SS_MCS_7, 50262306a36Sopenharmony_ci BTC_VHT_3SS_MCS_8, 50362306a36Sopenharmony_ci BTC_VHT_3SS_MCS_9, 50462306a36Sopenharmony_ci BTC_VHT_4SS_MCS_0, 50562306a36Sopenharmony_ci BTC_VHT_4SS_MCS_1, 50662306a36Sopenharmony_ci BTC_VHT_4SS_MCS_2, 50762306a36Sopenharmony_ci BTC_VHT_4SS_MCS_3, 50862306a36Sopenharmony_ci BTC_VHT_4SS_MCS_4, 50962306a36Sopenharmony_ci BTC_VHT_4SS_MCS_5, 51062306a36Sopenharmony_ci BTC_VHT_4SS_MCS_6, 51162306a36Sopenharmony_ci BTC_VHT_4SS_MCS_7, 51262306a36Sopenharmony_ci BTC_VHT_4SS_MCS_8, 51362306a36Sopenharmony_ci BTC_VHT_4SS_MCS_9, 51462306a36Sopenharmony_ci BTC_MCS_32, 51562306a36Sopenharmony_ci BTC_UNKNOWN, 51662306a36Sopenharmony_ci BTC_PKT_MGNT, 51762306a36Sopenharmony_ci BTC_PKT_CTRL, 51862306a36Sopenharmony_ci BTC_PKT_UNKNOWN, 51962306a36Sopenharmony_ci BTC_PKT_NOT_FOR_ME, 52062306a36Sopenharmony_ci BTC_RATE_MAX 52162306a36Sopenharmony_ci}; 52262306a36Sopenharmony_ci 52362306a36Sopenharmony_cienum { 52462306a36Sopenharmony_ci BTC_MULTIPORT_SCC, 52562306a36Sopenharmony_ci BTC_MULTIPORT_MCC_2CHANNEL, 52662306a36Sopenharmony_ci BTC_MULTIPORT_MCC_2BAND, 52762306a36Sopenharmony_ci BTC_MULTIPORT_MAX 52862306a36Sopenharmony_ci}; 52962306a36Sopenharmony_ci 53062306a36Sopenharmony_cistruct btc_bt_info { 53162306a36Sopenharmony_ci bool bt_disabled; 53262306a36Sopenharmony_ci u8 rssi_adjust_for_agc_table_on; 53362306a36Sopenharmony_ci u8 rssi_adjust_for_1ant_coex_type; 53462306a36Sopenharmony_ci bool pre_bt_ctrl_agg_buf_size; 53562306a36Sopenharmony_ci bool bt_busy; 53662306a36Sopenharmony_ci u8 pre_agg_buf_size; 53762306a36Sopenharmony_ci u8 agg_buf_size; 53862306a36Sopenharmony_ci bool limited_dig; 53962306a36Sopenharmony_ci bool pre_reject_agg_pkt; 54062306a36Sopenharmony_ci bool reject_agg_pkt; 54162306a36Sopenharmony_ci bool bt_ctrl_buf_size; 54262306a36Sopenharmony_ci bool increase_scan_dev_num; 54362306a36Sopenharmony_ci bool miracast_plus_bt; 54462306a36Sopenharmony_ci bool bt_ctrl_agg_buf_size; 54562306a36Sopenharmony_ci bool bt_tx_rx_mask; 54662306a36Sopenharmony_ci u16 bt_hci_ver; 54762306a36Sopenharmony_ci u16 bt_real_fw_ver; 54862306a36Sopenharmony_ci u8 bt_fw_ver; 54962306a36Sopenharmony_ci u32 bt_get_fw_ver; 55062306a36Sopenharmony_ci 55162306a36Sopenharmony_ci bool bt_disable_low_pwr; 55262306a36Sopenharmony_ci 55362306a36Sopenharmony_ci /* the following is for 1Ant solution */ 55462306a36Sopenharmony_ci bool bt_ctrl_lps; 55562306a36Sopenharmony_ci bool bt_pwr_save_mode; 55662306a36Sopenharmony_ci bool bt_lps_on; 55762306a36Sopenharmony_ci bool force_to_roam; 55862306a36Sopenharmony_ci u8 force_exec_pwr_cmd_cnt; 55962306a36Sopenharmony_ci u8 lps_val; 56062306a36Sopenharmony_ci u8 rpwm_val; 56162306a36Sopenharmony_ci u32 ra_mask; 56262306a36Sopenharmony_ci 56362306a36Sopenharmony_ci u32 afh_map_l; 56462306a36Sopenharmony_ci u32 afh_map_m; 56562306a36Sopenharmony_ci u16 afh_map_h; 56662306a36Sopenharmony_ci u32 bt_supported_feature; 56762306a36Sopenharmony_ci u32 bt_supported_version; 56862306a36Sopenharmony_ci u32 bt_device_info; 56962306a36Sopenharmony_ci u32 bt_forb_slot_val; 57062306a36Sopenharmony_ci u8 bt_ant_det_val; 57162306a36Sopenharmony_ci u8 bt_ble_scan_type; 57262306a36Sopenharmony_ci u32 bt_ble_scan_para; 57362306a36Sopenharmony_ci}; 57462306a36Sopenharmony_ci 57562306a36Sopenharmony_cistruct btc_stack_info { 57662306a36Sopenharmony_ci bool profile_notified; 57762306a36Sopenharmony_ci u16 hci_version; /* stack hci version */ 57862306a36Sopenharmony_ci u8 num_of_link; 57962306a36Sopenharmony_ci bool bt_link_exist; 58062306a36Sopenharmony_ci bool sco_exist; 58162306a36Sopenharmony_ci bool acl_exist; 58262306a36Sopenharmony_ci bool a2dp_exist; 58362306a36Sopenharmony_ci bool hid_exist; 58462306a36Sopenharmony_ci u8 num_of_hid; 58562306a36Sopenharmony_ci bool pan_exist; 58662306a36Sopenharmony_ci bool unknown_acl_exist; 58762306a36Sopenharmony_ci s8 min_bt_rssi; 58862306a36Sopenharmony_ci}; 58962306a36Sopenharmony_ci 59062306a36Sopenharmony_cistruct btc_statistics { 59162306a36Sopenharmony_ci u32 cnt_bind; 59262306a36Sopenharmony_ci u32 cnt_init_hw_config; 59362306a36Sopenharmony_ci u32 cnt_init_coex_dm; 59462306a36Sopenharmony_ci u32 cnt_ips_notify; 59562306a36Sopenharmony_ci u32 cnt_lps_notify; 59662306a36Sopenharmony_ci u32 cnt_scan_notify; 59762306a36Sopenharmony_ci u32 cnt_connect_notify; 59862306a36Sopenharmony_ci u32 cnt_media_status_notify; 59962306a36Sopenharmony_ci u32 cnt_special_packet_notify; 60062306a36Sopenharmony_ci u32 cnt_bt_info_notify; 60162306a36Sopenharmony_ci u32 cnt_periodical; 60262306a36Sopenharmony_ci u32 cnt_coex_dm_switch; 60362306a36Sopenharmony_ci u32 cnt_stack_operation_notify; 60462306a36Sopenharmony_ci u32 cnt_dbg_ctrl; 60562306a36Sopenharmony_ci u32 cnt_pre_load_firmware; 60662306a36Sopenharmony_ci u32 cnt_power_on; 60762306a36Sopenharmony_ci}; 60862306a36Sopenharmony_ci 60962306a36Sopenharmony_cistruct btc_bt_link_info { 61062306a36Sopenharmony_ci bool bt_link_exist; 61162306a36Sopenharmony_ci bool bt_hi_pri_link_exist; 61262306a36Sopenharmony_ci bool sco_exist; 61362306a36Sopenharmony_ci bool sco_only; 61462306a36Sopenharmony_ci bool a2dp_exist; 61562306a36Sopenharmony_ci bool a2dp_only; 61662306a36Sopenharmony_ci bool hid_exist; 61762306a36Sopenharmony_ci bool hid_only; 61862306a36Sopenharmony_ci bool pan_exist; 61962306a36Sopenharmony_ci bool pan_only; 62062306a36Sopenharmony_ci bool slave_role; 62162306a36Sopenharmony_ci bool acl_busy; 62262306a36Sopenharmony_ci}; 62362306a36Sopenharmony_ci 62462306a36Sopenharmony_cienum btc_antenna_pos { 62562306a36Sopenharmony_ci BTC_ANTENNA_AT_MAIN_PORT = 0x1, 62662306a36Sopenharmony_ci BTC_ANTENNA_AT_AUX_PORT = 0x2, 62762306a36Sopenharmony_ci}; 62862306a36Sopenharmony_ci 62962306a36Sopenharmony_cienum btc_mp_h2c_op_code { 63062306a36Sopenharmony_ci BT_OP_GET_BT_VERSION = 0, 63162306a36Sopenharmony_ci BT_OP_WRITE_REG_ADDR = 12, 63262306a36Sopenharmony_ci BT_OP_WRITE_REG_VALUE = 13, 63362306a36Sopenharmony_ci BT_OP_READ_REG = 17, 63462306a36Sopenharmony_ci BT_OP_GET_AFH_MAP_L = 30, 63562306a36Sopenharmony_ci BT_OP_GET_AFH_MAP_M = 31, 63662306a36Sopenharmony_ci BT_OP_GET_AFH_MAP_H = 32, 63762306a36Sopenharmony_ci BT_OP_GET_BT_COEX_SUPPORTED_FEATURE = 42, 63862306a36Sopenharmony_ci BT_OP_GET_BT_COEX_SUPPORTED_VERSION = 43, 63962306a36Sopenharmony_ci BT_OP_GET_BT_ANT_DET_VAL = 44, 64062306a36Sopenharmony_ci BT_OP_GET_BT_BLE_SCAN_PARA = 45, 64162306a36Sopenharmony_ci BT_OP_GET_BT_BLE_SCAN_TYPE = 46, 64262306a36Sopenharmony_ci BT_OP_GET_BT_DEVICE_INFO = 48, 64362306a36Sopenharmony_ci BT_OP_GET_BT_FORBIDDEN_SLOT_VAL = 49, 64462306a36Sopenharmony_ci BT_OP_MAX 64562306a36Sopenharmony_ci}; 64662306a36Sopenharmony_ci 64762306a36Sopenharmony_cienum btc_mp_h2c_req_num { 64862306a36Sopenharmony_ci /* 4 bits only */ 64962306a36Sopenharmony_ci BT_SEQ_DONT_CARE = 0, 65062306a36Sopenharmony_ci BT_SEQ_GET_BT_VERSION = 0xE, 65162306a36Sopenharmony_ci BT_SEQ_GET_AFH_MAP_L = 0x5, 65262306a36Sopenharmony_ci BT_SEQ_GET_AFH_MAP_M = 0x6, 65362306a36Sopenharmony_ci BT_SEQ_GET_AFH_MAP_H = 0x9, 65462306a36Sopenharmony_ci BT_SEQ_GET_BT_COEX_SUPPORTED_FEATURE = 0x7, 65562306a36Sopenharmony_ci BT_SEQ_GET_BT_COEX_SUPPORTED_VERSION = 0x8, 65662306a36Sopenharmony_ci BT_SEQ_GET_BT_ANT_DET_VAL = 0x2, 65762306a36Sopenharmony_ci BT_SEQ_GET_BT_BLE_SCAN_PARA = 0x3, 65862306a36Sopenharmony_ci BT_SEQ_GET_BT_BLE_SCAN_TYPE = 0x4, 65962306a36Sopenharmony_ci BT_SEQ_GET_BT_DEVICE_INFO = 0xA, 66062306a36Sopenharmony_ci BT_SEQ_GET_BT_FORB_SLOT_VAL = 0xB, 66162306a36Sopenharmony_ci}; 66262306a36Sopenharmony_ci 66362306a36Sopenharmony_cistruct btc_coexist { 66462306a36Sopenharmony_ci /* make sure only one adapter can bind the data context */ 66562306a36Sopenharmony_ci bool binded; 66662306a36Sopenharmony_ci /* default adapter */ 66762306a36Sopenharmony_ci void *adapter; 66862306a36Sopenharmony_ci struct btc_board_info board_info; 66962306a36Sopenharmony_ci /* some bt info referenced by non-bt module */ 67062306a36Sopenharmony_ci struct btc_bt_info bt_info; 67162306a36Sopenharmony_ci struct btc_stack_info stack_info; 67262306a36Sopenharmony_ci enum btc_chip_interface chip_interface; 67362306a36Sopenharmony_ci struct btc_bt_link_info bt_link_info; 67462306a36Sopenharmony_ci 67562306a36Sopenharmony_ci /* boolean variables to replace BT_AUTO_REPORT_ONLY_XXXXY_ZANT 67662306a36Sopenharmony_ci * configuration parameters 67762306a36Sopenharmony_ci */ 67862306a36Sopenharmony_ci bool auto_report_1ant; 67962306a36Sopenharmony_ci bool auto_report_2ant; 68062306a36Sopenharmony_ci bool dbg_mode_1ant; 68162306a36Sopenharmony_ci bool dbg_mode_2ant; 68262306a36Sopenharmony_ci bool initialized; 68362306a36Sopenharmony_ci bool stop_coex_dm; 68462306a36Sopenharmony_ci bool manual_control; 68562306a36Sopenharmony_ci struct btc_statistics statistics; 68662306a36Sopenharmony_ci u8 pwr_mode_val[10]; 68762306a36Sopenharmony_ci 68862306a36Sopenharmony_ci struct completion bt_mp_comp; 68962306a36Sopenharmony_ci 69062306a36Sopenharmony_ci /* function pointers - io related */ 69162306a36Sopenharmony_ci u8 (*btc_read_1byte)(void *btc_context, u32 reg_addr); 69262306a36Sopenharmony_ci void (*btc_write_1byte)(void *btc_context, u32 reg_addr, u32 data); 69362306a36Sopenharmony_ci void (*btc_write_1byte_bitmask)(void *btc_context, u32 reg_addr, 69462306a36Sopenharmony_ci u32 bit_mask, u8 data1b); 69562306a36Sopenharmony_ci u16 (*btc_read_2byte)(void *btc_context, u32 reg_addr); 69662306a36Sopenharmony_ci void (*btc_write_2byte)(void *btc_context, u32 reg_addr, u16 data); 69762306a36Sopenharmony_ci u32 (*btc_read_4byte)(void *btc_context, u32 reg_addr); 69862306a36Sopenharmony_ci void (*btc_write_4byte)(void *btc_context, u32 reg_addr, u32 data); 69962306a36Sopenharmony_ci 70062306a36Sopenharmony_ci void (*btc_write_local_reg_1byte)(void *btc_context, u32 reg_addr, 70162306a36Sopenharmony_ci u8 data); 70262306a36Sopenharmony_ci void (*btc_set_bb_reg)(void *btc_context, u32 reg_addr, 70362306a36Sopenharmony_ci u32 bit_mask, u32 data); 70462306a36Sopenharmony_ci u32 (*btc_get_bb_reg)(void *btc_context, u32 reg_addr, 70562306a36Sopenharmony_ci u32 bit_mask); 70662306a36Sopenharmony_ci void (*btc_set_rf_reg)(void *btc_context, u8 rf_path, u32 reg_addr, 70762306a36Sopenharmony_ci u32 bit_mask, u32 data); 70862306a36Sopenharmony_ci u32 (*btc_get_rf_reg)(void *btc_context, u8 rf_path, 70962306a36Sopenharmony_ci u32 reg_addr, u32 bit_mask); 71062306a36Sopenharmony_ci 71162306a36Sopenharmony_ci void (*btc_fill_h2c)(void *btc_context, u8 element_id, 71262306a36Sopenharmony_ci u32 cmd_len, u8 *cmd_buffer); 71362306a36Sopenharmony_ci 71462306a36Sopenharmony_ci void (*btc_disp_dbg_msg)(void *btcoexist, u8 disp_type, 71562306a36Sopenharmony_ci struct seq_file *m); 71662306a36Sopenharmony_ci 71762306a36Sopenharmony_ci bool (*btc_get)(void *btcoexist, u8 get_type, void *out_buf); 71862306a36Sopenharmony_ci bool (*btc_set)(void *btcoexist, u8 set_type, void *in_buf); 71962306a36Sopenharmony_ci 72062306a36Sopenharmony_ci void (*btc_set_bt_reg)(void *btc_context, u8 reg_type, u32 offset, 72162306a36Sopenharmony_ci u32 value); 72262306a36Sopenharmony_ci u32 (*btc_get_bt_reg)(void *btc_context, u8 reg_type, u32 offset); 72362306a36Sopenharmony_ci u32 (*btc_get_bt_coex_supported_feature)(void *btcoexist); 72462306a36Sopenharmony_ci u32 (*btc_get_bt_coex_supported_version)(void *btcoexist); 72562306a36Sopenharmony_ci u32 (*btc_get_bt_phydm_version)(void *btcoexist); 72662306a36Sopenharmony_ci void (*btc_phydm_modify_ra_pcr_threshold)(void *btcoexist, 72762306a36Sopenharmony_ci u8 ra_offset_direction, 72862306a36Sopenharmony_ci u8 ra_threshold_offset); 72962306a36Sopenharmony_ci u32 (*btc_phydm_query_phy_counter)(void *btcoexist, 73062306a36Sopenharmony_ci enum dm_info_query dm_id); 73162306a36Sopenharmony_ci u8 (*btc_get_ant_det_val_from_bt)(void *btcoexist); 73262306a36Sopenharmony_ci u8 (*btc_get_ble_scan_type_from_bt)(void *btcoexist); 73362306a36Sopenharmony_ci u32 (*btc_get_ble_scan_para_from_bt)(void *btcoexist, u8 scan_type); 73462306a36Sopenharmony_ci bool (*btc_get_bt_afh_map_from_bt)(void *btcoexist, u8 map_type, 73562306a36Sopenharmony_ci u8 *afh_map); 73662306a36Sopenharmony_ci}; 73762306a36Sopenharmony_ci 73862306a36Sopenharmony_cibool halbtc_is_wifi_uplink(struct rtl_priv *adapter); 73962306a36Sopenharmony_ci 74062306a36Sopenharmony_ci#define rtl_btc_coexist(rtlpriv) \ 74162306a36Sopenharmony_ci ((struct btc_coexist *)((rtlpriv)->btcoexist.btc_context)) 74262306a36Sopenharmony_ci#define rtl_btc_wifi_only(rtlpriv) \ 74362306a36Sopenharmony_ci ((struct wifi_only_cfg *)((rtlpriv)->btcoexist.wifi_only_context)) 74462306a36Sopenharmony_ci 74562306a36Sopenharmony_cistruct wifi_only_cfg; 74662306a36Sopenharmony_ci 74762306a36Sopenharmony_cibool exhalbtc_initlize_variables(struct rtl_priv *rtlpriv); 74862306a36Sopenharmony_cibool exhalbtc_initlize_variables_wifi_only(struct rtl_priv *rtlpriv); 74962306a36Sopenharmony_cibool exhalbtc_bind_bt_coex_withadapter(void *adapter); 75062306a36Sopenharmony_civoid exhalbtc_power_on_setting(struct btc_coexist *btcoexist); 75162306a36Sopenharmony_civoid exhalbtc_pre_load_firmware(struct btc_coexist *btcoexist); 75262306a36Sopenharmony_civoid exhalbtc_init_hw_config(struct btc_coexist *btcoexist, bool wifi_only); 75362306a36Sopenharmony_civoid exhalbtc_init_hw_config_wifi_only(struct wifi_only_cfg *wifionly_cfg); 75462306a36Sopenharmony_civoid exhalbtc_init_coex_dm(struct btc_coexist *btcoexist); 75562306a36Sopenharmony_civoid exhalbtc_ips_notify(struct btc_coexist *btcoexist, u8 type); 75662306a36Sopenharmony_civoid exhalbtc_lps_notify(struct btc_coexist *btcoexist, u8 type); 75762306a36Sopenharmony_civoid exhalbtc_scan_notify(struct btc_coexist *btcoexist, u8 type); 75862306a36Sopenharmony_civoid exhalbtc_scan_notify_wifi_only(struct wifi_only_cfg *wifionly_cfg, 75962306a36Sopenharmony_ci u8 is_5g); 76062306a36Sopenharmony_civoid exhalbtc_connect_notify(struct btc_coexist *btcoexist, u8 action); 76162306a36Sopenharmony_civoid exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist, 76262306a36Sopenharmony_ci enum rt_media_status media_status); 76362306a36Sopenharmony_civoid exhalbtc_special_packet_notify(struct btc_coexist *btcoexist, u8 pkt_type); 76462306a36Sopenharmony_civoid exhalbtc_bt_info_notify(struct btc_coexist *btcoexist, u8 *tmp_buf, 76562306a36Sopenharmony_ci u8 length); 76662306a36Sopenharmony_civoid exhalbtc_rf_status_notify(struct btc_coexist *btcoexist, u8 type); 76762306a36Sopenharmony_civoid exhalbtc_halt_notify(struct btc_coexist *btcoexist); 76862306a36Sopenharmony_civoid exhalbtc_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state); 76962306a36Sopenharmony_civoid exhalbtc_coex_dm_switch(struct btc_coexist *btcoexist); 77062306a36Sopenharmony_civoid exhalbtc_periodical(struct btc_coexist *btcoexist); 77162306a36Sopenharmony_civoid exhalbtc_dbg_control(struct btc_coexist *btcoexist, u8 code, u8 len, 77262306a36Sopenharmony_ci u8 *data); 77362306a36Sopenharmony_civoid exhalbtc_antenna_detection(struct btc_coexist *btcoexist, u32 cent_freq, 77462306a36Sopenharmony_ci u32 offset, u32 span, u32 seconds); 77562306a36Sopenharmony_civoid exhalbtc_stack_update_profile_info(void); 77662306a36Sopenharmony_civoid exhalbtc_set_hci_version(struct btc_coexist *btcoexist, u16 hci_version); 77762306a36Sopenharmony_civoid exhalbtc_set_bt_patch_version(struct btc_coexist *btcoexist, 77862306a36Sopenharmony_ci u16 bt_hci_version, u16 bt_patch_version); 77962306a36Sopenharmony_civoid exhalbtc_update_min_bt_rssi(struct btc_coexist *btcoexist, s8 bt_rssi); 78062306a36Sopenharmony_civoid exhalbtc_set_bt_exist(struct btc_coexist *btcoexist, bool bt_exist); 78162306a36Sopenharmony_civoid exhalbtc_set_chip_type(struct btc_coexist *btcoexist, u8 chip_type); 78262306a36Sopenharmony_civoid exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num); 78362306a36Sopenharmony_civoid exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist, 78462306a36Sopenharmony_ci struct seq_file *m); 78562306a36Sopenharmony_civoid exhalbtc_switch_band_notify(struct btc_coexist *btcoexist, u8 type); 78662306a36Sopenharmony_civoid exhalbtc_switch_band_notify_wifi_only(struct wifi_only_cfg *wifionly_cfg, 78762306a36Sopenharmony_ci u8 is_5g); 78862306a36Sopenharmony_civoid exhalbtc_signal_compensation(struct btc_coexist *btcoexist, 78962306a36Sopenharmony_ci u8 *rssi_wifi, u8 *rssi_bt); 79062306a36Sopenharmony_civoid exhalbtc_lps_leave(struct btc_coexist *btcoexist); 79162306a36Sopenharmony_civoid exhalbtc_low_wifi_traffic_notify(struct btc_coexist *btcoexist); 79262306a36Sopenharmony_civoid exhalbtc_set_single_ant_path(struct btc_coexist *btcoexist, 79362306a36Sopenharmony_ci u8 single_ant_path); 79462306a36Sopenharmony_civoid halbtc_send_wifi_port_id_cmd(void *bt_context); 79562306a36Sopenharmony_civoid halbtc_set_default_port_id_cmd(void *bt_context); 79662306a36Sopenharmony_ci 79762306a36Sopenharmony_ci/* The following are used by wifi_only case */ 79862306a36Sopenharmony_cienum wifionly_chip_interface { 79962306a36Sopenharmony_ci WIFIONLY_INTF_UNKNOWN = 0, 80062306a36Sopenharmony_ci WIFIONLY_INTF_PCI = 1, 80162306a36Sopenharmony_ci WIFIONLY_INTF_USB = 2, 80262306a36Sopenharmony_ci WIFIONLY_INTF_SDIO = 3, 80362306a36Sopenharmony_ci WIFIONLY_INTF_MAX 80462306a36Sopenharmony_ci}; 80562306a36Sopenharmony_ci 80662306a36Sopenharmony_cienum wifionly_customer_id { 80762306a36Sopenharmony_ci CUSTOMER_NORMAL = 0, 80862306a36Sopenharmony_ci CUSTOMER_HP_1 = 1, 80962306a36Sopenharmony_ci}; 81062306a36Sopenharmony_ci 81162306a36Sopenharmony_cistruct wifi_only_haldata { 81262306a36Sopenharmony_ci u16 customer_id; 81362306a36Sopenharmony_ci u8 efuse_pg_antnum; 81462306a36Sopenharmony_ci u8 efuse_pg_antpath; 81562306a36Sopenharmony_ci u8 rfe_type; 81662306a36Sopenharmony_ci u8 ant_div_cfg; 81762306a36Sopenharmony_ci}; 81862306a36Sopenharmony_ci 81962306a36Sopenharmony_cistruct wifi_only_cfg { 82062306a36Sopenharmony_ci void *adapter; 82162306a36Sopenharmony_ci struct wifi_only_haldata haldata_info; 82262306a36Sopenharmony_ci enum wifionly_chip_interface chip_interface; 82362306a36Sopenharmony_ci}; 82462306a36Sopenharmony_ci 82562306a36Sopenharmony_cistatic inline 82662306a36Sopenharmony_civoid halwifionly_phy_set_bb_reg(struct wifi_only_cfg *wifi_conly_cfg, 82762306a36Sopenharmony_ci u32 regaddr, u32 bitmask, u32 data) 82862306a36Sopenharmony_ci{ 82962306a36Sopenharmony_ci struct rtl_priv *rtlpriv = (struct rtl_priv *)wifi_conly_cfg->adapter; 83062306a36Sopenharmony_ci 83162306a36Sopenharmony_ci rtl_set_bbreg(rtlpriv->hw, regaddr, bitmask, data); 83262306a36Sopenharmony_ci} 83362306a36Sopenharmony_ci 83462306a36Sopenharmony_ci#endif 835