xref: /freebsd/sys/dev/rtwn/rtl8723b/r23b_rom_image.h (revision 551b7c5e12bfea623a47edf97ad5689732a1233f)
1 /*
2  * Copyright (c) 2026 Ahmad Khalifa <vexeduxr@FreeBSD.org>
3  *
4  * SPDX-License-Identifier: BSD-2-Clause
5  */
6 
7 #ifndef R23B_ROM_IMAGE_H
8 #define R23B_ROM_IMAGE_H
9 
10 #include <dev/rtwn/rtl8723b/r23b_rom_defs.h>
11 
12 #define R23B_DEF_TX_PWR_2G	0x2d
13 #define R23B_DEF_TX_HT20_DIFF	0x02
14 #define R23B_DEF_TX_OFDM_DIFF	0x04
15 #define R23B_DEF_TX_DIFF	0xfe
16 
17 struct r23b_tx_pwr_2g {
18 	uint8_t		cck[R23B_GROUP_2G];
19 	uint8_t		ht40[R23B_GROUP_2G - 1];
20 } __packed;
21 
22 struct r23b_tx_pwr_diff123_2g {
23 	uint8_t	ht40_ht20;
24 	uint8_t	ofdm_cck;
25 } __packed;
26 
27 struct r23b_tx_pwr_diff_2g {
28 	uint8_t		ht20_ofdm;
29 	struct r23b_tx_pwr_diff123_2g diff123[R23B_MAX_TX_COUNT - 1];
30 } __packed;
31 
32 struct r23b_tx_pwr {
33 	struct r23b_tx_pwr_2g		pwr_2g;
34 	struct r23b_tx_pwr_diff_2g	pwr_diff_2g;
35 	uint8_t				reserved[24];
36 } __packed;
37 
38 struct r23b_rom {
39 	uint16_t		id;
40 	uint8_t			reserved1[14];
41 	struct r23b_tx_pwr 	tx_pwr[R23B_MAX_RF_PATH];
42 	uint8_t			channel_plan;
43 	uint8_t			crystal_cap;
44 #define R23B_ROM_CRYSTALCAP_DEF		0x20
45 
46 	uint8_t			thermal_meter;
47 #define R23B_ROM_THERMALMETER_DEF	0x18
48 
49 	uint8_t			iqk_lck;
50 	uint8_t			pa_type;
51 	uint8_t			lna_type_2g;
52 	uint8_t			reserved2;
53 	uint8_t			lna_type_5g;
54 	uint8_t			reserved3;
55 	uint8_t			rf_board_opt;
56 	uint8_t			rf_feature_opt;
57 	uint8_t			rf_bt_opt;
58 	uint8_t			version;
59 	uint8_t			customer_id;
60 	uint8_t			tx_bswing_2g;
61 	uint8_t			reserved4;
62 	uint8_t			tx_pwr_calib_rate;
63 	uint8_t			rf_antenna_opt;
64 	uint8_t			rfe_opt;
65 	uint8_t			country_code;
66 
67 	struct {
68 		uint8_t reserved1[52];
69 		uint16_t vid;
70 		uint16_t pid;
71 		uint8_t reserved2[3];
72 		uint8_t macaddr[IEEE80211_ADDR_LEN];
73 		uint8_t reserved3[243];
74 	} __packed usb;
75 } __packed;
76 
77 _Static_assert(sizeof(struct r23b_rom) == R23B_EFUSE_MAP_LEN,
78     "R23B_EFUSE_MAP_LEN must be equal to sizeof(struct r23b_rom)!");
79 
80 #endif /* R23B_ROM_IMAGE_H */
81