xref: /freebsd/sys/dev/aq/aq_hw_llh.c (revision 493d26c58e732dcfcdd87993ef71880adfe9d0cb)
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