xref: /freebsd/sys/contrib/dev/rtw89/rtw8922a.h (revision df279a26d3315e7abc9e6f0744137959a4c2fb86)
16d67aabdSBjoern A. Zeeb /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
26d67aabdSBjoern A. Zeeb /* Copyright(c) 2023  Realtek Corporation
36d67aabdSBjoern A. Zeeb  */
46d67aabdSBjoern A. Zeeb 
56d67aabdSBjoern A. Zeeb #ifndef __RTW89_8922A_H__
66d67aabdSBjoern A. Zeeb #define __RTW89_8922A_H__
76d67aabdSBjoern A. Zeeb 
86d67aabdSBjoern A. Zeeb #include "core.h"
96d67aabdSBjoern A. Zeeb 
106d67aabdSBjoern A. Zeeb #define RF_PATH_NUM_8922A 2
116d67aabdSBjoern A. Zeeb #define BB_PATH_NUM_8922A 2
126d67aabdSBjoern A. Zeeb 
136d67aabdSBjoern A. Zeeb struct rtw8922a_tssi_offset {
146d67aabdSBjoern A. Zeeb 	u8 cck_tssi[TSSI_CCK_CH_GROUP_NUM];
156d67aabdSBjoern A. Zeeb 	u8 bw40_tssi[TSSI_MCS_2G_CH_GROUP_NUM];
166d67aabdSBjoern A. Zeeb 	u8 rsvd[7];
176d67aabdSBjoern A. Zeeb 	u8 bw40_1s_tssi_5g[TSSI_MCS_5G_CH_GROUP_NUM];
186d67aabdSBjoern A. Zeeb 	u8 bw_diff_5g[10];
196d67aabdSBjoern A. Zeeb } __packed;
206d67aabdSBjoern A. Zeeb 
216d67aabdSBjoern A. Zeeb struct rtw8922a_rx_gain {
226d67aabdSBjoern A. Zeeb 	u8 _2g_ofdm;
236d67aabdSBjoern A. Zeeb 	u8 _2g_cck;
246d67aabdSBjoern A. Zeeb 	u8 _5g_low;
256d67aabdSBjoern A. Zeeb 	u8 _5g_mid;
266d67aabdSBjoern A. Zeeb 	u8 _5g_high;
276d67aabdSBjoern A. Zeeb } __packed;
286d67aabdSBjoern A. Zeeb 
296d67aabdSBjoern A. Zeeb struct rtw8922a_rx_gain_6g {
306d67aabdSBjoern A. Zeeb 	u8 _6g_l0;
316d67aabdSBjoern A. Zeeb 	u8 _6g_l1;
326d67aabdSBjoern A. Zeeb 	u8 _6g_m0;
336d67aabdSBjoern A. Zeeb 	u8 _6g_m1;
346d67aabdSBjoern A. Zeeb 	u8 _6g_h0;
356d67aabdSBjoern A. Zeeb 	u8 _6g_h1;
366d67aabdSBjoern A. Zeeb 	u8 _6g_uh0;
376d67aabdSBjoern A. Zeeb 	u8 _6g_uh1;
386d67aabdSBjoern A. Zeeb } __packed;
396d67aabdSBjoern A. Zeeb 
406d67aabdSBjoern A. Zeeb struct rtw8922a_efuse {
416d67aabdSBjoern A. Zeeb 	u8 country_code[2];
426d67aabdSBjoern A. Zeeb 	u8 rsvd[0xe];
436d67aabdSBjoern A. Zeeb 	struct rtw8922a_tssi_offset path_a_tssi;
446d67aabdSBjoern A. Zeeb 	struct rtw8922a_tssi_offset path_b_tssi;
456d67aabdSBjoern A. Zeeb 	u8 rsvd1[0x54];
466d67aabdSBjoern A. Zeeb 	u8 channel_plan;
476d67aabdSBjoern A. Zeeb 	u8 xtal_k;
486d67aabdSBjoern A. Zeeb 	u8 rsvd2[0x7];
496d67aabdSBjoern A. Zeeb 	u8 board_info;
506d67aabdSBjoern A. Zeeb 	u8 rsvd3[0x8];
516d67aabdSBjoern A. Zeeb 	u8 rfe_type;
526d67aabdSBjoern A. Zeeb 	u8 rsvd4[0x5];
536d67aabdSBjoern A. Zeeb 	u8 path_a_therm;
546d67aabdSBjoern A. Zeeb 	u8 path_b_therm;
556d67aabdSBjoern A. Zeeb 	u8 rsvd5[0x2];
566d67aabdSBjoern A. Zeeb 	struct rtw8922a_rx_gain rx_gain_a;
576d67aabdSBjoern A. Zeeb 	struct rtw8922a_rx_gain rx_gain_b;
586d67aabdSBjoern A. Zeeb 	u8 rsvd6[0x22];
596d67aabdSBjoern A. Zeeb 	u8 bw40_1s_tssi_6g_a[TSSI_MCS_6G_CH_GROUP_NUM];
606d67aabdSBjoern A. Zeeb 	u8 rsvd7[0xa];
616d67aabdSBjoern A. Zeeb 	u8 bw40_1s_tssi_6g_b[TSSI_MCS_6G_CH_GROUP_NUM];
626d67aabdSBjoern A. Zeeb 	u8 rsvd8[0xa];
636d67aabdSBjoern A. Zeeb 	u8 bw40_1s_tssi_6g_c[TSSI_MCS_6G_CH_GROUP_NUM];
646d67aabdSBjoern A. Zeeb 	u8 rsvd9[0xa];
656d67aabdSBjoern A. Zeeb 	u8 bw40_1s_tssi_6g_d[TSSI_MCS_6G_CH_GROUP_NUM];
666d67aabdSBjoern A. Zeeb 	u8 rsvd10[0xa];
676d67aabdSBjoern A. Zeeb 	struct rtw8922a_rx_gain_6g rx_gain_6g_a;
686d67aabdSBjoern A. Zeeb 	struct rtw8922a_rx_gain_6g rx_gain_6g_b;
696d67aabdSBjoern A. Zeeb } __packed;
706d67aabdSBjoern A. Zeeb 
716d67aabdSBjoern A. Zeeb extern const struct rtw89_chip_info rtw8922a_chip_info;
72*df279a26SBjoern A. Zeeb extern const struct rtw89_chip_variant rtw8922ae_vs_variant;
736d67aabdSBjoern A. Zeeb 
746d67aabdSBjoern A. Zeeb #endif
75