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