xref: /dpdk/drivers/net/atlantic/hw_atl/hw_atl_llh.c (revision 31617c04e75a229ef8cf88a8be9cb5964bfdcd7f)
1 // SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2 /* Copyright (C) 2014-2017 aQuantia Corporation. */
3 
4 /* File hw_atl_llh.c: Definitions of bitfield and register access functions for
5  * Atlantic registers.
6  */
7 
8 #include "hw_atl_llh.h"
9 
10 #include "../atl_hw_regs.h"
11 #include "hw_atl_llh_internal.h"
12 
13 /* global */
hw_atl_reg_glb_cpu_sem_set(struct aq_hw_s * aq_hw,u32 glb_cpu_sem,u32 semaphore)14 void hw_atl_reg_glb_cpu_sem_set(struct aq_hw_s *aq_hw, u32 glb_cpu_sem,
15 				u32 semaphore)
16 {
17 	aq_hw_write_reg(aq_hw, HW_ATL_GLB_CPU_SEM_ADR(semaphore), glb_cpu_sem);
18 }
19 
hw_atl_reg_glb_cpu_sem_get(struct aq_hw_s * aq_hw,u32 semaphore)20 u32 hw_atl_reg_glb_cpu_sem_get(struct aq_hw_s *aq_hw, u32 semaphore)
21 {
22 	return aq_hw_read_reg(aq_hw, HW_ATL_GLB_CPU_SEM_ADR(semaphore));
23 }
24 
hw_atl_glb_glb_reg_res_dis_set(struct aq_hw_s * aq_hw,u32 glb_reg_res_dis)25 void hw_atl_glb_glb_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 glb_reg_res_dis)
26 {
27 	aq_hw_write_reg_bit(aq_hw, HW_ATL_GLB_REG_RES_DIS_ADR,
28 			    HW_ATL_GLB_REG_RES_DIS_MSK,
29 			    HW_ATL_GLB_REG_RES_DIS_SHIFT,
30 			    glb_reg_res_dis);
31 }
32 
hw_atl_glb_soft_res_set(struct aq_hw_s * aq_hw,u32 soft_res)33 void hw_atl_glb_soft_res_set(struct aq_hw_s *aq_hw, u32 soft_res)
34 {
35 	aq_hw_write_reg_bit(aq_hw, HW_ATL_GLB_SOFT_RES_ADR,
36 			    HW_ATL_GLB_SOFT_RES_MSK,
37 			    HW_ATL_GLB_SOFT_RES_SHIFT, soft_res);
38 }
39 
hw_atl_glb_soft_res_get(struct aq_hw_s * aq_hw)40 u32 hw_atl_glb_soft_res_get(struct aq_hw_s *aq_hw)
41 {
42 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_GLB_SOFT_RES_ADR,
43 				  HW_ATL_GLB_SOFT_RES_MSK,
44 				  HW_ATL_GLB_SOFT_RES_SHIFT);
45 }
46 
hw_atl_reg_glb_mif_id_get(struct aq_hw_s * aq_hw)47 u32 hw_atl_reg_glb_mif_id_get(struct aq_hw_s *aq_hw)
48 {
49 	return aq_hw_read_reg(aq_hw, HW_ATL_GLB_MIF_ID_ADR);
50 }
51 
52 /* stats */
hw_atl_rpb_rx_dma_drop_pkt_cnt_get(struct aq_hw_s * aq_hw)53 u32 hw_atl_rpb_rx_dma_drop_pkt_cnt_get(struct aq_hw_s *aq_hw)
54 {
55 	return aq_hw_read_reg(aq_hw, HW_ATL_RPB_RX_DMA_DROP_PKT_CNT_ADR);
56 }
57 
hw_atl_stats_rx_dma_good_octet_counterlsw_get(struct aq_hw_s * aq_hw)58 u32 hw_atl_stats_rx_dma_good_octet_counterlsw_get(struct aq_hw_s *aq_hw)
59 {
60 	return aq_hw_read_reg(aq_hw, HW_ATL_STATS_RX_DMA_GOOD_OCTET_COUNTERLSW);
61 }
62 
hw_atl_stats_rx_dma_good_pkt_counterlsw_get(struct aq_hw_s * aq_hw)63 u32 hw_atl_stats_rx_dma_good_pkt_counterlsw_get(struct aq_hw_s *aq_hw)
64 {
65 	return aq_hw_read_reg(aq_hw, HW_ATL_STATS_RX_DMA_GOOD_PKT_COUNTERLSW);
66 }
67 
hw_atl_stats_tx_dma_good_octet_counterlsw_get(struct aq_hw_s * aq_hw)68 u32 hw_atl_stats_tx_dma_good_octet_counterlsw_get(struct aq_hw_s *aq_hw)
69 {
70 	return aq_hw_read_reg(aq_hw, HW_ATL_STATS_TX_DMA_GOOD_OCTET_COUNTERLSW);
71 }
72 
hw_atl_stats_tx_dma_good_pkt_counterlsw_get(struct aq_hw_s * aq_hw)73 u32 hw_atl_stats_tx_dma_good_pkt_counterlsw_get(struct aq_hw_s *aq_hw)
74 {
75 	return aq_hw_read_reg(aq_hw, HW_ATL_STATS_TX_DMA_GOOD_PKT_COUNTERLSW);
76 }
77 
hw_atl_stats_rx_dma_good_octet_countermsw_get(struct aq_hw_s * aq_hw)78 u32 hw_atl_stats_rx_dma_good_octet_countermsw_get(struct aq_hw_s *aq_hw)
79 {
80 	return aq_hw_read_reg(aq_hw, HW_ATL_STATS_RX_DMA_GOOD_OCTET_COUNTERMSW);
81 }
82 
hw_atl_stats_rx_dma_good_pkt_countermsw_get(struct aq_hw_s * aq_hw)83 u32 hw_atl_stats_rx_dma_good_pkt_countermsw_get(struct aq_hw_s *aq_hw)
84 {
85 	return aq_hw_read_reg(aq_hw, HW_ATL_STATS_RX_DMA_GOOD_PKT_COUNTERMSW);
86 }
87 
hw_atl_stats_tx_dma_good_octet_countermsw_get(struct aq_hw_s * aq_hw)88 u32 hw_atl_stats_tx_dma_good_octet_countermsw_get(struct aq_hw_s *aq_hw)
89 {
90 	return aq_hw_read_reg(aq_hw, HW_ATL_STATS_TX_DMA_GOOD_OCTET_COUNTERMSW);
91 }
92 
hw_atl_stats_tx_dma_good_pkt_countermsw_get(struct aq_hw_s * aq_hw)93 u32 hw_atl_stats_tx_dma_good_pkt_countermsw_get(struct aq_hw_s *aq_hw)
94 {
95 	return aq_hw_read_reg(aq_hw, HW_ATL_STATS_TX_DMA_GOOD_PKT_COUNTERMSW);
96 }
97 
98 /* interrupt */
hw_atl_itr_irq_auto_masklsw_set(struct aq_hw_s * aq_hw,u32 irq_auto_masklsw)99 void hw_atl_itr_irq_auto_masklsw_set(struct aq_hw_s *aq_hw,
100 				     u32 irq_auto_masklsw)
101 {
102 	aq_hw_write_reg(aq_hw, HW_ATL_ITR_IAMRLSW_ADR, irq_auto_masklsw);
103 }
104 
hw_atl_itr_irq_map_en_rx_set(struct aq_hw_s * aq_hw,u32 irq_map_en_rx,u32 rx)105 void hw_atl_itr_irq_map_en_rx_set(struct aq_hw_s *aq_hw, u32 irq_map_en_rx,
106 				  u32 rx)
107 {
108 /* register address for bitfield imr_rx{r}_en */
109 	static const u32 itr_imr_rxren_adr[32] = {
110 			0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
111 			0x00002108U, 0x00002108U, 0x0000210CU, 0x0000210CU,
112 			0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
113 			0x00002118U, 0x00002118U, 0x0000211CU, 0x0000211CU,
114 			0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
115 			0x00002128U, 0x00002128U, 0x0000212CU, 0x0000212CU,
116 			0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
117 			0x00002138U, 0x00002138U, 0x0000213CU, 0x0000213CU
118 		};
119 
120 /* bitmask for bitfield imr_rx{r}_en */
121 	static const u32 itr_imr_rxren_msk[32] = {
122 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
123 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
124 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
125 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
126 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
127 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
128 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
129 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U
130 		};
131 
132 /* lower bit position of bitfield imr_rx{r}_en */
133 	static const u32 itr_imr_rxren_shift[32] = {
134 			15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U,
135 			15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U,
136 			15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U,
137 			15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U
138 		};
139 
140 	aq_hw_write_reg_bit(aq_hw, itr_imr_rxren_adr[rx],
141 			    itr_imr_rxren_msk[rx],
142 			    itr_imr_rxren_shift[rx],
143 			    irq_map_en_rx);
144 }
145 
hw_atl_itr_irq_map_en_tx_set(struct aq_hw_s * aq_hw,u32 irq_map_en_tx,u32 tx)146 void hw_atl_itr_irq_map_en_tx_set(struct aq_hw_s *aq_hw, u32 irq_map_en_tx,
147 				  u32 tx)
148 {
149 /* register address for bitfield imr_tx{t}_en */
150 	static const u32 itr_imr_txten_adr[32] = {
151 			0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
152 			0x00002108U, 0x00002108U, 0x0000210CU, 0x0000210CU,
153 			0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
154 			0x00002118U, 0x00002118U, 0x0000211CU, 0x0000211CU,
155 			0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
156 			0x00002128U, 0x00002128U, 0x0000212CU, 0x0000212CU,
157 			0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
158 			0x00002138U, 0x00002138U, 0x0000213CU, 0x0000213CU
159 		};
160 
161 /* bitmask for bitfield imr_tx{t}_en */
162 	static const u32 itr_imr_txten_msk[32] = {
163 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
164 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
165 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
166 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
167 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
168 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
169 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
170 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U
171 		};
172 
173 /* lower bit position of bitfield imr_tx{t}_en */
174 	static const u32 itr_imr_txten_shift[32] = {
175 			31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U,
176 			31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U,
177 			31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U,
178 			31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U
179 		};
180 
181 	aq_hw_write_reg_bit(aq_hw, itr_imr_txten_adr[tx],
182 			    itr_imr_txten_msk[tx],
183 			    itr_imr_txten_shift[tx],
184 			    irq_map_en_tx);
185 }
186 
hw_atl_itr_irq_map_rx_set(struct aq_hw_s * aq_hw,u32 irq_map_rx,u32 rx)187 void hw_atl_itr_irq_map_rx_set(struct aq_hw_s *aq_hw, u32 irq_map_rx, u32 rx)
188 {
189 /* register address for bitfield imr_rx{r}[4:0] */
190 	static const u32 itr_imr_rxr_adr[32] = {
191 			0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
192 			0x00002108U, 0x00002108U, 0x0000210CU, 0x0000210CU,
193 			0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
194 			0x00002118U, 0x00002118U, 0x0000211CU, 0x0000211CU,
195 			0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
196 			0x00002128U, 0x00002128U, 0x0000212CU, 0x0000212CU,
197 			0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
198 			0x00002138U, 0x00002138U, 0x0000213CU, 0x0000213CU
199 		};
200 
201 /* bitmask for bitfield imr_rx{r}[4:0] */
202 	static const u32 itr_imr_rxr_msk[32] = {
203 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
204 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
205 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
206 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
207 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
208 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
209 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
210 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU
211 		};
212 
213 /* lower bit position of bitfield imr_rx{r}[4:0] */
214 	static const u32 itr_imr_rxr_shift[32] = {
215 			8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U,
216 			8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U,
217 			8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U,
218 			8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U
219 		};
220 
221 	aq_hw_write_reg_bit(aq_hw, itr_imr_rxr_adr[rx],
222 			    itr_imr_rxr_msk[rx],
223 			    itr_imr_rxr_shift[rx],
224 			    irq_map_rx);
225 }
226 
hw_atl_itr_irq_map_tx_set(struct aq_hw_s * aq_hw,u32 irq_map_tx,u32 tx)227 void hw_atl_itr_irq_map_tx_set(struct aq_hw_s *aq_hw, u32 irq_map_tx, u32 tx)
228 {
229 /* register address for bitfield imr_tx{t}[4:0] */
230 	static const u32 itr_imr_txt_adr[32] = {
231 			0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
232 			0x00002108U, 0x00002108U, 0x0000210CU, 0x0000210CU,
233 			0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
234 			0x00002118U, 0x00002118U, 0x0000211CU, 0x0000211CU,
235 			0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
236 			0x00002128U, 0x00002128U, 0x0000212CU, 0x0000212CU,
237 			0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
238 			0x00002138U, 0x00002138U, 0x0000213CU, 0x0000213CU
239 		};
240 
241 /* bitmask for bitfield imr_tx{t}[4:0] */
242 	static const u32 itr_imr_txt_msk[32] = {
243 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
244 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
245 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
246 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
247 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
248 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
249 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
250 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U
251 		};
252 
253 /* lower bit position of bitfield imr_tx{t}[4:0] */
254 	static const u32 itr_imr_txt_shift[32] = {
255 			24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U,
256 			24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U,
257 			24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U,
258 			24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U
259 		};
260 
261 	aq_hw_write_reg_bit(aq_hw, itr_imr_txt_adr[tx],
262 			    itr_imr_txt_msk[tx],
263 			    itr_imr_txt_shift[tx],
264 			    irq_map_tx);
265 }
266 
hw_atl_itr_irq_msk_clearlsw_set(struct aq_hw_s * aq_hw,u32 irq_msk_clearlsw)267 void hw_atl_itr_irq_msk_clearlsw_set(struct aq_hw_s *aq_hw,
268 				     u32 irq_msk_clearlsw)
269 {
270 	aq_hw_write_reg(aq_hw, HW_ATL_ITR_IMCRLSW_ADR, irq_msk_clearlsw);
271 }
272 
hw_atl_itr_irq_msk_setlsw_set(struct aq_hw_s * aq_hw,u32 irq_msk_setlsw)273 void hw_atl_itr_irq_msk_setlsw_set(struct aq_hw_s *aq_hw, u32 irq_msk_setlsw)
274 {
275 	aq_hw_write_reg(aq_hw, HW_ATL_ITR_IMSRLSW_ADR, irq_msk_setlsw);
276 }
277 
hw_atl_itr_irq_reg_res_dis_set(struct aq_hw_s * aq_hw,u32 irq_reg_res_dis)278 void hw_atl_itr_irq_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 irq_reg_res_dis)
279 {
280 	aq_hw_write_reg_bit(aq_hw, HW_ATL_ITR_REG_RES_DSBL_ADR,
281 			    HW_ATL_ITR_REG_RES_DSBL_MSK,
282 			    HW_ATL_ITR_REG_RES_DSBL_SHIFT, irq_reg_res_dis);
283 }
284 
hw_atl_itr_irq_status_clearlsw_set(struct aq_hw_s * aq_hw,u32 irq_status_clearlsw)285 void hw_atl_itr_irq_status_clearlsw_set(struct aq_hw_s *aq_hw,
286 					u32 irq_status_clearlsw)
287 {
288 	aq_hw_write_reg(aq_hw, HW_ATL_ITR_ISCRLSW_ADR, irq_status_clearlsw);
289 }
290 
hw_atl_itr_irq_statuslsw_get(struct aq_hw_s * aq_hw)291 u32 hw_atl_itr_irq_statuslsw_get(struct aq_hw_s *aq_hw)
292 {
293 	return aq_hw_read_reg(aq_hw, HW_ATL_ITR_ISRLSW_ADR);
294 }
295 
hw_atl_itr_res_irq_get(struct aq_hw_s * aq_hw)296 u32 hw_atl_itr_res_irq_get(struct aq_hw_s *aq_hw)
297 {
298 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_ITR_RES_ADR, HW_ATL_ITR_RES_MSK,
299 				  HW_ATL_ITR_RES_SHIFT);
300 }
301 
hw_atl_itr_res_irq_set(struct aq_hw_s * aq_hw,u32 res_irq)302 void hw_atl_itr_res_irq_set(struct aq_hw_s *aq_hw, u32 res_irq)
303 {
304 	aq_hw_write_reg_bit(aq_hw, HW_ATL_ITR_RES_ADR, HW_ATL_ITR_RES_MSK,
305 			    HW_ATL_ITR_RES_SHIFT, res_irq);
306 }
307 
308 /* rdm */
hw_atl_rdm_cpu_id_set(struct aq_hw_s * aq_hw,u32 cpuid,u32 dca)309 void hw_atl_rdm_cpu_id_set(struct aq_hw_s *aq_hw, u32 cpuid, u32 dca)
310 {
311 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCADCPUID_ADR(dca),
312 			    HW_ATL_RDM_DCADCPUID_MSK,
313 			    HW_ATL_RDM_DCADCPUID_SHIFT, cpuid);
314 }
315 
hw_atl_rdm_rx_dca_en_set(struct aq_hw_s * aq_hw,u32 rx_dca_en)316 void hw_atl_rdm_rx_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_dca_en)
317 {
318 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCA_EN_ADR, HW_ATL_RDM_DCA_EN_MSK,
319 			    HW_ATL_RDM_DCA_EN_SHIFT, rx_dca_en);
320 }
321 
hw_atl_rdm_rx_dca_mode_set(struct aq_hw_s * aq_hw,u32 rx_dca_mode)322 void hw_atl_rdm_rx_dca_mode_set(struct aq_hw_s *aq_hw, u32 rx_dca_mode)
323 {
324 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCA_MODE_ADR,
325 			    HW_ATL_RDM_DCA_MODE_MSK,
326 			    HW_ATL_RDM_DCA_MODE_SHIFT, rx_dca_mode);
327 }
328 
hw_atl_rdm_rx_desc_data_buff_size_set(struct aq_hw_s * aq_hw,u32 rx_desc_data_buff_size,u32 descriptor)329 void hw_atl_rdm_rx_desc_data_buff_size_set(struct aq_hw_s *aq_hw,
330 					   u32 rx_desc_data_buff_size,
331 					   u32 descriptor)
332 {
333 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDDATA_SIZE_ADR(descriptor),
334 			    HW_ATL_RDM_DESCDDATA_SIZE_MSK,
335 			    HW_ATL_RDM_DESCDDATA_SIZE_SHIFT,
336 			    rx_desc_data_buff_size);
337 }
338 
hw_atl_rdm_rx_desc_dca_en_set(struct aq_hw_s * aq_hw,u32 rx_desc_dca_en,u32 dca)339 void hw_atl_rdm_rx_desc_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_desc_dca_en,
340 				   u32 dca)
341 {
342 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCADDESC_EN_ADR(dca),
343 			    HW_ATL_RDM_DCADDESC_EN_MSK,
344 			    HW_ATL_RDM_DCADDESC_EN_SHIFT,
345 			    rx_desc_dca_en);
346 }
347 
hw_atl_rdm_rx_desc_en_set(struct aq_hw_s * aq_hw,u32 rx_desc_en,u32 descriptor)348 void hw_atl_rdm_rx_desc_en_set(struct aq_hw_s *aq_hw, u32 rx_desc_en,
349 			       u32 descriptor)
350 {
351 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDEN_ADR(descriptor),
352 			    HW_ATL_RDM_DESCDEN_MSK,
353 			    HW_ATL_RDM_DESCDEN_SHIFT,
354 			    rx_desc_en);
355 }
356 
hw_atl_rdm_rx_desc_head_buff_size_set(struct aq_hw_s * aq_hw,u32 rx_desc_head_buff_size,u32 descriptor)357 void hw_atl_rdm_rx_desc_head_buff_size_set(struct aq_hw_s *aq_hw,
358 					   u32 rx_desc_head_buff_size,
359 					   u32 descriptor)
360 {
361 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDHDR_SIZE_ADR(descriptor),
362 			    HW_ATL_RDM_DESCDHDR_SIZE_MSK,
363 			    HW_ATL_RDM_DESCDHDR_SIZE_SHIFT,
364 			    rx_desc_head_buff_size);
365 }
366 
hw_atl_rdm_rx_desc_head_splitting_set(struct aq_hw_s * aq_hw,u32 rx_desc_head_splitting,u32 descriptor)367 void hw_atl_rdm_rx_desc_head_splitting_set(struct aq_hw_s *aq_hw,
368 					   u32 rx_desc_head_splitting,
369 					   u32 descriptor)
370 {
371 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDHDR_SPLIT_ADR(descriptor),
372 			    HW_ATL_RDM_DESCDHDR_SPLIT_MSK,
373 			    HW_ATL_RDM_DESCDHDR_SPLIT_SHIFT,
374 			    rx_desc_head_splitting);
375 }
376 
hw_atl_rdm_rx_desc_head_ptr_get(struct aq_hw_s * aq_hw,u32 descriptor)377 u32 hw_atl_rdm_rx_desc_head_ptr_get(struct aq_hw_s *aq_hw, u32 descriptor)
378 {
379 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_RDM_DESCDHD_ADR(descriptor),
380 				  HW_ATL_RDM_DESCDHD_MSK,
381 				  HW_ATL_RDM_DESCDHD_SHIFT);
382 }
383 
hw_atl_rdm_rx_desc_len_set(struct aq_hw_s * aq_hw,u32 rx_desc_len,u32 descriptor)384 void hw_atl_rdm_rx_desc_len_set(struct aq_hw_s *aq_hw, u32 rx_desc_len,
385 				u32 descriptor)
386 {
387 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDLEN_ADR(descriptor),
388 			    HW_ATL_RDM_DESCDLEN_MSK, HW_ATL_RDM_DESCDLEN_SHIFT,
389 			    rx_desc_len);
390 }
391 
hw_atl_rdm_rx_desc_res_set(struct aq_hw_s * aq_hw,u32 rx_desc_res,u32 descriptor)392 void hw_atl_rdm_rx_desc_res_set(struct aq_hw_s *aq_hw, u32 rx_desc_res,
393 				u32 descriptor)
394 {
395 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDRESET_ADR(descriptor),
396 			    HW_ATL_RDM_DESCDRESET_MSK,
397 			    HW_ATL_RDM_DESCDRESET_SHIFT,
398 			    rx_desc_res);
399 }
400 
hw_atl_rdm_rx_desc_wr_wb_irq_en_set(struct aq_hw_s * aq_hw,u32 rx_desc_wr_wb_irq_en)401 void hw_atl_rdm_rx_desc_wr_wb_irq_en_set(struct aq_hw_s *aq_hw,
402 					 u32 rx_desc_wr_wb_irq_en)
403 {
404 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_INT_DESC_WRB_EN_ADR,
405 			    HW_ATL_RDM_INT_DESC_WRB_EN_MSK,
406 			    HW_ATL_RDM_INT_DESC_WRB_EN_SHIFT,
407 			    rx_desc_wr_wb_irq_en);
408 }
409 
hw_atl_rdm_rx_head_dca_en_set(struct aq_hw_s * aq_hw,u32 rx_head_dca_en,u32 dca)410 void hw_atl_rdm_rx_head_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_head_dca_en,
411 				   u32 dca)
412 {
413 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCADHDR_EN_ADR(dca),
414 			    HW_ATL_RDM_DCADHDR_EN_MSK,
415 			    HW_ATL_RDM_DCADHDR_EN_SHIFT,
416 			    rx_head_dca_en);
417 }
418 
hw_atl_rdm_rx_pld_dca_en_set(struct aq_hw_s * aq_hw,u32 rx_pld_dca_en,u32 dca)419 void hw_atl_rdm_rx_pld_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_pld_dca_en,
420 				  u32 dca)
421 {
422 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCADPAY_EN_ADR(dca),
423 			    HW_ATL_RDM_DCADPAY_EN_MSK,
424 			    HW_ATL_RDM_DCADPAY_EN_SHIFT,
425 			    rx_pld_dca_en);
426 }
427 
hw_atl_rdm_rdm_intr_moder_en_set(struct aq_hw_s * aq_hw,u32 rdm_intr_moder_en)428 void hw_atl_rdm_rdm_intr_moder_en_set(struct aq_hw_s *aq_hw,
429 				      u32 rdm_intr_moder_en)
430 {
431 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_INT_RIM_EN_ADR,
432 			    HW_ATL_RDM_INT_RIM_EN_MSK,
433 			    HW_ATL_RDM_INT_RIM_EN_SHIFT,
434 			    rdm_intr_moder_en);
435 }
436 
437 /* reg */
hw_atl_reg_gen_irq_map_set(struct aq_hw_s * aq_hw,u32 gen_intr_map,u32 regidx)438 void hw_atl_reg_gen_irq_map_set(struct aq_hw_s *aq_hw, u32 gen_intr_map,
439 				u32 regidx)
440 {
441 	aq_hw_write_reg(aq_hw, HW_ATL_GEN_INTR_MAP_ADR(regidx), gen_intr_map);
442 }
443 
hw_atl_reg_gen_irq_status_get(struct aq_hw_s * aq_hw)444 u32 hw_atl_reg_gen_irq_status_get(struct aq_hw_s *aq_hw)
445 {
446 	return aq_hw_read_reg(aq_hw, HW_ATL_GEN_INTR_STAT_ADR);
447 }
448 
hw_atl_reg_irq_glb_ctl_set(struct aq_hw_s * aq_hw,u32 intr_glb_ctl)449 void hw_atl_reg_irq_glb_ctl_set(struct aq_hw_s *aq_hw, u32 intr_glb_ctl)
450 {
451 	aq_hw_write_reg(aq_hw, HW_ATL_INTR_GLB_CTL_ADR, intr_glb_ctl);
452 }
453 
hw_atl_reg_irq_thr_set(struct aq_hw_s * aq_hw,u32 intr_thr,u32 throttle)454 void hw_atl_reg_irq_thr_set(struct aq_hw_s *aq_hw, u32 intr_thr, u32 throttle)
455 {
456 	aq_hw_write_reg(aq_hw, HW_ATL_INTR_THR_ADR(throttle), intr_thr);
457 }
458 
hw_atl_reg_rx_dma_desc_base_addresslswset(struct aq_hw_s * aq_hw,u32 rx_dma_desc_base_addrlsw,u32 descriptor)459 void hw_atl_reg_rx_dma_desc_base_addresslswset(struct aq_hw_s *aq_hw,
460 					       u32 rx_dma_desc_base_addrlsw,
461 					       u32 descriptor)
462 {
463 	aq_hw_write_reg(aq_hw, HW_ATL_RX_DMA_DESC_BASE_ADDRLSW_ADR(descriptor),
464 			rx_dma_desc_base_addrlsw);
465 }
466 
hw_atl_reg_rx_dma_desc_base_addressmswset(struct aq_hw_s * aq_hw,u32 rx_dma_desc_base_addrmsw,u32 descriptor)467 void hw_atl_reg_rx_dma_desc_base_addressmswset(struct aq_hw_s *aq_hw,
468 					       u32 rx_dma_desc_base_addrmsw,
469 					       u32 descriptor)
470 {
471 	aq_hw_write_reg(aq_hw, HW_ATL_RX_DMA_DESC_BASE_ADDRMSW_ADR(descriptor),
472 			rx_dma_desc_base_addrmsw);
473 }
474 
hw_atl_reg_rx_dma_desc_status_get(struct aq_hw_s * aq_hw,u32 descriptor)475 u32 hw_atl_reg_rx_dma_desc_status_get(struct aq_hw_s *aq_hw, u32 descriptor)
476 {
477 	return aq_hw_read_reg(aq_hw, HW_ATL_RX_DMA_DESC_STAT_ADR(descriptor));
478 }
479 
hw_atl_reg_rx_dma_desc_tail_ptr_set(struct aq_hw_s * aq_hw,u32 rx_dma_desc_tail_ptr,u32 descriptor)480 void hw_atl_reg_rx_dma_desc_tail_ptr_set(struct aq_hw_s *aq_hw,
481 					 u32 rx_dma_desc_tail_ptr,
482 					 u32 descriptor)
483 {
484 	aq_hw_write_reg(aq_hw, HW_ATL_RX_DMA_DESC_TAIL_PTR_ADR(descriptor),
485 			rx_dma_desc_tail_ptr);
486 }
487 
hw_atl_reg_rx_flr_mcst_flr_msk_set(struct aq_hw_s * aq_hw,u32 rx_flr_mcst_flr_msk)488 void hw_atl_reg_rx_flr_mcst_flr_msk_set(struct aq_hw_s *aq_hw,
489 					u32 rx_flr_mcst_flr_msk)
490 {
491 	aq_hw_write_reg(aq_hw, HW_ATL_RX_FLR_MCST_FLR_MSK_ADR,
492 			rx_flr_mcst_flr_msk);
493 }
494 
hw_atl_reg_rx_flr_mcst_flr_set(struct aq_hw_s * aq_hw,u32 rx_flr_mcst_flr,u32 filter)495 void hw_atl_reg_rx_flr_mcst_flr_set(struct aq_hw_s *aq_hw, u32 rx_flr_mcst_flr,
496 				    u32 filter)
497 {
498 	aq_hw_write_reg(aq_hw, HW_ATL_RX_FLR_MCST_FLR_ADR(filter),
499 			rx_flr_mcst_flr);
500 }
501 
hw_atl_reg_rx_flr_rss_control1set(struct aq_hw_s * aq_hw,u32 rx_flr_rss_control1)502 void hw_atl_reg_rx_flr_rss_control1set(struct aq_hw_s *aq_hw,
503 				       u32 rx_flr_rss_control1)
504 {
505 	aq_hw_write_reg(aq_hw, HW_ATL_RX_FLR_RSS_CONTROL1_ADR,
506 			rx_flr_rss_control1);
507 }
508 
hw_atl_reg_rx_flr_control2_set(struct aq_hw_s * aq_hw,u32 rx_filter_control2)509 void hw_atl_reg_rx_flr_control2_set(struct aq_hw_s *aq_hw,
510 				    u32 rx_filter_control2)
511 {
512 	aq_hw_write_reg(aq_hw, HW_ATL_RX_FLR_CONTROL2_ADR, rx_filter_control2);
513 }
514 
hw_atl_reg_rx_intr_moder_ctrl_set(struct aq_hw_s * aq_hw,u32 rx_intr_moderation_ctl,u32 queue)515 void hw_atl_reg_rx_intr_moder_ctrl_set(struct aq_hw_s *aq_hw,
516 				       u32 rx_intr_moderation_ctl,
517 				       u32 queue)
518 {
519 	aq_hw_write_reg(aq_hw, HW_ATL_RX_INTR_MODERATION_CTL_ADR(queue),
520 			rx_intr_moderation_ctl);
521 }
522 
hw_atl_reg_tx_dma_debug_ctl_set(struct aq_hw_s * aq_hw,u32 tx_dma_debug_ctl)523 void hw_atl_reg_tx_dma_debug_ctl_set(struct aq_hw_s *aq_hw,
524 				     u32 tx_dma_debug_ctl)
525 {
526 	aq_hw_write_reg(aq_hw, HW_ATL_TX_DMA_DEBUG_CTL_ADR, tx_dma_debug_ctl);
527 }
528 
hw_atl_reg_tx_dma_desc_base_addresslswset(struct aq_hw_s * aq_hw,u32 tx_dma_desc_base_addrlsw,u32 descriptor)529 void hw_atl_reg_tx_dma_desc_base_addresslswset(struct aq_hw_s *aq_hw,
530 					       u32 tx_dma_desc_base_addrlsw,
531 					       u32 descriptor)
532 {
533 	aq_hw_write_reg(aq_hw, HW_ATL_TX_DMA_DESC_BASE_ADDRLSW_ADR(descriptor),
534 			tx_dma_desc_base_addrlsw);
535 }
536 
hw_atl_reg_tx_dma_desc_base_addressmswset(struct aq_hw_s * aq_hw,u32 tx_dma_desc_base_addrmsw,u32 descriptor)537 void hw_atl_reg_tx_dma_desc_base_addressmswset(struct aq_hw_s *aq_hw,
538 					       u32 tx_dma_desc_base_addrmsw,
539 					       u32 descriptor)
540 {
541 	aq_hw_write_reg(aq_hw, HW_ATL_TX_DMA_DESC_BASE_ADDRMSW_ADR(descriptor),
542 			tx_dma_desc_base_addrmsw);
543 }
544 
hw_atl_reg_tx_dma_desc_tail_ptr_set(struct aq_hw_s * aq_hw,u32 tx_dma_desc_tail_ptr,u32 descriptor)545 void hw_atl_reg_tx_dma_desc_tail_ptr_set(struct aq_hw_s *aq_hw,
546 					 u32 tx_dma_desc_tail_ptr,
547 					 u32 descriptor)
548 {
549 	rte_wmb();
550 
551 	aq_hw_write_reg(aq_hw, HW_ATL_TX_DMA_DESC_TAIL_PTR_ADR(descriptor),
552 			tx_dma_desc_tail_ptr);
553 }
554 
hw_atl_reg_tx_intr_moder_ctrl_set(struct aq_hw_s * aq_hw,u32 tx_intr_moderation_ctl,u32 queue)555 void hw_atl_reg_tx_intr_moder_ctrl_set(struct aq_hw_s *aq_hw,
556 				       u32 tx_intr_moderation_ctl,
557 				       u32 queue)
558 {
559 	aq_hw_write_reg(aq_hw, HW_ATL_TX_INTR_MODERATION_CTL_ADR(queue),
560 			tx_intr_moderation_ctl);
561 }
562 
563 /* RPB: rx packet buffer */
hw_atl_rpb_dma_sys_lbk_set(struct aq_hw_s * aq_hw,u32 dma_sys_lbk)564 void hw_atl_rpb_dma_sys_lbk_set(struct aq_hw_s *aq_hw, u32 dma_sys_lbk)
565 {
566 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_DMA_SYS_LBK_ADR,
567 			    HW_ATL_RPB_DMA_SYS_LBK_MSK,
568 			    HW_ATL_RPB_DMA_SYS_LBK_SHIFT, dma_sys_lbk);
569 }
570 
hw_atl_rpb_rpf_rx_traf_class_mode_set(struct aq_hw_s * aq_hw,u32 rx_traf_class_mode)571 void hw_atl_rpb_rpf_rx_traf_class_mode_set(struct aq_hw_s *aq_hw,
572 					   u32 rx_traf_class_mode)
573 {
574 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RPF_RX_TC_MODE_ADR,
575 			    HW_ATL_RPB_RPF_RX_TC_MODE_MSK,
576 			    HW_ATL_RPB_RPF_RX_TC_MODE_SHIFT,
577 			    rx_traf_class_mode);
578 }
579 
hw_atl_rpb_rpf_rx_traf_class_mode_get(struct aq_hw_s * aq_hw)580 u32 hw_atl_rpb_rpf_rx_traf_class_mode_get(struct aq_hw_s *aq_hw)
581 {
582 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_RPB_RPF_RX_TC_MODE_ADR,
583 			HW_ATL_RPB_RPF_RX_TC_MODE_MSK,
584 			HW_ATL_RPB_RPF_RX_TC_MODE_SHIFT);
585 }
586 
hw_atl_rpb_rx_buff_en_set(struct aq_hw_s * aq_hw,u32 rx_buff_en)587 void hw_atl_rpb_rx_buff_en_set(struct aq_hw_s *aq_hw, u32 rx_buff_en)
588 {
589 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RX_BUF_EN_ADR,
590 			    HW_ATL_RPB_RX_BUF_EN_MSK,
591 			    HW_ATL_RPB_RX_BUF_EN_SHIFT, rx_buff_en);
592 }
593 
hw_atl_rpb_rx_buff_hi_threshold_per_tc_set(struct aq_hw_s * aq_hw,u32 rx_buff_hi_threshold_per_tc,u32 buffer)594 void hw_atl_rpb_rx_buff_hi_threshold_per_tc_set(struct aq_hw_s *aq_hw,
595 						u32 rx_buff_hi_threshold_per_tc,
596 						u32 buffer)
597 {
598 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RXBHI_THRESH_ADR(buffer),
599 			    HW_ATL_RPB_RXBHI_THRESH_MSK,
600 			    HW_ATL_RPB_RXBHI_THRESH_SHIFT,
601 			    rx_buff_hi_threshold_per_tc);
602 }
603 
hw_atl_rpb_rx_buff_lo_threshold_per_tc_set(struct aq_hw_s * aq_hw,u32 rx_buff_lo_threshold_per_tc,u32 buffer)604 void hw_atl_rpb_rx_buff_lo_threshold_per_tc_set(struct aq_hw_s *aq_hw,
605 						u32 rx_buff_lo_threshold_per_tc,
606 						u32 buffer)
607 {
608 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RXBLO_THRESH_ADR(buffer),
609 			    HW_ATL_RPB_RXBLO_THRESH_MSK,
610 			    HW_ATL_RPB_RXBLO_THRESH_SHIFT,
611 			    rx_buff_lo_threshold_per_tc);
612 }
613 
hw_atl_rpb_rx_flow_ctl_mode_set(struct aq_hw_s * aq_hw,u32 rx_flow_ctl_mode)614 void hw_atl_rpb_rx_flow_ctl_mode_set(struct aq_hw_s *aq_hw,
615 				     u32 rx_flow_ctl_mode)
616 {
617 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RX_FC_MODE_ADR,
618 			    HW_ATL_RPB_RX_FC_MODE_MSK,
619 			    HW_ATL_RPB_RX_FC_MODE_SHIFT, rx_flow_ctl_mode);
620 }
621 
hw_atl_rpb_rx_pkt_buff_size_per_tc_set(struct aq_hw_s * aq_hw,u32 rx_pkt_buff_size_per_tc,u32 buffer)622 void hw_atl_rpb_rx_pkt_buff_size_per_tc_set(struct aq_hw_s *aq_hw,
623 					    u32 rx_pkt_buff_size_per_tc,
624 					    u32 buffer)
625 {
626 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RXBBUF_SIZE_ADR(buffer),
627 			    HW_ATL_RPB_RXBBUF_SIZE_MSK,
628 			    HW_ATL_RPB_RXBBUF_SIZE_SHIFT,
629 			    rx_pkt_buff_size_per_tc);
630 }
631 
hw_atl_rpb_rx_xoff_en_per_tc_set(struct aq_hw_s * aq_hw,u32 rx_xoff_en_per_tc,u32 buffer)632 void hw_atl_rpb_rx_xoff_en_per_tc_set(struct aq_hw_s *aq_hw,
633 				      u32 rx_xoff_en_per_tc,
634 				      u32 buffer)
635 {
636 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RXBXOFF_EN_ADR(buffer),
637 			    HW_ATL_RPB_RXBXOFF_EN_MSK,
638 			    HW_ATL_RPB_RXBXOFF_EN_SHIFT,
639 			    rx_xoff_en_per_tc);
640 }
641 
642 /* rpf */
643 
hw_atl_rpfl2broadcast_count_threshold_set(struct aq_hw_s * aq_hw,u32 l2broadcast_count_threshold)644 void hw_atl_rpfl2broadcast_count_threshold_set(struct aq_hw_s *aq_hw,
645 					       u32 l2broadcast_count_threshold)
646 {
647 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2BC_THRESH_ADR,
648 			    HW_ATL_RPFL2BC_THRESH_MSK,
649 			    HW_ATL_RPFL2BC_THRESH_SHIFT,
650 			    l2broadcast_count_threshold);
651 }
652 
hw_atl_rpfl2broadcast_en_set(struct aq_hw_s * aq_hw,u32 l2broadcast_en)653 void hw_atl_rpfl2broadcast_en_set(struct aq_hw_s *aq_hw, u32 l2broadcast_en)
654 {
655 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2BC_EN_ADR, HW_ATL_RPFL2BC_EN_MSK,
656 			    HW_ATL_RPFL2BC_EN_SHIFT, l2broadcast_en);
657 }
658 
hw_atl_rpfl2broadcast_flr_act_set(struct aq_hw_s * aq_hw,u32 l2broadcast_flr_act)659 void hw_atl_rpfl2broadcast_flr_act_set(struct aq_hw_s *aq_hw,
660 				       u32 l2broadcast_flr_act)
661 {
662 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2BC_ACT_ADR,
663 			    HW_ATL_RPFL2BC_ACT_MSK,
664 			    HW_ATL_RPFL2BC_ACT_SHIFT, l2broadcast_flr_act);
665 }
666 
hw_atl_rpfl2multicast_flr_en_set(struct aq_hw_s * aq_hw,u32 l2multicast_flr_en,u32 filter)667 void hw_atl_rpfl2multicast_flr_en_set(struct aq_hw_s *aq_hw,
668 				      u32 l2multicast_flr_en,
669 				      u32 filter)
670 {
671 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2MC_ENF_ADR(filter),
672 			    HW_ATL_RPFL2MC_ENF_MSK,
673 			    HW_ATL_RPFL2MC_ENF_SHIFT, l2multicast_flr_en);
674 }
675 
hw_atl_rpfl2promiscuous_mode_en_set(struct aq_hw_s * aq_hw,u32 l2promiscuous_mode_en)676 void hw_atl_rpfl2promiscuous_mode_en_set(struct aq_hw_s *aq_hw,
677 					 u32 l2promiscuous_mode_en)
678 {
679 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2PROMIS_MODE_ADR,
680 			    HW_ATL_RPFL2PROMIS_MODE_MSK,
681 			    HW_ATL_RPFL2PROMIS_MODE_SHIFT,
682 			    l2promiscuous_mode_en);
683 }
684 
hw_atl_rpfl2unicast_flr_act_set(struct aq_hw_s * aq_hw,u32 l2unicast_flr_act,u32 filter)685 void hw_atl_rpfl2unicast_flr_act_set(struct aq_hw_s *aq_hw,
686 				     u32 l2unicast_flr_act,
687 				     u32 filter)
688 {
689 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2UC_ACTF_ADR(filter),
690 			    HW_ATL_RPFL2UC_ACTF_MSK, HW_ATL_RPFL2UC_ACTF_SHIFT,
691 			    l2unicast_flr_act);
692 }
693 
hw_atl_rpfl2_uc_flr_en_set(struct aq_hw_s * aq_hw,u32 l2unicast_flr_en,u32 filter)694 void hw_atl_rpfl2_uc_flr_en_set(struct aq_hw_s *aq_hw, u32 l2unicast_flr_en,
695 				u32 filter)
696 {
697 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2UC_ENF_ADR(filter),
698 			    HW_ATL_RPFL2UC_ENF_MSK,
699 			    HW_ATL_RPFL2UC_ENF_SHIFT, l2unicast_flr_en);
700 }
701 
hw_atl_rpfl2unicast_dest_addresslsw_set(struct aq_hw_s * aq_hw,u32 l2unicast_dest_addresslsw,u32 filter)702 void hw_atl_rpfl2unicast_dest_addresslsw_set(struct aq_hw_s *aq_hw,
703 					     u32 l2unicast_dest_addresslsw,
704 					     u32 filter)
705 {
706 	aq_hw_write_reg(aq_hw, HW_ATL_RPFL2UC_DAFLSW_ADR(filter),
707 			l2unicast_dest_addresslsw);
708 }
709 
hw_atl_rpfl2unicast_dest_addressmsw_set(struct aq_hw_s * aq_hw,u32 l2unicast_dest_addressmsw,u32 filter)710 void hw_atl_rpfl2unicast_dest_addressmsw_set(struct aq_hw_s *aq_hw,
711 					     u32 l2unicast_dest_addressmsw,
712 					     u32 filter)
713 {
714 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2UC_DAFMSW_ADR(filter),
715 			    HW_ATL_RPFL2UC_DAFMSW_MSK,
716 			    HW_ATL_RPFL2UC_DAFMSW_SHIFT,
717 			    l2unicast_dest_addressmsw);
718 }
719 
hw_atl_rpfl2_accept_all_mc_packets_set(struct aq_hw_s * aq_hw,u32 l2_accept_all_mc_packets)720 void hw_atl_rpfl2_accept_all_mc_packets_set(struct aq_hw_s *aq_hw,
721 					    u32 l2_accept_all_mc_packets)
722 {
723 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2MC_ACCEPT_ALL_ADR,
724 			    HW_ATL_RPFL2MC_ACCEPT_ALL_MSK,
725 			    HW_ATL_RPFL2MC_ACCEPT_ALL_SHIFT,
726 			    l2_accept_all_mc_packets);
727 }
728 
hw_atl_rpf_rpb_user_priority_tc_map_set(struct aq_hw_s * aq_hw,u32 user_priority_tc_map,u32 tc)729 void hw_atl_rpf_rpb_user_priority_tc_map_set(struct aq_hw_s *aq_hw,
730 					     u32 user_priority_tc_map, u32 tc)
731 {
732 /* register address for bitfield rx_tc_up{t}[2:0] */
733 	static const u32 rpf_rpb_rx_tc_upt_adr[8] = {
734 			0x000054c4U, 0x000054C4U, 0x000054C4U, 0x000054C4U,
735 			0x000054c4U, 0x000054C4U, 0x000054C4U, 0x000054C4U
736 		};
737 
738 /* bitmask for bitfield rx_tc_up{t}[2:0] */
739 	static const u32 rpf_rpb_rx_tc_upt_msk[8] = {
740 			0x00000007U, 0x00000070U, 0x00000700U, 0x00007000U,
741 			0x00070000U, 0x00700000U, 0x07000000U, 0x70000000U
742 		};
743 
744 /* lower bit position of bitfield rx_tc_up{t}[2:0] */
745 	static const u32 rpf_rpb_rx_tc_upt_shft[8] = {
746 			0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U
747 		};
748 
749 	aq_hw_write_reg_bit(aq_hw, rpf_rpb_rx_tc_upt_adr[tc],
750 			    rpf_rpb_rx_tc_upt_msk[tc],
751 			    rpf_rpb_rx_tc_upt_shft[tc],
752 			    user_priority_tc_map);
753 }
754 
hw_atl_rpf_rss_key_addr_set(struct aq_hw_s * aq_hw,u32 rss_key_addr)755 void hw_atl_rpf_rss_key_addr_set(struct aq_hw_s *aq_hw, u32 rss_key_addr)
756 {
757 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_RSS_KEY_ADDR_ADR,
758 			    HW_ATL_RPF_RSS_KEY_ADDR_MSK,
759 			    HW_ATL_RPF_RSS_KEY_ADDR_SHIFT,
760 			    rss_key_addr);
761 }
762 
hw_atl_rpf_rss_key_wr_data_set(struct aq_hw_s * aq_hw,u32 rss_key_wr_data)763 void hw_atl_rpf_rss_key_wr_data_set(struct aq_hw_s *aq_hw, u32 rss_key_wr_data)
764 {
765 	aq_hw_write_reg(aq_hw, HW_ATL_RPF_RSS_KEY_WR_DATA_ADR,
766 			rss_key_wr_data);
767 }
768 
hw_atl_rpf_rss_key_wr_en_get(struct aq_hw_s * aq_hw)769 u32 hw_atl_rpf_rss_key_wr_en_get(struct aq_hw_s *aq_hw)
770 {
771 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_RPF_RSS_KEY_WR_ENI_ADR,
772 				  HW_ATL_RPF_RSS_KEY_WR_ENI_MSK,
773 				  HW_ATL_RPF_RSS_KEY_WR_ENI_SHIFT);
774 }
775 
hw_atl_rpf_rss_key_wr_en_set(struct aq_hw_s * aq_hw,u32 rss_key_wr_en)776 void hw_atl_rpf_rss_key_wr_en_set(struct aq_hw_s *aq_hw, u32 rss_key_wr_en)
777 {
778 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_RSS_KEY_WR_ENI_ADR,
779 			    HW_ATL_RPF_RSS_KEY_WR_ENI_MSK,
780 			    HW_ATL_RPF_RSS_KEY_WR_ENI_SHIFT,
781 			    rss_key_wr_en);
782 }
783 
hw_atl_rpf_rss_redir_tbl_addr_set(struct aq_hw_s * aq_hw,u32 rss_redir_tbl_addr)784 void hw_atl_rpf_rss_redir_tbl_addr_set(struct aq_hw_s *aq_hw,
785 				       u32 rss_redir_tbl_addr)
786 {
787 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_RSS_REDIR_ADDR_ADR,
788 			    HW_ATL_RPF_RSS_REDIR_ADDR_MSK,
789 			    HW_ATL_RPF_RSS_REDIR_ADDR_SHIFT,
790 			    rss_redir_tbl_addr);
791 }
792 
hw_atl_rpf_rss_redir_tbl_wr_data_set(struct aq_hw_s * aq_hw,u32 rss_redir_tbl_wr_data)793 void hw_atl_rpf_rss_redir_tbl_wr_data_set(struct aq_hw_s *aq_hw,
794 					  u32 rss_redir_tbl_wr_data)
795 {
796 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_RSS_REDIR_WR_DATA_ADR,
797 			    HW_ATL_RPF_RSS_REDIR_WR_DATA_MSK,
798 			    HW_ATL_RPF_RSS_REDIR_WR_DATA_SHIFT,
799 			    rss_redir_tbl_wr_data);
800 }
801 
hw_atl_rpf_rss_redir_wr_en_get(struct aq_hw_s * aq_hw)802 u32 hw_atl_rpf_rss_redir_wr_en_get(struct aq_hw_s *aq_hw)
803 {
804 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_RPF_RSS_REDIR_WR_ENI_ADR,
805 				  HW_ATL_RPF_RSS_REDIR_WR_ENI_MSK,
806 				  HW_ATL_RPF_RSS_REDIR_WR_ENI_SHIFT);
807 }
808 
hw_atl_rpf_rss_redir_wr_en_set(struct aq_hw_s * aq_hw,u32 rss_redir_wr_en)809 void hw_atl_rpf_rss_redir_wr_en_set(struct aq_hw_s *aq_hw, u32 rss_redir_wr_en)
810 {
811 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_RSS_REDIR_WR_ENI_ADR,
812 			    HW_ATL_RPF_RSS_REDIR_WR_ENI_MSK,
813 			    HW_ATL_RPF_RSS_REDIR_WR_ENI_SHIFT, rss_redir_wr_en);
814 }
815 
hw_atl_rpf_tpo_to_rpf_sys_lbk_set(struct aq_hw_s * aq_hw,u32 tpo_to_rpf_sys_lbk)816 void hw_atl_rpf_tpo_to_rpf_sys_lbk_set(struct aq_hw_s *aq_hw,
817 				       u32 tpo_to_rpf_sys_lbk)
818 {
819 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_TPO_RPF_SYS_LBK_ADR,
820 			    HW_ATL_RPF_TPO_RPF_SYS_LBK_MSK,
821 			    HW_ATL_RPF_TPO_RPF_SYS_LBK_SHIFT,
822 			    tpo_to_rpf_sys_lbk);
823 }
824 
hw_atl_rpf_vlan_inner_etht_set(struct aq_hw_s * aq_hw,u32 vlan_inner_etht)825 void hw_atl_rpf_vlan_inner_etht_set(struct aq_hw_s *aq_hw, u32 vlan_inner_etht)
826 {
827 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_INNER_TPID_ADR,
828 			    HW_ATL_RPF_VL_INNER_TPID_MSK,
829 			    HW_ATL_RPF_VL_INNER_TPID_SHIFT,
830 			    vlan_inner_etht);
831 }
832 
hw_atl_rpf_vlan_outer_etht_set(struct aq_hw_s * aq_hw,u32 vlan_outer_etht)833 void hw_atl_rpf_vlan_outer_etht_set(struct aq_hw_s *aq_hw, u32 vlan_outer_etht)
834 {
835 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_OUTER_TPID_ADR,
836 			    HW_ATL_RPF_VL_OUTER_TPID_MSK,
837 			    HW_ATL_RPF_VL_OUTER_TPID_SHIFT,
838 			    vlan_outer_etht);
839 }
840 
hw_atl_rpf_vlan_prom_mode_en_set(struct aq_hw_s * aq_hw,u32 vlan_prom_mode_en)841 void hw_atl_rpf_vlan_prom_mode_en_set(struct aq_hw_s *aq_hw,
842 				      u32 vlan_prom_mode_en)
843 {
844 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_PROMIS_MODE_ADR,
845 			    HW_ATL_RPF_VL_PROMIS_MODE_MSK,
846 			    HW_ATL_RPF_VL_PROMIS_MODE_SHIFT,
847 			    vlan_prom_mode_en);
848 }
849 
hw_atl_rpf_vlan_accept_untagged_packets_set(struct aq_hw_s * aq_hw,u32 vlan_acc_untagged_packets)850 void hw_atl_rpf_vlan_accept_untagged_packets_set(struct aq_hw_s *aq_hw,
851 						 u32 vlan_acc_untagged_packets)
852 {
853 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_ACCEPT_UNTAGGED_MODE_ADR,
854 			    HW_ATL_RPF_VL_ACCEPT_UNTAGGED_MODE_MSK,
855 			    HW_ATL_RPF_VL_ACCEPT_UNTAGGED_MODE_SHIFT,
856 			    vlan_acc_untagged_packets);
857 }
858 
hw_atl_rpf_vlan_untagged_act_set(struct aq_hw_s * aq_hw,u32 vlan_untagged_act)859 void hw_atl_rpf_vlan_untagged_act_set(struct aq_hw_s *aq_hw,
860 				      u32 vlan_untagged_act)
861 {
862 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_UNTAGGED_ACT_ADR,
863 			    HW_ATL_RPF_VL_UNTAGGED_ACT_MSK,
864 			    HW_ATL_RPF_VL_UNTAGGED_ACT_SHIFT,
865 			    vlan_untagged_act);
866 }
867 
hw_atl_rpf_vlan_flr_en_set(struct aq_hw_s * aq_hw,u32 vlan_flr_en,u32 filter)868 void hw_atl_rpf_vlan_flr_en_set(struct aq_hw_s *aq_hw, u32 vlan_flr_en,
869 				u32 filter)
870 {
871 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_EN_F_ADR(filter),
872 			    HW_ATL_RPF_VL_EN_F_MSK,
873 			    HW_ATL_RPF_VL_EN_F_SHIFT,
874 			    vlan_flr_en);
875 }
876 
hw_atl_rpf_vlan_flr_act_set(struct aq_hw_s * aq_hw,u32 vlan_flr_act,u32 filter)877 void hw_atl_rpf_vlan_flr_act_set(struct aq_hw_s *aq_hw, u32 vlan_flr_act,
878 				 u32 filter)
879 {
880 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_ACT_F_ADR(filter),
881 			    HW_ATL_RPF_VL_ACT_F_MSK,
882 			    HW_ATL_RPF_VL_ACT_F_SHIFT,
883 			    vlan_flr_act);
884 }
885 
hw_atl_rpf_vlan_id_flr_set(struct aq_hw_s * aq_hw,u32 vlan_id_flr,u32 filter)886 void hw_atl_rpf_vlan_id_flr_set(struct aq_hw_s *aq_hw, u32 vlan_id_flr,
887 				u32 filter)
888 {
889 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_ID_F_ADR(filter),
890 			    HW_ATL_RPF_VL_ID_F_MSK,
891 			    HW_ATL_RPF_VL_ID_F_SHIFT,
892 			    vlan_id_flr);
893 }
894 
hw_atl_rpf_etht_flr_en_set(struct aq_hw_s * aq_hw,u32 etht_flr_en,u32 filter)895 void hw_atl_rpf_etht_flr_en_set(struct aq_hw_s *aq_hw, u32 etht_flr_en,
896 				u32 filter)
897 {
898 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_ENF_ADR(filter),
899 			    HW_ATL_RPF_ET_ENF_MSK,
900 			    HW_ATL_RPF_ET_ENF_SHIFT, etht_flr_en);
901 }
902 
hw_atl_rpf_etht_user_priority_en_set(struct aq_hw_s * aq_hw,u32 etht_user_priority_en,u32 filter)903 void hw_atl_rpf_etht_user_priority_en_set(struct aq_hw_s *aq_hw,
904 					  u32 etht_user_priority_en, u32 filter)
905 {
906 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_UPFEN_ADR(filter),
907 			    HW_ATL_RPF_ET_UPFEN_MSK, HW_ATL_RPF_ET_UPFEN_SHIFT,
908 			    etht_user_priority_en);
909 }
910 
hw_atl_rpf_etht_rx_queue_en_set(struct aq_hw_s * aq_hw,u32 etht_rx_queue_en,u32 filter)911 void hw_atl_rpf_etht_rx_queue_en_set(struct aq_hw_s *aq_hw,
912 				     u32 etht_rx_queue_en,
913 				     u32 filter)
914 {
915 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_RXQFEN_ADR(filter),
916 			    HW_ATL_RPF_ET_RXQFEN_MSK,
917 			    HW_ATL_RPF_ET_RXQFEN_SHIFT,
918 			    etht_rx_queue_en);
919 }
920 
hw_atl_rpf_etht_user_priority_set(struct aq_hw_s * aq_hw,u32 etht_user_priority,u32 filter)921 void hw_atl_rpf_etht_user_priority_set(struct aq_hw_s *aq_hw,
922 				       u32 etht_user_priority,
923 				       u32 filter)
924 {
925 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_UPF_ADR(filter),
926 			    HW_ATL_RPF_ET_UPF_MSK,
927 			    HW_ATL_RPF_ET_UPF_SHIFT, etht_user_priority);
928 }
929 
hw_atl_rpf_etht_rx_queue_set(struct aq_hw_s * aq_hw,u32 etht_rx_queue,u32 filter)930 void hw_atl_rpf_etht_rx_queue_set(struct aq_hw_s *aq_hw, u32 etht_rx_queue,
931 				  u32 filter)
932 {
933 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_RXQF_ADR(filter),
934 			    HW_ATL_RPF_ET_RXQF_MSK,
935 			    HW_ATL_RPF_ET_RXQF_SHIFT, etht_rx_queue);
936 }
937 
hw_atl_rpf_etht_mgt_queue_set(struct aq_hw_s * aq_hw,u32 etht_mgt_queue,u32 filter)938 void hw_atl_rpf_etht_mgt_queue_set(struct aq_hw_s *aq_hw, u32 etht_mgt_queue,
939 				   u32 filter)
940 {
941 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_MNG_RXQF_ADR(filter),
942 			    HW_ATL_RPF_ET_MNG_RXQF_MSK,
943 			    HW_ATL_RPF_ET_MNG_RXQF_SHIFT,
944 			    etht_mgt_queue);
945 }
946 
hw_atl_rpf_etht_flr_act_set(struct aq_hw_s * aq_hw,u32 etht_flr_act,u32 filter)947 void hw_atl_rpf_etht_flr_act_set(struct aq_hw_s *aq_hw, u32 etht_flr_act,
948 				 u32 filter)
949 {
950 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_ACTF_ADR(filter),
951 			    HW_ATL_RPF_ET_ACTF_MSK,
952 			    HW_ATL_RPF_ET_ACTF_SHIFT, etht_flr_act);
953 }
954 
hw_atl_rpf_etht_flr_set(struct aq_hw_s * aq_hw,u32 etht_flr,u32 filter)955 void hw_atl_rpf_etht_flr_set(struct aq_hw_s *aq_hw, u32 etht_flr, u32 filter)
956 {
957 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_VALF_ADR(filter),
958 			    HW_ATL_RPF_ET_VALF_MSK,
959 			    HW_ATL_RPF_ET_VALF_SHIFT, etht_flr);
960 }
961 
962 /* RPO: rx packet offload */
hw_atl_rpo_ipv4header_crc_offload_en_set(struct aq_hw_s * aq_hw,u32 ipv4header_crc_offload_en)963 void hw_atl_rpo_ipv4header_crc_offload_en_set(struct aq_hw_s *aq_hw,
964 					      u32 ipv4header_crc_offload_en)
965 {
966 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_IPV4CHK_EN_ADR,
967 			    HW_ATL_RPO_IPV4CHK_EN_MSK,
968 			    HW_ATL_RPO_IPV4CHK_EN_SHIFT,
969 			    ipv4header_crc_offload_en);
970 }
971 
hw_atl_rpo_rx_desc_vlan_stripping_set(struct aq_hw_s * aq_hw,u32 rx_desc_vlan_stripping,u32 descriptor)972 void hw_atl_rpo_rx_desc_vlan_stripping_set(struct aq_hw_s *aq_hw,
973 					   u32 rx_desc_vlan_stripping,
974 					   u32 descriptor)
975 {
976 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_DESCDVL_STRIP_ADR(descriptor),
977 			    HW_ATL_RPO_DESCDVL_STRIP_MSK,
978 			    HW_ATL_RPO_DESCDVL_STRIP_SHIFT,
979 			    rx_desc_vlan_stripping);
980 }
981 
hw_atl_rpo_tcp_udp_crc_offload_en_set(struct aq_hw_s * aq_hw,u32 tcp_udp_crc_offload_en)982 void hw_atl_rpo_tcp_udp_crc_offload_en_set(struct aq_hw_s *aq_hw,
983 					   u32 tcp_udp_crc_offload_en)
984 {
985 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPOL4CHK_EN_ADR,
986 			    HW_ATL_RPOL4CHK_EN_MSK,
987 			    HW_ATL_RPOL4CHK_EN_SHIFT, tcp_udp_crc_offload_en);
988 }
989 
hw_atl_rpo_lro_en_set(struct aq_hw_s * aq_hw,u32 lro_en)990 void hw_atl_rpo_lro_en_set(struct aq_hw_s *aq_hw, u32 lro_en)
991 {
992 	aq_hw_write_reg(aq_hw, HW_ATL_RPO_LRO_EN_ADR, lro_en);
993 }
994 
hw_atl_rpo_lro_patch_optimization_en_set(struct aq_hw_s * aq_hw,u32 lro_patch_optimization_en)995 void hw_atl_rpo_lro_patch_optimization_en_set(struct aq_hw_s *aq_hw,
996 					      u32 lro_patch_optimization_en)
997 {
998 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_PTOPT_EN_ADR,
999 			    HW_ATL_RPO_LRO_PTOPT_EN_MSK,
1000 			    HW_ATL_RPO_LRO_PTOPT_EN_SHIFT,
1001 			    lro_patch_optimization_en);
1002 }
1003 
hw_atl_rpo_lro_qsessions_lim_set(struct aq_hw_s * aq_hw,u32 lro_qsessions_lim)1004 void hw_atl_rpo_lro_qsessions_lim_set(struct aq_hw_s *aq_hw,
1005 				      u32 lro_qsessions_lim)
1006 {
1007 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_QSES_LMT_ADR,
1008 			    HW_ATL_RPO_LRO_QSES_LMT_MSK,
1009 			    HW_ATL_RPO_LRO_QSES_LMT_SHIFT,
1010 			    lro_qsessions_lim);
1011 }
1012 
hw_atl_rpo_lro_total_desc_lim_set(struct aq_hw_s * aq_hw,u32 lro_total_desc_lim)1013 void hw_atl_rpo_lro_total_desc_lim_set(struct aq_hw_s *aq_hw,
1014 				       u32 lro_total_desc_lim)
1015 {
1016 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_TOT_DSC_LMT_ADR,
1017 			    HW_ATL_RPO_LRO_TOT_DSC_LMT_MSK,
1018 			    HW_ATL_RPO_LRO_TOT_DSC_LMT_SHIFT,
1019 			    lro_total_desc_lim);
1020 }
1021 
hw_atl_rpo_lro_min_pay_of_first_pkt_set(struct aq_hw_s * aq_hw,u32 lro_min_pld_of_first_pkt)1022 void hw_atl_rpo_lro_min_pay_of_first_pkt_set(struct aq_hw_s *aq_hw,
1023 					     u32 lro_min_pld_of_first_pkt)
1024 {
1025 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_PKT_MIN_ADR,
1026 			    HW_ATL_RPO_LRO_PKT_MIN_MSK,
1027 			    HW_ATL_RPO_LRO_PKT_MIN_SHIFT,
1028 			    lro_min_pld_of_first_pkt);
1029 }
1030 
hw_atl_rpo_lro_pkt_lim_set(struct aq_hw_s * aq_hw,u32 lro_pkt_lim)1031 void hw_atl_rpo_lro_pkt_lim_set(struct aq_hw_s *aq_hw, u32 lro_pkt_lim)
1032 {
1033 	aq_hw_write_reg(aq_hw, HW_ATL_RPO_LRO_RSC_MAX_ADR, lro_pkt_lim);
1034 }
1035 
hw_atl_rpo_lro_max_num_of_descriptors_set(struct aq_hw_s * aq_hw,u32 lro_max_number_of_descriptors,u32 lro)1036 void hw_atl_rpo_lro_max_num_of_descriptors_set(struct aq_hw_s *aq_hw,
1037 					u32 lro_max_number_of_descriptors,
1038 					u32 lro)
1039 {
1040 /* Register address for bitfield lro{L}_des_max[1:0] */
1041 	static const u32 rpo_lro_ldes_max_adr[32] = {
1042 			0x000055A0U, 0x000055A0U, 0x000055A0U, 0x000055A0U,
1043 			0x000055A0U, 0x000055A0U, 0x000055A0U, 0x000055A0U,
1044 			0x000055A4U, 0x000055A4U, 0x000055A4U, 0x000055A4U,
1045 			0x000055A4U, 0x000055A4U, 0x000055A4U, 0x000055A4U,
1046 			0x000055A8U, 0x000055A8U, 0x000055A8U, 0x000055A8U,
1047 			0x000055A8U, 0x000055A8U, 0x000055A8U, 0x000055A8U,
1048 			0x000055ACU, 0x000055ACU, 0x000055ACU, 0x000055ACU,
1049 			0x000055ACU, 0x000055ACU, 0x000055ACU, 0x000055ACU
1050 		};
1051 
1052 /* Bitmask for bitfield lro{L}_des_max[1:0] */
1053 	static const u32 rpo_lro_ldes_max_msk[32] = {
1054 			0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1055 			0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U,
1056 			0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1057 			0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U,
1058 			0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1059 			0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U,
1060 			0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1061 			0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U
1062 		};
1063 
1064 /* Lower bit position of bitfield lro{L}_des_max[1:0] */
1065 	static const u32 rpo_lro_ldes_max_shift[32] = {
1066 			0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U,
1067 			0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U,
1068 			0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U,
1069 			0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U
1070 		};
1071 
1072 	aq_hw_write_reg_bit(aq_hw, rpo_lro_ldes_max_adr[lro],
1073 			    rpo_lro_ldes_max_msk[lro],
1074 			    rpo_lro_ldes_max_shift[lro],
1075 			    lro_max_number_of_descriptors);
1076 }
1077 
hw_atl_rpo_lro_time_base_divider_set(struct aq_hw_s * aq_hw,u32 lro_time_base_divider)1078 void hw_atl_rpo_lro_time_base_divider_set(struct aq_hw_s *aq_hw,
1079 					  u32 lro_time_base_divider)
1080 {
1081 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_TB_DIV_ADR,
1082 			    HW_ATL_RPO_LRO_TB_DIV_MSK,
1083 			    HW_ATL_RPO_LRO_TB_DIV_SHIFT,
1084 			    lro_time_base_divider);
1085 }
1086 
hw_atl_rpo_lro_inactive_interval_set(struct aq_hw_s * aq_hw,u32 lro_inactive_interval)1087 void hw_atl_rpo_lro_inactive_interval_set(struct aq_hw_s *aq_hw,
1088 					  u32 lro_inactive_interval)
1089 {
1090 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_INA_IVAL_ADR,
1091 			    HW_ATL_RPO_LRO_INA_IVAL_MSK,
1092 			    HW_ATL_RPO_LRO_INA_IVAL_SHIFT,
1093 			    lro_inactive_interval);
1094 }
1095 
hw_atl_rpo_lro_max_coalescing_interval_set(struct aq_hw_s * aq_hw,u32 lro_max_coal_interval)1096 void hw_atl_rpo_lro_max_coalescing_interval_set(struct aq_hw_s *aq_hw,
1097 						u32 lro_max_coal_interval)
1098 {
1099 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_MAX_IVAL_ADR,
1100 			    HW_ATL_RPO_LRO_MAX_IVAL_MSK,
1101 			    HW_ATL_RPO_LRO_MAX_IVAL_SHIFT,
1102 			    lro_max_coal_interval);
1103 }
1104 
1105 /* rx */
hw_atl_rx_rx_reg_res_dis_set(struct aq_hw_s * aq_hw,u32 rx_reg_res_dis)1106 void hw_atl_rx_rx_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 rx_reg_res_dis)
1107 {
1108 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RX_REG_RES_DSBL_ADR,
1109 			    HW_ATL_RX_REG_RES_DSBL_MSK,
1110 			    HW_ATL_RX_REG_RES_DSBL_SHIFT,
1111 			    rx_reg_res_dis);
1112 }
1113 
1114 /* tdm */
hw_atl_tdm_cpu_id_set(struct aq_hw_s * aq_hw,u32 cpuid,u32 dca)1115 void hw_atl_tdm_cpu_id_set(struct aq_hw_s *aq_hw, u32 cpuid, u32 dca)
1116 {
1117 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DCADCPUID_ADR(dca),
1118 			    HW_ATL_TDM_DCADCPUID_MSK,
1119 			    HW_ATL_TDM_DCADCPUID_SHIFT, cpuid);
1120 }
1121 
hw_atl_tdm_large_send_offload_en_set(struct aq_hw_s * aq_hw,u32 large_send_offload_en)1122 void hw_atl_tdm_large_send_offload_en_set(struct aq_hw_s *aq_hw,
1123 					  u32 large_send_offload_en)
1124 {
1125 	aq_hw_write_reg(aq_hw, HW_ATL_TDM_LSO_EN_ADR, large_send_offload_en);
1126 }
1127 
hw_atl_tdm_tx_dca_en_set(struct aq_hw_s * aq_hw,u32 tx_dca_en)1128 void hw_atl_tdm_tx_dca_en_set(struct aq_hw_s *aq_hw, u32 tx_dca_en)
1129 {
1130 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DCA_EN_ADR, HW_ATL_TDM_DCA_EN_MSK,
1131 			    HW_ATL_TDM_DCA_EN_SHIFT, tx_dca_en);
1132 }
1133 
hw_atl_tdm_tx_dca_mode_set(struct aq_hw_s * aq_hw,u32 tx_dca_mode)1134 void hw_atl_tdm_tx_dca_mode_set(struct aq_hw_s *aq_hw, u32 tx_dca_mode)
1135 {
1136 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DCA_MODE_ADR,
1137 			    HW_ATL_TDM_DCA_MODE_MSK,
1138 			    HW_ATL_TDM_DCA_MODE_SHIFT, tx_dca_mode);
1139 }
1140 
hw_atl_tdm_tx_desc_dca_en_set(struct aq_hw_s * aq_hw,u32 tx_desc_dca_en,u32 dca)1141 void hw_atl_tdm_tx_desc_dca_en_set(struct aq_hw_s *aq_hw, u32 tx_desc_dca_en,
1142 				   u32 dca)
1143 {
1144 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DCADDESC_EN_ADR(dca),
1145 			    HW_ATL_TDM_DCADDESC_EN_MSK,
1146 			    HW_ATL_TDM_DCADDESC_EN_SHIFT,
1147 			    tx_desc_dca_en);
1148 }
1149 
hw_atl_tdm_tx_desc_en_set(struct aq_hw_s * aq_hw,u32 tx_desc_en,u32 descriptor)1150 void hw_atl_tdm_tx_desc_en_set(struct aq_hw_s *aq_hw, u32 tx_desc_en,
1151 			       u32 descriptor)
1152 {
1153 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DESCDEN_ADR(descriptor),
1154 			    HW_ATL_TDM_DESCDEN_MSK,
1155 			    HW_ATL_TDM_DESCDEN_SHIFT,
1156 			    tx_desc_en);
1157 }
1158 
hw_atl_tdm_tx_desc_head_ptr_get(struct aq_hw_s * aq_hw,u32 descriptor)1159 u32 hw_atl_tdm_tx_desc_head_ptr_get(struct aq_hw_s *aq_hw, u32 descriptor)
1160 {
1161 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_TDM_DESCDHD_ADR(descriptor),
1162 				  HW_ATL_TDM_DESCDHD_MSK,
1163 				  HW_ATL_TDM_DESCDHD_SHIFT);
1164 }
1165 
hw_atl_tdm_tx_desc_len_set(struct aq_hw_s * aq_hw,u32 tx_desc_len,u32 descriptor)1166 void hw_atl_tdm_tx_desc_len_set(struct aq_hw_s *aq_hw, u32 tx_desc_len,
1167 				u32 descriptor)
1168 {
1169 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DESCDLEN_ADR(descriptor),
1170 			    HW_ATL_TDM_DESCDLEN_MSK,
1171 			    HW_ATL_TDM_DESCDLEN_SHIFT,
1172 			    tx_desc_len);
1173 }
1174 
hw_atl_tdm_tx_desc_wr_wb_irq_en_set(struct aq_hw_s * aq_hw,u32 tx_desc_wr_wb_irq_en)1175 void hw_atl_tdm_tx_desc_wr_wb_irq_en_set(struct aq_hw_s *aq_hw,
1176 					 u32 tx_desc_wr_wb_irq_en)
1177 {
1178 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_INT_DESC_WRB_EN_ADR,
1179 			    HW_ATL_TDM_INT_DESC_WRB_EN_MSK,
1180 			    HW_ATL_TDM_INT_DESC_WRB_EN_SHIFT,
1181 			    tx_desc_wr_wb_irq_en);
1182 }
1183 
hw_atl_tdm_tx_desc_wr_wb_threshold_set(struct aq_hw_s * aq_hw,u32 tx_desc_wr_wb_threshold,u32 descriptor)1184 void hw_atl_tdm_tx_desc_wr_wb_threshold_set(struct aq_hw_s *aq_hw,
1185 					    u32 tx_desc_wr_wb_threshold,
1186 					    u32 descriptor)
1187 {
1188 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DESCDWRB_THRESH_ADR(descriptor),
1189 			    HW_ATL_TDM_DESCDWRB_THRESH_MSK,
1190 			    HW_ATL_TDM_DESCDWRB_THRESH_SHIFT,
1191 			    tx_desc_wr_wb_threshold);
1192 }
1193 
hw_atl_tdm_tdm_intr_moder_en_set(struct aq_hw_s * aq_hw,u32 tdm_irq_moderation_en)1194 void hw_atl_tdm_tdm_intr_moder_en_set(struct aq_hw_s *aq_hw,
1195 				      u32 tdm_irq_moderation_en)
1196 {
1197 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_INT_MOD_EN_ADR,
1198 			    HW_ATL_TDM_INT_MOD_EN_MSK,
1199 			    HW_ATL_TDM_INT_MOD_EN_SHIFT,
1200 			    tdm_irq_moderation_en);
1201 }
1202 
1203 /* thm */
hw_atl_thm_lso_tcp_flag_of_first_pkt_set(struct aq_hw_s * aq_hw,u32 lso_tcp_flag_of_first_pkt)1204 void hw_atl_thm_lso_tcp_flag_of_first_pkt_set(struct aq_hw_s *aq_hw,
1205 					      u32 lso_tcp_flag_of_first_pkt)
1206 {
1207 	aq_hw_write_reg_bit(aq_hw, HW_ATL_THM_LSO_TCP_FLAG_FIRST_ADR,
1208 			    HW_ATL_THM_LSO_TCP_FLAG_FIRST_MSK,
1209 			    HW_ATL_THM_LSO_TCP_FLAG_FIRST_SHIFT,
1210 			    lso_tcp_flag_of_first_pkt);
1211 }
1212 
hw_atl_thm_lso_tcp_flag_of_last_pkt_set(struct aq_hw_s * aq_hw,u32 lso_tcp_flag_of_last_pkt)1213 void hw_atl_thm_lso_tcp_flag_of_last_pkt_set(struct aq_hw_s *aq_hw,
1214 					     u32 lso_tcp_flag_of_last_pkt)
1215 {
1216 	aq_hw_write_reg_bit(aq_hw, HW_ATL_THM_LSO_TCP_FLAG_LAST_ADR,
1217 			    HW_ATL_THM_LSO_TCP_FLAG_LAST_MSK,
1218 			    HW_ATL_THM_LSO_TCP_FLAG_LAST_SHIFT,
1219 			    lso_tcp_flag_of_last_pkt);
1220 }
1221 
hw_atl_thm_lso_tcp_flag_of_middle_pkt_set(struct aq_hw_s * aq_hw,u32 lso_tcp_flag_of_middle_pkt)1222 void hw_atl_thm_lso_tcp_flag_of_middle_pkt_set(struct aq_hw_s *aq_hw,
1223 					       u32 lso_tcp_flag_of_middle_pkt)
1224 {
1225 	aq_hw_write_reg_bit(aq_hw, HW_ATL_THM_LSO_TCP_FLAG_MID_ADR,
1226 			    HW_ATL_THM_LSO_TCP_FLAG_MID_MSK,
1227 			    HW_ATL_THM_LSO_TCP_FLAG_MID_SHIFT,
1228 			    lso_tcp_flag_of_middle_pkt);
1229 }
1230 
1231 /* TPB: tx packet buffer */
hw_atl_tpb_tx_buff_en_set(struct aq_hw_s * aq_hw,u32 tx_buff_en)1232 void hw_atl_tpb_tx_buff_en_set(struct aq_hw_s *aq_hw, u32 tx_buff_en)
1233 {
1234 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TX_BUF_EN_ADR,
1235 			    HW_ATL_TPB_TX_BUF_EN_MSK,
1236 			    HW_ATL_TPB_TX_BUF_EN_SHIFT, tx_buff_en);
1237 }
1238 
hw_atl_rpb_tps_tx_tc_mode_get(struct aq_hw_s * aq_hw)1239 u32 hw_atl_rpb_tps_tx_tc_mode_get(struct aq_hw_s *aq_hw)
1240 {
1241 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_TPB_TX_TC_MODE_ADDR,
1242 			HW_ATL_TPB_TX_TC_MODE_MSK,
1243 			HW_ATL_TPB_TX_TC_MODE_SHIFT);
1244 }
1245 
hw_atl_rpb_tps_tx_tc_mode_set(struct aq_hw_s * aq_hw,u32 tx_traf_class_mode)1246 void hw_atl_rpb_tps_tx_tc_mode_set(struct aq_hw_s *aq_hw,
1247 				   u32 tx_traf_class_mode)
1248 {
1249 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TX_TC_MODE_ADDR,
1250 			HW_ATL_TPB_TX_TC_MODE_MSK,
1251 			HW_ATL_TPB_TX_TC_MODE_SHIFT,
1252 			tx_traf_class_mode);
1253 }
1254 
hw_atl_tpb_tx_buff_hi_threshold_per_tc_set(struct aq_hw_s * aq_hw,u32 tx_buff_hi_threshold_per_tc,u32 buffer)1255 void hw_atl_tpb_tx_buff_hi_threshold_per_tc_set(struct aq_hw_s *aq_hw,
1256 						u32 tx_buff_hi_threshold_per_tc,
1257 					 u32 buffer)
1258 {
1259 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TXBHI_THRESH_ADR(buffer),
1260 			    HW_ATL_TPB_TXBHI_THRESH_MSK,
1261 			    HW_ATL_TPB_TXBHI_THRESH_SHIFT,
1262 			    tx_buff_hi_threshold_per_tc);
1263 }
1264 
hw_atl_tpb_tx_buff_lo_threshold_per_tc_set(struct aq_hw_s * aq_hw,u32 tx_buff_lo_threshold_per_tc,u32 buffer)1265 void hw_atl_tpb_tx_buff_lo_threshold_per_tc_set(struct aq_hw_s *aq_hw,
1266 						u32 tx_buff_lo_threshold_per_tc,
1267 						u32 buffer)
1268 {
1269 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TXBLO_THRESH_ADR(buffer),
1270 			    HW_ATL_TPB_TXBLO_THRESH_MSK,
1271 			    HW_ATL_TPB_TXBLO_THRESH_SHIFT,
1272 			    tx_buff_lo_threshold_per_tc);
1273 }
1274 
hw_atl_tpb_tx_dma_sys_lbk_en_set(struct aq_hw_s * aq_hw,u32 tx_dma_sys_lbk_en)1275 void hw_atl_tpb_tx_dma_sys_lbk_en_set(struct aq_hw_s *aq_hw,
1276 				      u32 tx_dma_sys_lbk_en)
1277 {
1278 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_DMA_SYS_LBK_ADR,
1279 			    HW_ATL_TPB_DMA_SYS_LBK_MSK,
1280 			    HW_ATL_TPB_DMA_SYS_LBK_SHIFT,
1281 			    tx_dma_sys_lbk_en);
1282 }
1283 
hw_atl_tpb_tx_pkt_buff_size_per_tc_set(struct aq_hw_s * aq_hw,u32 tx_pkt_buff_size_per_tc,u32 buffer)1284 void hw_atl_tpb_tx_pkt_buff_size_per_tc_set(struct aq_hw_s *aq_hw,
1285 					    u32 tx_pkt_buff_size_per_tc,
1286 					    u32 buffer)
1287 {
1288 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TXBBUF_SIZE_ADR(buffer),
1289 			    HW_ATL_TPB_TXBBUF_SIZE_MSK,
1290 			    HW_ATL_TPB_TXBBUF_SIZE_SHIFT,
1291 			    tx_pkt_buff_size_per_tc);
1292 }
1293 
hw_atl_tpb_tx_path_scp_ins_en_set(struct aq_hw_s * aq_hw,u32 tx_path_scp_ins_en)1294 void hw_atl_tpb_tx_path_scp_ins_en_set(struct aq_hw_s *aq_hw,
1295 				       u32 tx_path_scp_ins_en)
1296 {
1297 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TX_SCP_INS_EN_ADR,
1298 			    HW_ATL_TPB_TX_SCP_INS_EN_MSK,
1299 			    HW_ATL_TPB_TX_SCP_INS_EN_SHIFT,
1300 			    tx_path_scp_ins_en);
1301 }
1302 
1303 /* TPO: tx packet offload */
hw_atl_tpo_ipv4header_crc_offload_en_set(struct aq_hw_s * aq_hw,u32 ipv4header_crc_offload_en)1304 void hw_atl_tpo_ipv4header_crc_offload_en_set(struct aq_hw_s *aq_hw,
1305 					      u32 ipv4header_crc_offload_en)
1306 {
1307 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPO_IPV4CHK_EN_ADR,
1308 			    HW_ATL_TPO_IPV4CHK_EN_MSK,
1309 			    HW_ATL_TPO_IPV4CHK_EN_SHIFT,
1310 			    ipv4header_crc_offload_en);
1311 }
1312 
hw_atl_tpo_tcp_udp_crc_offload_en_set(struct aq_hw_s * aq_hw,u32 tcp_udp_crc_offload_en)1313 void hw_atl_tpo_tcp_udp_crc_offload_en_set(struct aq_hw_s *aq_hw,
1314 					   u32 tcp_udp_crc_offload_en)
1315 {
1316 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPOL4CHK_EN_ADR,
1317 			    HW_ATL_TPOL4CHK_EN_MSK,
1318 			    HW_ATL_TPOL4CHK_EN_SHIFT,
1319 			    tcp_udp_crc_offload_en);
1320 }
1321 
hw_atl_tpo_tx_pkt_sys_lbk_en_set(struct aq_hw_s * aq_hw,u32 tx_pkt_sys_lbk_en)1322 void hw_atl_tpo_tx_pkt_sys_lbk_en_set(struct aq_hw_s *aq_hw,
1323 				      u32 tx_pkt_sys_lbk_en)
1324 {
1325 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPO_PKT_SYS_LBK_ADR,
1326 			    HW_ATL_TPO_PKT_SYS_LBK_MSK,
1327 			    HW_ATL_TPO_PKT_SYS_LBK_SHIFT,
1328 			    tx_pkt_sys_lbk_en);
1329 }
1330 
1331 /* TPS: tx packet scheduler */
hw_atl_tps_tx_pkt_shed_data_arb_mode_set(struct aq_hw_s * aq_hw,u32 tx_pkt_shed_data_arb_mode)1332 void hw_atl_tps_tx_pkt_shed_data_arb_mode_set(struct aq_hw_s *aq_hw,
1333 					      u32 tx_pkt_shed_data_arb_mode)
1334 {
1335 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DATA_TC_ARB_MODE_ADR,
1336 			    HW_ATL_TPS_DATA_TC_ARB_MODE_MSK,
1337 			    HW_ATL_TPS_DATA_TC_ARB_MODE_SHIFT,
1338 			    tx_pkt_shed_data_arb_mode);
1339 }
1340 
hw_atl_tps_tx_pkt_shed_desc_rate_curr_time_res_set(struct aq_hw_s * aq_hw,u32 curr_time_res)1341 void hw_atl_tps_tx_pkt_shed_desc_rate_curr_time_res_set(struct aq_hw_s *aq_hw,
1342 							u32 curr_time_res)
1343 {
1344 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_RATE_TA_RST_ADR,
1345 			    HW_ATL_TPS_DESC_RATE_TA_RST_MSK,
1346 			    HW_ATL_TPS_DESC_RATE_TA_RST_SHIFT,
1347 			    curr_time_res);
1348 }
1349 
hw_atl_tps_tx_pkt_shed_desc_rate_lim_set(struct aq_hw_s * aq_hw,u32 tx_pkt_shed_desc_rate_lim)1350 void hw_atl_tps_tx_pkt_shed_desc_rate_lim_set(struct aq_hw_s *aq_hw,
1351 					      u32 tx_pkt_shed_desc_rate_lim)
1352 {
1353 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_RATE_LIM_ADR,
1354 			    HW_ATL_TPS_DESC_RATE_LIM_MSK,
1355 			    HW_ATL_TPS_DESC_RATE_LIM_SHIFT,
1356 			    tx_pkt_shed_desc_rate_lim);
1357 }
1358 
hw_atl_tps_tx_pkt_shed_desc_tc_arb_mode_set(struct aq_hw_s * aq_hw,u32 arb_mode)1359 void hw_atl_tps_tx_pkt_shed_desc_tc_arb_mode_set(struct aq_hw_s *aq_hw,
1360 						 u32 arb_mode)
1361 {
1362 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_TC_ARB_MODE_ADR,
1363 			    HW_ATL_TPS_DESC_TC_ARB_MODE_MSK,
1364 			    HW_ATL_TPS_DESC_TC_ARB_MODE_SHIFT,
1365 			    arb_mode);
1366 }
1367 
hw_atl_tps_tx_pkt_shed_desc_tc_max_credit_set(struct aq_hw_s * aq_hw,u32 max_credit,u32 tc)1368 void hw_atl_tps_tx_pkt_shed_desc_tc_max_credit_set(struct aq_hw_s *aq_hw,
1369 						   u32 max_credit,
1370 						   u32 tc)
1371 {
1372 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_TCTCREDIT_MAX_ADR(tc),
1373 			    HW_ATL_TPS_DESC_TCTCREDIT_MAX_MSK,
1374 			    HW_ATL_TPS_DESC_TCTCREDIT_MAX_SHIFT,
1375 			    max_credit);
1376 }
1377 
hw_atl_tps_tx_pkt_shed_desc_tc_weight_set(struct aq_hw_s * aq_hw,u32 tx_pkt_shed_desc_tc_weight,u32 tc)1378 void hw_atl_tps_tx_pkt_shed_desc_tc_weight_set(struct aq_hw_s *aq_hw,
1379 					       u32 tx_pkt_shed_desc_tc_weight,
1380 					       u32 tc)
1381 {
1382 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_TCTWEIGHT_ADR(tc),
1383 			    HW_ATL_TPS_DESC_TCTWEIGHT_MSK,
1384 			    HW_ATL_TPS_DESC_TCTWEIGHT_SHIFT,
1385 			    tx_pkt_shed_desc_tc_weight);
1386 }
1387 
hw_atl_tps_tx_pkt_shed_desc_vm_arb_mode_set(struct aq_hw_s * aq_hw,u32 arb_mode)1388 void hw_atl_tps_tx_pkt_shed_desc_vm_arb_mode_set(struct aq_hw_s *aq_hw,
1389 						 u32 arb_mode)
1390 {
1391 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_VM_ARB_MODE_ADR,
1392 			    HW_ATL_TPS_DESC_VM_ARB_MODE_MSK,
1393 			    HW_ATL_TPS_DESC_VM_ARB_MODE_SHIFT,
1394 			    arb_mode);
1395 }
1396 
hw_atl_tps_tx_pkt_shed_tc_data_max_credit_set(struct aq_hw_s * aq_hw,u32 max_credit,u32 tc)1397 void hw_atl_tps_tx_pkt_shed_tc_data_max_credit_set(struct aq_hw_s *aq_hw,
1398 						   u32 max_credit,
1399 						   u32 tc)
1400 {
1401 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DATA_TCTCREDIT_MAX_ADR(tc),
1402 			    HW_ATL_TPS_DATA_TCTCREDIT_MAX_MSK,
1403 			    HW_ATL_TPS_DATA_TCTCREDIT_MAX_SHIFT,
1404 			    max_credit);
1405 }
1406 
hw_atl_tps_tx_pkt_shed_tc_data_weight_set(struct aq_hw_s * aq_hw,u32 tx_pkt_shed_tc_data_weight,u32 tc)1407 void hw_atl_tps_tx_pkt_shed_tc_data_weight_set(struct aq_hw_s *aq_hw,
1408 					       u32 tx_pkt_shed_tc_data_weight,
1409 					       u32 tc)
1410 {
1411 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DATA_TCTWEIGHT_ADR(tc),
1412 			    HW_ATL_TPS_DATA_TCTWEIGHT_MSK,
1413 			    HW_ATL_TPS_DATA_TCTWEIGHT_SHIFT,
1414 			    tx_pkt_shed_tc_data_weight);
1415 }
1416 
1417 /* tx */
hw_atl_tx_tx_reg_res_dis_set(struct aq_hw_s * aq_hw,u32 tx_reg_res_dis)1418 void hw_atl_tx_tx_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 tx_reg_res_dis)
1419 {
1420 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TX_REG_RES_DSBL_ADR,
1421 			    HW_ATL_TX_REG_RES_DSBL_MSK,
1422 			    HW_ATL_TX_REG_RES_DSBL_SHIFT, tx_reg_res_dis);
1423 }
1424 
1425 /* msm */
hw_atl_msm_reg_access_status_get(struct aq_hw_s * aq_hw)1426 u32 hw_atl_msm_reg_access_status_get(struct aq_hw_s *aq_hw)
1427 {
1428 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_MSM_REG_ACCESS_BUSY_ADR,
1429 				  HW_ATL_MSM_REG_ACCESS_BUSY_MSK,
1430 				  HW_ATL_MSM_REG_ACCESS_BUSY_SHIFT);
1431 }
1432 
hw_atl_msm_reg_addr_for_indirect_addr_set(struct aq_hw_s * aq_hw,u32 reg_addr_for_indirect_addr)1433 void hw_atl_msm_reg_addr_for_indirect_addr_set(struct aq_hw_s *aq_hw,
1434 					       u32 reg_addr_for_indirect_addr)
1435 {
1436 	aq_hw_write_reg_bit(aq_hw, HW_ATL_MSM_REG_ADDR_ADR,
1437 			    HW_ATL_MSM_REG_ADDR_MSK,
1438 			    HW_ATL_MSM_REG_ADDR_SHIFT,
1439 			    reg_addr_for_indirect_addr);
1440 }
1441 
hw_atl_msm_reg_rd_strobe_set(struct aq_hw_s * aq_hw,u32 reg_rd_strobe)1442 void hw_atl_msm_reg_rd_strobe_set(struct aq_hw_s *aq_hw, u32 reg_rd_strobe)
1443 {
1444 	aq_hw_write_reg_bit(aq_hw, HW_ATL_MSM_REG_RD_STROBE_ADR,
1445 			    HW_ATL_MSM_REG_RD_STROBE_MSK,
1446 			    HW_ATL_MSM_REG_RD_STROBE_SHIFT,
1447 			    reg_rd_strobe);
1448 }
1449 
hw_atl_msm_reg_rd_data_get(struct aq_hw_s * aq_hw)1450 u32 hw_atl_msm_reg_rd_data_get(struct aq_hw_s *aq_hw)
1451 {
1452 	return aq_hw_read_reg(aq_hw, HW_ATL_MSM_REG_RD_DATA_ADR);
1453 }
1454 
hw_atl_msm_reg_wr_data_set(struct aq_hw_s * aq_hw,u32 reg_wr_data)1455 void hw_atl_msm_reg_wr_data_set(struct aq_hw_s *aq_hw, u32 reg_wr_data)
1456 {
1457 	aq_hw_write_reg(aq_hw, HW_ATL_MSM_REG_WR_DATA_ADR, reg_wr_data);
1458 }
1459 
hw_atl_msm_reg_wr_strobe_set(struct aq_hw_s * aq_hw,u32 reg_wr_strobe)1460 void hw_atl_msm_reg_wr_strobe_set(struct aq_hw_s *aq_hw, u32 reg_wr_strobe)
1461 {
1462 	aq_hw_write_reg_bit(aq_hw, HW_ATL_MSM_REG_WR_STROBE_ADR,
1463 			    HW_ATL_MSM_REG_WR_STROBE_MSK,
1464 			    HW_ATL_MSM_REG_WR_STROBE_SHIFT,
1465 			    reg_wr_strobe);
1466 }
1467 
1468 /* pci */
hw_atl_pci_pci_reg_res_dis_set(struct aq_hw_s * aq_hw,u32 pci_reg_res_dis)1469 void hw_atl_pci_pci_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 pci_reg_res_dis)
1470 {
1471 	aq_hw_write_reg_bit(aq_hw, HW_ATL_PCI_REG_RES_DSBL_ADR,
1472 			    HW_ATL_PCI_REG_RES_DSBL_MSK,
1473 			    HW_ATL_PCI_REG_RES_DSBL_SHIFT,
1474 			    pci_reg_res_dis);
1475 }
1476 
hw_atl_reg_glb_cpu_scratch_scp_set(struct aq_hw_s * aq_hw,u32 glb_cpu_scratch_scp,u32 scratch_scp)1477 void hw_atl_reg_glb_cpu_scratch_scp_set(struct aq_hw_s *aq_hw,
1478 					u32 glb_cpu_scratch_scp,
1479 					u32 scratch_scp)
1480 {
1481 	aq_hw_write_reg(aq_hw, HW_ATL_GLB_CPU_SCRATCH_SCP_ADR(scratch_scp),
1482 			glb_cpu_scratch_scp);
1483 }
1484 
hw_atl_mcp_up_force_intr_set(struct aq_hw_s * aq_hw,u32 up_force_intr)1485 void hw_atl_mcp_up_force_intr_set(struct aq_hw_s *aq_hw, u32 up_force_intr)
1486 {
1487 	aq_hw_write_reg_bit(aq_hw, HW_ATL_MCP_UP_FORCE_INTERRUPT_ADR,
1488 			HW_ATL_MCP_UP_FORCE_INTERRUPT_MSK,
1489 			HW_ATL_MCP_UP_FORCE_INTERRUPT_SHIFT, up_force_intr);
1490 }
1491