xref: /openwifi/driver/hw_def.h (revision 261bb9eef73c3da1bda8d992c145e07cdacfaaac)
1 // Author: Xianjun jiao, Michael Mehari, Wei Liu
2 // SPDX-FileCopyrightText: 2019 UGent
3 // SPDX-License-Identifier: AGPL-3.0-or-later
4 
5 const char *sdr_compatible_str = "sdr,sdr";
6 
7 enum openwifi_fpga_type {
8 	SMALL_FPGA = 0,
9 	LARGE_FPGA = 1,
10 };
11 
12 enum openwifi_band {
13 	BAND_900M = 0,
14 	BAND_2_4GHZ,
15 	BAND_3_65GHZ,
16 	BAND_5_0GHZ,
17 	BAND_5_8GHZ,
18 	BAND_5_9GHZ,
19 	BAND_60GHZ,
20 };
21 
22 // ------------------------------------tx interface----------------------------------------
23 const char *tx_intf_compatible_str = "sdr,tx_intf";
24 
25 #define TX_INTF_REG_MULTI_RST_ADDR                 (0*4)
26 #define TX_INTF_REG_MIXER_CFG_ADDR                 (1*4)
27 #define TX_INTF_REG_WIFI_TX_MODE_ADDR              (2*4)
28 #define TX_INTF_REG_IQ_SRC_SEL_ADDR                (3*4)
29 #define TX_INTF_REG_CTS_TOSELF_CONFIG_ADDR         (4*4)
30 #define TX_INTF_REG_CSI_FUZZER_ADDR                (5*4)
31 #define TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_ADDR  (6*4)
32 #define TX_INTF_REG_MISC_SEL_ADDR                  (7*4)
33 #define TX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_ADDR      (8*4)
34 #define TX_INTF_REG_NUM_DMA_SYMBOL_TO_PS_ADDR      (9*4)
35 #define TX_INTF_REG_CFG_DATA_TO_ANT_ADDR           (10*4)
36 #define TX_INTF_REG_S_AXIS_FIFO_TH_ADDR            (11*4)
37 #define TX_INTF_REG_TX_HOLD_THRESHOLD_ADDR         (12*4)
38 #define TX_INTF_REG_BB_GAIN_ADDR                   (13*4)
39 #define TX_INTF_REG_INTERRUPT_SEL_ADDR             (14*4)
40 #define TX_INTF_REG_ANT_SEL_ADDR                   (16*4)
41 #define TX_INTF_REG_S_AXIS_FIFO_NO_ROOM_ADDR       (21*4)
42 #define TX_INTF_REG_PKT_INFO_ADDR                  (22*4)
43 #define TX_INTF_REG_QUEUE_FIFO_DATA_COUNT_ADDR     (24*4)
44 
45 #define TX_INTF_NUM_ANTENNA                        2
46 #define TX_INTF_NUM_BYTE_PER_DMA_SYMBOL            (64/8)
47 #define TX_INTF_NUM_BYTE_PER_DMA_SYMBOL_IN_BITS    3
48 
49 enum tx_intf_mode {
50 	TX_INTF_AXIS_LOOP_BACK = 0,
51 	TX_INTF_BYPASS,
52 	TX_INTF_BW_20MHZ_AT_0MHZ_ANT0,
53 	TX_INTF_BW_20MHZ_AT_0MHZ_ANT1,
54 	TX_INTF_BW_20MHZ_AT_N_10MHZ_ANT0,
55 	TX_INTF_BW_20MHZ_AT_P_10MHZ_ANT0,
56 	TX_INTF_BW_20MHZ_AT_N_10MHZ_ANT1,
57 	TX_INTF_BW_20MHZ_AT_P_10MHZ_ANT1,
58 };
59 
60 const int tx_intf_fo_mapping[] = {0, 0, 0, 0,-10,10,-10,10};
61 const u32 dma_symbol_fifo_size_hw_queue[] = {4*1024, 4*1024, 4*1024, 4*1024}; // !!!make sure align to fifo in tx_intf_s_axis.v
62 
63 struct tx_intf_driver_api {
64 	u32 (*hw_init)(enum tx_intf_mode mode, u32 num_dma_symbol_to_pl, u32 num_dma_symbol_to_ps, enum openwifi_fpga_type fpga_type);
65 
66 	u32 (*reg_read)(u32 reg);
67 	void (*reg_write)(u32 reg, u32 value);
68 
69 	u32 (*TX_INTF_REG_MULTI_RST_read)(void);
70 	u32 (*TX_INTF_REG_MIXER_CFG_read)(void);
71 	u32 (*TX_INTF_REG_WIFI_TX_MODE_read)(void);
72 	u32 (*TX_INTF_REG_IQ_SRC_SEL_read)(void);
73 	u32 (*TX_INTF_REG_CTS_TOSELF_CONFIG_read)(void);
74 	u32 (*TX_INTF_REG_CSI_FUZZER_read)(void);
75 	u32 (*TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_read)(void);
76 	u32 (*TX_INTF_REG_MISC_SEL_read)(void);
77 	u32 (*TX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_read)(void);
78 	u32 (*TX_INTF_REG_NUM_DMA_SYMBOL_TO_PS_read)(void);
79 	u32 (*TX_INTF_REG_CFG_DATA_TO_ANT_read)(void);
80 	u32 (*TX_INTF_REG_S_AXIS_FIFO_TH_read)(void);
81 	u32 (*TX_INTF_REG_TX_HOLD_THRESHOLD_read)(void);
82 	u32 (*TX_INTF_REG_INTERRUPT_SEL_read)(void);
83 	u32 (*TX_INTF_REG_BB_GAIN_read)(void);
84 	u32 (*TX_INTF_REG_ANT_SEL_read)(void);
85 	u32 (*TX_INTF_REG_S_AXIS_FIFO_NO_ROOM_read)(void);
86 	u32 (*TX_INTF_REG_PKT_INFO_read)(void);
87 	u32 (*TX_INTF_REG_QUEUE_FIFO_DATA_COUNT_read)(void);
88 
89 	void (*TX_INTF_REG_MULTI_RST_write)(u32 value);
90 	void (*TX_INTF_REG_MIXER_CFG_write)(u32 value);
91 	void (*TX_INTF_REG_WIFI_TX_MODE_write)(u32 value);
92 	void (*TX_INTF_REG_IQ_SRC_SEL_write)(u32 value);
93 	void (*TX_INTF_REG_CTS_TOSELF_CONFIG_write)(u32 value);
94 	void (*TX_INTF_REG_CSI_FUZZER_write)(u32 value);
95 	void (*TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_write)(u32 value);
96 	void (*TX_INTF_REG_MISC_SEL_write)(u32 value);
97 	void (*TX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_write)(u32 value);
98 	void (*TX_INTF_REG_NUM_DMA_SYMBOL_TO_PS_write)(u32 value);
99 	void (*TX_INTF_REG_CFG_DATA_TO_ANT_write)(u32 value);
100 	void (*TX_INTF_REG_S_AXIS_FIFO_TH_write)(u32 value);
101 	void (*TX_INTF_REG_TX_HOLD_THRESHOLD_write)(u32 value);
102 	void (*TX_INTF_REG_INTERRUPT_SEL_write)(u32 value);
103 	void (*TX_INTF_REG_BB_GAIN_write)(u32 value);
104 	void (*TX_INTF_REG_ANT_SEL_write)(u32 value);
105 	void (*TX_INTF_REG_S_AXIS_FIFO_NO_ROOM_write)(u32 value);
106 	void (*TX_INTF_REG_PKT_INFO_write)(u32 value);
107 };
108 
109 // ------------------------------------rx interface----------------------------------------
110 const char *rx_intf_compatible_str = "sdr,rx_intf";
111 
112 #define RX_INTF_REG_MULTI_RST_ADDR                 (0*4)
113 #define RX_INTF_REG_MIXER_CFG_ADDR                 (1*4)
114 #define RX_INTF_REG_INTERRUPT_TEST_ADDR            (2*4)
115 #define RX_INTF_REG_IQ_SRC_SEL_ADDR                (3*4)
116 #define RX_INTF_REG_IQ_CTRL_ADDR                   (4*4)
117 #define RX_INTF_REG_START_TRANS_TO_PS_MODE_ADDR    (5*4)
118 #define RX_INTF_REG_START_TRANS_TO_PS_ADDR         (6*4)
119 #define RX_INTF_REG_START_TRANS_TO_PS_SRC_SEL_ADDR (7*4)
120 #define RX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_ADDR      (8*4)
121 #define RX_INTF_REG_NUM_DMA_SYMBOL_TO_PS_ADDR      (9*4)
122 #define RX_INTF_REG_CFG_DATA_TO_ANT_ADDR           (10*4)
123 #define RX_INTF_REG_BB_GAIN_ADDR                   (11*4)
124 #define RX_INTF_REG_TLAST_TIMEOUT_TOP_ADDR         (12*4)
125 #define RX_INTF_REG_S2MM_INTR_DELAY_COUNT_ADDR     (13*4)
126 #define RX_INTF_REG_ANT_SEL_ADDR                   (16*4)
127 
128 #define RX_INTF_NUM_ANTENNA                        2
129 #define RX_INTF_NUM_BYTE_PER_DMA_SYMBOL            (64/8)
130 #define RX_INTF_NUM_BYTE_PER_DMA_SYMBOL_IN_BITS    3
131 
132 enum rx_intf_mode {
133 	RX_INTF_AXIS_LOOP_BACK = 0,
134 	RX_INTF_BYPASS,
135 	RX_INTF_BW_20MHZ_AT_0MHZ_ANT0,
136 	RX_INTF_BW_20MHZ_AT_0MHZ_ANT1,
137 	RX_INTF_BW_20MHZ_AT_N_10MHZ_ANT0,
138 	RX_INTF_BW_20MHZ_AT_N_10MHZ_ANT1,
139 	RX_INTF_BW_20MHZ_AT_P_10MHZ_ANT0,
140 	RX_INTF_BW_20MHZ_AT_P_10MHZ_ANT1,
141 };
142 
143 const int rx_intf_fo_mapping[] = {0,0,0,0,-10,-10,10,10};
144 
145 struct rx_intf_driver_api {
146 	u32 io_start;
147 	u32 base_addr;
148 
149 	u32 (*hw_init)(enum rx_intf_mode mode, u32 num_dma_symbol_to_pl, u32 num_dma_symbol_to_ps);
150 
151 	u32 (*reg_read)(u32 reg);
152 	void (*reg_write)(u32 reg, u32 value);
153 
154 	u32 (*RX_INTF_REG_MULTI_RST_read)(void);
155 	u32 (*RX_INTF_REG_MIXER_CFG_read)(void);
156 	u32 (*RX_INTF_REG_IQ_SRC_SEL_read)(void);
157 	u32 (*RX_INTF_REG_IQ_CTRL_read)(void);
158 	u32 (*RX_INTF_REG_START_TRANS_TO_PS_MODE_read)(void);
159 	u32 (*RX_INTF_REG_START_TRANS_TO_PS_read)(void);
160 	u32 (*RX_INTF_REG_START_TRANS_TO_PS_SRC_SEL_read)(void);
161 	u32 (*RX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_read)(void);
162 	u32 (*RX_INTF_REG_NUM_DMA_SYMBOL_TO_PS_read)(void);
163 	u32 (*RX_INTF_REG_CFG_DATA_TO_ANT_read)(void);
164 	u32 (*RX_INTF_REG_ANT_SEL_read)(void);
165 	u32 (*RX_INTF_REG_INTERRUPT_TEST_read)(void);
166 	void (*RX_INTF_REG_MULTI_RST_write)(u32 value);
167 	void (*RX_INTF_REG_MIXER_CFG_write)(u32 value);
168 	void (*RX_INTF_REG_IQ_SRC_SEL_write)(u32 value);
169 	void (*RX_INTF_REG_IQ_CTRL_write)(u32 value);
170 	void (*RX_INTF_REG_START_TRANS_TO_PS_MODE_write)(u32 value);
171 	void (*RX_INTF_REG_START_TRANS_TO_PS_write)(u32 value);
172 	void (*RX_INTF_REG_START_TRANS_TO_PS_SRC_SEL_write)(u32 value);
173 	void (*RX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_write)(u32 value);
174 	void (*RX_INTF_REG_NUM_DMA_SYMBOL_TO_PS_write)(u32 value);
175 	void (*RX_INTF_REG_CFG_DATA_TO_ANT_write)(u32 value);
176 	void (*RX_INTF_REG_BB_GAIN_write)(u32 value);
177 	void (*RX_INTF_REG_ANT_SEL_write)(u32 value);
178 	void (*RX_INTF_REG_INTERRUPT_TEST_write)(u32 value);
179 
180 	void (*RX_INTF_REG_M_AXIS_RST_write)(u32 value);
181 	void (*RX_INTF_REG_S2MM_INTR_DELAY_COUNT_write)(u32 value);
182 	void (*RX_INTF_REG_TLAST_TIMEOUT_TOP_write)(u32 value);
183 };
184 
185 // ----------------------------------openofdm rx-------------------------------
186 const char *openofdm_rx_compatible_str = "sdr,openofdm_rx";
187 
188 #define OPENOFDM_RX_REG_MULTI_RST_ADDR     (0*4)
189 #define OPENOFDM_RX_REG_ENABLE_ADDR        (1*4)
190 #define OPENOFDM_RX_REG_POWER_THRES_ADDR   (2*4)
191 #define OPENOFDM_RX_REG_MIN_PLATEAU_ADDR   (3*4)
192 #define OPENOFDM_RX_REG_SOFT_DECODING_ADDR (4*4)
193 #define OPENOFDM_RX_REG_STATE_HISTORY_ADDR (20*4)
194 
195 enum openofdm_rx_mode {
196 	OPENOFDM_RX_TEST = 0,
197 	OPENOFDM_RX_NORMAL,
198 };
199 
200 struct openofdm_rx_driver_api {
201 	u32 power_thres;
202 	u32 min_plateau;
203 
204 	u32 (*hw_init)(enum openofdm_rx_mode mode);
205 
206 	u32 (*reg_read)(u32 reg);
207 	void (*reg_write)(u32 reg, u32 value);
208 
209 	u32 (*OPENOFDM_RX_REG_STATE_HISTORY_read)(void);
210 
211 	void (*OPENOFDM_RX_REG_MULTI_RST_write)(u32 value);
212 	void (*OPENOFDM_RX_REG_ENABLE_write)(u32 value);
213 	void (*OPENOFDM_RX_REG_POWER_THRES_write)(u32 value);
214 	void (*OPENOFDM_RX_REG_MIN_PLATEAU_write)(u32 value);
215 	void (*OPENOFDM_RX_REG_SOFT_DECODING_write)(u32 value);
216 };
217 
218 // ---------------------------------------openofdm tx-------------------------------
219 const char *openofdm_tx_compatible_str = "sdr,openofdm_tx";
220 
221 #define OPENOFDM_TX_REG_MULTI_RST_ADDR                 (0*4)
222 #define OPENOFDM_TX_REG_INIT_PILOT_STATE_ADDR          (1*4)
223 #define OPENOFDM_TX_REG_INIT_DATA_STATE_ADDR           (2*4)
224 
225 enum openofdm_tx_mode {
226 	OPENOFDM_TX_TEST = 0,
227 	OPENOFDM_TX_NORMAL,
228 };
229 
230 struct openofdm_tx_driver_api {
231 	u32 (*hw_init)(enum openofdm_tx_mode mode);
232 
233 	u32 (*reg_read)(u32 reg);
234 	void (*reg_write)(u32 reg, u32 value);
235 
236 	void (*OPENOFDM_TX_REG_MULTI_RST_write)(u32 value);
237 	void (*OPENOFDM_TX_REG_INIT_PILOT_STATE_write)(u32 value);
238 	void (*OPENOFDM_TX_REG_INIT_DATA_STATE_write)(u32 value);
239 };
240 
241 // ---------------------------------------xpu low MAC controller-------------------------------
242 
243 // extra filter flag together with enum ieee80211_filter_flags in mac80211.h
244 #define UNICAST_FOR_US     (1<<9)
245 #define BROADCAST_ALL_ONE  (1<<10)
246 #define BROADCAST_ALL_ZERO (1<<11)
247 #define MY_BEACON          (1<<12)
248 #define MONITOR_ALL        (1<<13)
249 
250 const char *xpu_compatible_str = "sdr,xpu";
251 
252 #define XPU_REG_MULTI_RST_ADDR            		(0*4)
253 #define XPU_REG_SRC_SEL_ADDR              		(1*4)
254 #define XPU_REG_TSF_LOAD_VAL_LOW_ADDR     		(2*4)
255 #define XPU_REG_TSF_LOAD_VAL_HIGH_ADDR    		(3*4)
256 #define XPU_REG_BAND_CHANNEL_ADDR         		(4*4)
257 #define XPU_REG_DIFS_ADVANCE_ADDR         		(5*4)
258 #define XPU_REG_FORCE_IDLE_MISC_ADDR      		(6*4)
259 #define XPU_REG_RSSI_DB_CFG_ADDR          		(7*4)
260 #define XPU_REG_LBT_TH_ADDR               		(8*4)
261 #define XPU_REG_CSMA_DEBUG_ADDR           		(9*4)
262 #define XPU_REG_BB_RF_DELAY_ADDR         		(10*4)
263 #define XPU_REG_ACK_CTL_MAX_NUM_RETRANS_ADDR	(11*4)
264 #define XPU_REG_AMPDU_ACTION_ADDR        		(12*4)
265 #define XPU_REG_RECV_ACK_COUNT_TOP0_ADDR  		(16*4)
266 #define XPU_REG_RECV_ACK_COUNT_TOP1_ADDR  		(17*4)
267 #define XPU_REG_SEND_ACK_WAIT_TOP_ADDR    		(18*4)
268 #define XPU_REG_CSMA_CFG_ADDR             		(19*4)
269 
270 #define XPU_REG_SLICE_COUNT_TOTAL_ADDR   (20*4)
271 #define XPU_REG_SLICE_COUNT_START_ADDR   (21*4)
272 #define XPU_REG_SLICE_COUNT_END_ADDR     (22*4)
273 
274 #define XPU_REG_CTS_TO_RTS_CONFIG_ADDR    (26*4)
275 #define XPU_REG_FILTER_FLAG_ADDR          (27*4)
276 #define XPU_REG_BSSID_FILTER_LOW_ADDR     (28*4)
277 #define XPU_REG_BSSID_FILTER_HIGH_ADDR    (29*4)
278 #define XPU_REG_MAC_ADDR_LOW_ADDR         (30*4)
279 #define XPU_REG_MAC_ADDR_HIGH_ADDR        (31*4)
280 
281 #define XPU_REG_FC_DI_ADDR                (34*4)
282 #define XPU_REG_ADDR1_LOW_ADDR            (35*4)
283 #define XPU_REG_ADDR1_HIGH_ADDR           (36*4)
284 #define XPU_REG_ADDR2_LOW_ADDR            (37*4)
285 #define XPU_REG_ADDR2_HIGH_ADDR           (38*4)
286 #define XPU_REG_ADDR3_LOW_ADDR            (39*4)
287 #define XPU_REG_ADDR3_HIGH_ADDR           (40*4)
288 
289 #define XPU_REG_SC_LOW_ADDR               (41*4)
290 #define XPU_REG_ADDR4_HIGH_ADDR           (42*4)
291 #define XPU_REG_ADDR4_LOW_ADDR            (43*4)
292 
293 #define XPU_REG_TRX_STATUS_ADDR           (50*4)
294 #define XPU_REG_TX_RESULT_ADDR            (51*4)
295 
296 #define XPU_REG_TSF_RUNTIME_VAL_LOW_ADDR  (58*4)
297 #define XPU_REG_TSF_RUNTIME_VAL_HIGH_ADDR (59*4)
298 
299 #define XPU_REG_RSSI_HALF_DB_ADDR         (60*4)
300 #define XPU_REG_IQ_RSSI_HALF_DB_ADDR      (61*4)
301 
302 enum xpu_mode {
303 	XPU_TEST = 0,
304 	XPU_NORMAL,
305 };
306 
307 struct xpu_driver_api {
308 	u32 (*hw_init)(enum xpu_mode mode);
309 
310 	u32 (*reg_read)(u32 reg);
311 	void (*reg_write)(u32 reg, u32 value);
312 
313 	void (*XPU_REG_MULTI_RST_write)(u32 value);
314 	u32  (*XPU_REG_MULTI_RST_read)(void);
315 
316 	void (*XPU_REG_SRC_SEL_write)(u32 value);
317 	u32  (*XPU_REG_SRC_SEL_read)(void);
318 
319 	void (*XPU_REG_RECV_ACK_COUNT_TOP0_write)(u32 value);
320 	u32  (*XPU_REG_RECV_ACK_COUNT_TOP0_read)(void);
321 
322 	void (*XPU_REG_RECV_ACK_COUNT_TOP1_write)(u32 value);
323 	u32  (*XPU_REG_RECV_ACK_COUNT_TOP1_read)(void);
324 
325 	void (*XPU_REG_SEND_ACK_WAIT_TOP_write)(u32 value);
326 	u32  (*XPU_REG_SEND_ACK_WAIT_TOP_read)(void);
327 
328 	void (*XPU_REG_ACK_FC_FILTER_write)(u32 value);
329 	u32  (*XPU_REG_ACK_FC_FILTER_read)(void);
330 
331 	void (*XPU_REG_CTS_TO_RTS_CONFIG_write)(u32 value);
332 	u32  (*XPU_REG_CTS_TO_RTS_CONFIG_read)(void);
333 
334 	void (*XPU_REG_FILTER_FLAG_write)(u32 value);
335 	u32  (*XPU_REG_FILTER_FLAG_read)(void);
336 
337 	void (*XPU_REG_MAC_ADDR_LOW_write)(u32 value);
338 	u32  (*XPU_REG_MAC_ADDR_LOW_read)(void);
339 
340 	void (*XPU_REG_MAC_ADDR_HIGH_write)(u32 value);
341 	u32  (*XPU_REG_MAC_ADDR_HIGH_read)(void);
342 
343 	void (*XPU_REG_BSSID_FILTER_LOW_write)(u32 value);
344 	u32  (*XPU_REG_BSSID_FILTER_LOW_read)(void);
345 
346 	void (*XPU_REG_BSSID_FILTER_HIGH_write)(u32 value);
347 	u32  (*XPU_REG_BSSID_FILTER_HIGH_read)(void);
348 
349 	void (*XPU_REG_BAND_CHANNEL_write)(u32 value);
350 	u32  (*XPU_REG_BAND_CHANNEL_read)(void);
351 
352 	void (*XPU_REG_DIFS_ADVANCE_write)(u32 value);
353 	u32  (*XPU_REG_DIFS_ADVANCE_read)(void);
354 
355 	void (*XPU_REG_FORCE_IDLE_MISC_write)(u32 value);
356 	u32  (*XPU_REG_FORCE_IDLE_MISC_read)(void);
357 
358 	u32  (*XPU_REG_TRX_STATUS_read)(void);
359 	u32  (*XPU_REG_TX_RESULT_read)(void);
360 
361 	u32  (*XPU_REG_TSF_RUNTIME_VAL_LOW_read)(void);
362 	u32  (*XPU_REG_TSF_RUNTIME_VAL_HIGH_read)(void);
363 
364 	void (*XPU_REG_TSF_LOAD_VAL_LOW_write)(u32 value);
365 	void (*XPU_REG_TSF_LOAD_VAL_HIGH_write)(u32 value);
366 	void (*XPU_REG_TSF_LOAD_VAL_write)(u32 high_value, u32 low_value);
367 
368 	u32  (*XPU_REG_FC_DI_read)(void);
369 	u32  (*XPU_REG_ADDR1_LOW_read)(void);
370 	u32  (*XPU_REG_ADDR1_HIGH_read)(void);
371 	u32  (*XPU_REG_ADDR2_LOW_read)(void);
372 	u32  (*XPU_REG_ADDR2_HIGH_read)(void);
373 
374 	void (*XPU_REG_LBT_TH_write)(u32 value);
375 	u32  (*XPU_REG_LBT_TH_read)(void);
376 
377 	void (*XPU_REG_RSSI_DB_CFG_write)(u32 value);
378 	u32  (*XPU_REG_RSSI_DB_CFG_read)(void);
379 
380 	void (*XPU_REG_CSMA_DEBUG_write)(u32 value);
381 	u32  (*XPU_REG_CSMA_DEBUG_read)(void);
382 
383 	void (*XPU_REG_CSMA_CFG_write)(u32 value);
384 	u32  (*XPU_REG_CSMA_CFG_read)(void);
385 
386 	void (*XPU_REG_SLICE_COUNT_TOTAL_write)(u32 value);
387 	void (*XPU_REG_SLICE_COUNT_START_write)(u32 value);
388 	void (*XPU_REG_SLICE_COUNT_END_write)(u32 value);
389 	void (*XPU_REG_SLICE_COUNT_TOTAL1_write)(u32 value);
390 	void (*XPU_REG_SLICE_COUNT_START1_write)(u32 value);
391 	void (*XPU_REG_SLICE_COUNT_END1_write)(u32 value);
392 
393 	u32 (*XPU_REG_SLICE_COUNT_TOTAL_read)(void);
394 	u32 (*XPU_REG_SLICE_COUNT_START_read)(void);
395 	u32 (*XPU_REG_SLICE_COUNT_END_read)(void);
396 	u32 (*XPU_REG_SLICE_COUNT_TOTAL1_read)(void);
397 	u32 (*XPU_REG_SLICE_COUNT_START1_read)(void);
398 	u32 (*XPU_REG_SLICE_COUNT_END1_read)(void);
399 
400 	void (*XPU_REG_BB_RF_DELAY_write)(u32 value);
401 
402 	void (*XPU_REG_ACK_CTL_MAX_NUM_RETRANS_write)(u32 value);
403 	u32  (*XPU_REG_ACK_CTL_MAX_NUM_RETRANS_read)(void);
404 
405 	void (*XPU_REG_AMPDU_ACTION_write)(u32 value);
406 	u32  (*XPU_REG_AMPDU_ACTION_read)(void);
407 
408 	void (*XPU_REG_MAC_ADDR_write)(u8 *mac_addr);
409 };
410