xref: /freebsd/sys/contrib/dev/rtw89/rtw8852c.h (revision e2340276)
18e93258fSBjoern A. Zeeb /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
28e93258fSBjoern A. Zeeb /* Copyright(c) 2019-2022  Realtek Corporation
38e93258fSBjoern A. Zeeb  */
48e93258fSBjoern A. Zeeb 
58e93258fSBjoern A. Zeeb #ifndef __RTW89_8852C_H__
68e93258fSBjoern A. Zeeb #define __RTW89_8852C_H__
78e93258fSBjoern A. Zeeb 
88e93258fSBjoern A. Zeeb #include "core.h"
98e93258fSBjoern A. Zeeb 
108e93258fSBjoern A. Zeeb #define RF_PATH_NUM_8852C 2
118e93258fSBjoern A. Zeeb #define BB_PATH_NUM_8852C 2
128e93258fSBjoern A. Zeeb 
138e93258fSBjoern A. Zeeb struct rtw8852c_u_efuse {
148e93258fSBjoern A. Zeeb 	u8 rsvd[0x38];
158e93258fSBjoern A. Zeeb 	u8 mac_addr[ETH_ALEN];
168e93258fSBjoern A. Zeeb };
178e93258fSBjoern A. Zeeb 
188e93258fSBjoern A. Zeeb struct rtw8852c_e_efuse {
198e93258fSBjoern A. Zeeb 	u8 mac_addr[ETH_ALEN];
208e93258fSBjoern A. Zeeb };
218e93258fSBjoern A. Zeeb 
228e93258fSBjoern A. Zeeb struct rtw8852c_tssi_offset {
238e93258fSBjoern A. Zeeb 	u8 cck_tssi[TSSI_CCK_CH_GROUP_NUM];
248e93258fSBjoern A. Zeeb 	u8 bw40_tssi[TSSI_MCS_2G_CH_GROUP_NUM];
258e93258fSBjoern A. Zeeb 	u8 rsvd[7];
268e93258fSBjoern A. Zeeb 	u8 bw40_1s_tssi_5g[TSSI_MCS_5G_CH_GROUP_NUM];
278e93258fSBjoern A. Zeeb } __packed;
288e93258fSBjoern A. Zeeb 
298e93258fSBjoern A. Zeeb struct rtw8852c_efuse {
308e93258fSBjoern A. Zeeb 	u8 rsvd[0x210];
318e93258fSBjoern A. Zeeb 	struct rtw8852c_tssi_offset path_a_tssi;
328e93258fSBjoern A. Zeeb 	u8 rsvd1[10];
338e93258fSBjoern A. Zeeb 	struct rtw8852c_tssi_offset path_b_tssi;
348e93258fSBjoern A. Zeeb 	u8 rsvd2[94];
358e93258fSBjoern A. Zeeb 	u8 channel_plan;
368e93258fSBjoern A. Zeeb 	u8 xtal_k;
378e93258fSBjoern A. Zeeb 	u8 rsvd3;
388e93258fSBjoern A. Zeeb 	u8 iqk_lck;
398e93258fSBjoern A. Zeeb 	u8 rsvd4[5];
408e93258fSBjoern A. Zeeb 	u8 reg_setting:2;
418e93258fSBjoern A. Zeeb 	u8 tx_diversity:1;
428e93258fSBjoern A. Zeeb 	u8 rx_diversity:2;
438e93258fSBjoern A. Zeeb 	u8 ac_mode:1;
448e93258fSBjoern A. Zeeb 	u8 module_type:2;
458e93258fSBjoern A. Zeeb 	u8 rsvd5;
468e93258fSBjoern A. Zeeb 	u8 shared_ant:1;
478e93258fSBjoern A. Zeeb 	u8 coex_type:3;
488e93258fSBjoern A. Zeeb 	u8 ant_iso:1;
498e93258fSBjoern A. Zeeb 	u8 radio_on_off:1;
508e93258fSBjoern A. Zeeb 	u8 rsvd6:2;
518e93258fSBjoern A. Zeeb 	u8 eeprom_version;
528e93258fSBjoern A. Zeeb 	u8 customer_id;
538e93258fSBjoern A. Zeeb 	u8 tx_bb_swing_2g;
548e93258fSBjoern A. Zeeb 	u8 tx_bb_swing_5g;
558e93258fSBjoern A. Zeeb 	u8 tx_cali_pwr_trk_mode;
568e93258fSBjoern A. Zeeb 	u8 trx_path_selection;
578e93258fSBjoern A. Zeeb 	u8 rfe_type;
588e93258fSBjoern A. Zeeb 	u8 country_code[2];
598e93258fSBjoern A. Zeeb 	u8 rsvd7[3];
608e93258fSBjoern A. Zeeb 	u8 path_a_therm;
618e93258fSBjoern A. Zeeb 	u8 path_b_therm;
628e93258fSBjoern A. Zeeb 	u8 rsvd8[2];
638e93258fSBjoern A. Zeeb 	u8 rx_gain_2g_ofdm;
648e93258fSBjoern A. Zeeb 	u8 rsvd9;
658e93258fSBjoern A. Zeeb 	u8 rx_gain_2g_cck;
668e93258fSBjoern A. Zeeb 	u8 rsvd10;
678e93258fSBjoern A. Zeeb 	u8 rx_gain_5g_low;
688e93258fSBjoern A. Zeeb 	u8 rsvd11;
698e93258fSBjoern A. Zeeb 	u8 rx_gain_5g_mid;
708e93258fSBjoern A. Zeeb 	u8 rsvd12;
718e93258fSBjoern A. Zeeb 	u8 rx_gain_5g_high;
728e93258fSBjoern A. Zeeb 	u8 rsvd13[35];
738e93258fSBjoern A. Zeeb 	u8 bw40_1s_tssi_6g_a[TSSI_MCS_6G_CH_GROUP_NUM];
748e93258fSBjoern A. Zeeb 	u8 rsvd14[10];
758e93258fSBjoern A. Zeeb 	u8 bw40_1s_tssi_6g_b[TSSI_MCS_6G_CH_GROUP_NUM];
768e93258fSBjoern A. Zeeb 	u8 rsvd15[110];
778e93258fSBjoern A. Zeeb 	u8 channel_plan_6g;
788e93258fSBjoern A. Zeeb 	u8 rsvd16[71];
798e93258fSBjoern A. Zeeb 	union {
808e93258fSBjoern A. Zeeb 		struct rtw8852c_u_efuse u;
818e93258fSBjoern A. Zeeb 		struct rtw8852c_e_efuse e;
828e93258fSBjoern A. Zeeb 	};
838e93258fSBjoern A. Zeeb } __packed;
848e93258fSBjoern A. Zeeb 
858e93258fSBjoern A. Zeeb extern const struct rtw89_chip_info rtw8852c_chip_info;
868e93258fSBjoern A. Zeeb 
878e93258fSBjoern A. Zeeb #endif
88