1*6d67aabdSBjoern A. Zeeb /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2*6d67aabdSBjoern A. Zeeb /* Copyright(c) 2024 Realtek Corporation 3*6d67aabdSBjoern A. Zeeb */ 4*6d67aabdSBjoern A. Zeeb 5*6d67aabdSBjoern A. Zeeb #ifndef __RTW89_8852BX_H__ 6*6d67aabdSBjoern A. Zeeb #define __RTW89_8852BX_H__ 7*6d67aabdSBjoern A. Zeeb 8*6d67aabdSBjoern A. Zeeb #include "core.h" 9*6d67aabdSBjoern A. Zeeb 10*6d67aabdSBjoern A. Zeeb #define RF_PATH_NUM_8852BX 2 11*6d67aabdSBjoern A. Zeeb #define BB_PATH_NUM_8852BX 2 12*6d67aabdSBjoern A. Zeeb 13*6d67aabdSBjoern A. Zeeb enum rtw8852bx_pmac_mode { 14*6d67aabdSBjoern A. Zeeb NONE_TEST, 15*6d67aabdSBjoern A. Zeeb PKTS_TX, 16*6d67aabdSBjoern A. Zeeb PKTS_RX, 17*6d67aabdSBjoern A. Zeeb CONT_TX 18*6d67aabdSBjoern A. Zeeb }; 19*6d67aabdSBjoern A. Zeeb 20*6d67aabdSBjoern A. Zeeb struct rtw8852bx_u_efuse { 21*6d67aabdSBjoern A. Zeeb u8 rsvd[0x88]; 22*6d67aabdSBjoern A. Zeeb u8 mac_addr[ETH_ALEN]; 23*6d67aabdSBjoern A. Zeeb }; 24*6d67aabdSBjoern A. Zeeb 25*6d67aabdSBjoern A. Zeeb struct rtw8852bx_e_efuse { 26*6d67aabdSBjoern A. Zeeb u8 mac_addr[ETH_ALEN]; 27*6d67aabdSBjoern A. Zeeb }; 28*6d67aabdSBjoern A. Zeeb 29*6d67aabdSBjoern A. Zeeb struct rtw8852bx_tssi_offset { 30*6d67aabdSBjoern A. Zeeb u8 cck_tssi[TSSI_CCK_CH_GROUP_NUM]; 31*6d67aabdSBjoern A. Zeeb u8 bw40_tssi[TSSI_MCS_2G_CH_GROUP_NUM]; 32*6d67aabdSBjoern A. Zeeb u8 rsvd[7]; 33*6d67aabdSBjoern A. Zeeb u8 bw40_1s_tssi_5g[TSSI_MCS_5G_CH_GROUP_NUM]; 34*6d67aabdSBjoern A. Zeeb } __packed; 35*6d67aabdSBjoern A. Zeeb 36*6d67aabdSBjoern A. Zeeb struct rtw8852bx_efuse { 37*6d67aabdSBjoern A. Zeeb u8 rsvd[0x210]; 38*6d67aabdSBjoern A. Zeeb struct rtw8852bx_tssi_offset path_a_tssi; 39*6d67aabdSBjoern A. Zeeb u8 rsvd1[10]; 40*6d67aabdSBjoern A. Zeeb struct rtw8852bx_tssi_offset path_b_tssi; 41*6d67aabdSBjoern A. Zeeb u8 rsvd2[94]; 42*6d67aabdSBjoern A. Zeeb u8 channel_plan; 43*6d67aabdSBjoern A. Zeeb u8 xtal_k; 44*6d67aabdSBjoern A. Zeeb u8 rsvd3; 45*6d67aabdSBjoern A. Zeeb u8 iqk_lck; 46*6d67aabdSBjoern A. Zeeb u8 rsvd4[5]; 47*6d67aabdSBjoern A. Zeeb u8 reg_setting:2; 48*6d67aabdSBjoern A. Zeeb u8 tx_diversity:1; 49*6d67aabdSBjoern A. Zeeb u8 rx_diversity:2; 50*6d67aabdSBjoern A. Zeeb u8 ac_mode:1; 51*6d67aabdSBjoern A. Zeeb u8 module_type:2; 52*6d67aabdSBjoern A. Zeeb u8 rsvd5; 53*6d67aabdSBjoern A. Zeeb u8 shared_ant:1; 54*6d67aabdSBjoern A. Zeeb u8 coex_type:3; 55*6d67aabdSBjoern A. Zeeb u8 ant_iso:1; 56*6d67aabdSBjoern A. Zeeb u8 radio_on_off:1; 57*6d67aabdSBjoern A. Zeeb u8 rsvd6:2; 58*6d67aabdSBjoern A. Zeeb u8 eeprom_version; 59*6d67aabdSBjoern A. Zeeb u8 customer_id; 60*6d67aabdSBjoern A. Zeeb u8 tx_bb_swing_2g; 61*6d67aabdSBjoern A. Zeeb u8 tx_bb_swing_5g; 62*6d67aabdSBjoern A. Zeeb u8 tx_cali_pwr_trk_mode; 63*6d67aabdSBjoern A. Zeeb u8 trx_path_selection; 64*6d67aabdSBjoern A. Zeeb u8 rfe_type; 65*6d67aabdSBjoern A. Zeeb u8 country_code[2]; 66*6d67aabdSBjoern A. Zeeb u8 rsvd7[3]; 67*6d67aabdSBjoern A. Zeeb u8 path_a_therm; 68*6d67aabdSBjoern A. Zeeb u8 path_b_therm; 69*6d67aabdSBjoern A. Zeeb u8 rsvd8[2]; 70*6d67aabdSBjoern A. Zeeb u8 rx_gain_2g_ofdm; 71*6d67aabdSBjoern A. Zeeb u8 rsvd9; 72*6d67aabdSBjoern A. Zeeb u8 rx_gain_2g_cck; 73*6d67aabdSBjoern A. Zeeb u8 rsvd10; 74*6d67aabdSBjoern A. Zeeb u8 rx_gain_5g_low; 75*6d67aabdSBjoern A. Zeeb u8 rsvd11; 76*6d67aabdSBjoern A. Zeeb u8 rx_gain_5g_mid; 77*6d67aabdSBjoern A. Zeeb u8 rsvd12; 78*6d67aabdSBjoern A. Zeeb u8 rx_gain_5g_high; 79*6d67aabdSBjoern A. Zeeb u8 rsvd13[35]; 80*6d67aabdSBjoern A. Zeeb u8 path_a_cck_pwr_idx[6]; 81*6d67aabdSBjoern A. Zeeb u8 path_a_bw40_1tx_pwr_idx[5]; 82*6d67aabdSBjoern A. Zeeb u8 path_a_ofdm_1tx_pwr_idx_diff:4; 83*6d67aabdSBjoern A. Zeeb u8 path_a_bw20_1tx_pwr_idx_diff:4; 84*6d67aabdSBjoern A. Zeeb u8 path_a_bw20_2tx_pwr_idx_diff:4; 85*6d67aabdSBjoern A. Zeeb u8 path_a_bw40_2tx_pwr_idx_diff:4; 86*6d67aabdSBjoern A. Zeeb u8 path_a_cck_2tx_pwr_idx_diff:4; 87*6d67aabdSBjoern A. Zeeb u8 path_a_ofdm_2tx_pwr_idx_diff:4; 88*6d67aabdSBjoern A. Zeeb u8 rsvd14[0xf2]; 89*6d67aabdSBjoern A. Zeeb union { 90*6d67aabdSBjoern A. Zeeb struct rtw8852bx_u_efuse u; 91*6d67aabdSBjoern A. Zeeb struct rtw8852bx_e_efuse e; 92*6d67aabdSBjoern A. Zeeb }; 93*6d67aabdSBjoern A. Zeeb } __packed; 94*6d67aabdSBjoern A. Zeeb 95*6d67aabdSBjoern A. Zeeb struct rtw8852bx_bb_pmac_info { 96*6d67aabdSBjoern A. Zeeb u8 en_pmac_tx:1; 97*6d67aabdSBjoern A. Zeeb u8 is_cck:1; 98*6d67aabdSBjoern A. Zeeb u8 mode:3; 99*6d67aabdSBjoern A. Zeeb u8 rsvd:3; 100*6d67aabdSBjoern A. Zeeb u16 tx_cnt; 101*6d67aabdSBjoern A. Zeeb u16 period; 102*6d67aabdSBjoern A. Zeeb u16 tx_time; 103*6d67aabdSBjoern A. Zeeb u8 duty_cycle; 104*6d67aabdSBjoern A. Zeeb }; 105*6d67aabdSBjoern A. Zeeb 106*6d67aabdSBjoern A. Zeeb struct rtw8852bx_bb_tssi_bak { 107*6d67aabdSBjoern A. Zeeb u8 tx_path; 108*6d67aabdSBjoern A. Zeeb u8 rx_path; 109*6d67aabdSBjoern A. Zeeb u32 p0_rfmode; 110*6d67aabdSBjoern A. Zeeb u32 p0_rfmode_ftm; 111*6d67aabdSBjoern A. Zeeb u32 p1_rfmode; 112*6d67aabdSBjoern A. Zeeb u32 p1_rfmode_ftm; 113*6d67aabdSBjoern A. Zeeb s16 tx_pwr; /* S9 */ 114*6d67aabdSBjoern A. Zeeb }; 115*6d67aabdSBjoern A. Zeeb 116*6d67aabdSBjoern A. Zeeb struct rtw8852bx_info { 117*6d67aabdSBjoern A. Zeeb int (*mac_enable_bb_rf)(struct rtw89_dev *rtwdev); 118*6d67aabdSBjoern A. Zeeb int (*mac_disable_bb_rf)(struct rtw89_dev *rtwdev); 119*6d67aabdSBjoern A. Zeeb void (*bb_sethw)(struct rtw89_dev *rtwdev); 120*6d67aabdSBjoern A. Zeeb void (*bb_reset_all)(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy_idx); 121*6d67aabdSBjoern A. Zeeb void (*bb_cfg_txrx_path)(struct rtw89_dev *rtwdev); 122*6d67aabdSBjoern A. Zeeb void (*bb_cfg_tx_path)(struct rtw89_dev *rtwdev, u8 tx_path); 123*6d67aabdSBjoern A. Zeeb void (*bb_ctrl_rx_path)(struct rtw89_dev *rtwdev, 124*6d67aabdSBjoern A. Zeeb enum rtw89_rf_path_bit rx_path); 125*6d67aabdSBjoern A. Zeeb void (*bb_set_plcp_tx)(struct rtw89_dev *rtwdev); 126*6d67aabdSBjoern A. Zeeb void (*bb_set_power)(struct rtw89_dev *rtwdev, s16 pwr_dbm, 127*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx idx); 128*6d67aabdSBjoern A. Zeeb void (*bb_set_pmac_pkt_tx)(struct rtw89_dev *rtwdev, u8 enable, 129*6d67aabdSBjoern A. Zeeb u16 tx_cnt, u16 period, u16 tx_time, 130*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx idx); 131*6d67aabdSBjoern A. Zeeb void (*bb_backup_tssi)(struct rtw89_dev *rtwdev, enum rtw89_phy_idx idx, 132*6d67aabdSBjoern A. Zeeb struct rtw8852bx_bb_tssi_bak *bak); 133*6d67aabdSBjoern A. Zeeb void (*bb_restore_tssi)(struct rtw89_dev *rtwdev, enum rtw89_phy_idx idx, 134*6d67aabdSBjoern A. Zeeb const struct rtw8852bx_bb_tssi_bak *bak); 135*6d67aabdSBjoern A. Zeeb void (*bb_tx_mode_switch)(struct rtw89_dev *rtwdev, 136*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx idx, u8 mode); 137*6d67aabdSBjoern A. Zeeb void (*set_channel_mac)(struct rtw89_dev *rtwdev, 138*6d67aabdSBjoern A. Zeeb const struct rtw89_chan *chan, u8 mac_idx); 139*6d67aabdSBjoern A. Zeeb void (*set_channel_bb)(struct rtw89_dev *rtwdev, const struct rtw89_chan *chan, 140*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx phy_idx); 141*6d67aabdSBjoern A. Zeeb void (*ctrl_nbtg_bt_tx)(struct rtw89_dev *rtwdev, bool en, 142*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx phy_idx); 143*6d67aabdSBjoern A. Zeeb void (*ctrl_btg_bt_rx)(struct rtw89_dev *rtwdev, bool en, 144*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx phy_idx); 145*6d67aabdSBjoern A. Zeeb void (*query_ppdu)(struct rtw89_dev *rtwdev, 146*6d67aabdSBjoern A. Zeeb struct rtw89_rx_phy_ppdu *phy_ppdu, 147*6d67aabdSBjoern A. Zeeb struct ieee80211_rx_status *status); 148*6d67aabdSBjoern A. Zeeb int (*read_efuse)(struct rtw89_dev *rtwdev, u8 *log_map, 149*6d67aabdSBjoern A. Zeeb enum rtw89_efuse_block block); 150*6d67aabdSBjoern A. Zeeb int (*read_phycap)(struct rtw89_dev *rtwdev, u8 *phycap_map); 151*6d67aabdSBjoern A. Zeeb void (*power_trim)(struct rtw89_dev *rtwdev); 152*6d67aabdSBjoern A. Zeeb void (*set_txpwr)(struct rtw89_dev *rtwdev, 153*6d67aabdSBjoern A. Zeeb const struct rtw89_chan *chan, 154*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx phy_idx); 155*6d67aabdSBjoern A. Zeeb void (*set_txpwr_ctrl)(struct rtw89_dev *rtwdev, 156*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx phy_idx); 157*6d67aabdSBjoern A. Zeeb int (*init_txpwr_unit)(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy_idx); 158*6d67aabdSBjoern A. Zeeb void (*set_txpwr_ul_tb_offset)(struct rtw89_dev *rtwdev, 159*6d67aabdSBjoern A. Zeeb s8 pw_ofst, enum rtw89_mac_idx mac_idx); 160*6d67aabdSBjoern A. Zeeb u8 (*get_thermal)(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path); 161*6d67aabdSBjoern A. Zeeb void (*adc_cfg)(struct rtw89_dev *rtwdev, u8 bw, u8 path); 162*6d67aabdSBjoern A. Zeeb void (*btc_init_cfg)(struct rtw89_dev *rtwdev); 163*6d67aabdSBjoern A. Zeeb void (*btc_set_wl_pri)(struct rtw89_dev *rtwdev, u8 map, bool state); 164*6d67aabdSBjoern A. Zeeb s8 (*btc_get_bt_rssi)(struct rtw89_dev *rtwdev, s8 val); 165*6d67aabdSBjoern A. Zeeb void (*btc_update_bt_cnt)(struct rtw89_dev *rtwdev); 166*6d67aabdSBjoern A. Zeeb void (*btc_wl_s1_standby)(struct rtw89_dev *rtwdev, bool state); 167*6d67aabdSBjoern A. Zeeb void (*btc_set_wl_rx_gain)(struct rtw89_dev *rtwdev, u32 level); 168*6d67aabdSBjoern A. Zeeb }; 169*6d67aabdSBjoern A. Zeeb 170*6d67aabdSBjoern A. Zeeb extern const struct rtw8852bx_info rtw8852bx_info; 171*6d67aabdSBjoern A. Zeeb 172*6d67aabdSBjoern A. Zeeb static inline 173*6d67aabdSBjoern A. Zeeb int rtw8852bx_mac_enable_bb_rf(struct rtw89_dev *rtwdev) 174*6d67aabdSBjoern A. Zeeb { 175*6d67aabdSBjoern A. Zeeb return rtw8852bx_info.mac_enable_bb_rf(rtwdev); 176*6d67aabdSBjoern A. Zeeb } 177*6d67aabdSBjoern A. Zeeb 178*6d67aabdSBjoern A. Zeeb static inline 179*6d67aabdSBjoern A. Zeeb int rtw8852bx_mac_disable_bb_rf(struct rtw89_dev *rtwdev) 180*6d67aabdSBjoern A. Zeeb { 181*6d67aabdSBjoern A. Zeeb return rtw8852bx_info.mac_disable_bb_rf(rtwdev); 182*6d67aabdSBjoern A. Zeeb } 183*6d67aabdSBjoern A. Zeeb 184*6d67aabdSBjoern A. Zeeb static inline 185*6d67aabdSBjoern A. Zeeb void rtw8852bx_bb_sethw(struct rtw89_dev *rtwdev) 186*6d67aabdSBjoern A. Zeeb { 187*6d67aabdSBjoern A. Zeeb rtw8852bx_info.bb_sethw(rtwdev); 188*6d67aabdSBjoern A. Zeeb } 189*6d67aabdSBjoern A. Zeeb 190*6d67aabdSBjoern A. Zeeb static inline 191*6d67aabdSBjoern A. Zeeb void rtw8852bx_bb_reset_all(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy_idx) 192*6d67aabdSBjoern A. Zeeb { 193*6d67aabdSBjoern A. Zeeb rtw8852bx_info.bb_reset_all(rtwdev, phy_idx); 194*6d67aabdSBjoern A. Zeeb } 195*6d67aabdSBjoern A. Zeeb 196*6d67aabdSBjoern A. Zeeb static inline 197*6d67aabdSBjoern A. Zeeb void rtw8852bx_bb_cfg_txrx_path(struct rtw89_dev *rtwdev) 198*6d67aabdSBjoern A. Zeeb { 199*6d67aabdSBjoern A. Zeeb rtw8852bx_info.bb_cfg_txrx_path(rtwdev); 200*6d67aabdSBjoern A. Zeeb } 201*6d67aabdSBjoern A. Zeeb 202*6d67aabdSBjoern A. Zeeb static inline 203*6d67aabdSBjoern A. Zeeb void rtw8852bx_bb_cfg_tx_path(struct rtw89_dev *rtwdev, u8 tx_path) 204*6d67aabdSBjoern A. Zeeb { 205*6d67aabdSBjoern A. Zeeb rtw8852bx_info.bb_cfg_tx_path(rtwdev, tx_path); 206*6d67aabdSBjoern A. Zeeb } 207*6d67aabdSBjoern A. Zeeb 208*6d67aabdSBjoern A. Zeeb static inline 209*6d67aabdSBjoern A. Zeeb void rtw8852bx_bb_ctrl_rx_path(struct rtw89_dev *rtwdev, 210*6d67aabdSBjoern A. Zeeb enum rtw89_rf_path_bit rx_path) 211*6d67aabdSBjoern A. Zeeb { 212*6d67aabdSBjoern A. Zeeb rtw8852bx_info.bb_ctrl_rx_path(rtwdev, rx_path); 213*6d67aabdSBjoern A. Zeeb } 214*6d67aabdSBjoern A. Zeeb 215*6d67aabdSBjoern A. Zeeb static inline 216*6d67aabdSBjoern A. Zeeb void rtw8852bx_bb_set_plcp_tx(struct rtw89_dev *rtwdev) 217*6d67aabdSBjoern A. Zeeb { 218*6d67aabdSBjoern A. Zeeb rtw8852bx_info.bb_set_plcp_tx(rtwdev); 219*6d67aabdSBjoern A. Zeeb } 220*6d67aabdSBjoern A. Zeeb 221*6d67aabdSBjoern A. Zeeb static inline 222*6d67aabdSBjoern A. Zeeb void rtw8852bx_bb_set_power(struct rtw89_dev *rtwdev, s16 pwr_dbm, 223*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx idx) 224*6d67aabdSBjoern A. Zeeb { 225*6d67aabdSBjoern A. Zeeb rtw8852bx_info.bb_set_power(rtwdev, pwr_dbm, idx); 226*6d67aabdSBjoern A. Zeeb } 227*6d67aabdSBjoern A. Zeeb 228*6d67aabdSBjoern A. Zeeb static inline 229*6d67aabdSBjoern A. Zeeb void rtw8852bx_bb_set_pmac_pkt_tx(struct rtw89_dev *rtwdev, u8 enable, 230*6d67aabdSBjoern A. Zeeb u16 tx_cnt, u16 period, u16 tx_time, 231*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx idx) 232*6d67aabdSBjoern A. Zeeb { 233*6d67aabdSBjoern A. Zeeb rtw8852bx_info.bb_set_pmac_pkt_tx(rtwdev, enable, tx_cnt, period, tx_time, idx); 234*6d67aabdSBjoern A. Zeeb } 235*6d67aabdSBjoern A. Zeeb 236*6d67aabdSBjoern A. Zeeb static inline 237*6d67aabdSBjoern A. Zeeb void rtw8852bx_bb_backup_tssi(struct rtw89_dev *rtwdev, enum rtw89_phy_idx idx, 238*6d67aabdSBjoern A. Zeeb struct rtw8852bx_bb_tssi_bak *bak) 239*6d67aabdSBjoern A. Zeeb { 240*6d67aabdSBjoern A. Zeeb rtw8852bx_info.bb_backup_tssi(rtwdev, idx, bak); 241*6d67aabdSBjoern A. Zeeb } 242*6d67aabdSBjoern A. Zeeb 243*6d67aabdSBjoern A. Zeeb static inline 244*6d67aabdSBjoern A. Zeeb void rtw8852bx_bb_restore_tssi(struct rtw89_dev *rtwdev, enum rtw89_phy_idx idx, 245*6d67aabdSBjoern A. Zeeb const struct rtw8852bx_bb_tssi_bak *bak) 246*6d67aabdSBjoern A. Zeeb { 247*6d67aabdSBjoern A. Zeeb rtw8852bx_info.bb_restore_tssi(rtwdev, idx, bak); 248*6d67aabdSBjoern A. Zeeb } 249*6d67aabdSBjoern A. Zeeb 250*6d67aabdSBjoern A. Zeeb static inline 251*6d67aabdSBjoern A. Zeeb void rtw8852bx_bb_tx_mode_switch(struct rtw89_dev *rtwdev, 252*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx idx, u8 mode) 253*6d67aabdSBjoern A. Zeeb { 254*6d67aabdSBjoern A. Zeeb rtw8852bx_info.bb_tx_mode_switch(rtwdev, idx, mode); 255*6d67aabdSBjoern A. Zeeb } 256*6d67aabdSBjoern A. Zeeb 257*6d67aabdSBjoern A. Zeeb static inline 258*6d67aabdSBjoern A. Zeeb void rtw8852bx_set_channel_mac(struct rtw89_dev *rtwdev, 259*6d67aabdSBjoern A. Zeeb const struct rtw89_chan *chan, u8 mac_idx) 260*6d67aabdSBjoern A. Zeeb { 261*6d67aabdSBjoern A. Zeeb rtw8852bx_info.set_channel_mac(rtwdev, chan, mac_idx); 262*6d67aabdSBjoern A. Zeeb } 263*6d67aabdSBjoern A. Zeeb 264*6d67aabdSBjoern A. Zeeb static inline 265*6d67aabdSBjoern A. Zeeb void rtw8852bx_set_channel_bb(struct rtw89_dev *rtwdev, const struct rtw89_chan *chan, 266*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx phy_idx) 267*6d67aabdSBjoern A. Zeeb { 268*6d67aabdSBjoern A. Zeeb rtw8852bx_info.set_channel_bb(rtwdev, chan, phy_idx); 269*6d67aabdSBjoern A. Zeeb } 270*6d67aabdSBjoern A. Zeeb 271*6d67aabdSBjoern A. Zeeb static inline 272*6d67aabdSBjoern A. Zeeb void rtw8852bx_ctrl_nbtg_bt_tx(struct rtw89_dev *rtwdev, bool en, 273*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx phy_idx) 274*6d67aabdSBjoern A. Zeeb { 275*6d67aabdSBjoern A. Zeeb rtw8852bx_info.ctrl_nbtg_bt_tx(rtwdev, en, phy_idx); 276*6d67aabdSBjoern A. Zeeb } 277*6d67aabdSBjoern A. Zeeb 278*6d67aabdSBjoern A. Zeeb static inline 279*6d67aabdSBjoern A. Zeeb void rtw8852bx_ctrl_btg_bt_rx(struct rtw89_dev *rtwdev, bool en, 280*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx phy_idx) 281*6d67aabdSBjoern A. Zeeb { 282*6d67aabdSBjoern A. Zeeb rtw8852bx_info.ctrl_btg_bt_rx(rtwdev, en, phy_idx); 283*6d67aabdSBjoern A. Zeeb } 284*6d67aabdSBjoern A. Zeeb 285*6d67aabdSBjoern A. Zeeb static inline 286*6d67aabdSBjoern A. Zeeb void rtw8852bx_query_ppdu(struct rtw89_dev *rtwdev, 287*6d67aabdSBjoern A. Zeeb struct rtw89_rx_phy_ppdu *phy_ppdu, 288*6d67aabdSBjoern A. Zeeb struct ieee80211_rx_status *status) 289*6d67aabdSBjoern A. Zeeb { 290*6d67aabdSBjoern A. Zeeb rtw8852bx_info.query_ppdu(rtwdev, phy_ppdu, status); 291*6d67aabdSBjoern A. Zeeb } 292*6d67aabdSBjoern A. Zeeb 293*6d67aabdSBjoern A. Zeeb static inline 294*6d67aabdSBjoern A. Zeeb int rtw8852bx_read_efuse(struct rtw89_dev *rtwdev, u8 *log_map, 295*6d67aabdSBjoern A. Zeeb enum rtw89_efuse_block block) 296*6d67aabdSBjoern A. Zeeb { 297*6d67aabdSBjoern A. Zeeb return rtw8852bx_info.read_efuse(rtwdev, log_map, block); 298*6d67aabdSBjoern A. Zeeb } 299*6d67aabdSBjoern A. Zeeb 300*6d67aabdSBjoern A. Zeeb static inline 301*6d67aabdSBjoern A. Zeeb int rtw8852bx_read_phycap(struct rtw89_dev *rtwdev, u8 *phycap_map) 302*6d67aabdSBjoern A. Zeeb { 303*6d67aabdSBjoern A. Zeeb return rtw8852bx_info.read_phycap(rtwdev, phycap_map); 304*6d67aabdSBjoern A. Zeeb } 305*6d67aabdSBjoern A. Zeeb 306*6d67aabdSBjoern A. Zeeb static inline 307*6d67aabdSBjoern A. Zeeb void rtw8852bx_power_trim(struct rtw89_dev *rtwdev) 308*6d67aabdSBjoern A. Zeeb { 309*6d67aabdSBjoern A. Zeeb rtw8852bx_info.power_trim(rtwdev); 310*6d67aabdSBjoern A. Zeeb } 311*6d67aabdSBjoern A. Zeeb 312*6d67aabdSBjoern A. Zeeb static inline 313*6d67aabdSBjoern A. Zeeb void rtw8852bx_set_txpwr(struct rtw89_dev *rtwdev, 314*6d67aabdSBjoern A. Zeeb const struct rtw89_chan *chan, 315*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx phy_idx) 316*6d67aabdSBjoern A. Zeeb { 317*6d67aabdSBjoern A. Zeeb rtw8852bx_info.set_txpwr(rtwdev, chan, phy_idx); 318*6d67aabdSBjoern A. Zeeb } 319*6d67aabdSBjoern A. Zeeb 320*6d67aabdSBjoern A. Zeeb static inline 321*6d67aabdSBjoern A. Zeeb void rtw8852bx_set_txpwr_ctrl(struct rtw89_dev *rtwdev, 322*6d67aabdSBjoern A. Zeeb enum rtw89_phy_idx phy_idx) 323*6d67aabdSBjoern A. Zeeb { 324*6d67aabdSBjoern A. Zeeb rtw8852bx_info.set_txpwr_ctrl(rtwdev, phy_idx); 325*6d67aabdSBjoern A. Zeeb } 326*6d67aabdSBjoern A. Zeeb 327*6d67aabdSBjoern A. Zeeb static inline 328*6d67aabdSBjoern A. Zeeb int rtw8852bx_init_txpwr_unit(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy_idx) 329*6d67aabdSBjoern A. Zeeb { 330*6d67aabdSBjoern A. Zeeb return rtw8852bx_info.init_txpwr_unit(rtwdev, phy_idx); 331*6d67aabdSBjoern A. Zeeb } 332*6d67aabdSBjoern A. Zeeb 333*6d67aabdSBjoern A. Zeeb static inline 334*6d67aabdSBjoern A. Zeeb void rtw8852bx_set_txpwr_ul_tb_offset(struct rtw89_dev *rtwdev, 335*6d67aabdSBjoern A. Zeeb s8 pw_ofst, enum rtw89_mac_idx mac_idx) 336*6d67aabdSBjoern A. Zeeb { 337*6d67aabdSBjoern A. Zeeb rtw8852bx_info.set_txpwr_ul_tb_offset(rtwdev, pw_ofst, mac_idx); 338*6d67aabdSBjoern A. Zeeb } 339*6d67aabdSBjoern A. Zeeb 340*6d67aabdSBjoern A. Zeeb static inline 341*6d67aabdSBjoern A. Zeeb u8 rtw8852bx_get_thermal(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path) 342*6d67aabdSBjoern A. Zeeb { 343*6d67aabdSBjoern A. Zeeb return rtw8852bx_info.get_thermal(rtwdev, rf_path); 344*6d67aabdSBjoern A. Zeeb } 345*6d67aabdSBjoern A. Zeeb 346*6d67aabdSBjoern A. Zeeb static inline 347*6d67aabdSBjoern A. Zeeb void rtw8852bx_adc_cfg(struct rtw89_dev *rtwdev, u8 bw, u8 path) 348*6d67aabdSBjoern A. Zeeb { 349*6d67aabdSBjoern A. Zeeb rtw8852bx_info.adc_cfg(rtwdev, bw, path); 350*6d67aabdSBjoern A. Zeeb } 351*6d67aabdSBjoern A. Zeeb 352*6d67aabdSBjoern A. Zeeb static inline 353*6d67aabdSBjoern A. Zeeb void rtw8852bx_btc_init_cfg(struct rtw89_dev *rtwdev) 354*6d67aabdSBjoern A. Zeeb { 355*6d67aabdSBjoern A. Zeeb rtw8852bx_info.btc_init_cfg(rtwdev); 356*6d67aabdSBjoern A. Zeeb } 357*6d67aabdSBjoern A. Zeeb 358*6d67aabdSBjoern A. Zeeb static inline 359*6d67aabdSBjoern A. Zeeb void rtw8852bx_btc_set_wl_pri(struct rtw89_dev *rtwdev, u8 map, bool state) 360*6d67aabdSBjoern A. Zeeb { 361*6d67aabdSBjoern A. Zeeb rtw8852bx_info.btc_set_wl_pri(rtwdev, map, state); 362*6d67aabdSBjoern A. Zeeb } 363*6d67aabdSBjoern A. Zeeb 364*6d67aabdSBjoern A. Zeeb static inline 365*6d67aabdSBjoern A. Zeeb s8 rtw8852bx_btc_get_bt_rssi(struct rtw89_dev *rtwdev, s8 val) 366*6d67aabdSBjoern A. Zeeb { 367*6d67aabdSBjoern A. Zeeb return rtw8852bx_info.btc_get_bt_rssi(rtwdev, val); 368*6d67aabdSBjoern A. Zeeb } 369*6d67aabdSBjoern A. Zeeb 370*6d67aabdSBjoern A. Zeeb static inline 371*6d67aabdSBjoern A. Zeeb void rtw8852bx_btc_update_bt_cnt(struct rtw89_dev *rtwdev) 372*6d67aabdSBjoern A. Zeeb { 373*6d67aabdSBjoern A. Zeeb rtw8852bx_info.btc_update_bt_cnt(rtwdev); 374*6d67aabdSBjoern A. Zeeb } 375*6d67aabdSBjoern A. Zeeb 376*6d67aabdSBjoern A. Zeeb static inline 377*6d67aabdSBjoern A. Zeeb void rtw8852bx_btc_wl_s1_standby(struct rtw89_dev *rtwdev, bool state) 378*6d67aabdSBjoern A. Zeeb { 379*6d67aabdSBjoern A. Zeeb rtw8852bx_info.btc_wl_s1_standby(rtwdev, state); 380*6d67aabdSBjoern A. Zeeb } 381*6d67aabdSBjoern A. Zeeb 382*6d67aabdSBjoern A. Zeeb static inline 383*6d67aabdSBjoern A. Zeeb void rtw8852bx_btc_set_wl_rx_gain(struct rtw89_dev *rtwdev, u32 level) 384*6d67aabdSBjoern A. Zeeb { 385*6d67aabdSBjoern A. Zeeb rtw8852bx_info.btc_set_wl_rx_gain(rtwdev, level); 386*6d67aabdSBjoern A. Zeeb } 387*6d67aabdSBjoern A. Zeeb 388*6d67aabdSBjoern A. Zeeb #endif 389