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