xref: /linux/drivers/net/wireless/realtek/rtw88/rtw8814a.h (revision 1a9239bb4253f9076b5b4b2a1a4e8d7defd77a95)
1*1a754578SBitterblue Smith /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2*1a754578SBitterblue Smith /* Copyright(c) 2025  Realtek Corporation
3*1a754578SBitterblue Smith  */
4*1a754578SBitterblue Smith 
5*1a754578SBitterblue Smith #ifndef __RTW8814A_H__
6*1a754578SBitterblue Smith #define __RTW8814A_H__
7*1a754578SBitterblue Smith 
8*1a754578SBitterblue Smith struct rtw8814au_efuse {
9*1a754578SBitterblue Smith 	u8 vid[2];			/* 0xd0 */
10*1a754578SBitterblue Smith 	u8 pid[2];			/* 0xd2 */
11*1a754578SBitterblue Smith 	u8 res[4];			/* 0xd4 */
12*1a754578SBitterblue Smith 	u8 mac_addr[ETH_ALEN];		/* 0xd8 */
13*1a754578SBitterblue Smith } __packed;
14*1a754578SBitterblue Smith 
15*1a754578SBitterblue Smith struct rtw8814ae_efuse {
16*1a754578SBitterblue Smith 	u8 mac_addr[ETH_ALEN];		/* 0xd0 */
17*1a754578SBitterblue Smith 	u8 vid[2];			/* 0xd6 */
18*1a754578SBitterblue Smith 	u8 did[2];			/* 0xd8 */
19*1a754578SBitterblue Smith 	u8 svid[2];			/* 0xda */
20*1a754578SBitterblue Smith 	u8 smid[2];			/* 0xdc */
21*1a754578SBitterblue Smith } __packed;
22*1a754578SBitterblue Smith 
23*1a754578SBitterblue Smith struct rtw8814a_efuse {
24*1a754578SBitterblue Smith 	__le16 rtl_id;
25*1a754578SBitterblue Smith 	u8 res0[0x0c];
26*1a754578SBitterblue Smith 	u8 usb_mode;			/* 0x0e */
27*1a754578SBitterblue Smith 	u8 res1;
28*1a754578SBitterblue Smith 
29*1a754578SBitterblue Smith 	/* power index for four RF paths */
30*1a754578SBitterblue Smith 	struct rtw_txpwr_idx txpwr_idx_table[4];
31*1a754578SBitterblue Smith 
32*1a754578SBitterblue Smith 	u8 channel_plan;		/* 0xb8 */
33*1a754578SBitterblue Smith 	u8 xtal_k;			/* 0xb9 */
34*1a754578SBitterblue Smith 	u8 thermal_meter;		/* 0xba */
35*1a754578SBitterblue Smith 	u8 iqk_lck;			/* 0xbb */
36*1a754578SBitterblue Smith 	u8 pa_type;			/* 0xbc */
37*1a754578SBitterblue Smith 	u8 lna_type_2g[2];		/* 0xbd */
38*1a754578SBitterblue Smith 	u8 lna_type_5g[2];		/* 0xbf */
39*1a754578SBitterblue Smith 	u8 rf_board_option;		/* 0xc1 */
40*1a754578SBitterblue Smith 	u8 res2;
41*1a754578SBitterblue Smith 	u8 rf_bt_setting;		/* 0xc3 */
42*1a754578SBitterblue Smith 	u8 eeprom_version;		/* 0xc4 */
43*1a754578SBitterblue Smith 	u8 eeprom_customer_id;		/* 0xc5 */
44*1a754578SBitterblue Smith 	u8 tx_bb_swing_setting_2g;	/* 0xc6 */
45*1a754578SBitterblue Smith 	u8 tx_bb_swing_setting_5g;	/* 0xc7 */
46*1a754578SBitterblue Smith 	u8 res3;
47*1a754578SBitterblue Smith 	u8 trx_antenna_option;		/* 0xc9 */
48*1a754578SBitterblue Smith 	u8 rfe_option;			/* 0xca */
49*1a754578SBitterblue Smith 	u8 country_code[2];		/* 0xcb */
50*1a754578SBitterblue Smith 	u8 res4[3];
51*1a754578SBitterblue Smith 	union {
52*1a754578SBitterblue Smith 		struct rtw8814au_efuse u;
53*1a754578SBitterblue Smith 		struct rtw8814ae_efuse e;
54*1a754578SBitterblue Smith 	};
55*1a754578SBitterblue Smith 	u8 res5[0x122];			/* 0xde */
56*1a754578SBitterblue Smith } __packed;
57*1a754578SBitterblue Smith 
58*1a754578SBitterblue Smith static_assert(sizeof(struct rtw8814a_efuse) == 512);
59*1a754578SBitterblue Smith 
60*1a754578SBitterblue Smith extern const struct rtw_chip_info rtw8814a_hw_spec;
61*1a754578SBitterblue Smith 
62*1a754578SBitterblue Smith #endif
63