cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

halbtc8723b1ant.h (6076B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* Copyright(c) 2012  Realtek Corporation.*/
      3
      4/**********************************************************************
      5 * The following is for 8723B 1ANT BT Co-exist definition
      6 **********************************************************************/
      7#define	BT_INFO_8723B_1ANT_B_FTP			BIT7
      8#define	BT_INFO_8723B_1ANT_B_A2DP			BIT6
      9#define	BT_INFO_8723B_1ANT_B_HID			BIT5
     10#define	BT_INFO_8723B_1ANT_B_SCO_BUSY			BIT4
     11#define	BT_INFO_8723B_1ANT_B_ACL_BUSY			BIT3
     12#define	BT_INFO_8723B_1ANT_B_INQ_PAGE			BIT2
     13#define	BT_INFO_8723B_1ANT_B_SCO_ESCO			BIT1
     14#define	BT_INFO_8723B_1ANT_B_CONNECTION			BIT0
     15
     16#define	BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_)	\
     17		(((_BT_INFO_EXT_&BIT0)) ? true : false)
     18
     19#define	BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT		2
     20
     21#define BT_8723B_1ANT_WIFI_NOISY_THRESH			50
     22
     23enum _BT_INFO_SRC_8723B_1ANT {
     24	BT_INFO_SRC_8723B_1ANT_WIFI_FW			= 0x0,
     25	BT_INFO_SRC_8723B_1ANT_BT_RSP			= 0x1,
     26	BT_INFO_SRC_8723B_1ANT_BT_ACTIVE_SEND		= 0x2,
     27	BT_INFO_SRC_8723B_1ANT_MAX
     28};
     29
     30enum _BT_8723B_1ANT_BT_STATUS {
     31	BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE	= 0x0,
     32	BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE		= 0x1,
     33	BT_8723B_1ANT_BT_STATUS_INQ_PAGE		= 0x2,
     34	BT_8723B_1ANT_BT_STATUS_ACL_BUSY		= 0x3,
     35	BT_8723B_1ANT_BT_STATUS_SCO_BUSY		= 0x4,
     36	BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY		= 0x5,
     37	BT_8723B_1ANT_BT_STATUS_MAX
     38};
     39
     40enum _BT_8723B_1ANT_WIFI_STATUS {
     41	BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE			= 0x0,
     42	BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN		= 0x1,
     43	BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN			= 0x2,
     44	BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT			= 0x3,
     45	BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE			= 0x4,
     46	BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY			= 0x5,
     47	BT_8723B_1ANT_WIFI_STATUS_MAX
     48};
     49
     50enum _BT_8723B_1ANT_COEX_ALGO {
     51	BT_8723B_1ANT_COEX_ALGO_UNDEFINED		= 0x0,
     52	BT_8723B_1ANT_COEX_ALGO_SCO			= 0x1,
     53	BT_8723B_1ANT_COEX_ALGO_HID			= 0x2,
     54	BT_8723B_1ANT_COEX_ALGO_A2DP			= 0x3,
     55	BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS		= 0x4,
     56	BT_8723B_1ANT_COEX_ALGO_PANEDR			= 0x5,
     57	BT_8723B_1ANT_COEX_ALGO_PANHS			= 0x6,
     58	BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP		= 0x7,
     59	BT_8723B_1ANT_COEX_ALGO_PANEDR_HID		= 0x8,
     60	BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR		= 0x9,
     61	BT_8723B_1ANT_COEX_ALGO_HID_A2DP		= 0xa,
     62	BT_8723B_1ANT_COEX_ALGO_MAX			= 0xb,
     63};
     64
     65struct coex_dm_8723b_1ant {
     66	/* hw setting */
     67	u8 pre_ant_pos_type;
     68	u8 cur_ant_pos_type;
     69	/* fw mechanism */
     70	bool cur_ignore_wlan_act;
     71	bool pre_ignore_wlan_act;
     72	u8 pre_ps_tdma;
     73	u8 cur_ps_tdma;
     74	u8 ps_tdma_para[5];
     75	u8 ps_tdma_du_adj_type;
     76	bool auto_tdma_adjust;
     77	bool pre_ps_tdma_on;
     78	bool cur_ps_tdma_on;
     79	bool pre_bt_auto_report;
     80	bool cur_bt_auto_report;
     81	u8 pre_lps;
     82	u8 cur_lps;
     83	u8 pre_rpwm;
     84	u8 cur_rpwm;
     85
     86	/* sw mechanism */
     87	bool pre_low_penalty_ra;
     88	bool cur_low_penalty_ra;
     89	u32 pre_val0x6c0;
     90	u32 cur_val0x6c0;
     91	u32 pre_val0x6c4;
     92	u32 cur_val0x6c4;
     93	u32 pre_val0x6c8;
     94	u32 cur_val0x6c8;
     95	u8 pre_val0x6cc;
     96	u8 cur_val0x6cc;
     97	bool limited_dig;
     98
     99	u32 backup_arfr_cnt1;	/* Auto Rate Fallback Retry cnt */
    100	u32 backup_arfr_cnt2;	/* Auto Rate Fallback Retry cnt */
    101	u16 backup_retry_limit;
    102	u8 backup_ampdu_max_time;
    103
    104	/* algorithm related */
    105	u8 pre_algorithm;
    106	u8 cur_algorithm;
    107	u8 bt_status;
    108	u8 wifi_chnl_info[3];
    109
    110	u32 prera_mask;
    111	u32 curra_mask;
    112	u8 pre_arfr_type;
    113	u8 cur_arfr_type;
    114	u8 pre_retry_limit_type;
    115	u8 cur_retry_limit_type;
    116	u8 pre_ampdu_time_type;
    117	u8 cur_ampdu_time_type;
    118	u32	arp_cnt;
    119
    120	u8 error_condition;
    121};
    122
    123struct coex_sta_8723b_1ant {
    124	bool bt_disabled;
    125	bool bt_link_exist;
    126	bool sco_exist;
    127	bool a2dp_exist;
    128	bool hid_exist;
    129	bool pan_exist;
    130	bool bt_hi_pri_link_exist;
    131	u8 num_of_profile;
    132	bool bt_abnormal_scan;
    133
    134	bool under_lps;
    135	bool under_ips;
    136	u32 special_pkt_period_cnt;
    137	u32 high_priority_tx;
    138	u32 high_priority_rx;
    139	u32 low_priority_tx;
    140	u32 low_priority_rx;
    141	u8 bt_rssi;
    142	u8 pre_bt_rssi_state;
    143	u8 pre_wifi_rssi_state[4];
    144	bool bt_tx_rx_mask;
    145	bool c2h_bt_info_req_sent;
    146	u8 bt_info_c2h[BT_INFO_SRC_8723B_1ANT_MAX][10];
    147	u32 bt_info_c2h_cnt[BT_INFO_SRC_8723B_1ANT_MAX];
    148	bool bt_whck_test;
    149	bool c2h_bt_inquiry_page;
    150	bool c2h_bt_remote_name_req;
    151	bool wifi_is_high_pri_task;
    152	u8 bt_retry_cnt;
    153	u8 bt_info_ext;
    154	u8 scan_ap_num;
    155	bool cck_ever_lock;
    156	u8 coex_table_type;
    157	bool force_lps_on;
    158	u32 pop_event_cnt;
    159
    160	u32 crc_ok_cck;
    161	u32 crc_ok_11g;
    162	u32 crc_ok_11n;
    163	u32 crc_ok_11n_agg;
    164
    165	u32 crc_err_cck;
    166	u32 crc_err_11g;
    167	u32 crc_err_11n;
    168	u32 crc_err_11n_agg;
    169
    170	bool cck_lock;
    171	bool pre_ccklock;
    172
    173	u32 wrong_profile_notification;
    174
    175	u8 a2dp_bit_pool;
    176	u8 cut_version;
    177};
    178
    179/*************************************************************************
    180 * The following is interface which will notify coex module.
    181 *************************************************************************/
    182void ex_btc8723b1ant_power_on_setting(struct btc_coexist *btcoexist);
    183void ex_btc8723b1ant_init_hwconfig(struct btc_coexist *btcoexist,
    184				   bool wifi_only);
    185void ex_btc8723b1ant_init_coex_dm(struct btc_coexist *btcoexist);
    186void ex_btc8723b1ant_ips_notify(struct btc_coexist *btcoexist, u8 type);
    187void ex_btc8723b1ant_lps_notify(struct btc_coexist *btcoexist, u8 type);
    188void ex_btc8723b1ant_scan_notify(struct btc_coexist *btcoexist, u8 type);
    189void ex_btc8723b1ant_connect_notify(struct btc_coexist *btcoexist, u8 type);
    190void ex_btc8723b1ant_media_status_notify(struct btc_coexist *btcoexist,
    191					 u8 type);
    192void ex_btc8723b1ant_special_packet_notify(struct btc_coexist *btcoexist,
    193					   u8 type);
    194void ex_btc8723b1ant_bt_info_notify(struct btc_coexist *btcoexist,
    195				    u8 *tmpbuf, u8 length);
    196void ex_btc8723b1ant_rf_status_notify(struct btc_coexist *btcoexist,
    197				      u8 type);
    198void ex_btc8723b1ant_halt_notify(struct btc_coexist *btcoexist);
    199void ex_btc8723b1ant_pnp_notify(struct btc_coexist *btcoexist, u8 pnpstate);
    200void ex_btc8723b1ant_coex_dm_reset(struct btc_coexist *btcoexist);
    201void ex_btc8723b1ant_periodical(struct btc_coexist *btcoexist);
    202void ex_btc8723b1ant_display_coex_info(struct btc_coexist *btcoexist,
    203				       struct seq_file *m);
    204void ex_btc8723b1ant_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state);