xref: /src/sys/dev/aq/aq_hw_llh.c (revision bc531a96c9b28b1cabcd5deb0c9f8f6d815cfebc)
1 /*
2  * aQuantia Corporation Network Driver
3  * Copyright (C) 2014-2017 aQuantia Corporation. All rights reserved
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  *   (1) Redistributions of source code must retain the above
10  *   copyright notice, this list of conditions and the following
11  *   disclaimer.
12  *
13  *   (2) Redistributions in binary form must reproduce the above
14  *   copyright notice, this list of conditions and the following
15  *   disclaimer in the documentation and/or other materials provided
16  *   with the distribution.
17  *
18  *   (3)The name of the author may not be used to endorse or promote
19  *   products derived from this software without specific prior
20  *   written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
23  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
24  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
26  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
28  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
30  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
31  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  */
34 
35 /* File aq_hw_llh.c: Definitions of bitfield and register access functions for
36  * Atlantic registers.
37  */
38 
39 #include "aq_hw.h"
40 #include "aq_hw_llh.h"
41 #include "aq_hw_llh_internal.h"
42 
43 
44 /* global */
45 
46 void
47 reg_glb_fw_image_id1_set(struct aq_hw* hw, uint32_t value)
48 {
49 	AQ_WRITE_REG(hw, glb_fw_image_id1_adr, value);
50 }
51 uint32_t
52 reg_glb_fw_image_id1_get(struct aq_hw* hw)
53 {
54 	return AQ_READ_REG(hw, glb_fw_image_id1_adr);
55 }
56 
57 void
58 reg_glb_cpu_sem_set(struct aq_hw *aq_hw, uint32_t sem_value, uint32_t sem_index)
59 {
60 	AQ_WRITE_REG(aq_hw, glb_cpu_sem_adr(sem_index), sem_value);
61 }
62 
63 uint32_t
64 reg_glb_cpu_sem_get(struct aq_hw *aq_hw, uint32_t sem_index)
65 {
66 	return AQ_READ_REG(aq_hw, glb_cpu_sem_adr(sem_index));
67 }
68 
69 uint32_t
70 reg_glb_standard_ctl1_get(struct aq_hw* hw)
71 {
72 	return AQ_READ_REG(hw, glb_standard_ctl1_adr);
73 }
74 void
75 reg_glb_standard_ctl1_set(struct aq_hw* hw, uint32_t glb_standard_ctl1)
76 {
77 	AQ_WRITE_REG(hw, glb_standard_ctl1_adr, glb_standard_ctl1);
78 }
79 
80 void
81 reg_global_ctl2_set(struct aq_hw* hw, uint32_t global_ctl2)
82 {
83 	AQ_WRITE_REG(hw, glb_ctl2_adr, global_ctl2);
84 }
85 uint32_t
86 reg_global_ctl2_get(struct aq_hw* hw)
87 {
88 	return AQ_READ_REG(hw, glb_ctl2_adr);
89 }
90 
91 void
92 reg_glb_daisy_chain_status1_set(struct aq_hw* hw,
93     uint32_t glb_daisy_chain_status1)
94 {
95 	AQ_WRITE_REG(hw, glb_daisy_chain_status1_adr, glb_daisy_chain_status1);
96 }
97 uint32_t
98 reg_glb_daisy_chain_status1_get(struct aq_hw* hw)
99 {
100 	return AQ_READ_REG(hw, glb_daisy_chain_status1_adr);
101 }
102 
103 void
104 glb_glb_reg_res_dis_set(struct aq_hw *aq_hw, uint32_t glb_reg_res_dis)
105 {
106 	AQ_WRITE_REG_BIT(aq_hw, glb_reg_res_dis_adr, glb_reg_res_dis_msk,
107 	    glb_reg_res_dis_shift, glb_reg_res_dis);
108 }
109 
110 void
111 glb_soft_res_set(struct aq_hw *aq_hw, uint32_t soft_res)
112 {
113 	AQ_WRITE_REG_BIT(aq_hw, glb_soft_res_adr, glb_soft_res_msk,
114 	    glb_soft_res_shift, soft_res);
115 }
116 
117 uint32_t
118 glb_soft_res_get(struct aq_hw *aq_hw)
119 {
120 	return AQ_READ_REG_BIT(aq_hw, glb_soft_res_adr, glb_soft_res_msk,
121 	    glb_soft_res_shift);
122 }
123 
124 uint32_t
125 reg_rx_dma_stat_counter7get(struct aq_hw *aq_hw)
126 {
127 	return AQ_READ_REG(aq_hw, rx_dma_stat_counter7_adr);
128 }
129 
130 uint32_t
131 reg_glb_mif_id_get(struct aq_hw *aq_hw)
132 {
133 	return AQ_READ_REG(aq_hw, glb_mif_id_adr);
134 }
135 
136 
137 void
138 mpi_tx_reg_res_dis_set(struct aq_hw* hw, uint32_t mpi_tx_reg_res_dis)
139 {
140 	AQ_WRITE_REG_BIT(hw, mpi_tx_reg_res_dis_adr, mpi_tx_reg_res_dis_msk,
141 	    mpi_tx_reg_res_dis_shift, mpi_tx_reg_res_dis);
142 }
143 uint32_t
144 mpi_tx_reg_res_dis_get(struct aq_hw* hw)
145 {
146 	return AQ_READ_REG_BIT(hw, mpi_tx_reg_res_dis_adr,
147 	    mpi_tx_reg_res_dis_msk, mpi_tx_reg_res_dis_shift);
148 }
149 
150 
151 /* stats */
152 uint32_t
153 rpb_rx_dma_drop_pkt_cnt_get(struct aq_hw *aq_hw)
154 {
155 	return AQ_READ_REG(aq_hw, rpb_rx_dma_drop_pkt_cnt_adr);
156 }
157 
158 uint32_t
159 stats_rx_dma_good_octet_counterlsw_get(struct aq_hw *aq_hw)
160 {
161 	return AQ_READ_REG(aq_hw, stats_rx_dma_good_octet_counterlsw__adr);
162 }
163 
164 uint32_t
165 stats_rx_dma_good_pkt_counterlsw_get(struct aq_hw *aq_hw)
166 {
167 	return AQ_READ_REG(aq_hw, stats_rx_dma_good_pkt_counterlsw__adr);
168 }
169 
170 uint32_t
171 stats_tx_dma_good_octet_counterlsw_get(struct aq_hw *aq_hw)
172 {
173 	return AQ_READ_REG(aq_hw, stats_tx_dma_good_octet_counterlsw__adr);
174 }
175 
176 uint32_t
177 stats_tx_dma_good_pkt_counterlsw_get(struct aq_hw *aq_hw)
178 {
179 	return AQ_READ_REG(aq_hw, stats_tx_dma_good_pkt_counterlsw__adr);
180 }
181 
182 uint32_t
183 stats_rx_dma_good_octet_countermsw_get(struct aq_hw *aq_hw)
184 {
185 	return AQ_READ_REG(aq_hw, stats_rx_dma_good_octet_countermsw__adr);
186 }
187 
188 uint32_t
189 stats_rx_dma_good_pkt_countermsw_get(struct aq_hw *aq_hw)
190 {
191 	return AQ_READ_REG(aq_hw, stats_rx_dma_good_pkt_countermsw__adr);
192 }
193 
194 uint32_t
195 stats_tx_dma_good_octet_countermsw_get(struct aq_hw *aq_hw)
196 {
197 	return AQ_READ_REG(aq_hw, stats_tx_dma_good_octet_countermsw__adr);
198 }
199 
200 uint32_t
201 stats_tx_dma_good_pkt_countermsw_get(struct aq_hw *aq_hw)
202 {
203 	return AQ_READ_REG(aq_hw, stats_tx_dma_good_pkt_countermsw__adr);
204 }
205 
206 uint32_t
207 stats_rx_lro_coalesced_pkt_count0_get(struct aq_hw *aq_hw)
208 {
209 	return AQ_READ_REG(aq_hw, stats_rx_lo_coalesced_pkt_count0__addr);
210 }
211 
212 /* interrupt */
213 void
214 itr_irq_auto_masklsw_set(struct aq_hw *aq_hw, uint32_t irq_auto_masklsw)
215 {
216 	AQ_WRITE_REG(aq_hw, itr_iamrlsw_adr, irq_auto_masklsw);
217 }
218 
219 void
220 itr_irq_map_en_rx_set(struct aq_hw *aq_hw, uint32_t irq_map_en_rx, uint32_t rx)
221 {
222 /* register address for bitfield imr_rx{r}_en */
223 	static uint32_t itr_imr_rxren_adr[32] = {
224 		0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
225 		0x00002108U, 0x00002108U, 0x0000210cU, 0x0000210cU,
226 		0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
227 		0x00002118U, 0x00002118U, 0x0000211cU, 0x0000211cU,
228 		0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
229 		0x00002128U, 0x00002128U, 0x0000212cU, 0x0000212cU,
230 		0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
231 		0x00002138U, 0x00002138U, 0x0000213cU, 0x0000213cU
232 	};
233 
234 /* bitmask for bitfield imr_rx{r}_en */
235 	static uint32_t itr_imr_rxren_msk[32] = {
236 		0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
237 		0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
238 		0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
239 		0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
240 		0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
241 		0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
242 		0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
243 		0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U
244 	};
245 
246 /* lower bit position of bitfield imr_rx{r}_en */
247 	static uint32_t itr_imr_rxren_shift[32] = {
248 		15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U,
249 		15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U,
250 		15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U,
251 		15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U
252 	};
253 
254 	AQ_WRITE_REG_BIT(aq_hw, itr_imr_rxren_adr[rx], itr_imr_rxren_msk[rx],
255 	    itr_imr_rxren_shift[rx], irq_map_en_rx);
256 }
257 
258 void
259 itr_irq_map_en_tx_set(struct aq_hw *aq_hw, uint32_t irq_map_en_tx, uint32_t tx)
260 {
261 /* register address for bitfield imr_tx{t}_en */
262 	static uint32_t itr_imr_txten_adr[32] = {
263 		0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
264 		0x00002108U, 0x00002108U, 0x0000210cU, 0x0000210cU,
265 		0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
266 		0x00002118U, 0x00002118U, 0x0000211cU, 0x0000211cU,
267 		0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
268 		0x00002128U, 0x00002128U, 0x0000212cU, 0x0000212cU,
269 		0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
270 		0x00002138U, 0x00002138U, 0x0000213cU, 0x0000213cU
271 	};
272 
273 /* bitmask for bitfield imr_tx{t}_en */
274 	static uint32_t itr_imr_txten_msk[32] = {
275 		0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
276 		0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
277 		0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
278 		0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
279 		0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
280 		0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
281 		0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
282 		0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U
283 	};
284 
285 /* lower bit position of bitfield imr_tx{t}_en */
286 	static uint32_t itr_imr_txten_shift[32] = {
287 		31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U,
288 		31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U,
289 		31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U,
290 		31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U
291 	};
292 
293 	AQ_WRITE_REG_BIT(aq_hw, itr_imr_txten_adr[tx], itr_imr_txten_msk[tx],
294 	    itr_imr_txten_shift[tx], irq_map_en_tx);
295 }
296 
297 void
298 itr_irq_map_rx_set(struct aq_hw *aq_hw, uint32_t irq_map_rx, uint32_t rx)
299 {
300 /* register address for bitfield imr_rx{r}[4:0] */
301 	static uint32_t itr_imr_rxr_adr[32] = {
302 		0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
303 		0x00002108U, 0x00002108U, 0x0000210cU, 0x0000210cU,
304 		0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
305 		0x00002118U, 0x00002118U, 0x0000211cU, 0x0000211cU,
306 		0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
307 		0x00002128U, 0x00002128U, 0x0000212cU, 0x0000212cU,
308 		0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
309 		0x00002138U, 0x00002138U, 0x0000213cU, 0x0000213cU
310 	};
311 
312 /* bitmask for bitfield imr_rx{r}[4:0] */
313 	static uint32_t itr_imr_rxr_msk[32] = {
314 		0x00001f00U, 0x0000001fU, 0x00001f00U, 0x0000001fU,
315 		0x00001f00U, 0x0000001fU, 0x00001f00U, 0x0000001fU,
316 		0x00001f00U, 0x0000001fU, 0x00001f00U, 0x0000001fU,
317 		0x00001f00U, 0x0000001fU, 0x00001f00U, 0x0000001fU,
318 		0x00001f00U, 0x0000001fU, 0x00001f00U, 0x0000001fU,
319 		0x00001f00U, 0x0000001fU, 0x00001f00U, 0x0000001fU,
320 		0x00001f00U, 0x0000001fU, 0x00001f00U, 0x0000001fU,
321 		0x00001f00U, 0x0000001fU, 0x00001f00U, 0x0000001fU
322 	};
323 
324 /* lower bit position of bitfield imr_rx{r}[4:0] */
325 	static uint32_t itr_imr_rxr_shift[32] = {
326 		8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U,
327 		8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U,
328 		8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U,
329 		8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U
330 	};
331 
332 	AQ_WRITE_REG_BIT(aq_hw, itr_imr_rxr_adr[rx], itr_imr_rxr_msk[rx],
333 	    itr_imr_rxr_shift[rx], irq_map_rx);
334 }
335 
336 void
337 itr_irq_map_tx_set(struct aq_hw *aq_hw, uint32_t irq_map_tx, uint32_t tx)
338 {
339 /* register address for bitfield imr_tx{t}[4:0] */
340 	static uint32_t itr_imr_txt_adr[32] = {
341 		0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
342 		0x00002108U, 0x00002108U, 0x0000210cU, 0x0000210cU,
343 		0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
344 		0x00002118U, 0x00002118U, 0x0000211cU, 0x0000211cU,
345 		0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
346 		0x00002128U, 0x00002128U, 0x0000212cU, 0x0000212cU,
347 		0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
348 		0x00002138U, 0x00002138U, 0x0000213cU, 0x0000213cU
349 	};
350 
351 /* bitmask for bitfield imr_tx{t}[4:0] */
352 	static uint32_t itr_imr_txt_msk[32] = {
353 		0x1f000000U, 0x001f0000U, 0x1f000000U, 0x001f0000U,
354 		0x1f000000U, 0x001f0000U, 0x1f000000U, 0x001f0000U,
355 		0x1f000000U, 0x001f0000U, 0x1f000000U, 0x001f0000U,
356 		0x1f000000U, 0x001f0000U, 0x1f000000U, 0x001f0000U,
357 		0x1f000000U, 0x001f0000U, 0x1f000000U, 0x001f0000U,
358 		0x1f000000U, 0x001f0000U, 0x1f000000U, 0x001f0000U,
359 		0x1f000000U, 0x001f0000U, 0x1f000000U, 0x001f0000U,
360 		0x1f000000U, 0x001f0000U, 0x1f000000U, 0x001f0000U
361 	};
362 
363 /* lower bit position of bitfield imr_tx{t}[4:0] */
364 	static uint32_t itr_imr_txt_shift[32] = {
365 		24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U,
366 		24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U,
367 		24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U,
368 		24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U
369 	};
370 
371 	AQ_WRITE_REG_BIT(aq_hw, itr_imr_txt_adr[tx], itr_imr_txt_msk[tx],
372 	    itr_imr_txt_shift[tx], irq_map_tx);
373 }
374 
375 void
376 itr_irq_msk_clearlsw_set(struct aq_hw *aq_hw, uint32_t irq_msk_clearlsw)
377 {
378 	AQ_WRITE_REG(aq_hw, itr_imcrlsw_adr, irq_msk_clearlsw);
379 }
380 
381 void
382 itr_irq_msk_setlsw_set(struct aq_hw *aq_hw, uint32_t irq_msk_setlsw)
383 {
384 	AQ_WRITE_REG(aq_hw, itr_imsrlsw_adr, irq_msk_setlsw);
385 }
386 
387 void
388 itr_irq_reg_res_dis_set(struct aq_hw *aq_hw, uint32_t irq_reg_res_dis)
389 {
390 	AQ_WRITE_REG_BIT(aq_hw, itr_reg_res_dsbl_adr, itr_reg_res_dsbl_msk,
391 	    itr_reg_res_dsbl_shift, irq_reg_res_dis);
392 }
393 
394 void
395 itr_irq_status_clearlsw_set(struct aq_hw *aq_hw, uint32_t irq_status_clearlsw)
396 {
397 	AQ_WRITE_REG(aq_hw, itr_iscrlsw_adr, irq_status_clearlsw);
398 }
399 
400 uint32_t
401 itr_irq_statuslsw_get(struct aq_hw *aq_hw)
402 {
403 	return AQ_READ_REG(aq_hw, itr_isrlsw_adr);
404 }
405 
406 uint32_t
407 itr_res_irq_get(struct aq_hw *aq_hw)
408 {
409 	return AQ_READ_REG_BIT(aq_hw, itr_res_adr, itr_res_msk, itr_res_shift);
410 }
411 
412 void
413 itr_res_irq_set(struct aq_hw *aq_hw, uint32_t res_irq)
414 {
415 	AQ_WRITE_REG_BIT(aq_hw, itr_res_adr, itr_res_msk, itr_res_shift,
416 	    res_irq);
417 }
418 
419 void
420 itr_link_int_map_en_set(struct aq_hw *aq_hw, uint32_t link_int_en_map_en)
421 {
422 	AQ_WRITE_REG_BIT(aq_hw, itrImrLinkEn_ADR, itrImrLinkEn_MSK,
423 	    itrImrLinkEn_SHIFT, link_int_en_map_en);
424 }
425 
426 uint32_t
427 itr_link_int_map_en_get(struct aq_hw *aq_hw)
428 {
429 	return AQ_READ_REG_BIT(aq_hw, itrImrLinkEn_ADR, itrImrLinkEn_MSK,
430 	    itrImrLinkEn_SHIFT);
431 }
432 
433 void
434 itr_link_int_map_set(struct aq_hw *aq_hw, uint32_t link_int_map)
435 {
436 	AQ_WRITE_REG_BIT(aq_hw, itrImrLink_ADR, itrImrLink_MSK,
437 	    itrImrLink_SHIFT, link_int_map);
438 }
439 
440 uint32_t
441 itr_link_int_map_get(struct aq_hw *aq_hw)
442 {
443 	return AQ_READ_REG_BIT(aq_hw, itrImrLink_ADR, itrImrLink_MSK,
444 	    itrImrLink_SHIFT);
445 }
446 
447 void
448 itr_mif_int_map_en_set(struct aq_hw *aq_hw, uint32_t mifInterruptMappingEnable,
449     uint32_t mif)
450 {
451 	AQ_WRITE_REG_BIT(aq_hw, itrImrMifMEn_ADR(mif), itrImrMifMEn_MSK(mif),
452 	    itrImrMifMEn_SHIFT(mif), mifInterruptMappingEnable);
453 }
454 
455 uint32_t
456 itr_mif_int_map_en_get(struct aq_hw *aq_hw, uint32_t mif)
457 {
458 	return AQ_READ_REG_BIT(aq_hw, itrImrMifMEn_ADR(mif),
459 	    itrImrMifMEn_MSK(mif), itrImrMifMEn_SHIFT(mif));
460 }
461 
462 void
463 itr_mif_int_map_set(struct aq_hw *aq_hw, uint32_t mifInterruptMapping,
464     uint32_t mif)
465 {
466 	AQ_WRITE_REG_BIT(aq_hw, itrImrMifM_ADR(mif), itrImrMifM_MSK(mif),
467 	    itrImrMifM_SHIFT(mif), mifInterruptMapping);
468 }
469 
470 uint32_t
471 itr_mif_int_map_get(struct aq_hw *aq_hw, uint32_t mif)
472 {
473 	return AQ_READ_REG_BIT(aq_hw, itrImrMifM_ADR(mif), itrImrMifM_MSK(mif),
474 	    itrImrMifM_SHIFT(mif));
475 }
476 
477 void
478 itr_irq_mode_set(struct aq_hw *aq_hw, uint32_t irq_mode)
479 {
480 	AQ_WRITE_REG_BIT(aq_hw, itrIntMode_ADR, itrIntMode_MSK,
481 	    itrIntMode_SHIFT, irq_mode);
482 }
483 
484 void
485 itr_irq_status_cor_en_set(struct aq_hw *aq_hw, uint32_t irq_status_cor_en)
486 {
487 	AQ_WRITE_REG_BIT(aq_hw, itrIsrCorEn_ADR, itrIsrCorEn_MSK,
488 	    itrIsrCorEn_SHIFT, irq_status_cor_en);
489 }
490 
491 void
492 itr_irq_auto_mask_clr_en_set(struct aq_hw *aq_hw, uint32_t irq_auto_mask_clr_en)
493 {
494 	AQ_WRITE_REG_BIT(aq_hw, itrIamrClrEn_ADR, itrIamrClrEn_MSK,
495 	    itrIamrClrEn_SHIFT, irq_auto_mask_clr_en);
496 }
497 
498 /* rdm */
499 void
500 rdm_cpu_id_set(struct aq_hw *aq_hw, uint32_t cpuid, uint32_t dca)
501 {
502 	AQ_WRITE_REG_BIT(aq_hw, rdm_dcadcpuid_adr(dca), rdm_dcadcpuid_msk,
503 	    rdm_dcadcpuid_shift, cpuid);
504 }
505 
506 void
507 rdm_rx_dca_en_set(struct aq_hw *aq_hw, uint32_t rx_dca_en)
508 {
509 	AQ_WRITE_REG_BIT(aq_hw, rdm_dca_en_adr, rdm_dca_en_msk,
510 	    rdm_dca_en_shift, rx_dca_en);
511 }
512 
513 void
514 rdm_rx_dca_mode_set(struct aq_hw *aq_hw, uint32_t rx_dca_mode)
515 {
516 	AQ_WRITE_REG_BIT(aq_hw, rdm_dca_mode_adr, rdm_dca_mode_msk,
517 	    rdm_dca_mode_shift, rx_dca_mode);
518 }
519 
520 void
521 rdm_rx_desc_data_buff_size_set(struct aq_hw *aq_hw,
522     uint32_t rx_desc_data_buff_size, uint32_t descriptor)
523 {
524 	AQ_WRITE_REG_BIT(aq_hw, rdm_descddata_size_adr(descriptor),
525 	    rdm_descddata_size_msk, rdm_descddata_size_shift,
526 	    rx_desc_data_buff_size);
527 }
528 
529 void
530 rdm_rx_desc_dca_en_set(struct aq_hw *aq_hw, uint32_t rx_desc_dca_en,
531     uint32_t dca)
532 {
533 	AQ_WRITE_REG_BIT(aq_hw, rdm_dcaddesc_en_adr(dca), rdm_dcaddesc_en_msk,
534 	    rdm_dcaddesc_en_shift, rx_desc_dca_en);
535 }
536 
537 void
538 rdm_rx_desc_en_set(struct aq_hw *aq_hw, uint32_t rx_desc_en,
539     uint32_t descriptor)
540 {
541 	AQ_WRITE_REG_BIT(aq_hw, rdm_descden_adr(descriptor), rdm_descden_msk,
542 	    rdm_descden_shift, rx_desc_en);
543 }
544 
545 void
546 rdm_rx_desc_head_buff_size_set(struct aq_hw *aq_hw,
547     uint32_t rx_desc_head_buff_size, uint32_t descriptor)
548 {
549 	AQ_WRITE_REG_BIT(aq_hw, rdm_descdhdr_size_adr(descriptor),
550 	    rdm_descdhdr_size_msk, rdm_descdhdr_size_shift,
551 	    rx_desc_head_buff_size);
552 }
553 
554 void
555 rdm_rx_desc_head_splitting_set(struct aq_hw *aq_hw,
556     uint32_t rx_desc_head_splitting, uint32_t descriptor)
557 {
558 	AQ_WRITE_REG_BIT(aq_hw, rdm_descdhdr_split_adr(descriptor),
559 	    rdm_descdhdr_split_msk, rdm_descdhdr_split_shift,
560 	    rx_desc_head_splitting);
561 }
562 
563 uint32_t
564 rdm_rx_desc_head_ptr_get(struct aq_hw *aq_hw, uint32_t descriptor)
565 {
566 	return AQ_READ_REG_BIT(aq_hw, rdm_descdhd_adr(descriptor),
567 	    rdm_descdhd_msk, rdm_descdhd_shift);
568 }
569 
570 void
571 rdm_rx_desc_len_set(struct aq_hw *aq_hw, uint32_t rx_desc_len,
572     uint32_t descriptor)
573 {
574 	AQ_WRITE_REG_BIT(aq_hw, rdm_descdlen_adr(descriptor), rdm_descdlen_msk,
575 	    rdm_descdlen_shift, rx_desc_len);
576 }
577 
578 void
579 rdm_rx_desc_res_set(struct aq_hw *aq_hw, uint32_t rx_desc_res,
580     uint32_t descriptor)
581 {
582 	AQ_WRITE_REG_BIT(aq_hw, rdm_descdreset_adr(descriptor),
583 	    rdm_descdreset_msk, rdm_descdreset_shift, rx_desc_res);
584 }
585 
586 void
587 rdm_rx_desc_wr_wb_irq_en_set(struct aq_hw *aq_hw,
588     uint32_t rx_desc_wr_wb_irq_en)
589 {
590 	AQ_WRITE_REG_BIT(aq_hw, rdm_int_desc_wrb_en_adr,
591 	    rdm_int_desc_wrb_en_msk, rdm_int_desc_wrb_en_shift,
592 	    rx_desc_wr_wb_irq_en);
593 }
594 
595 void
596 rdm_rx_head_dca_en_set(struct aq_hw *aq_hw, uint32_t rx_head_dca_en,
597     uint32_t dca)
598 {
599 	AQ_WRITE_REG_BIT(aq_hw, rdm_dcadhdr_en_adr(dca), rdm_dcadhdr_en_msk,
600 	    rdm_dcadhdr_en_shift, rx_head_dca_en);
601 }
602 
603 void
604 rdm_rx_pld_dca_en_set(struct aq_hw *aq_hw, uint32_t rx_pld_dca_en, uint32_t dca)
605 {
606 	AQ_WRITE_REG_BIT(aq_hw, rdm_dcadpay_en_adr(dca), rdm_dcadpay_en_msk,
607 	    rdm_dcadpay_en_shift, rx_pld_dca_en);
608 }
609 
610 void
611 rdm_rdm_intr_moder_en_set(struct aq_hw *aq_hw, uint32_t rdm_intr_moder_en)
612 {
613 	AQ_WRITE_REG_BIT(aq_hw, rdm_int_rim_en_adr, rdm_int_rim_en_msk,
614 	    rdm_int_rim_en_shift, rdm_intr_moder_en);
615 }
616 
617 /* reg */
618 void
619 reg_gen_irq_map_set(struct aq_hw *aq_hw, uint32_t gen_intr_map, uint32_t regidx)
620 {
621 	AQ_WRITE_REG(aq_hw, gen_intr_map_adr(regidx), gen_intr_map);
622 }
623 
624 uint32_t
625 reg_gen_irq_status_get(struct aq_hw *aq_hw)
626 {
627 	return AQ_READ_REG(aq_hw, gen_intr_stat_adr);
628 }
629 
630 void
631 reg_irq_glb_ctl_set(struct aq_hw *aq_hw, uint32_t intr_glb_ctl)
632 {
633 	AQ_WRITE_REG(aq_hw, intr_glb_ctl_adr, intr_glb_ctl);
634 }
635 
636 void
637 reg_irq_thr_set(struct aq_hw *aq_hw, uint32_t intr_thr, uint32_t throttle)
638 {
639 	AQ_WRITE_REG(aq_hw, intr_thr_adr(throttle), intr_thr);
640 }
641 
642 void
643 reg_rx_dma_desc_base_addresslswset(struct aq_hw *aq_hw,
644     uint32_t rx_dma_desc_base_addrlsw, uint32_t descriptor)
645 {
646 	AQ_WRITE_REG(aq_hw, rx_dma_desc_base_addrlsw_adr(descriptor),
647 	    rx_dma_desc_base_addrlsw);
648 }
649 
650 void
651 reg_rx_dma_desc_base_addressmswset(struct aq_hw *aq_hw,
652     uint32_t rx_dma_desc_base_addrmsw, uint32_t descriptor)
653 {
654 	AQ_WRITE_REG(aq_hw, rx_dma_desc_base_addrmsw_adr(descriptor),
655 	    rx_dma_desc_base_addrmsw);
656 }
657 
658 uint32_t
659 reg_rx_dma_desc_status_get(struct aq_hw *aq_hw, uint32_t descriptor)
660 {
661 	return AQ_READ_REG(aq_hw, rx_dma_desc_stat_adr(descriptor));
662 }
663 
664 void
665 reg_rx_dma_desc_tail_ptr_set(struct aq_hw *aq_hw,
666     uint32_t rx_dma_desc_tail_ptr, uint32_t descriptor)
667 {
668 	AQ_WRITE_REG(aq_hw, rx_dma_desc_tail_ptr_adr(descriptor),
669 	    rx_dma_desc_tail_ptr);
670 }
671 
672 uint32_t
673 reg_rx_dma_desc_tail_ptr_get(struct aq_hw *aq_hw, uint32_t descriptor)
674 {
675 	return AQ_READ_REG(aq_hw, rx_dma_desc_tail_ptr_adr(descriptor));
676 }
677 
678 void
679 reg_rx_flr_mcst_flr_msk_set(struct aq_hw *aq_hw, uint32_t rx_flr_mcst_flr_msk)
680 {
681 	AQ_WRITE_REG(aq_hw, rx_flr_mcst_flr_msk_adr, rx_flr_mcst_flr_msk);
682 }
683 
684 void
685 reg_rx_flr_mcst_flr_set(struct aq_hw *aq_hw, uint32_t rx_flr_mcst_flr,
686     uint32_t filter)
687 {
688 	AQ_WRITE_REG(aq_hw, rx_flr_mcst_flr_adr(filter), rx_flr_mcst_flr);
689 }
690 
691 void
692 reg_rx_flr_rss_control1set(struct aq_hw *aq_hw, uint32_t rx_flr_rss_control1)
693 {
694 	AQ_WRITE_REG(aq_hw, rx_flr_rss_control1_adr, rx_flr_rss_control1);
695 }
696 
697 void
698 reg_rx_flr_control2_set(struct aq_hw *aq_hw, uint32_t rx_filter_control2)
699 {
700 	AQ_WRITE_REG(aq_hw, rx_flr_control2_adr, rx_filter_control2);
701 }
702 
703 void
704 reg_rx_intr_moder_ctrl_set(struct aq_hw *aq_hw,
705     uint32_t rx_intr_moderation_ctl, uint32_t queue)
706 {
707 	AQ_WRITE_REG(aq_hw, rx_intr_moderation_ctl_adr(queue),
708 	    rx_intr_moderation_ctl);
709 }
710 
711 void
712 reg_tx_dma_debug_ctl_set(struct aq_hw *aq_hw, uint32_t tx_dma_debug_ctl)
713 {
714 	AQ_WRITE_REG(aq_hw, tx_dma_debug_ctl_adr, tx_dma_debug_ctl);
715 }
716 
717 void
718 reg_tx_dma_desc_base_addresslswset(struct aq_hw *aq_hw,
719     uint32_t tx_dma_desc_base_addrlsw, uint32_t descriptor)
720 {
721 	AQ_WRITE_REG(aq_hw, tx_dma_desc_base_addrlsw_adr(descriptor),
722 	    tx_dma_desc_base_addrlsw);
723 }
724 
725 void
726 reg_tx_dma_desc_base_addressmswset(struct aq_hw *aq_hw,
727     uint32_t tx_dma_desc_base_addrmsw, uint32_t descriptor)
728 {
729 	AQ_WRITE_REG(aq_hw, tx_dma_desc_base_addrmsw_adr(descriptor),
730 	    tx_dma_desc_base_addrmsw);
731 }
732 
733 void
734 reg_tx_dma_desc_tail_ptr_set(struct aq_hw *aq_hw,
735     uint32_t tx_dma_desc_tail_ptr, uint32_t descriptor)
736 {
737 	//wmb();
738 
739 	AQ_WRITE_REG(aq_hw, tx_dma_desc_tail_ptr_adr(descriptor),
740 	    tx_dma_desc_tail_ptr);
741 }
742 
743 uint32_t
744 reg_tx_dma_desc_tail_ptr_get(struct aq_hw *aq_hw, uint32_t descriptor)
745 {
746 	return AQ_READ_REG(aq_hw, tx_dma_desc_tail_ptr_adr(descriptor));
747 }
748 
749 void
750 reg_tx_intr_moder_ctrl_set(struct aq_hw *aq_hw,
751     uint32_t tx_intr_moderation_ctl, uint32_t queue)
752 {
753 	AQ_WRITE_REG(aq_hw, tx_intr_moderation_ctl_adr(queue),
754 	    tx_intr_moderation_ctl);
755 }
756 
757 /* RPB: rx packet buffer */
758 void
759 rpb_dma_sys_lbk_set(struct aq_hw *aq_hw, uint32_t dma_sys_lbk)
760 {
761 	AQ_WRITE_REG_BIT(aq_hw, rpb_dma_sys_lbk_adr, rpb_dma_sys_lbk_msk,
762 	    rpb_dma_sys_lbk_shift, dma_sys_lbk);
763 }
764 
765 void
766 rpb_rpf_rx_traf_class_mode_set(struct aq_hw *aq_hw,
767     uint32_t rx_traf_class_mode)
768 {
769 	AQ_WRITE_REG_BIT(aq_hw, rpb_rpf_rx_tc_mode_adr, rpb_rpf_rx_tc_mode_msk,
770 	    rpb_rpf_rx_tc_mode_shift, rx_traf_class_mode);
771 }
772 
773 void
774 rpb_rx_buff_en_set(struct aq_hw *aq_hw, uint32_t rx_buff_en)
775 {
776 	AQ_WRITE_REG_BIT(aq_hw, rpb_rx_buf_en_adr, rpb_rx_buf_en_msk,
777 	    rpb_rx_buf_en_shift, rx_buff_en);
778 }
779 
780 void
781 rpb_rx_buff_hi_threshold_per_tc_set(struct aq_hw *aq_hw,
782     uint32_t rx_buff_hi_threshold_per_tc, uint32_t buffer)
783 {
784 	AQ_WRITE_REG_BIT(aq_hw, rpb_rxbhi_thresh_adr(buffer),
785 	    rpb_rxbhi_thresh_msk, rpb_rxbhi_thresh_shift,
786 	    rx_buff_hi_threshold_per_tc);
787 }
788 
789 void
790 rpb_rx_buff_lo_threshold_per_tc_set(struct aq_hw *aq_hw,
791     uint32_t rx_buff_lo_threshold_per_tc, uint32_t buffer)
792 {
793 	AQ_WRITE_REG_BIT(aq_hw, rpb_rxblo_thresh_adr(buffer),
794 	    rpb_rxblo_thresh_msk, rpb_rxblo_thresh_shift,
795 	    rx_buff_lo_threshold_per_tc);
796 }
797 
798 void
799 rpb_rx_flow_ctl_mode_set(struct aq_hw *aq_hw, uint32_t rx_flow_ctl_mode)
800 {
801 	AQ_WRITE_REG_BIT(aq_hw, rpb_rx_fc_mode_adr, rpb_rx_fc_mode_msk,
802 	    rpb_rx_fc_mode_shift, rx_flow_ctl_mode);
803 }
804 
805 void
806 rpb_rx_pkt_buff_size_per_tc_set(struct aq_hw *aq_hw,
807     uint32_t rx_pkt_buff_size_per_tc, uint32_t buffer)
808 {
809 	AQ_WRITE_REG_BIT(aq_hw, rpb_rxbbuf_size_adr(buffer),
810 	    rpb_rxbbuf_size_msk, rpb_rxbbuf_size_shift,
811 	    rx_pkt_buff_size_per_tc);
812 }
813 
814 void
815 rpb_rx_xoff_en_per_tc_set(struct aq_hw *aq_hw, uint32_t rx_xoff_en_per_tc,
816     uint32_t buffer)
817 {
818 	AQ_WRITE_REG_BIT(aq_hw, rpb_rxbxoff_en_adr(buffer),
819 	    rpb_rxbxoff_en_msk, rpb_rxbxoff_en_shift, rx_xoff_en_per_tc);
820 }
821 
822 /* rpf */
823 
824 void
825 rpfl2broadcast_count_threshold_set(struct aq_hw *aq_hw,
826     uint32_t l2broadcast_count_threshold)
827 {
828 	AQ_WRITE_REG_BIT(aq_hw, rpfl2bc_thresh_adr, rpfl2bc_thresh_msk,
829 	    rpfl2bc_thresh_shift, l2broadcast_count_threshold);
830 }
831 
832 void
833 rpfl2broadcast_en_set(struct aq_hw *aq_hw, uint32_t l2broadcast_en)
834 {
835 	AQ_WRITE_REG_BIT(aq_hw, rpfl2bc_en_adr, rpfl2bc_en_msk,
836 	    rpfl2bc_en_shift, l2broadcast_en);
837 }
838 
839 void
840 rpfl2broadcast_flr_act_set(struct aq_hw *aq_hw, uint32_t l2broadcast_flr_act)
841 {
842 	AQ_WRITE_REG_BIT(aq_hw, rpfl2bc_act_adr, rpfl2bc_act_msk,
843 	    rpfl2bc_act_shift, l2broadcast_flr_act);
844 }
845 
846 void
847 rpfl2multicast_flr_en_set(struct aq_hw *aq_hw, uint32_t l2multicast_flr_en,
848     uint32_t filter)
849 {
850 	AQ_WRITE_REG_BIT(aq_hw, rpfl2mc_enf_adr(filter), rpfl2mc_enf_msk,
851 	    rpfl2mc_enf_shift, l2multicast_flr_en);
852 }
853 
854 void
855 rpfl2promiscuous_mode_en_set(struct aq_hw *aq_hw,
856     uint32_t l2promiscuous_mode_en)
857 {
858 	AQ_WRITE_REG_BIT(aq_hw, rpfl2promis_mode_adr, rpfl2promis_mode_msk,
859 	    rpfl2promis_mode_shift, l2promiscuous_mode_en);
860 }
861 
862 void
863 rpfl2unicast_flr_act_set(struct aq_hw *aq_hw, uint32_t l2unicast_flr_act,
864     uint32_t filter)
865 {
866 	AQ_WRITE_REG_BIT(aq_hw, rpfl2uc_actf_adr(filter), rpfl2uc_actf_msk,
867 	    rpfl2uc_actf_shift, l2unicast_flr_act);
868 }
869 
870 void
871 rpfl2_uc_flr_en_set(struct aq_hw *aq_hw, uint32_t l2unicast_flr_en,
872     uint32_t filter)
873 {
874 	AQ_WRITE_REG_BIT(aq_hw, rpfl2uc_enf_adr(filter), rpfl2uc_enf_msk,
875 	    rpfl2uc_enf_shift, l2unicast_flr_en);
876 }
877 
878 void
879 rpfl2unicast_dest_addresslsw_set(struct aq_hw *aq_hw,
880     uint32_t l2unicast_dest_addresslsw, uint32_t filter)
881 {
882 	AQ_WRITE_REG(aq_hw, rpfl2uc_daflsw_adr(filter),
883 	    l2unicast_dest_addresslsw);
884 }
885 
886 void
887 rpfl2unicast_dest_addressmsw_set(struct aq_hw *aq_hw,
888     uint32_t l2unicast_dest_addressmsw, uint32_t filter)
889 {
890 	AQ_WRITE_REG_BIT(aq_hw, rpfl2uc_dafmsw_adr(filter), rpfl2uc_dafmsw_msk,
891 	    rpfl2uc_dafmsw_shift, l2unicast_dest_addressmsw);
892 }
893 
894 void
895 rpfl2_accept_all_mc_packets_set(struct aq_hw *aq_hw,
896     uint32_t l2_accept_all_mc_packets)
897 {
898 	AQ_WRITE_REG_BIT(aq_hw, rpfl2mc_accept_all_adr, rpfl2mc_accept_all_msk,
899 	    rpfl2mc_accept_all_shift, l2_accept_all_mc_packets);
900 }
901 
902 void
903 rpf_rpb_user_priority_tc_map_set(struct aq_hw *aq_hw,
904     uint32_t user_priority_tc_map, uint32_t tc)
905 {
906 /* register address for bitfield rx_tc_up{t}[2:0] */
907 	static uint32_t rpf_rpb_rx_tc_upt_adr[8] = {
908 		0x000054c4U, 0x000054c4U, 0x000054c4U, 0x000054c4U,
909 		0x000054c4U, 0x000054c4U, 0x000054c4U, 0x000054c4U
910 	};
911 
912 /* bitmask for bitfield rx_tc_up{t}[2:0] */
913 	static uint32_t rpf_rpb_rx_tc_upt_msk[8] = {
914 		0x00000007U, 0x00000070U, 0x00000700U, 0x00007000U,
915 		0x00070000U, 0x00700000U, 0x07000000U, 0x70000000U
916 	};
917 
918 /* lower bit position of bitfield rx_tc_up{t}[2:0] */
919 	static uint32_t rpf_rpb_rx_tc_upt_shft[8] = {
920 		0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U
921 	};
922 
923 	AQ_WRITE_REG_BIT(aq_hw, rpf_rpb_rx_tc_upt_adr[tc],
924 	    rpf_rpb_rx_tc_upt_msk[tc], rpf_rpb_rx_tc_upt_shft[tc],
925 	    user_priority_tc_map);
926 }
927 
928 void
929 rpf_rss_key_addr_set(struct aq_hw *aq_hw, uint32_t rss_key_addr)
930 {
931 	AQ_WRITE_REG_BIT(aq_hw, rpf_rss_key_addr_adr, rpf_rss_key_addr_msk,
932 	    rpf_rss_key_addr_shift, rss_key_addr);
933 }
934 
935 void
936 rpf_rss_key_wr_data_set(struct aq_hw *aq_hw, uint32_t rss_key_wr_data)
937 {
938 	AQ_WRITE_REG(aq_hw, rpf_rss_key_wr_data_adr, rss_key_wr_data);
939 }
940 
941 uint32_t
942 rpf_rss_key_rd_data_get(struct aq_hw *aq_hw)
943 {
944 	return AQ_READ_REG(aq_hw, rpf_rss_key_rd_data_adr);
945 }
946 
947 uint32_t
948 rpf_rss_key_wr_en_get(struct aq_hw *aq_hw)
949 {
950 	return AQ_READ_REG_BIT(aq_hw, rpf_rss_key_wr_eni_adr,
951 	    rpf_rss_key_wr_eni_msk, rpf_rss_key_wr_eni_shift);
952 }
953 
954 void
955 rpf_rss_key_wr_en_set(struct aq_hw *aq_hw, uint32_t rss_key_wr_en)
956 {
957 	AQ_WRITE_REG_BIT(aq_hw, rpf_rss_key_wr_eni_adr,
958 	    rpf_rss_key_wr_eni_msk, rpf_rss_key_wr_eni_shift,
959 	    rss_key_wr_en);
960 }
961 
962 void
963 rpf_rss_redir_tbl_addr_set(struct aq_hw *aq_hw, uint32_t rss_redir_tbl_addr)
964 {
965 	AQ_WRITE_REG_BIT(aq_hw, rpf_rss_redir_addr_adr, rpf_rss_redir_addr_msk,
966 	    rpf_rss_redir_addr_shift, rss_redir_tbl_addr);
967 }
968 
969 void
970 rpf_rss_redir_tbl_wr_data_set(struct aq_hw *aq_hw,
971     uint32_t rss_redir_tbl_wr_data)
972 {
973 	AQ_WRITE_REG_BIT(aq_hw, rpf_rss_redir_wr_data_adr,
974 	    rpf_rss_redir_wr_data_msk, rpf_rss_redir_wr_data_shift,
975 	    rss_redir_tbl_wr_data);
976 }
977 
978 uint32_t
979 rpf_rss_redir_wr_en_get(struct aq_hw *aq_hw)
980 {
981 	return AQ_READ_REG_BIT(aq_hw, rpf_rss_redir_wr_eni_adr,
982 	    rpf_rss_redir_wr_eni_msk, rpf_rss_redir_wr_eni_shift);
983 }
984 
985 void
986 rpf_rss_redir_wr_en_set(struct aq_hw *aq_hw, uint32_t rss_redir_wr_en)
987 {
988 	AQ_WRITE_REG_BIT(aq_hw, rpf_rss_redir_wr_eni_adr,
989 	    rpf_rss_redir_wr_eni_msk, rpf_rss_redir_wr_eni_shift,
990 	    rss_redir_wr_en);
991 }
992 
993 void
994 rpf_tpo_to_rpf_sys_lbk_set(struct aq_hw *aq_hw, uint32_t tpo_to_rpf_sys_lbk)
995 {
996 	AQ_WRITE_REG_BIT(aq_hw, rpf_tpo_rpf_sys_lbk_adr,
997 	    rpf_tpo_rpf_sys_lbk_msk, rpf_tpo_rpf_sys_lbk_shift,
998 	    tpo_to_rpf_sys_lbk);
999 }
1000 
1001 
1002 void
1003 hw_atl_rpf_vlan_inner_etht_set(struct aq_hw_s *aq_hw, uint32_t vlan_inner_etht)
1004 {
1005 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_INNER_TPID_ADR,
1006 			    HW_ATL_RPF_VL_INNER_TPID_MSK,
1007 			    HW_ATL_RPF_VL_INNER_TPID_SHIFT,
1008 			    vlan_inner_etht);
1009 }
1010 
1011 void
1012 hw_atl_rpf_vlan_outer_etht_set(struct aq_hw_s *aq_hw, uint32_t vlan_outer_etht)
1013 {
1014 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_OUTER_TPID_ADR,
1015 			    HW_ATL_RPF_VL_OUTER_TPID_MSK,
1016 			    HW_ATL_RPF_VL_OUTER_TPID_SHIFT,
1017 			    vlan_outer_etht);
1018 }
1019 
1020 void
1021 hw_atl_rpf_vlan_prom_mode_en_set(struct aq_hw_s *aq_hw,
1022     uint32_t vlan_prom_mode_en)
1023 {
1024 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_PROMIS_MODE_ADR,
1025 			    HW_ATL_RPF_VL_PROMIS_MODE_MSK,
1026 			    HW_ATL_RPF_VL_PROMIS_MODE_SHIFT,
1027 			    vlan_prom_mode_en);
1028 }
1029 
1030 void
1031 hw_atl_rpf_vlan_accept_untagged_packets_set(struct aq_hw_s *aq_hw,
1032     uint32_t vlan_acc_untagged_packets)
1033 {
1034 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_ACCEPT_UNTAGGED_MODE_ADR,
1035 			    HW_ATL_RPF_VL_ACCEPT_UNTAGGED_MODE_MSK,
1036 			    HW_ATL_RPF_VL_ACCEPT_UNTAGGED_MODE_SHIFT,
1037 			    vlan_acc_untagged_packets);
1038 }
1039 
1040 void
1041 hw_atl_rpf_vlan_untagged_act_set(struct aq_hw_s *aq_hw,
1042     uint32_t vlan_untagged_act)
1043 {
1044 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_UNTAGGED_ACT_ADR,
1045 			    HW_ATL_RPF_VL_UNTAGGED_ACT_MSK,
1046 			    HW_ATL_RPF_VL_UNTAGGED_ACT_SHIFT,
1047 			    vlan_untagged_act);
1048 }
1049 
1050 void
1051 hw_atl_rpf_vlan_flr_en_set(struct aq_hw_s *aq_hw, uint32_t vlan_flr_en,
1052     uint32_t filter)
1053 {
1054 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_EN_F_ADR(filter),
1055 			    HW_ATL_RPF_VL_EN_F_MSK,
1056 			    HW_ATL_RPF_VL_EN_F_SHIFT,
1057 			    vlan_flr_en);
1058 }
1059 
1060 void
1061 hw_atl_rpf_vlan_flr_act_set(struct aq_hw_s *aq_hw, uint32_t vlan_flr_act,
1062     uint32_t filter)
1063 {
1064 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_ACT_F_ADR(filter),
1065 			    HW_ATL_RPF_VL_ACT_F_MSK,
1066 			    HW_ATL_RPF_VL_ACT_F_SHIFT,
1067 			    vlan_flr_act);
1068 }
1069 
1070 void
1071 hw_atl_rpf_vlan_id_flr_set(struct aq_hw_s *aq_hw, uint32_t vlan_id_flr,
1072     uint32_t filter)
1073 {
1074 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_ID_F_ADR(filter),
1075 			    HW_ATL_RPF_VL_ID_F_MSK,
1076 			    HW_ATL_RPF_VL_ID_F_SHIFT,
1077 			    vlan_id_flr);
1078 }
1079 
1080 void
1081 hw_atl_rpf_vlan_rxq_en_flr_set(struct aq_hw_s *aq_hw, uint32_t vlan_rxq_en,
1082     uint32_t filter)
1083 {
1084 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_RXQ_EN_F_ADR(filter),
1085 			    HW_ATL_RPF_VL_RXQ_EN_F_MSK,
1086 			    HW_ATL_RPF_VL_RXQ_EN_F_SHIFT,
1087 			    vlan_rxq_en);
1088 }
1089 
1090 void
1091 hw_atl_rpf_vlan_rxq_flr_set(struct aq_hw_s *aq_hw, uint32_t vlan_rxq,
1092     uint32_t filter)
1093 {
1094 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_RXQ_F_ADR(filter),
1095 			    HW_ATL_RPF_VL_RXQ_F_MSK,
1096 			    HW_ATL_RPF_VL_RXQ_F_SHIFT,
1097 			    vlan_rxq);
1098 };
1099 
1100 void
1101 hw_atl_rpf_etht_flr_en_set(struct aq_hw_s *aq_hw, uint32_t etht_flr_en,
1102     uint32_t filter)
1103 {
1104 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_ENF_ADR(filter),
1105 			    HW_ATL_RPF_ET_ENF_MSK,
1106 			    HW_ATL_RPF_ET_ENF_SHIFT, etht_flr_en);
1107 }
1108 
1109 void
1110 hw_atl_rpf_etht_user_priority_en_set(struct aq_hw_s *aq_hw,
1111     uint32_t etht_user_priority_en, uint32_t filter)
1112 {
1113 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_UPFEN_ADR(filter),
1114 			    HW_ATL_RPF_ET_UPFEN_MSK, HW_ATL_RPF_ET_UPFEN_SHIFT,
1115 			    etht_user_priority_en);
1116 }
1117 
1118 void
1119 hw_atl_rpf_etht_rx_queue_en_set(struct aq_hw_s *aq_hw,
1120     uint32_t etht_rx_queue_en, uint32_t filter)
1121 {
1122 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_RXQFEN_ADR(filter),
1123 			    HW_ATL_RPF_ET_RXQFEN_MSK,
1124 			    HW_ATL_RPF_ET_RXQFEN_SHIFT,
1125 			    etht_rx_queue_en);
1126 }
1127 
1128 void
1129 hw_atl_rpf_etht_user_priority_set(struct aq_hw_s *aq_hw,
1130     uint32_t etht_user_priority, uint32_t filter)
1131 {
1132 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_UPF_ADR(filter),
1133 			    HW_ATL_RPF_ET_UPF_MSK,
1134 			    HW_ATL_RPF_ET_UPF_SHIFT, etht_user_priority);
1135 }
1136 
1137 void
1138 hw_atl_rpf_etht_rx_queue_set(struct aq_hw_s *aq_hw, uint32_t etht_rx_queue,
1139 				  uint32_t filter)
1140 {
1141 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_RXQF_ADR(filter),
1142 			    HW_ATL_RPF_ET_RXQF_MSK,
1143 			    HW_ATL_RPF_ET_RXQF_SHIFT, etht_rx_queue);
1144 }
1145 
1146 void
1147 hw_atl_rpf_etht_mgt_queue_set(struct aq_hw_s *aq_hw, uint32_t etht_mgt_queue,
1148 				   uint32_t filter)
1149 {
1150 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_MNG_RXQF_ADR(filter),
1151 			    HW_ATL_RPF_ET_MNG_RXQF_MSK,
1152 			    HW_ATL_RPF_ET_MNG_RXQF_SHIFT,
1153 			    etht_mgt_queue);
1154 }
1155 
1156 void
1157 hw_atl_rpf_etht_flr_act_set(struct aq_hw_s *aq_hw, uint32_t etht_flr_act,
1158 				 uint32_t filter)
1159 {
1160 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_ACTF_ADR(filter),
1161 			    HW_ATL_RPF_ET_ACTF_MSK,
1162 			    HW_ATL_RPF_ET_ACTF_SHIFT, etht_flr_act);
1163 }
1164 
1165 void
1166 hw_atl_rpf_etht_flr_set(struct aq_hw_s *aq_hw, uint32_t etht_flr,
1167     uint32_t filter)
1168 {
1169 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_VALF_ADR(filter),
1170 			    HW_ATL_RPF_ET_VALF_MSK,
1171 			    HW_ATL_RPF_ET_VALF_SHIFT, etht_flr);
1172 }
1173 
1174 void
1175 hw_atl_rpf_l3_l4_enf_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1176 {
1177 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L3_L4_ENF_ADR(filter),
1178 			HW_ATL_RPF_L3_L4_ENF_MSK,
1179 			HW_ATL_RPF_L3_L4_ENF_SHIFT, val);
1180 }
1181 
1182 void
1183 hw_atl_rpf_l3_v6_enf_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1184 {
1185 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L3_V6_ENF_ADR(filter),
1186 			HW_ATL_RPF_L3_V6_ENF_MSK,
1187 			HW_ATL_RPF_L3_V6_ENF_SHIFT, val);
1188 }
1189 
1190 void
1191 hw_atl_rpf_l3_saf_en_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1192 {
1193 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L3_SAF_EN_ADR(filter),
1194 			HW_ATL_RPF_L3_SAF_EN_MSK,
1195 			HW_ATL_RPF_L3_SAF_EN_SHIFT, val);
1196 }
1197 
1198 void
1199 hw_atl_rpf_l3_daf_en_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1200 {
1201 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L3_DAF_EN_ADR(filter),
1202 			HW_ATL_RPF_L3_DAF_EN_MSK,
1203 			HW_ATL_RPF_L3_DAF_EN_SHIFT, val);
1204 }
1205 
1206 void
1207 hw_atl_rpf_l4_spf_en_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1208 {
1209 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L4_SPF_EN_ADR(filter),
1210 			HW_ATL_RPF_L4_SPF_EN_MSK,
1211 			HW_ATL_RPF_L4_SPF_EN_SHIFT, val);
1212 }
1213 
1214 void
1215 hw_atl_rpf_l4_dpf_en_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1216 {
1217 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L4_DPF_EN_ADR(filter),
1218 			HW_ATL_RPF_L4_DPF_EN_MSK,
1219 			HW_ATL_RPF_L4_DPF_EN_SHIFT, val);
1220 }
1221 
1222 void
1223 hw_atl_rpf_l4_protf_en_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1224 {
1225 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L4_PROTF_EN_ADR(filter),
1226 			HW_ATL_RPF_L4_PROTF_EN_MSK,
1227 			HW_ATL_RPF_L4_PROTF_EN_SHIFT, val);
1228 }
1229 
1230 void
1231 hw_atl_rpf_l3_arpf_en_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1232 {
1233 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L3_ARPF_EN_ADR(filter),
1234 			HW_ATL_RPF_L3_ARPF_EN_MSK,
1235 			HW_ATL_RPF_L3_ARPF_EN_SHIFT, val);
1236 }
1237 
1238 void
1239 hw_atl_rpf_l3_l4_rxqf_en_set(struct aq_hw_s *aq_hw, uint32_t val,
1240     uint32_t filter)
1241 {
1242 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L3_L4_RXQF_EN_ADR(filter),
1243 			HW_ATL_RPF_L3_L4_RXQF_EN_MSK,
1244 			HW_ATL_RPF_L3_L4_RXQF_EN_SHIFT, val);
1245 }
1246 
1247 void
1248 hw_atl_rpf_l3_l4_mng_rxqf_set(struct aq_hw_s *aq_hw, uint32_t val,
1249     uint32_t filter)
1250 {
1251 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L3_L4_MNG_RXQF_ADR(filter),
1252 			HW_ATL_RPF_L3_L4_MNG_RXQF_MSK,
1253 			HW_ATL_RPF_L3_L4_MNG_RXQF_SHIFT, val);
1254 }
1255 
1256 void
1257 hw_atl_rpf_l3_l4_actf_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1258 {
1259 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L3_L4_ACTF_ADR(filter),
1260 			HW_ATL_RPF_L3_L4_ACTF_MSK,
1261 			HW_ATL_RPF_L3_L4_ACTF_SHIFT, val);
1262 }
1263 
1264 void
1265 hw_atl_rpf_l3_l4_rxqf_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1266 {
1267 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L3_L4_RXQF_ADR(filter),
1268 			HW_ATL_RPF_L3_L4_RXQF_MSK,
1269 			HW_ATL_RPF_L3_L4_RXQF_SHIFT, val);
1270 }
1271 
1272 void
1273 hw_atl_rpf_l4_protf_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1274 {
1275 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L4_PROTF_ADR(filter),
1276 			HW_ATL_RPF_L4_PROTF_MSK,
1277 			HW_ATL_RPF_L4_PROTF_SHIFT, val);
1278 }
1279 
1280 void
1281 hw_atl_rpf_l4_spd_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1282 {
1283 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L4_SPD_ADR(filter),
1284 			HW_ATL_RPF_L4_SPD_MSK,
1285 			HW_ATL_RPF_L4_SPD_SHIFT, val);
1286 }
1287 
1288 void
1289 hw_atl_rpf_l4_dpd_set(struct aq_hw_s *aq_hw, uint32_t val, uint32_t filter)
1290 {
1291 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L4_DPD_ADR(filter),
1292 			HW_ATL_RPF_L4_DPD_MSK,
1293 			HW_ATL_RPF_L4_DPD_SHIFT, val);
1294 }
1295 
1296 void
1297 rpf_vlan_inner_etht_set(struct aq_hw *aq_hw, uint32_t vlan_inner_etht)
1298 {
1299 	AQ_WRITE_REG_BIT(aq_hw, rpf_vl_inner_tpid_adr, rpf_vl_inner_tpid_msk,
1300 	    rpf_vl_inner_tpid_shift, vlan_inner_etht);
1301 }
1302 
1303 void
1304 rpf_vlan_outer_etht_set(struct aq_hw *aq_hw, uint32_t vlan_outer_etht)
1305 {
1306 	AQ_WRITE_REG_BIT(aq_hw, rpf_vl_outer_tpid_adr, rpf_vl_outer_tpid_msk,
1307 	    rpf_vl_outer_tpid_shift, vlan_outer_etht);
1308 }
1309 
1310 void
1311 rpf_vlan_prom_mode_en_set(struct aq_hw *aq_hw, uint32_t vlan_prom_mode_en)
1312 {
1313 	AQ_WRITE_REG_BIT(aq_hw, rpf_vl_promis_mode_adr, rpf_vl_promis_mode_msk,
1314 	    rpf_vl_promis_mode_shift, vlan_prom_mode_en);
1315 }
1316 
1317 void
1318 rpf_vlan_accept_untagged_packets_set(struct aq_hw *aq_hw,
1319     uint32_t vlan_accept_untagged_packets)
1320 {
1321 	AQ_WRITE_REG_BIT(aq_hw, rpf_vl_accept_untagged_mode_adr,
1322 	    rpf_vl_accept_untagged_mode_msk, rpf_vl_accept_untagged_mode_shift,
1323 	    vlan_accept_untagged_packets);
1324 }
1325 
1326 void
1327 rpf_vlan_untagged_act_set(struct aq_hw *aq_hw, uint32_t vlan_untagged_act)
1328 {
1329 	AQ_WRITE_REG_BIT(aq_hw, rpf_vl_untagged_act_adr,
1330 	    rpf_vl_untagged_act_msk, rpf_vl_untagged_act_shift,
1331 	    vlan_untagged_act);
1332 }
1333 
1334 void
1335 rpf_vlan_flr_en_set(struct aq_hw *aq_hw, uint32_t vlan_flr_en, uint32_t filter)
1336 {
1337 	AQ_WRITE_REG_BIT(aq_hw, rpf_vl_en_f_adr(filter), rpf_vl_en_f_msk,
1338 	    rpf_vl_en_f_shift, vlan_flr_en);
1339 }
1340 
1341 void
1342 rpf_vlan_flr_act_set(struct aq_hw *aq_hw, uint32_t vlan_flr_act,
1343     uint32_t filter)
1344 {
1345 	AQ_WRITE_REG_BIT(aq_hw, rpf_vl_act_f_adr(filter), rpf_vl_act_f_msk,
1346 	    rpf_vl_act_f_shift, vlan_flr_act);
1347 }
1348 
1349 void
1350 rpf_vlan_id_flr_set(struct aq_hw *aq_hw, uint32_t vlan_id_flr, uint32_t filter)
1351 {
1352 	AQ_WRITE_REG_BIT(aq_hw, rpf_vl_id_f_adr(filter), rpf_vl_id_f_msk,
1353 	    rpf_vl_id_f_shift, vlan_id_flr);
1354 }
1355 
1356 void
1357 rpf_etht_flr_en_set(struct aq_hw *aq_hw, uint32_t etht_flr_en, uint32_t filter)
1358 {
1359 	AQ_WRITE_REG_BIT(aq_hw, rpf_et_enf_adr(filter), rpf_et_enf_msk,
1360 	    rpf_et_enf_shift, etht_flr_en);
1361 }
1362 
1363 void
1364 rpf_etht_user_priority_en_set(struct aq_hw *aq_hw,
1365     uint32_t etht_user_priority_en, uint32_t filter)
1366 {
1367 	AQ_WRITE_REG_BIT(aq_hw, rpf_et_upfen_adr(filter), rpf_et_upfen_msk,
1368 	    rpf_et_upfen_shift, etht_user_priority_en);
1369 }
1370 
1371 void
1372 rpf_etht_rx_queue_en_set(struct aq_hw *aq_hw, uint32_t etht_rx_queue_en,
1373     uint32_t filter)
1374 {
1375 	AQ_WRITE_REG_BIT(aq_hw, rpf_et_rxqfen_adr(filter), rpf_et_rxqfen_msk,
1376 	    rpf_et_rxqfen_shift, etht_rx_queue_en);
1377 }
1378 
1379 void
1380 rpf_etht_user_priority_set(struct aq_hw *aq_hw, uint32_t etht_user_priority,
1381     uint32_t filter)
1382 {
1383 	AQ_WRITE_REG_BIT(aq_hw, rpf_et_upf_adr(filter), rpf_et_upf_msk,
1384 	    rpf_et_upf_shift, etht_user_priority);
1385 }
1386 
1387 void
1388 rpf_etht_rx_queue_set(struct aq_hw *aq_hw, uint32_t etht_rx_queue,
1389     uint32_t filter)
1390 {
1391 	AQ_WRITE_REG_BIT(aq_hw, rpf_et_rxqf_adr(filter), rpf_et_rxqf_msk,
1392 	    rpf_et_rxqf_shift, etht_rx_queue);
1393 }
1394 
1395 void
1396 rpf_etht_mgt_queue_set(struct aq_hw *aq_hw, uint32_t etht_mgt_queue,
1397     uint32_t filter)
1398 {
1399 	AQ_WRITE_REG_BIT(aq_hw, rpf_et_mng_rxqf_adr(filter),
1400 	    rpf_et_mng_rxqf_msk, rpf_et_mng_rxqf_shift, etht_mgt_queue);
1401 }
1402 
1403 void
1404 rpf_etht_flr_act_set(struct aq_hw *aq_hw, uint32_t etht_flr_act,
1405     uint32_t filter)
1406 {
1407 	AQ_WRITE_REG_BIT(aq_hw, rpf_et_actf_adr(filter), rpf_et_actf_msk,
1408 	    rpf_et_actf_shift, etht_flr_act);
1409 }
1410 
1411 void
1412 rpf_etht_flr_set(struct aq_hw *aq_hw, uint32_t etht_flr, uint32_t filter)
1413 {
1414 	AQ_WRITE_REG_BIT(aq_hw, rpf_et_valf_adr(filter), rpf_et_valf_msk,
1415 	    rpf_et_valf_shift, etht_flr);
1416 }
1417 
1418 /* RPO: rx packet offload */
1419 void
1420 rpo_ipv4header_crc_offload_en_set(struct aq_hw *aq_hw,
1421     uint32_t ipv4header_crc_offload_en)
1422 {
1423 	AQ_WRITE_REG_BIT(aq_hw, rpo_ipv4chk_en_adr, rpo_ipv4chk_en_msk,
1424 	    rpo_ipv4chk_en_shift, ipv4header_crc_offload_en);
1425 }
1426 
1427 void
1428 rpo_rx_desc_vlan_stripping_set(struct aq_hw *aq_hw,
1429     uint32_t rx_desc_vlan_stripping, uint32_t descriptor)
1430 {
1431 	AQ_WRITE_REG_BIT(aq_hw, rpo_descdvl_strip_adr(descriptor),
1432 	    rpo_descdvl_strip_msk, rpo_descdvl_strip_shift,
1433 	    rx_desc_vlan_stripping);
1434 }
1435 
1436 void
1437 rpo_tcp_udp_crc_offload_en_set(struct aq_hw *aq_hw,
1438     uint32_t tcp_udp_crc_offload_en)
1439 {
1440 	AQ_WRITE_REG_BIT(aq_hw, rpol4chk_en_adr, rpol4chk_en_msk,
1441 	    rpol4chk_en_shift, tcp_udp_crc_offload_en);
1442 }
1443 
1444 void
1445 rpo_lro_en_set(struct aq_hw *aq_hw, uint32_t lro_en)
1446 {
1447 	AQ_WRITE_REG(aq_hw, rpo_lro_en_adr, lro_en);
1448 }
1449 
1450 void
1451 rpo_lro_patch_optimization_en_set(struct aq_hw *aq_hw,
1452     uint32_t lro_patch_optimization_en)
1453 {
1454 	AQ_WRITE_REG_BIT(aq_hw, rpo_lro_ptopt_en_adr, rpo_lro_ptopt_en_msk,
1455 	    rpo_lro_ptopt_en_shift, lro_patch_optimization_en);
1456 }
1457 
1458 void
1459 rpo_lro_qsessions_lim_set(struct aq_hw *aq_hw, uint32_t lro_qsessions_lim)
1460 {
1461 	AQ_WRITE_REG_BIT(aq_hw, rpo_lro_qses_lmt_adr, rpo_lro_qses_lmt_msk,
1462 	    rpo_lro_qses_lmt_shift, lro_qsessions_lim);
1463 }
1464 
1465 void
1466 rpo_lro_total_desc_lim_set(struct aq_hw *aq_hw, uint32_t lro_total_desc_lim)
1467 {
1468 	AQ_WRITE_REG_BIT(aq_hw, rpo_lro_tot_dsc_lmt_adr,
1469 	    rpo_lro_tot_dsc_lmt_msk, rpo_lro_tot_dsc_lmt_shift,
1470 	    lro_total_desc_lim);
1471 }
1472 
1473 void
1474 rpo_lro_min_pay_of_first_pkt_set(struct aq_hw *aq_hw,
1475     uint32_t lro_min_pld_of_first_pkt)
1476 {
1477 	AQ_WRITE_REG_BIT(aq_hw, rpo_lro_pkt_min_adr, rpo_lro_pkt_min_msk,
1478 	    rpo_lro_pkt_min_shift, lro_min_pld_of_first_pkt);
1479 }
1480 
1481 void
1482 rpo_lro_pkt_lim_set(struct aq_hw *aq_hw, uint32_t lro_pkt_lim)
1483 {
1484 	AQ_WRITE_REG(aq_hw, rpo_lro_rsc_max_adr, lro_pkt_lim);
1485 }
1486 
1487 void
1488 rpo_lro_max_num_of_descriptors_set(struct aq_hw *aq_hw,
1489     uint32_t lro_max_number_of_descriptors, uint32_t lro)
1490 {
1491 /* Register address for bitfield lro{L}_des_max[1:0] */
1492 	static uint32_t rpo_lro_ldes_max_adr[32] = {
1493 		0x000055A0U, 0x000055A0U, 0x000055A0U, 0x000055A0U,
1494 		0x000055A0U, 0x000055A0U, 0x000055A0U, 0x000055A0U,
1495 		0x000055A4U, 0x000055A4U, 0x000055A4U, 0x000055A4U,
1496 		0x000055A4U, 0x000055A4U, 0x000055A4U, 0x000055A4U,
1497 		0x000055A8U, 0x000055A8U, 0x000055A8U, 0x000055A8U,
1498 		0x000055A8U, 0x000055A8U, 0x000055A8U, 0x000055A8U,
1499 		0x000055ACU, 0x000055ACU, 0x000055ACU, 0x000055ACU,
1500 		0x000055ACU, 0x000055ACU, 0x000055ACU, 0x000055ACU
1501 	};
1502 
1503 /* Bitmask for bitfield lro{L}_des_max[1:0] */
1504 	static uint32_t rpo_lro_ldes_max_msk[32] = {
1505 		0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1506 		0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U,
1507 		0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1508 		0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U,
1509 		0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1510 		0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U,
1511 		0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1512 		0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U
1513 	};
1514 
1515 /* Lower bit position of bitfield lro{L}_des_max[1:0] */
1516 	static uint32_t rpo_lro_ldes_max_shift[32] = {
1517 		0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U,
1518 		0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U,
1519 		0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U,
1520 		0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U
1521 	};
1522 
1523 	AQ_WRITE_REG_BIT(aq_hw, rpo_lro_ldes_max_adr[lro],
1524 	    rpo_lro_ldes_max_msk[lro], rpo_lro_ldes_max_shift[lro],
1525 	    lro_max_number_of_descriptors);
1526 }
1527 
1528 void
1529 rpo_lro_time_base_divider_set(struct aq_hw *aq_hw,
1530     uint32_t lro_time_base_divider)
1531 {
1532 	AQ_WRITE_REG_BIT(aq_hw, rpo_lro_tb_div_adr, rpo_lro_tb_div_msk,
1533 	    rpo_lro_tb_div_shift, lro_time_base_divider);
1534 }
1535 
1536 void
1537 rpo_lro_inactive_interval_set(struct aq_hw *aq_hw,
1538     uint32_t lro_inactive_interval)
1539 {
1540 	AQ_WRITE_REG_BIT(aq_hw, rpo_lro_ina_ival_adr, rpo_lro_ina_ival_msk,
1541 	    rpo_lro_ina_ival_shift, lro_inactive_interval);
1542 }
1543 
1544 void
1545 rpo_lro_max_coalescing_interval_set(struct aq_hw *aq_hw,
1546     uint32_t lro_max_coalescing_interval)
1547 {
1548 	AQ_WRITE_REG_BIT(aq_hw, rpo_lro_max_ival_adr, rpo_lro_max_ival_msk,
1549 	    rpo_lro_max_ival_shift, lro_max_coalescing_interval);
1550 }
1551 
1552 /* rx */
1553 void
1554 rx_rx_reg_res_dis_set(struct aq_hw *aq_hw, uint32_t rx_reg_res_dis)
1555 {
1556 	AQ_WRITE_REG_BIT(aq_hw, rx_reg_res_dsbl_adr, rx_reg_res_dsbl_msk,
1557 	    rx_reg_res_dsbl_shift, rx_reg_res_dis);
1558 }
1559 
1560 /* tdm */
1561 void
1562 tdm_cpu_id_set(struct aq_hw *aq_hw, uint32_t cpuid, uint32_t dca)
1563 {
1564 	AQ_WRITE_REG_BIT(aq_hw, tdm_dcadcpuid_adr(dca), tdm_dcadcpuid_msk,
1565 	    tdm_dcadcpuid_shift, cpuid);
1566 }
1567 
1568 void
1569 tdm_large_send_offload_en_set(struct aq_hw *aq_hw,
1570     uint32_t large_send_offload_en)
1571 {
1572 	AQ_WRITE_REG(aq_hw, tdm_lso_en_adr, large_send_offload_en);
1573 }
1574 
1575 void
1576 tdm_tx_dca_en_set(struct aq_hw *aq_hw, uint32_t tx_dca_en)
1577 {
1578 	AQ_WRITE_REG_BIT(aq_hw, tdm_dca_en_adr, tdm_dca_en_msk,
1579 	    tdm_dca_en_shift, tx_dca_en);
1580 }
1581 
1582 void
1583 tdm_tx_dca_mode_set(struct aq_hw *aq_hw, uint32_t tx_dca_mode)
1584 {
1585 	AQ_WRITE_REG_BIT(aq_hw, tdm_dca_mode_adr, tdm_dca_mode_msk,
1586 	    tdm_dca_mode_shift, tx_dca_mode);
1587 }
1588 
1589 void
1590 tdm_tx_desc_dca_en_set(struct aq_hw *aq_hw, uint32_t tx_desc_dca_en,
1591     uint32_t dca)
1592 {
1593 	AQ_WRITE_REG_BIT(aq_hw, tdm_dcaddesc_en_adr(dca), tdm_dcaddesc_en_msk,
1594 	    tdm_dcaddesc_en_shift, tx_desc_dca_en);
1595 }
1596 
1597 void
1598 tdm_tx_desc_en_set(struct aq_hw *aq_hw, uint32_t tx_desc_en,
1599     uint32_t descriptor)
1600 {
1601 	AQ_WRITE_REG_BIT(aq_hw, tdm_descden_adr(descriptor), tdm_descden_msk,
1602 	    tdm_descden_shift, tx_desc_en);
1603 }
1604 
1605 uint32_t
1606 tdm_tx_desc_head_ptr_get(struct aq_hw *aq_hw, uint32_t descriptor)
1607 {
1608 	return AQ_READ_REG_BIT(aq_hw, tdm_descdhd_adr(descriptor),
1609 	    tdm_descdhd_msk, tdm_descdhd_shift);
1610 }
1611 
1612 void
1613 tdm_tx_desc_len_set(struct aq_hw *aq_hw, uint32_t tx_desc_len,
1614     uint32_t descriptor)
1615 {
1616 	AQ_WRITE_REG_BIT(aq_hw, tdm_descdlen_adr(descriptor), tdm_descdlen_msk,
1617 	    tdm_descdlen_shift, tx_desc_len);
1618 }
1619 
1620 void
1621 tdm_tx_desc_wr_wb_irq_en_set(struct aq_hw *aq_hw, uint32_t tx_desc_wr_wb_irq_en)
1622 {
1623 	AQ_WRITE_REG_BIT(aq_hw, tdm_int_desc_wrb_en_adr,
1624 	    tdm_int_desc_wrb_en_msk, tdm_int_desc_wrb_en_shift,
1625 	    tx_desc_wr_wb_irq_en);
1626 }
1627 
1628 void
1629 tdm_tx_desc_wr_wb_threshold_set(struct aq_hw *aq_hw,
1630     uint32_t tx_desc_wr_wb_threshold, uint32_t descriptor)
1631 {
1632 	AQ_WRITE_REG_BIT(aq_hw, tdm_descdwrb_thresh_adr(descriptor),
1633 	    tdm_descdwrb_thresh_msk, tdm_descdwrb_thresh_shift,
1634 	    tx_desc_wr_wb_threshold);
1635 }
1636 
1637 void
1638 tdm_tdm_intr_moder_en_set(struct aq_hw *aq_hw, uint32_t tdm_irq_moderation_en)
1639 {
1640 	AQ_WRITE_REG_BIT(aq_hw, tdm_int_mod_en_adr, tdm_int_mod_en_msk,
1641 	    tdm_int_mod_en_shift, tdm_irq_moderation_en);
1642 }
1643 
1644 /* thm */
1645 void
1646 thm_lso_tcp_flag_of_first_pkt_set(struct aq_hw *aq_hw,
1647     uint32_t lso_tcp_flag_of_first_pkt)
1648 {
1649 	AQ_WRITE_REG_BIT(aq_hw, thm_lso_tcp_flag_first_adr,
1650 	    thm_lso_tcp_flag_first_msk, thm_lso_tcp_flag_first_shift,
1651 	    lso_tcp_flag_of_first_pkt);
1652 }
1653 
1654 void
1655 thm_lso_tcp_flag_of_last_pkt_set(struct aq_hw *aq_hw,
1656     uint32_t lso_tcp_flag_of_last_pkt)
1657 {
1658 	AQ_WRITE_REG_BIT(aq_hw, thm_lso_tcp_flag_last_adr,
1659 	    thm_lso_tcp_flag_last_msk, thm_lso_tcp_flag_last_shift,
1660 	    lso_tcp_flag_of_last_pkt);
1661 }
1662 
1663 void
1664 thm_lso_tcp_flag_of_middle_pkt_set(struct aq_hw *aq_hw,
1665     uint32_t lso_tcp_flag_of_middle_pkt)
1666 {
1667 	AQ_WRITE_REG_BIT(aq_hw, thm_lso_tcp_flag_mid_adr,
1668 	    thm_lso_tcp_flag_mid_msk, thm_lso_tcp_flag_mid_shift,
1669 	    lso_tcp_flag_of_middle_pkt);
1670 }
1671 
1672 /* TPB: tx packet buffer */
1673 void
1674 tpb_tx_buff_en_set(struct aq_hw *aq_hw, uint32_t tx_buff_en)
1675 {
1676 	AQ_WRITE_REG_BIT(aq_hw, tpb_tx_buf_en_adr, tpb_tx_buf_en_msk,
1677 	    tpb_tx_buf_en_shift, tx_buff_en);
1678 }
1679 
1680 void
1681 tpb_tx_tc_mode_set(struct aq_hw *aq_hw, uint32_t tc_mode)
1682 {
1683 	AQ_WRITE_REG_BIT(aq_hw, tpb_tx_tc_mode_adr, tpb_tx_tc_mode_msk,
1684 	    tpb_tx_tc_mode_shift, tc_mode);
1685 }
1686 
1687 void
1688 tpb_tx_buff_hi_threshold_per_tc_set(struct aq_hw *aq_hw,
1689     uint32_t tx_buff_hi_threshold_per_tc, uint32_t buffer)
1690 {
1691 	AQ_WRITE_REG_BIT(aq_hw, tpb_txbhi_thresh_adr(buffer),
1692 	    tpb_txbhi_thresh_msk, tpb_txbhi_thresh_shift,
1693 	    tx_buff_hi_threshold_per_tc);
1694 }
1695 
1696 void
1697 tpb_tx_buff_lo_threshold_per_tc_set(struct aq_hw *aq_hw,
1698     uint32_t tx_buff_lo_threshold_per_tc, uint32_t buffer)
1699 {
1700 	AQ_WRITE_REG_BIT(aq_hw, tpb_txblo_thresh_adr(buffer),
1701 	    tpb_txblo_thresh_msk, tpb_txblo_thresh_shift,
1702 	    tx_buff_lo_threshold_per_tc);
1703 }
1704 
1705 void
1706 tpb_tx_dma_sys_lbk_en_set(struct aq_hw *aq_hw, uint32_t tx_dma_sys_lbk_en)
1707 {
1708 	AQ_WRITE_REG_BIT(aq_hw, tpb_dma_sys_lbk_adr, tpb_dma_sys_lbk_msk,
1709 	    tpb_dma_sys_lbk_shift, tx_dma_sys_lbk_en);
1710 }
1711 
1712 void
1713 rdm_rx_dma_desc_cache_init_tgl(struct aq_hw *aq_hw)
1714 {
1715 	AQ_WRITE_REG_BIT(aq_hw, rdm_rx_dma_desc_cache_init_adr,
1716 	    rdm_rx_dma_desc_cache_init_msk, rdm_rx_dma_desc_cache_init_shift,
1717 	    AQ_READ_REG_BIT(aq_hw, rdm_rx_dma_desc_cache_init_adr,
1718 	    rdm_rx_dma_desc_cache_init_msk,
1719 	    rdm_rx_dma_desc_cache_init_shift) ^ 1
1720 	);
1721 }
1722 
1723 void
1724 tpb_tx_pkt_buff_size_per_tc_set(struct aq_hw *aq_hw,
1725     uint32_t tx_pkt_buff_size_per_tc, uint32_t buffer)
1726 {
1727 	AQ_WRITE_REG_BIT(aq_hw, tpb_txbbuf_size_adr(buffer),
1728 	    tpb_txbbuf_size_msk, tpb_txbbuf_size_shift,
1729 	    tx_pkt_buff_size_per_tc);
1730 }
1731 
1732 void
1733 tpb_tx_path_scp_ins_en_set(struct aq_hw *aq_hw, uint32_t tx_path_scp_ins_en)
1734 {
1735 	AQ_WRITE_REG_BIT(aq_hw, tpb_tx_scp_ins_en_adr, tpb_tx_scp_ins_en_msk,
1736 	    tpb_tx_scp_ins_en_shift, tx_path_scp_ins_en);
1737 }
1738 
1739 /* TPO: tx packet offload */
1740 void
1741 tpo_ipv4header_crc_offload_en_set(struct aq_hw *aq_hw,
1742     uint32_t ipv4header_crc_offload_en)
1743 {
1744 	AQ_WRITE_REG_BIT(aq_hw, tpo_ipv4chk_en_adr, tpo_ipv4chk_en_msk,
1745 	    tpo_ipv4chk_en_shift, ipv4header_crc_offload_en);
1746 }
1747 
1748 void
1749 tpo_tcp_udp_crc_offload_en_set(struct aq_hw *aq_hw,
1750     uint32_t tcp_udp_crc_offload_en)
1751 {
1752 	AQ_WRITE_REG_BIT(aq_hw, tpol4chk_en_adr, tpol4chk_en_msk,
1753 	    tpol4chk_en_shift, tcp_udp_crc_offload_en);
1754 }
1755 
1756 void
1757 tpo_tx_pkt_sys_lbk_en_set(struct aq_hw *aq_hw, uint32_t tx_pkt_sys_lbk_en)
1758 {
1759 	AQ_WRITE_REG_BIT(aq_hw, tpo_pkt_sys_lbk_adr, tpo_pkt_sys_lbk_msk,
1760 	    tpo_pkt_sys_lbk_shift, tx_pkt_sys_lbk_en);
1761 }
1762 
1763 /* TPS: tx packet scheduler */
1764 void
1765 tps_tx_pkt_shed_data_arb_mode_set(struct aq_hw *aq_hw,
1766     uint32_t tx_pkt_shed_data_arb_mode)
1767 {
1768 	AQ_WRITE_REG_BIT(aq_hw, tps_data_tc_arb_mode_adr,
1769 	    tps_data_tc_arb_mode_msk, tps_data_tc_arb_mode_shift,
1770 	    tx_pkt_shed_data_arb_mode);
1771 }
1772 
1773 void
1774 tps_tx_pkt_shed_desc_rate_curr_time_res_set(struct aq_hw *aq_hw,
1775     uint32_t curr_time_res)
1776 {
1777 	AQ_WRITE_REG_BIT(aq_hw, tps_desc_rate_ta_rst_adr,
1778 	    tps_desc_rate_ta_rst_msk, tps_desc_rate_ta_rst_shift,
1779 	    curr_time_res);
1780 }
1781 
1782 void
1783 tps_tx_pkt_shed_desc_rate_lim_set(struct aq_hw *aq_hw,
1784     uint32_t tx_pkt_shed_desc_rate_lim)
1785 {
1786 	AQ_WRITE_REG_BIT(aq_hw, tps_desc_rate_lim_adr, tps_desc_rate_lim_msk,
1787 	    tps_desc_rate_lim_shift, tx_pkt_shed_desc_rate_lim);
1788 }
1789 
1790 void
1791 tps_tx_pkt_shed_desc_tc_arb_mode_set(struct aq_hw *aq_hw,
1792     uint32_t tx_pkt_shed_desc_tc_arb_mode)
1793 {
1794 	AQ_WRITE_REG_BIT(aq_hw, tps_desc_tc_arb_mode_adr,
1795 	    tps_desc_tc_arb_mode_msk, tps_desc_tc_arb_mode_shift,
1796 	    tx_pkt_shed_desc_tc_arb_mode);
1797 }
1798 
1799 void
1800 tps_tx_pkt_shed_desc_tc_max_credit_set(struct aq_hw *aq_hw,
1801     uint32_t tx_pkt_shed_desc_tc_max_credit, uint32_t tc)
1802 {
1803 	AQ_WRITE_REG_BIT(aq_hw, tps_desc_tctcredit_max_adr(tc),
1804 	    tps_desc_tctcredit_max_msk, tps_desc_tctcredit_max_shift,
1805 	    tx_pkt_shed_desc_tc_max_credit);
1806 }
1807 
1808 void
1809 tps_tx_pkt_shed_desc_tc_weight_set(struct aq_hw *aq_hw,
1810     uint32_t tx_pkt_shed_desc_tc_weight, uint32_t tc)
1811 {
1812 	AQ_WRITE_REG_BIT(aq_hw, tps_desc_tctweight_adr(tc),
1813 	    tps_desc_tctweight_msk, tps_desc_tctweight_shift,
1814 	    tx_pkt_shed_desc_tc_weight);
1815 }
1816 
1817 void
1818 tps_tx_pkt_shed_desc_vm_arb_mode_set(struct aq_hw *aq_hw,
1819     uint32_t tx_pkt_shed_desc_vm_arb_mode)
1820 {
1821 	AQ_WRITE_REG_BIT(aq_hw, tps_desc_vm_arb_mode_adr,
1822 	    tps_desc_vm_arb_mode_msk, tps_desc_vm_arb_mode_shift,
1823 	    tx_pkt_shed_desc_vm_arb_mode);
1824 }
1825 
1826 void
1827 tps_tx_pkt_shed_tc_data_max_credit_set(struct aq_hw *aq_hw,
1828     uint32_t tx_pkt_shed_tc_data_max_credit, uint32_t tc)
1829 {
1830 	AQ_WRITE_REG_BIT(aq_hw, tps_data_tctcredit_max_adr(tc),
1831 	    tps_data_tctcredit_max_msk, tps_data_tctcredit_max_shift,
1832 	    tx_pkt_shed_tc_data_max_credit);
1833 }
1834 
1835 void
1836 tps_tx_pkt_shed_tc_data_weight_set(struct aq_hw *aq_hw,
1837     uint32_t tx_pkt_shed_tc_data_weight, uint32_t tc)
1838 {
1839 	AQ_WRITE_REG_BIT(aq_hw, tps_data_tctweight_adr(tc),
1840 	    tps_data_tctweight_msk, tps_data_tctweight_shift,
1841 	    tx_pkt_shed_tc_data_weight);
1842 }
1843 
1844 /* tx */
1845 void
1846 tx_tx_reg_res_dis_set(struct aq_hw *aq_hw, uint32_t tx_reg_res_dis)
1847 {
1848 	AQ_WRITE_REG_BIT(aq_hw, tx_reg_res_dsbl_adr, tx_reg_res_dsbl_msk,
1849 	    tx_reg_res_dsbl_shift, tx_reg_res_dis);
1850 }
1851 
1852 /* msm */
1853 uint32_t
1854 msm_reg_access_status_get(struct aq_hw *aq_hw)
1855 {
1856 	return AQ_READ_REG_BIT(aq_hw, msm_reg_access_busy_adr,
1857 	    msm_reg_access_busy_msk, msm_reg_access_busy_shift);
1858 }
1859 
1860 void
1861 msm_reg_addr_for_indirect_addr_set(struct aq_hw *aq_hw,
1862     uint32_t reg_addr_for_indirect_addr)
1863 {
1864 	AQ_WRITE_REG_BIT(aq_hw, msm_reg_addr_adr, msm_reg_addr_msk,
1865 	    msm_reg_addr_shift, reg_addr_for_indirect_addr);
1866 }
1867 
1868 void
1869 msm_reg_rd_strobe_set(struct aq_hw *aq_hw, uint32_t reg_rd_strobe)
1870 {
1871 	AQ_WRITE_REG_BIT(aq_hw, msm_reg_rd_strobe_adr, msm_reg_rd_strobe_msk,
1872 	    msm_reg_rd_strobe_shift, reg_rd_strobe);
1873 }
1874 
1875 uint32_t
1876 msm_reg_rd_data_get(struct aq_hw *aq_hw)
1877 {
1878 	return AQ_READ_REG(aq_hw, msm_reg_rd_data_adr);
1879 }
1880 
1881 void
1882 msm_reg_wr_data_set(struct aq_hw *aq_hw, uint32_t reg_wr_data)
1883 {
1884 	AQ_WRITE_REG(aq_hw, msm_reg_wr_data_adr, reg_wr_data);
1885 }
1886 
1887 void
1888 msm_reg_wr_strobe_set(struct aq_hw *aq_hw, uint32_t reg_wr_strobe)
1889 {
1890 	AQ_WRITE_REG_BIT(aq_hw, msm_reg_wr_strobe_adr, msm_reg_wr_strobe_msk,
1891 	    msm_reg_wr_strobe_shift, reg_wr_strobe);
1892 }
1893 
1894 /* pci */
1895 void
1896 pci_pci_reg_res_dis_set(struct aq_hw *aq_hw, uint32_t pci_reg_res_dis)
1897 {
1898 	AQ_WRITE_REG_BIT(aq_hw, pci_reg_res_dsbl_adr, pci_reg_res_dsbl_msk,
1899 	    pci_reg_res_dsbl_shift, pci_reg_res_dis);
1900 }
1901 
1902 uint32_t
1903 reg_glb_cpu_scratch_scp_get(struct aq_hw *hw, uint32_t glb_cpu_scratch_scp_idx)
1904 {
1905 	return AQ_READ_REG(hw,
1906 	    glb_cpu_scratch_scp_adr(glb_cpu_scratch_scp_idx));
1907 }
1908 void
1909 reg_glb_cpu_scratch_scp_set(struct aq_hw *aq_hw, uint32_t glb_cpu_scratch_scp,
1910     uint32_t scratch_scp)
1911 {
1912 	AQ_WRITE_REG(aq_hw, glb_cpu_scratch_scp_adr(scratch_scp),
1913 	    glb_cpu_scratch_scp);
1914 }
1915 
1916 uint32_t
1917 reg_glb_cpu_no_reset_scratchpad_get(struct aq_hw *hw, uint32_t index)
1918 {
1919 	return AQ_READ_REG(hw, glb_cpu_no_reset_scratchpad_adr(index));
1920 }
1921 void
1922 reg_glb_cpu_no_reset_scratchpad_set(struct aq_hw* hw, uint32_t value,
1923     uint32_t index)
1924 {
1925 	AQ_WRITE_REG(hw, glb_cpu_no_reset_scratchpad_adr(index), value);
1926 }
1927 
1928 void
1929 reg_mif_power_gating_enable_control_set(struct aq_hw* hw, uint32_t value)
1930 {
1931 	AQ_WRITE_REG(hw, mif_power_gating_enable_control_adr, value);
1932 
1933 }
1934 uint32_t
1935 reg_mif_power_gating_enable_control_get(struct aq_hw* hw)
1936 {
1937 	return AQ_READ_REG(hw, mif_power_gating_enable_control_adr);
1938 }
1939 
1940 
1941 void
1942 reg_glb_general_provisioning9_set(struct aq_hw* hw, uint32_t value)
1943 {
1944 	AQ_WRITE_REG(hw, glb_general_provisioning9_adr, value);
1945 }
1946 uint32_t
1947 reg_glb_general_provisioning9_get(struct aq_hw* hw)
1948 {
1949 	return AQ_READ_REG(hw, glb_general_provisioning9_adr);
1950 }
1951 
1952 void
1953 reg_glb_nvr_provisioning2_set(struct aq_hw* hw, uint32_t value)
1954 {
1955 	AQ_WRITE_REG(hw, glb_nvr_provisioning2_adr, value);
1956 }
1957 uint32_t
1958 reg_glb_nvr_provisioning2_get(struct aq_hw* hw)
1959 {
1960 	return AQ_READ_REG(hw, glb_nvr_provisioning2_adr);
1961 }
1962 
1963 void
1964 reg_glb_nvr_interface1_set(struct aq_hw* hw, uint32_t value)
1965 {
1966 	AQ_WRITE_REG(hw, glb_nvr_interface1_adr, value);
1967 }
1968 uint32_t
1969 reg_glb_nvr_interface1_get(struct aq_hw* hw)
1970 {
1971 	return AQ_READ_REG(hw, glb_nvr_interface1_adr);
1972 }
1973 
1974 /* get mif up mailbox busy */
1975 uint32_t
1976 mif_mcp_up_mailbox_busy_get(struct aq_hw *hw)
1977 {
1978 	return AQ_READ_REG_BIT(hw, mif_mcp_up_mailbox_busy_adr,
1979 	    mif_mcp_up_mailbox_busy_msk, mif_mcp_up_mailbox_busy_shift);
1980 }
1981 
1982 /* set mif up mailbox execute operation */
1983 void
1984 mif_mcp_up_mailbox_execute_operation_set(struct aq_hw* hw, uint32_t value)
1985 {
1986 	AQ_WRITE_REG_BIT(hw, mif_mcp_up_mailbox_execute_operation_adr,
1987 	    mif_mcp_up_mailbox_execute_operation_msk,
1988 	    mif_mcp_up_mailbox_execute_operation_shift, value);
1989 }
1990 /* get mif uP mailbox address */
1991 uint32_t
1992 mif_mcp_up_mailbox_addr_get(struct aq_hw *hw)
1993 {
1994 	return AQ_READ_REG(hw, mif_mcp_up_mailbox_addr_adr);
1995 }
1996 /* set mif uP mailbox address */
1997 void
1998 mif_mcp_up_mailbox_addr_set(struct aq_hw *hw, uint32_t value)
1999 {
2000 	AQ_WRITE_REG(hw, mif_mcp_up_mailbox_addr_adr, value);
2001 }
2002 
2003 /* get mif uP mailbox data */
2004 uint32_t
2005 mif_mcp_up_mailbox_data_get(struct aq_hw *hw)
2006 {
2007 	return AQ_READ_REG(hw, mif_mcp_up_mailbox_data_adr);
2008 }
2009 
2010 void
2011 hw_atl_rpfl3l4_ipv4_dest_addr_clear(struct aq_hw_s *aq_hw, uint8_t location)
2012 {
2013 	aq_hw_write_reg(aq_hw, HW_ATL_RX_GET_ADDR_DESTA_FL3L4(location), 0U);
2014 }
2015 
2016 void
2017 hw_atl_rpfl3l4_ipv4_src_addr_clear(struct aq_hw_s *aq_hw, uint8_t location)
2018 {
2019 	aq_hw_write_reg(aq_hw, HW_ATL_RX_GET_ADDR_SRCA_FL3L4(location), 0U);
2020 }
2021 
2022 void
2023 hw_atl_rpfl3l4_cmd_clear(struct aq_hw_s *aq_hw, uint8_t location)
2024 {
2025 	aq_hw_write_reg(aq_hw, HW_ATL_RX_GET_ADDR_CTRL_FL3L4(location), 0U);
2026 }
2027 
2028 void
2029 hw_atl_rpfl3l4_ipv6_dest_addr_clear(struct aq_hw_s *aq_hw, uint8_t location)
2030 {
2031 	int i;
2032 
2033 	for (i = 0; i < 4; ++i)
2034 		aq_hw_write_reg(aq_hw,
2035 		    HW_ATL_RX_GET_ADDR_DESTA_FL3L4(location + i), 0U);
2036 }
2037 
2038 void
2039 hw_atl_rpfl3l4_ipv6_src_addr_clear(struct aq_hw_s *aq_hw, uint8_t location)
2040 {
2041 	int i;
2042 
2043 	for (i = 0; i < 4; ++i)
2044 		aq_hw_write_reg(aq_hw,
2045 		    HW_ATL_RX_GET_ADDR_SRCA_FL3L4(location + i), 0U);
2046 }
2047 
2048 void
2049 hw_atl_rpfl3l4_ipv4_dest_addr_set(struct aq_hw_s *aq_hw, uint8_t location,
2050     uint32_t ipv4_dest)
2051 {
2052 	aq_hw_write_reg(aq_hw, HW_ATL_RX_GET_ADDR_DESTA_FL3L4(location),
2053 	    ipv4_dest);
2054 }
2055 
2056 void
2057 hw_atl_rpfl3l4_ipv4_src_addr_set(struct aq_hw_s *aq_hw, uint8_t location,
2058     uint32_t ipv4_src)
2059 {
2060 	aq_hw_write_reg(aq_hw, HW_ATL_RX_GET_ADDR_SRCA_FL3L4(location),
2061 	    ipv4_src);
2062 }
2063 
2064 void
2065 hw_atl_rpfl3l4_cmd_set(struct aq_hw_s *aq_hw, uint8_t location, uint32_t cmd)
2066 {
2067 	aq_hw_write_reg(aq_hw, HW_ATL_RX_GET_ADDR_CTRL_FL3L4(location), cmd);
2068 }
2069 
2070 void
2071 hw_atl_rpfl3l4_ipv6_src_addr_set(struct aq_hw_s *aq_hw, uint8_t location,
2072     uint32_t *ipv6_src)
2073 {
2074 	int i;
2075 
2076 	for (i = 0; i < 4; ++i)
2077 		aq_hw_write_reg(aq_hw,
2078 		    HW_ATL_RX_GET_ADDR_SRCA_FL3L4(location + i), ipv6_src[i]);
2079 }
2080 
2081 void
2082 hw_atl_rpfl3l4_ipv6_dest_addr_set(struct aq_hw_s *aq_hw, uint8_t location,
2083     uint32_t *ipv6_dest)
2084 {
2085 	int i;
2086 
2087 	for (i = 0; i < 4; ++i)
2088 		aq_hw_write_reg(aq_hw,
2089 		    HW_ATL_RX_GET_ADDR_DESTA_FL3L4(location + i), ipv6_dest[i]);
2090 }
2091