#ifndef __RTW89_COEX_H__
#define __RTW89_COEX_H__
#include "core.h"
#define BTC_H2C_MAXLEN …
#define BTC_TLV_SLOT_ID_LEN_V7 …
#define BTC_SLOT_REQ_TH …
enum btc_mode { … };
enum btc_wl_rfk_type { … };
#define NM_EXEC …
#define FC_EXEC …
#define RTW89_COEX_ACT1_WORK_PERIOD …
#define RTW89_COEX_BT_DEVINFO_WORK_PERIOD …
#define RTW89_COEX_RFK_CHK_WORK_PERIOD …
#define BTC_RFK_PATH_MAP …
#define BTC_RFK_PHY_MAP …
#define BTC_RFK_BAND_MAP …
enum btc_wl_rfk_state { … };
enum btc_pri { … };
enum btc_bt_trs { … };
enum btc_rssi_st { … };
enum btc_fddt_en { … };
#define BTC_RSSI_HIGH(_rssi_) …
#define BTC_RSSI_LOW(_rssi_) …
#define BTC_RSSI_CHANGE(_rssi_) …
enum btc_ant { … };
enum btc_bt_btg { … };
enum btc_switch { … };
enum btc_pkt_type { … };
enum btc_bt_mailbox_id { … };
enum btc_role_state { … };
enum btc_rfctrl { … };
enum btc_lps_state { … };
#define R_BTC_BB_BTG_RX …
#define R_BTC_BB_PRE_AGC_S1 …
#define R_BTC_BB_PRE_AGC_S0 …
#define B_BTC_BB_GNT_MUX …
#define B_BTC_BB_PRE_AGC_MASK …
#define B_BTC_BB_PRE_AGC_VAL …
#define BTC_REG_NOTFOUND …
#define R_BTC_ZB_COEX_TBL_0 …
#define R_BTC_ZB_COEX_TBL_1 …
#define R_BTC_ZB_BREAK_TBL …
enum btc_ant_div_pos { … };
enum btc_get_reg_status { … };
enum btc_preagc_type { … };
enum btc_btgctrl_type { … };
enum btc_wa_type { … };
enum btc_3cx_type { … };
enum btc_chip_feature { … };
enum btc_wl_mode { … };
enum btc_wl_gpio_debug { … };
void rtw89_btc_ntfy_poweron(struct rtw89_dev *rtwdev);
void rtw89_btc_ntfy_poweroff(struct rtw89_dev *rtwdev);
void rtw89_btc_ntfy_init(struct rtw89_dev *rtwdev, u8 mode);
void rtw89_btc_ntfy_scan_start(struct rtw89_dev *rtwdev, u8 phy_idx, u8 band);
void rtw89_btc_ntfy_scan_finish(struct rtw89_dev *rtwdev, u8 phy_idx);
void rtw89_btc_ntfy_switch_band(struct rtw89_dev *rtwdev, u8 phy_idx, u8 band);
void rtw89_btc_ntfy_specific_packet(struct rtw89_dev *rtwdev,
enum btc_pkt_type pkt_type);
void rtw89_btc_ntfy_eapol_packet_work(struct work_struct *work);
void rtw89_btc_ntfy_arp_packet_work(struct work_struct *work);
void rtw89_btc_ntfy_dhcp_packet_work(struct work_struct *work);
void rtw89_btc_ntfy_icmp_packet_work(struct work_struct *work);
void rtw89_btc_ntfy_role_info(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif,
struct rtw89_sta *rtwsta, enum btc_role_state state);
void rtw89_btc_ntfy_radio_state(struct rtw89_dev *rtwdev, enum btc_rfctrl rf_state);
void rtw89_btc_ntfy_wl_rfk(struct rtw89_dev *rtwdev, u8 phy_map,
enum btc_wl_rfk_type type,
enum btc_wl_rfk_state state);
void rtw89_btc_ntfy_wl_sta(struct rtw89_dev *rtwdev);
void rtw89_btc_c2h_handle(struct rtw89_dev *rtwdev, struct sk_buff *skb,
u32 len, u8 class, u8 func);
void rtw89_btc_dump_info(struct rtw89_dev *rtwdev, struct seq_file *m);
void rtw89_coex_act1_work(struct work_struct *work);
void rtw89_coex_bt_devinfo_work(struct work_struct *work);
void rtw89_coex_rfk_chk_work(struct work_struct *work);
void rtw89_coex_power_on(struct rtw89_dev *rtwdev);
void rtw89_btc_set_policy(struct rtw89_dev *rtwdev, u16 policy_type);
void rtw89_btc_set_policy_v1(struct rtw89_dev *rtwdev, u16 policy_type);
void rtw89_coex_recognize_ver(struct rtw89_dev *rtwdev);
static inline u8 rtw89_btc_phymap(struct rtw89_dev *rtwdev,
enum rtw89_phy_idx phy_idx,
enum rtw89_rf_path_bit paths,
enum rtw89_chanctx_idx chanctx_idx)
{ … }
static inline u8 rtw89_btc_path_phymap(struct rtw89_dev *rtwdev,
enum rtw89_phy_idx phy_idx,
enum rtw89_rf_path path,
enum rtw89_chanctx_idx chanctx_idx)
{ … }
static inline u16 rtw89_coex_query_bt_req_len(struct rtw89_dev *rtwdev,
enum rtw89_phy_idx phy_idx)
{ … }
static inline u32 rtw89_get_antpath_type(u8 phy_map, u8 type)
{ … }
static inline
void _slot_set_le(struct rtw89_btc *btc, u8 sid, __le16 dura, __le32 tbl, __le16 type)
{ … }
static inline
void _slot_set(struct rtw89_btc *btc, u8 sid, u16 dura, u32 tbl, u16 type)
{ … }
static inline
void _slot_set_dur(struct rtw89_btc *btc, u8 sid, u16 dura)
{ … }
static inline
void _slot_set_type(struct rtw89_btc *btc, u8 sid, u16 type)
{ … }
static inline
void _slot_set_tbl(struct rtw89_btc *btc, u8 sid, u32 tbl)
{ … }
#endif