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