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
reg_glb_fw_image_id1_set(struct aq_hw * hw,uint32_t value)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
reg_glb_fw_image_id1_get(struct aq_hw * hw)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
reg_glb_cpu_sem_set(struct aq_hw * aq_hw,uint32_t sem_value,uint32_t sem_index)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
reg_glb_cpu_sem_get(struct aq_hw * aq_hw,uint32_t sem_index)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
reg_glb_standard_ctl1_get(struct aq_hw * hw)70 reg_glb_standard_ctl1_get(struct aq_hw* hw)
71 {
72 return AQ_READ_REG(hw, glb_standard_ctl1_adr);
73 }
74 void
reg_glb_standard_ctl1_set(struct aq_hw * hw,uint32_t glb_standard_ctl1)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
reg_global_ctl2_set(struct aq_hw * hw,uint32_t global_ctl2)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
reg_global_ctl2_get(struct aq_hw * hw)86 reg_global_ctl2_get(struct aq_hw* hw)
87 {
88 return AQ_READ_REG(hw, glb_ctl2_adr);
89 }
90
91 void
reg_glb_daisy_chain_status1_set(struct aq_hw * hw,uint32_t glb_daisy_chain_status1)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
reg_glb_daisy_chain_status1_get(struct aq_hw * hw)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
glb_glb_reg_res_dis_set(struct aq_hw * aq_hw,uint32_t glb_reg_res_dis)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
glb_soft_res_set(struct aq_hw * aq_hw,uint32_t soft_res)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
glb_soft_res_get(struct aq_hw * aq_hw)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
reg_rx_dma_stat_counter7get(struct aq_hw * aq_hw)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
reg_glb_mif_id_get(struct aq_hw * aq_hw)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
mpi_tx_reg_res_dis_set(struct aq_hw * hw,uint32_t mpi_tx_reg_res_dis)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
mpi_tx_reg_res_dis_get(struct aq_hw * hw)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
rpb_rx_dma_drop_pkt_cnt_get(struct aq_hw * aq_hw)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
stats_rx_dma_good_octet_counterlsw_get(struct aq_hw * aq_hw)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
stats_rx_dma_good_pkt_counterlsw_get(struct aq_hw * aq_hw)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
stats_tx_dma_good_octet_counterlsw_get(struct aq_hw * aq_hw)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
stats_tx_dma_good_pkt_counterlsw_get(struct aq_hw * aq_hw)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
stats_rx_dma_good_octet_countermsw_get(struct aq_hw * aq_hw)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
stats_rx_dma_good_pkt_countermsw_get(struct aq_hw * aq_hw)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
stats_tx_dma_good_octet_countermsw_get(struct aq_hw * aq_hw)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
stats_tx_dma_good_pkt_countermsw_get(struct aq_hw * aq_hw)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
stats_rx_lro_coalesced_pkt_count0_get(struct aq_hw * aq_hw)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
itr_irq_auto_masklsw_set(struct aq_hw * aq_hw,uint32_t irq_auto_masklsw)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
itr_irq_map_en_rx_set(struct aq_hw * aq_hw,uint32_t irq_map_en_rx,uint32_t rx)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
itr_irq_map_en_tx_set(struct aq_hw * aq_hw,uint32_t irq_map_en_tx,uint32_t tx)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
itr_irq_map_rx_set(struct aq_hw * aq_hw,uint32_t irq_map_rx,uint32_t rx)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
itr_irq_map_tx_set(struct aq_hw * aq_hw,uint32_t irq_map_tx,uint32_t tx)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
itr_irq_msk_clearlsw_set(struct aq_hw * aq_hw,uint32_t irq_msk_clearlsw)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
itr_irq_msk_setlsw_set(struct aq_hw * aq_hw,uint32_t irq_msk_setlsw)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
itr_irq_reg_res_dis_set(struct aq_hw * aq_hw,uint32_t irq_reg_res_dis)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
itr_irq_status_clearlsw_set(struct aq_hw * aq_hw,uint32_t irq_status_clearlsw)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
itr_irq_statuslsw_get(struct aq_hw * aq_hw)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
itr_res_irq_get(struct aq_hw * aq_hw)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
itr_res_irq_set(struct aq_hw * aq_hw,uint32_t res_irq)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
itr_link_int_map_en_set(struct aq_hw * aq_hw,uint32_t link_int_en_map_en)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
itr_link_int_map_en_get(struct aq_hw * aq_hw)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
itr_link_int_map_set(struct aq_hw * aq_hw,uint32_t link_int_map)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
itr_link_int_map_get(struct aq_hw * aq_hw)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
itr_mif_int_map_en_set(struct aq_hw * aq_hw,uint32_t mifInterruptMappingEnable,uint32_t mif)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
itr_mif_int_map_en_get(struct aq_hw * aq_hw,uint32_t mif)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
itr_mif_int_map_set(struct aq_hw * aq_hw,uint32_t mifInterruptMapping,uint32_t mif)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
itr_mif_int_map_get(struct aq_hw * aq_hw,uint32_t mif)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
itr_irq_mode_set(struct aq_hw * aq_hw,uint32_t irq_mode)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
itr_irq_status_cor_en_set(struct aq_hw * aq_hw,uint32_t irq_status_cor_en)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
itr_irq_auto_mask_clr_en_set(struct aq_hw * aq_hw,uint32_t irq_auto_mask_clr_en)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
rdm_cpu_id_set(struct aq_hw * aq_hw,uint32_t cpuid,uint32_t dca)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
rdm_rx_dca_en_set(struct aq_hw * aq_hw,uint32_t rx_dca_en)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
rdm_rx_dca_mode_set(struct aq_hw * aq_hw,uint32_t rx_dca_mode)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
rdm_rx_desc_data_buff_size_set(struct aq_hw * aq_hw,uint32_t rx_desc_data_buff_size,uint32_t descriptor)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
rdm_rx_desc_dca_en_set(struct aq_hw * aq_hw,uint32_t rx_desc_dca_en,uint32_t dca)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
rdm_rx_desc_en_set(struct aq_hw * aq_hw,uint32_t rx_desc_en,uint32_t descriptor)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
rdm_rx_desc_head_buff_size_set(struct aq_hw * aq_hw,uint32_t rx_desc_head_buff_size,uint32_t descriptor)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
rdm_rx_desc_head_splitting_set(struct aq_hw * aq_hw,uint32_t rx_desc_head_splitting,uint32_t descriptor)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
rdm_rx_desc_head_ptr_get(struct aq_hw * aq_hw,uint32_t descriptor)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
rdm_rx_desc_len_set(struct aq_hw * aq_hw,uint32_t rx_desc_len,uint32_t descriptor)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
rdm_rx_desc_res_set(struct aq_hw * aq_hw,uint32_t rx_desc_res,uint32_t descriptor)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
rdm_rx_desc_wr_wb_irq_en_set(struct aq_hw * aq_hw,uint32_t rx_desc_wr_wb_irq_en)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
rdm_rx_head_dca_en_set(struct aq_hw * aq_hw,uint32_t rx_head_dca_en,uint32_t dca)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
rdm_rx_pld_dca_en_set(struct aq_hw * aq_hw,uint32_t rx_pld_dca_en,uint32_t dca)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
rdm_rdm_intr_moder_en_set(struct aq_hw * aq_hw,uint32_t rdm_intr_moder_en)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
reg_gen_irq_map_set(struct aq_hw * aq_hw,uint32_t gen_intr_map,uint32_t regidx)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
reg_gen_irq_status_get(struct aq_hw * aq_hw)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
reg_irq_glb_ctl_set(struct aq_hw * aq_hw,uint32_t intr_glb_ctl)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
reg_irq_thr_set(struct aq_hw * aq_hw,uint32_t intr_thr,uint32_t throttle)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
reg_rx_dma_desc_base_addresslswset(struct aq_hw * aq_hw,uint32_t rx_dma_desc_base_addrlsw,uint32_t descriptor)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
reg_rx_dma_desc_base_addressmswset(struct aq_hw * aq_hw,uint32_t rx_dma_desc_base_addrmsw,uint32_t descriptor)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
reg_rx_dma_desc_status_get(struct aq_hw * aq_hw,uint32_t descriptor)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
reg_rx_dma_desc_tail_ptr_set(struct aq_hw * aq_hw,uint32_t rx_dma_desc_tail_ptr,uint32_t descriptor)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
reg_rx_dma_desc_tail_ptr_get(struct aq_hw * aq_hw,uint32_t descriptor)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
reg_rx_flr_mcst_flr_msk_set(struct aq_hw * aq_hw,uint32_t rx_flr_mcst_flr_msk)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
reg_rx_flr_mcst_flr_set(struct aq_hw * aq_hw,uint32_t rx_flr_mcst_flr,uint32_t filter)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
reg_rx_flr_rss_control1set(struct aq_hw * aq_hw,uint32_t rx_flr_rss_control1)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
reg_rx_flr_control2_set(struct aq_hw * aq_hw,uint32_t rx_filter_control2)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
reg_rx_intr_moder_ctrl_set(struct aq_hw * aq_hw,uint32_t rx_intr_moderation_ctl,uint32_t queue)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
reg_tx_dma_debug_ctl_set(struct aq_hw * aq_hw,uint32_t tx_dma_debug_ctl)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
reg_tx_dma_desc_base_addresslswset(struct aq_hw * aq_hw,uint32_t tx_dma_desc_base_addrlsw,uint32_t descriptor)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
reg_tx_dma_desc_base_addressmswset(struct aq_hw * aq_hw,uint32_t tx_dma_desc_base_addrmsw,uint32_t descriptor)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
reg_tx_dma_desc_tail_ptr_set(struct aq_hw * aq_hw,uint32_t tx_dma_desc_tail_ptr,uint32_t descriptor)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
reg_tx_dma_desc_tail_ptr_get(struct aq_hw * aq_hw,uint32_t descriptor)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
reg_tx_intr_moder_ctrl_set(struct aq_hw * aq_hw,uint32_t tx_intr_moderation_ctl,uint32_t queue)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
rpb_dma_sys_lbk_set(struct aq_hw * aq_hw,uint32_t dma_sys_lbk)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
rpb_rpf_rx_traf_class_mode_set(struct aq_hw * aq_hw,uint32_t rx_traf_class_mode)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
rpb_rx_buff_en_set(struct aq_hw * aq_hw,uint32_t rx_buff_en)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
rpb_rx_buff_hi_threshold_per_tc_set(struct aq_hw * aq_hw,uint32_t rx_buff_hi_threshold_per_tc,uint32_t buffer)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
rpb_rx_buff_lo_threshold_per_tc_set(struct aq_hw * aq_hw,uint32_t rx_buff_lo_threshold_per_tc,uint32_t buffer)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
rpb_rx_flow_ctl_mode_set(struct aq_hw * aq_hw,uint32_t rx_flow_ctl_mode)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
rpb_rx_pkt_buff_size_per_tc_set(struct aq_hw * aq_hw,uint32_t rx_pkt_buff_size_per_tc,uint32_t buffer)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
rpb_rx_xoff_en_per_tc_set(struct aq_hw * aq_hw,uint32_t rx_xoff_en_per_tc,uint32_t buffer)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
rpfl2broadcast_count_threshold_set(struct aq_hw * aq_hw,uint32_t l2broadcast_count_threshold)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
rpfl2broadcast_en_set(struct aq_hw * aq_hw,uint32_t l2broadcast_en)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
rpfl2broadcast_flr_act_set(struct aq_hw * aq_hw,uint32_t l2broadcast_flr_act)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
rpfl2multicast_flr_en_set(struct aq_hw * aq_hw,uint32_t l2multicast_flr_en,uint32_t filter)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
rpfl2promiscuous_mode_en_set(struct aq_hw * aq_hw,uint32_t l2promiscuous_mode_en)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
rpfl2unicast_flr_act_set(struct aq_hw * aq_hw,uint32_t l2unicast_flr_act,uint32_t filter)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
rpfl2_uc_flr_en_set(struct aq_hw * aq_hw,uint32_t l2unicast_flr_en,uint32_t filter)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
rpfl2unicast_dest_addresslsw_set(struct aq_hw * aq_hw,uint32_t l2unicast_dest_addresslsw,uint32_t filter)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
rpfl2unicast_dest_addressmsw_set(struct aq_hw * aq_hw,uint32_t l2unicast_dest_addressmsw,uint32_t filter)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
rpfl2_accept_all_mc_packets_set(struct aq_hw * aq_hw,uint32_t l2_accept_all_mc_packets)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
rpf_rpb_user_priority_tc_map_set(struct aq_hw * aq_hw,uint32_t user_priority_tc_map,uint32_t tc)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
rpf_rss_key_addr_set(struct aq_hw * aq_hw,uint32_t rss_key_addr)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
rpf_rss_key_wr_data_set(struct aq_hw * aq_hw,uint32_t rss_key_wr_data)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
rpf_rss_key_rd_data_get(struct aq_hw * aq_hw)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
rpf_rss_key_wr_en_get(struct aq_hw * aq_hw)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
rpf_rss_key_wr_en_set(struct aq_hw * aq_hw,uint32_t rss_key_wr_en)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
rpf_rss_redir_tbl_addr_set(struct aq_hw * aq_hw,uint32_t rss_redir_tbl_addr)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
rpf_rss_redir_tbl_wr_data_set(struct aq_hw * aq_hw,uint32_t rss_redir_tbl_wr_data)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
rpf_rss_redir_wr_en_get(struct aq_hw * aq_hw)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
rpf_rss_redir_wr_en_set(struct aq_hw * aq_hw,uint32_t rss_redir_wr_en)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
rpf_tpo_to_rpf_sys_lbk_set(struct aq_hw * aq_hw,uint32_t tpo_to_rpf_sys_lbk)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
hw_atl_rpf_vlan_inner_etht_set(struct aq_hw_s * aq_hw,uint32_t vlan_inner_etht)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
hw_atl_rpf_vlan_outer_etht_set(struct aq_hw_s * aq_hw,uint32_t vlan_outer_etht)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
hw_atl_rpf_vlan_prom_mode_en_set(struct aq_hw_s * aq_hw,uint32_t vlan_prom_mode_en)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
hw_atl_rpf_vlan_accept_untagged_packets_set(struct aq_hw_s * aq_hw,uint32_t vlan_acc_untagged_packets)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
hw_atl_rpf_vlan_untagged_act_set(struct aq_hw_s * aq_hw,uint32_t vlan_untagged_act)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
hw_atl_rpf_vlan_flr_en_set(struct aq_hw_s * aq_hw,uint32_t vlan_flr_en,uint32_t filter)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
hw_atl_rpf_vlan_flr_act_set(struct aq_hw_s * aq_hw,uint32_t vlan_flr_act,uint32_t filter)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
hw_atl_rpf_vlan_id_flr_set(struct aq_hw_s * aq_hw,uint32_t vlan_id_flr,uint32_t filter)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
hw_atl_rpf_vlan_rxq_en_flr_set(struct aq_hw_s * aq_hw,uint32_t vlan_rxq_en,uint32_t filter)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
hw_atl_rpf_vlan_rxq_flr_set(struct aq_hw_s * aq_hw,uint32_t vlan_rxq,uint32_t filter)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
hw_atl_rpf_etht_flr_en_set(struct aq_hw_s * aq_hw,uint32_t etht_flr_en,uint32_t filter)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
hw_atl_rpf_etht_user_priority_en_set(struct aq_hw_s * aq_hw,uint32_t etht_user_priority_en,uint32_t filter)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
hw_atl_rpf_etht_rx_queue_en_set(struct aq_hw_s * aq_hw,uint32_t etht_rx_queue_en,uint32_t filter)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
hw_atl_rpf_etht_user_priority_set(struct aq_hw_s * aq_hw,uint32_t etht_user_priority,uint32_t filter)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
hw_atl_rpf_etht_rx_queue_set(struct aq_hw_s * aq_hw,uint32_t etht_rx_queue,uint32_t filter)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
hw_atl_rpf_etht_mgt_queue_set(struct aq_hw_s * aq_hw,uint32_t etht_mgt_queue,uint32_t filter)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
hw_atl_rpf_etht_flr_act_set(struct aq_hw_s * aq_hw,uint32_t etht_flr_act,uint32_t filter)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
hw_atl_rpf_etht_flr_set(struct aq_hw_s * aq_hw,uint32_t etht_flr,uint32_t filter)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
hw_atl_rpf_l3_l4_enf_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l3_v6_enf_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l3_saf_en_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l3_daf_en_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l4_spf_en_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l4_dpf_en_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l4_protf_en_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l3_arpf_en_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l3_l4_rxqf_en_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l3_l4_mng_rxqf_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l3_l4_actf_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l3_l4_rxqf_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l4_protf_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l4_spd_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
hw_atl_rpf_l4_dpd_set(struct aq_hw_s * aq_hw,uint32_t val,uint32_t filter)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
rpf_vlan_inner_etht_set(struct aq_hw * aq_hw,uint32_t vlan_inner_etht)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
rpf_vlan_outer_etht_set(struct aq_hw * aq_hw,uint32_t vlan_outer_etht)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
rpf_vlan_prom_mode_en_set(struct aq_hw * aq_hw,uint32_t vlan_prom_mode_en)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
rpf_vlan_accept_untagged_packets_set(struct aq_hw * aq_hw,uint32_t vlan_accept_untagged_packets)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
rpf_vlan_untagged_act_set(struct aq_hw * aq_hw,uint32_t vlan_untagged_act)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
rpf_vlan_flr_en_set(struct aq_hw * aq_hw,uint32_t vlan_flr_en,uint32_t filter)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
rpf_vlan_flr_act_set(struct aq_hw * aq_hw,uint32_t vlan_flr_act,uint32_t filter)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
rpf_vlan_id_flr_set(struct aq_hw * aq_hw,uint32_t vlan_id_flr,uint32_t filter)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
rpf_etht_flr_en_set(struct aq_hw * aq_hw,uint32_t etht_flr_en,uint32_t filter)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
rpf_etht_user_priority_en_set(struct aq_hw * aq_hw,uint32_t etht_user_priority_en,uint32_t filter)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
rpf_etht_rx_queue_en_set(struct aq_hw * aq_hw,uint32_t etht_rx_queue_en,uint32_t filter)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
rpf_etht_user_priority_set(struct aq_hw * aq_hw,uint32_t etht_user_priority,uint32_t filter)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
rpf_etht_rx_queue_set(struct aq_hw * aq_hw,uint32_t etht_rx_queue,uint32_t filter)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
rpf_etht_mgt_queue_set(struct aq_hw * aq_hw,uint32_t etht_mgt_queue,uint32_t filter)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
rpf_etht_flr_act_set(struct aq_hw * aq_hw,uint32_t etht_flr_act,uint32_t filter)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
rpf_etht_flr_set(struct aq_hw * aq_hw,uint32_t etht_flr,uint32_t filter)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
rpo_ipv4header_crc_offload_en_set(struct aq_hw * aq_hw,uint32_t ipv4header_crc_offload_en)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
rpo_rx_desc_vlan_stripping_set(struct aq_hw * aq_hw,uint32_t rx_desc_vlan_stripping,uint32_t descriptor)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
rpo_tcp_udp_crc_offload_en_set(struct aq_hw * aq_hw,uint32_t tcp_udp_crc_offload_en)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
rpo_lro_en_set(struct aq_hw * aq_hw,uint32_t lro_en)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
rpo_lro_patch_optimization_en_set(struct aq_hw * aq_hw,uint32_t lro_patch_optimization_en)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
rpo_lro_qsessions_lim_set(struct aq_hw * aq_hw,uint32_t lro_qsessions_lim)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
rpo_lro_total_desc_lim_set(struct aq_hw * aq_hw,uint32_t lro_total_desc_lim)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
rpo_lro_min_pay_of_first_pkt_set(struct aq_hw * aq_hw,uint32_t lro_min_pld_of_first_pkt)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
rpo_lro_pkt_lim_set(struct aq_hw * aq_hw,uint32_t lro_pkt_lim)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
rpo_lro_max_num_of_descriptors_set(struct aq_hw * aq_hw,uint32_t lro_max_number_of_descriptors,uint32_t lro)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
rpo_lro_time_base_divider_set(struct aq_hw * aq_hw,uint32_t lro_time_base_divider)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
rpo_lro_inactive_interval_set(struct aq_hw * aq_hw,uint32_t lro_inactive_interval)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
rpo_lro_max_coalescing_interval_set(struct aq_hw * aq_hw,uint32_t lro_max_coalescing_interval)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
rx_rx_reg_res_dis_set(struct aq_hw * aq_hw,uint32_t rx_reg_res_dis)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
tdm_cpu_id_set(struct aq_hw * aq_hw,uint32_t cpuid,uint32_t dca)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
tdm_large_send_offload_en_set(struct aq_hw * aq_hw,uint32_t large_send_offload_en)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
tdm_tx_dca_en_set(struct aq_hw * aq_hw,uint32_t tx_dca_en)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
tdm_tx_dca_mode_set(struct aq_hw * aq_hw,uint32_t tx_dca_mode)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
tdm_tx_desc_dca_en_set(struct aq_hw * aq_hw,uint32_t tx_desc_dca_en,uint32_t dca)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
tdm_tx_desc_en_set(struct aq_hw * aq_hw,uint32_t tx_desc_en,uint32_t descriptor)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
tdm_tx_desc_head_ptr_get(struct aq_hw * aq_hw,uint32_t descriptor)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
tdm_tx_desc_len_set(struct aq_hw * aq_hw,uint32_t tx_desc_len,uint32_t descriptor)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
tdm_tx_desc_wr_wb_irq_en_set(struct aq_hw * aq_hw,uint32_t tx_desc_wr_wb_irq_en)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
tdm_tx_desc_wr_wb_threshold_set(struct aq_hw * aq_hw,uint32_t tx_desc_wr_wb_threshold,uint32_t descriptor)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
tdm_tdm_intr_moder_en_set(struct aq_hw * aq_hw,uint32_t tdm_irq_moderation_en)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
thm_lso_tcp_flag_of_first_pkt_set(struct aq_hw * aq_hw,uint32_t lso_tcp_flag_of_first_pkt)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
thm_lso_tcp_flag_of_last_pkt_set(struct aq_hw * aq_hw,uint32_t lso_tcp_flag_of_last_pkt)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
thm_lso_tcp_flag_of_middle_pkt_set(struct aq_hw * aq_hw,uint32_t lso_tcp_flag_of_middle_pkt)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
tpb_tx_buff_en_set(struct aq_hw * aq_hw,uint32_t tx_buff_en)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
tpb_tx_tc_mode_set(struct aq_hw * aq_hw,uint32_t tc_mode)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
tpb_tx_buff_hi_threshold_per_tc_set(struct aq_hw * aq_hw,uint32_t tx_buff_hi_threshold_per_tc,uint32_t buffer)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
tpb_tx_buff_lo_threshold_per_tc_set(struct aq_hw * aq_hw,uint32_t tx_buff_lo_threshold_per_tc,uint32_t buffer)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
tpb_tx_dma_sys_lbk_en_set(struct aq_hw * aq_hw,uint32_t tx_dma_sys_lbk_en)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
rdm_rx_dma_desc_cache_init_tgl(struct aq_hw * aq_hw)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
tpb_tx_pkt_buff_size_per_tc_set(struct aq_hw * aq_hw,uint32_t tx_pkt_buff_size_per_tc,uint32_t buffer)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
tpb_tx_path_scp_ins_en_set(struct aq_hw * aq_hw,uint32_t tx_path_scp_ins_en)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
tpo_ipv4header_crc_offload_en_set(struct aq_hw * aq_hw,uint32_t ipv4header_crc_offload_en)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
tpo_tcp_udp_crc_offload_en_set(struct aq_hw * aq_hw,uint32_t tcp_udp_crc_offload_en)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
tpo_tx_pkt_sys_lbk_en_set(struct aq_hw * aq_hw,uint32_t tx_pkt_sys_lbk_en)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
tps_tx_pkt_shed_data_arb_mode_set(struct aq_hw * aq_hw,uint32_t tx_pkt_shed_data_arb_mode)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
tps_tx_pkt_shed_desc_rate_curr_time_res_set(struct aq_hw * aq_hw,uint32_t curr_time_res)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
tps_tx_pkt_shed_desc_rate_lim_set(struct aq_hw * aq_hw,uint32_t tx_pkt_shed_desc_rate_lim)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
tps_tx_pkt_shed_desc_tc_arb_mode_set(struct aq_hw * aq_hw,uint32_t tx_pkt_shed_desc_tc_arb_mode)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
tps_tx_pkt_shed_desc_tc_max_credit_set(struct aq_hw * aq_hw,uint32_t tx_pkt_shed_desc_tc_max_credit,uint32_t tc)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
tps_tx_pkt_shed_desc_tc_weight_set(struct aq_hw * aq_hw,uint32_t tx_pkt_shed_desc_tc_weight,uint32_t tc)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
tps_tx_pkt_shed_desc_vm_arb_mode_set(struct aq_hw * aq_hw,uint32_t tx_pkt_shed_desc_vm_arb_mode)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
tps_tx_pkt_shed_tc_data_max_credit_set(struct aq_hw * aq_hw,uint32_t tx_pkt_shed_tc_data_max_credit,uint32_t tc)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
tps_tx_pkt_shed_tc_data_weight_set(struct aq_hw * aq_hw,uint32_t tx_pkt_shed_tc_data_weight,uint32_t tc)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
tx_tx_reg_res_dis_set(struct aq_hw * aq_hw,uint32_t tx_reg_res_dis)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
msm_reg_access_status_get(struct aq_hw * aq_hw)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
msm_reg_addr_for_indirect_addr_set(struct aq_hw * aq_hw,uint32_t reg_addr_for_indirect_addr)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
msm_reg_rd_strobe_set(struct aq_hw * aq_hw,uint32_t reg_rd_strobe)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
msm_reg_rd_data_get(struct aq_hw * aq_hw)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
msm_reg_wr_data_set(struct aq_hw * aq_hw,uint32_t reg_wr_data)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
msm_reg_wr_strobe_set(struct aq_hw * aq_hw,uint32_t reg_wr_strobe)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
pci_pci_reg_res_dis_set(struct aq_hw * aq_hw,uint32_t pci_reg_res_dis)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
reg_glb_cpu_scratch_scp_get(struct aq_hw * hw,uint32_t glb_cpu_scratch_scp_idx)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
reg_glb_cpu_scratch_scp_set(struct aq_hw * aq_hw,uint32_t glb_cpu_scratch_scp,uint32_t scratch_scp)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
reg_glb_cpu_no_reset_scratchpad_get(struct aq_hw * hw,uint32_t index)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
reg_glb_cpu_no_reset_scratchpad_set(struct aq_hw * hw,uint32_t value,uint32_t index)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
reg_mif_power_gating_enable_control_set(struct aq_hw * hw,uint32_t value)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
reg_mif_power_gating_enable_control_get(struct aq_hw * hw)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
reg_glb_general_provisioning9_set(struct aq_hw * hw,uint32_t value)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
reg_glb_general_provisioning9_get(struct aq_hw * hw)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
reg_glb_nvr_provisioning2_set(struct aq_hw * hw,uint32_t value)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
reg_glb_nvr_provisioning2_get(struct aq_hw * hw)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
reg_glb_nvr_interface1_set(struct aq_hw * hw,uint32_t value)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
reg_glb_nvr_interface1_get(struct aq_hw * hw)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
mif_mcp_up_mailbox_busy_get(struct aq_hw * hw)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
mif_mcp_up_mailbox_execute_operation_set(struct aq_hw * hw,uint32_t value)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
mif_mcp_up_mailbox_addr_get(struct aq_hw * hw)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
mif_mcp_up_mailbox_addr_set(struct aq_hw * hw,uint32_t value)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
mif_mcp_up_mailbox_data_get(struct aq_hw * hw)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
hw_atl_rpfl3l4_ipv4_dest_addr_clear(struct aq_hw_s * aq_hw,uint8_t location)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
hw_atl_rpfl3l4_ipv4_src_addr_clear(struct aq_hw_s * aq_hw,uint8_t location)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
hw_atl_rpfl3l4_cmd_clear(struct aq_hw_s * aq_hw,uint8_t location)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
hw_atl_rpfl3l4_ipv6_dest_addr_clear(struct aq_hw_s * aq_hw,uint8_t location)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
hw_atl_rpfl3l4_ipv6_src_addr_clear(struct aq_hw_s * aq_hw,uint8_t location)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
hw_atl_rpfl3l4_ipv4_dest_addr_set(struct aq_hw_s * aq_hw,uint8_t location,uint32_t ipv4_dest)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
hw_atl_rpfl3l4_ipv4_src_addr_set(struct aq_hw_s * aq_hw,uint8_t location,uint32_t ipv4_src)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
hw_atl_rpfl3l4_cmd_set(struct aq_hw_s * aq_hw,uint8_t location,uint32_t cmd)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
hw_atl_rpfl3l4_ipv6_src_addr_set(struct aq_hw_s * aq_hw,uint8_t location,uint32_t * ipv6_src)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
hw_atl_rpfl3l4_ipv6_dest_addr_set(struct aq_hw_s * aq_hw,uint8_t location,uint32_t * ipv6_dest)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