1 // SPDX-License-Identifier: GPL-2.0-only
2 /* Atlantic Network Driver
3  *
4  * Copyright (C) 2014-2019 aQuantia Corporation
5  * Copyright (C) 2019-2020 Marvell International Ltd.
6  */
7 
8 /* File hw_atl_llh.c: Definitions of bitfield and register access functions for
9  * Atlantic registers.
10  */
11 
12 #include "hw_atl_llh.h"
13 #include "hw_atl_llh_internal.h"
14 #include "../aq_hw_utils.h"
15 
hw_atl_ts_reset_set(struct aq_hw_s * aq_hw,u32 val)16 void hw_atl_ts_reset_set(struct aq_hw_s *aq_hw, u32 val)
17 {
18 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TS_RESET_ADR,
19 			    HW_ATL_TS_RESET_MSK,
20 			    HW_ATL_TS_RESET_SHIFT,
21 			    val);
22 }
23 
hw_atl_ts_power_down_set(struct aq_hw_s * aq_hw,u32 val)24 void hw_atl_ts_power_down_set(struct aq_hw_s *aq_hw, u32 val)
25 {
26 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TS_POWER_DOWN_ADR,
27 			    HW_ATL_TS_POWER_DOWN_MSK,
28 			    HW_ATL_TS_POWER_DOWN_SHIFT,
29 			    val);
30 }
31 
hw_atl_ts_power_down_get(struct aq_hw_s * aq_hw)32 u32 hw_atl_ts_power_down_get(struct aq_hw_s *aq_hw)
33 {
34 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_TS_POWER_DOWN_ADR,
35 				  HW_ATL_TS_POWER_DOWN_MSK,
36 				  HW_ATL_TS_POWER_DOWN_SHIFT);
37 }
38 
hw_atl_ts_ready_get(struct aq_hw_s * aq_hw)39 u32 hw_atl_ts_ready_get(struct aq_hw_s *aq_hw)
40 {
41 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_TS_READY_ADR,
42 				  HW_ATL_TS_READY_MSK,
43 				  HW_ATL_TS_READY_SHIFT);
44 }
45 
hw_atl_ts_ready_latch_high_get(struct aq_hw_s * aq_hw)46 u32 hw_atl_ts_ready_latch_high_get(struct aq_hw_s *aq_hw)
47 {
48 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_TS_READY_LATCH_HIGH_ADR,
49 				  HW_ATL_TS_READY_LATCH_HIGH_MSK,
50 				  HW_ATL_TS_READY_LATCH_HIGH_SHIFT);
51 }
52 
hw_atl_ts_data_get(struct aq_hw_s * aq_hw)53 u32 hw_atl_ts_data_get(struct aq_hw_s *aq_hw)
54 {
55 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_TS_DATA_OUT_ADR,
56 				  HW_ATL_TS_DATA_OUT_MSK,
57 				  HW_ATL_TS_DATA_OUT_SHIFT);
58 }
59 
hw_atl_smb0_bus_busy_get(struct aq_hw_s * aq_hw)60 u32 hw_atl_smb0_bus_busy_get(struct aq_hw_s *aq_hw)
61 {
62 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_SMB0_BUS_BUSY_ADR,
63 				HW_ATL_SMB0_BUS_BUSY_MSK,
64 				HW_ATL_SMB0_BUS_BUSY_SHIFT);
65 }
66 
hw_atl_smb0_byte_transfer_complete_get(struct aq_hw_s * aq_hw)67 u32 hw_atl_smb0_byte_transfer_complete_get(struct aq_hw_s *aq_hw)
68 {
69 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_SMB0_BYTE_TRANSFER_COMPLETE_ADR,
70 				HW_ATL_SMB0_BYTE_TRANSFER_COMPLETE_MSK,
71 				HW_ATL_SMB0_BYTE_TRANSFER_COMPLETE_SHIFT);
72 }
73 
hw_atl_smb0_receive_acknowledged_get(struct aq_hw_s * aq_hw)74 u32 hw_atl_smb0_receive_acknowledged_get(struct aq_hw_s *aq_hw)
75 {
76 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_SMB0_RX_ACKNOWLEDGED_ADR,
77 				HW_ATL_SMB0_RX_ACKNOWLEDGED_MSK,
78 				HW_ATL_SMB0_RX_ACKNOWLEDGED_SHIFT);
79 }
80 
hw_atl_smb0_repeated_start_detect_get(struct aq_hw_s * aq_hw)81 u32 hw_atl_smb0_repeated_start_detect_get(struct aq_hw_s *aq_hw)
82 {
83 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_SMB0_REPEATED_START_DETECT_ADR,
84 				HW_ATL_SMB0_REPEATED_START_DETECT_MSK,
85 				HW_ATL_SMB0_REPEATED_START_DETECT_SHIFT);
86 }
87 
hw_atl_smb0_rx_data_get(struct aq_hw_s * aq_hw)88 u32 hw_atl_smb0_rx_data_get(struct aq_hw_s *aq_hw)
89 {
90 	return aq_hw_read_reg(aq_hw, HW_ATL_SMB0_RECEIVED_DATA_ADR);
91 }
92 
hw_atl_smb0_tx_data_set(struct aq_hw_s * aq_hw,u32 data)93 void hw_atl_smb0_tx_data_set(struct aq_hw_s *aq_hw, u32 data)
94 {
95 	return aq_hw_write_reg(aq_hw, HW_ATL_SMB0_TRANSMITTED_DATA_ADR, data);
96 }
97 
hw_atl_smb0_provisioning2_set(struct aq_hw_s * aq_hw,u32 data)98 void hw_atl_smb0_provisioning2_set(struct aq_hw_s *aq_hw, u32 data)
99 {
100 	return aq_hw_write_reg(aq_hw, HW_ATL_SMB0_PROVISIONING2_ADR, data);
101 }
102 
103 /* global */
hw_atl_reg_glb_cpu_sem_set(struct aq_hw_s * aq_hw,u32 glb_cpu_sem,u32 semaphore)104 void hw_atl_reg_glb_cpu_sem_set(struct aq_hw_s *aq_hw, u32 glb_cpu_sem,
105 				u32 semaphore)
106 {
107 	aq_hw_write_reg(aq_hw, HW_ATL_GLB_CPU_SEM_ADR(semaphore), glb_cpu_sem);
108 }
109 
hw_atl_reg_glb_cpu_sem_get(struct aq_hw_s * aq_hw,u32 semaphore)110 u32 hw_atl_reg_glb_cpu_sem_get(struct aq_hw_s *aq_hw, u32 semaphore)
111 {
112 	return aq_hw_read_reg(aq_hw, HW_ATL_GLB_CPU_SEM_ADR(semaphore));
113 }
114 
hw_atl_glb_glb_reg_res_dis_set(struct aq_hw_s * aq_hw,u32 glb_reg_res_dis)115 void hw_atl_glb_glb_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 glb_reg_res_dis)
116 {
117 	aq_hw_write_reg_bit(aq_hw, HW_ATL_GLB_REG_RES_DIS_ADR,
118 			    HW_ATL_GLB_REG_RES_DIS_MSK,
119 			    HW_ATL_GLB_REG_RES_DIS_SHIFT,
120 			    glb_reg_res_dis);
121 }
122 
hw_atl_glb_soft_res_set(struct aq_hw_s * aq_hw,u32 soft_res)123 void hw_atl_glb_soft_res_set(struct aq_hw_s *aq_hw, u32 soft_res)
124 {
125 	aq_hw_write_reg_bit(aq_hw, HW_ATL_GLB_SOFT_RES_ADR,
126 			    HW_ATL_GLB_SOFT_RES_MSK,
127 			    HW_ATL_GLB_SOFT_RES_SHIFT, soft_res);
128 }
129 
hw_atl_glb_soft_res_get(struct aq_hw_s * aq_hw)130 u32 hw_atl_glb_soft_res_get(struct aq_hw_s *aq_hw)
131 {
132 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_GLB_SOFT_RES_ADR,
133 				  HW_ATL_GLB_SOFT_RES_MSK,
134 				  HW_ATL_GLB_SOFT_RES_SHIFT);
135 }
136 
hw_atl_reg_glb_mif_id_get(struct aq_hw_s * aq_hw)137 u32 hw_atl_reg_glb_mif_id_get(struct aq_hw_s *aq_hw)
138 {
139 	return aq_hw_read_reg(aq_hw, HW_ATL_GLB_MIF_ID_ADR);
140 }
141 
142 /* stats */
hw_atl_rpb_rx_dma_drop_pkt_cnt_get(struct aq_hw_s * aq_hw)143 u32 hw_atl_rpb_rx_dma_drop_pkt_cnt_get(struct aq_hw_s *aq_hw)
144 {
145 	return aq_hw_read_reg(aq_hw, HW_ATL_RPB_RX_DMA_DROP_PKT_CNT_ADR);
146 }
147 
hw_atl_stats_rx_dma_good_octet_counter_get(struct aq_hw_s * aq_hw)148 u64 hw_atl_stats_rx_dma_good_octet_counter_get(struct aq_hw_s *aq_hw)
149 {
150 	return aq_hw_read_reg64(aq_hw, HW_ATL_STATS_RX_DMA_GOOD_OCTET_COUNTERLSW);
151 }
152 
hw_atl_stats_rx_dma_good_pkt_counter_get(struct aq_hw_s * aq_hw)153 u64 hw_atl_stats_rx_dma_good_pkt_counter_get(struct aq_hw_s *aq_hw)
154 {
155 	return aq_hw_read_reg64(aq_hw, HW_ATL_STATS_RX_DMA_GOOD_PKT_COUNTERLSW);
156 }
157 
hw_atl_stats_tx_dma_good_octet_counter_get(struct aq_hw_s * aq_hw)158 u64 hw_atl_stats_tx_dma_good_octet_counter_get(struct aq_hw_s *aq_hw)
159 {
160 	return aq_hw_read_reg64(aq_hw, HW_ATL_STATS_TX_DMA_GOOD_OCTET_COUNTERLSW);
161 }
162 
hw_atl_stats_tx_dma_good_pkt_counter_get(struct aq_hw_s * aq_hw)163 u64 hw_atl_stats_tx_dma_good_pkt_counter_get(struct aq_hw_s *aq_hw)
164 {
165 	return aq_hw_read_reg64(aq_hw, HW_ATL_STATS_TX_DMA_GOOD_PKT_COUNTERLSW);
166 }
167 
168 /* interrupt */
hw_atl_itr_irq_auto_masklsw_set(struct aq_hw_s * aq_hw,u32 irq_auto_masklsw)169 void hw_atl_itr_irq_auto_masklsw_set(struct aq_hw_s *aq_hw,
170 				     u32 irq_auto_masklsw)
171 {
172 	aq_hw_write_reg(aq_hw, HW_ATL_ITR_IAMRLSW_ADR, irq_auto_masklsw);
173 }
174 
hw_atl_itr_irq_map_en_rx_set(struct aq_hw_s * aq_hw,u32 irq_map_en_rx,u32 rx)175 void hw_atl_itr_irq_map_en_rx_set(struct aq_hw_s *aq_hw, u32 irq_map_en_rx,
176 				  u32 rx)
177 {
178 /* register address for bitfield imr_rx{r}_en */
179 	static u32 itr_imr_rxren_adr[32] = {
180 			0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
181 			0x00002108U, 0x00002108U, 0x0000210CU, 0x0000210CU,
182 			0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
183 			0x00002118U, 0x00002118U, 0x0000211CU, 0x0000211CU,
184 			0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
185 			0x00002128U, 0x00002128U, 0x0000212CU, 0x0000212CU,
186 			0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
187 			0x00002138U, 0x00002138U, 0x0000213CU, 0x0000213CU
188 		};
189 
190 /* bitmask for bitfield imr_rx{r}_en */
191 	static u32 itr_imr_rxren_msk[32] = {
192 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
193 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
194 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
195 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
196 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
197 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
198 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U,
199 			0x00008000U, 0x00000080U, 0x00008000U, 0x00000080U
200 		};
201 
202 /* lower bit position of bitfield imr_rx{r}_en */
203 	static u32 itr_imr_rxren_shift[32] = {
204 			15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U,
205 			15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U,
206 			15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U,
207 			15U, 7U, 15U, 7U, 15U, 7U, 15U, 7U
208 		};
209 
210 	aq_hw_write_reg_bit(aq_hw, itr_imr_rxren_adr[rx],
211 			    itr_imr_rxren_msk[rx],
212 			    itr_imr_rxren_shift[rx],
213 			    irq_map_en_rx);
214 }
215 
hw_atl_itr_irq_map_en_tx_set(struct aq_hw_s * aq_hw,u32 irq_map_en_tx,u32 tx)216 void hw_atl_itr_irq_map_en_tx_set(struct aq_hw_s *aq_hw, u32 irq_map_en_tx,
217 				  u32 tx)
218 {
219 /* register address for bitfield imr_tx{t}_en */
220 	static u32 itr_imr_txten_adr[32] = {
221 			0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
222 			0x00002108U, 0x00002108U, 0x0000210CU, 0x0000210CU,
223 			0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
224 			0x00002118U, 0x00002118U, 0x0000211CU, 0x0000211CU,
225 			0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
226 			0x00002128U, 0x00002128U, 0x0000212CU, 0x0000212CU,
227 			0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
228 			0x00002138U, 0x00002138U, 0x0000213CU, 0x0000213CU
229 		};
230 
231 /* bitmask for bitfield imr_tx{t}_en */
232 	static u32 itr_imr_txten_msk[32] = {
233 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
234 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
235 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
236 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
237 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
238 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
239 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U,
240 			0x80000000U, 0x00800000U, 0x80000000U, 0x00800000U
241 		};
242 
243 /* lower bit position of bitfield imr_tx{t}_en */
244 	static u32 itr_imr_txten_shift[32] = {
245 			31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U,
246 			31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U,
247 			31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U,
248 			31U, 23U, 31U, 23U, 31U, 23U, 31U, 23U
249 		};
250 
251 	aq_hw_write_reg_bit(aq_hw, itr_imr_txten_adr[tx],
252 			    itr_imr_txten_msk[tx],
253 			    itr_imr_txten_shift[tx],
254 			    irq_map_en_tx);
255 }
256 
hw_atl_itr_irq_map_rx_set(struct aq_hw_s * aq_hw,u32 irq_map_rx,u32 rx)257 void hw_atl_itr_irq_map_rx_set(struct aq_hw_s *aq_hw, u32 irq_map_rx, u32 rx)
258 {
259 /* register address for bitfield imr_rx{r}[4:0] */
260 	static u32 itr_imr_rxr_adr[32] = {
261 			0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
262 			0x00002108U, 0x00002108U, 0x0000210CU, 0x0000210CU,
263 			0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
264 			0x00002118U, 0x00002118U, 0x0000211CU, 0x0000211CU,
265 			0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
266 			0x00002128U, 0x00002128U, 0x0000212CU, 0x0000212CU,
267 			0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
268 			0x00002138U, 0x00002138U, 0x0000213CU, 0x0000213CU
269 		};
270 
271 /* bitmask for bitfield imr_rx{r}[4:0] */
272 	static u32 itr_imr_rxr_msk[32] = {
273 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
274 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
275 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
276 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
277 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
278 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
279 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU,
280 			0x00001f00U, 0x0000001FU, 0x00001F00U, 0x0000001FU
281 		};
282 
283 /* lower bit position of bitfield imr_rx{r}[4:0] */
284 	static u32 itr_imr_rxr_shift[32] = {
285 			8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U,
286 			8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U,
287 			8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U,
288 			8U, 0U, 8U, 0U, 8U, 0U, 8U, 0U
289 		};
290 
291 	aq_hw_write_reg_bit(aq_hw, itr_imr_rxr_adr[rx],
292 			    itr_imr_rxr_msk[rx],
293 			    itr_imr_rxr_shift[rx],
294 			    irq_map_rx);
295 }
296 
hw_atl_itr_irq_map_tx_set(struct aq_hw_s * aq_hw,u32 irq_map_tx,u32 tx)297 void hw_atl_itr_irq_map_tx_set(struct aq_hw_s *aq_hw, u32 irq_map_tx, u32 tx)
298 {
299 /* register address for bitfield imr_tx{t}[4:0] */
300 	static u32 itr_imr_txt_adr[32] = {
301 			0x00002100U, 0x00002100U, 0x00002104U, 0x00002104U,
302 			0x00002108U, 0x00002108U, 0x0000210CU, 0x0000210CU,
303 			0x00002110U, 0x00002110U, 0x00002114U, 0x00002114U,
304 			0x00002118U, 0x00002118U, 0x0000211CU, 0x0000211CU,
305 			0x00002120U, 0x00002120U, 0x00002124U, 0x00002124U,
306 			0x00002128U, 0x00002128U, 0x0000212CU, 0x0000212CU,
307 			0x00002130U, 0x00002130U, 0x00002134U, 0x00002134U,
308 			0x00002138U, 0x00002138U, 0x0000213CU, 0x0000213CU
309 		};
310 
311 /* bitmask for bitfield imr_tx{t}[4:0] */
312 	static u32 itr_imr_txt_msk[32] = {
313 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
314 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
315 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
316 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
317 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
318 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
319 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U,
320 			0x1f000000U, 0x001F0000U, 0x1F000000U, 0x001F0000U
321 		};
322 
323 /* lower bit position of bitfield imr_tx{t}[4:0] */
324 	static u32 itr_imr_txt_shift[32] = {
325 			24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U,
326 			24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U,
327 			24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U,
328 			24U, 16U, 24U, 16U, 24U, 16U, 24U, 16U
329 		};
330 
331 	aq_hw_write_reg_bit(aq_hw, itr_imr_txt_adr[tx],
332 			    itr_imr_txt_msk[tx],
333 			    itr_imr_txt_shift[tx],
334 			    irq_map_tx);
335 }
336 
hw_atl_itr_irq_msk_clearlsw_set(struct aq_hw_s * aq_hw,u32 irq_msk_clearlsw)337 void hw_atl_itr_irq_msk_clearlsw_set(struct aq_hw_s *aq_hw,
338 				     u32 irq_msk_clearlsw)
339 {
340 	aq_hw_write_reg(aq_hw, HW_ATL_ITR_IMCRLSW_ADR, irq_msk_clearlsw);
341 }
342 
hw_atl_itr_irq_msk_setlsw_set(struct aq_hw_s * aq_hw,u32 irq_msk_setlsw)343 void hw_atl_itr_irq_msk_setlsw_set(struct aq_hw_s *aq_hw, u32 irq_msk_setlsw)
344 {
345 	aq_hw_write_reg(aq_hw, HW_ATL_ITR_IMSRLSW_ADR, irq_msk_setlsw);
346 }
347 
hw_atl_itr_irq_reg_res_dis_set(struct aq_hw_s * aq_hw,u32 irq_reg_res_dis)348 void hw_atl_itr_irq_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 irq_reg_res_dis)
349 {
350 	aq_hw_write_reg_bit(aq_hw, HW_ATL_ITR_REG_RES_DSBL_ADR,
351 			    HW_ATL_ITR_REG_RES_DSBL_MSK,
352 			    HW_ATL_ITR_REG_RES_DSBL_SHIFT, irq_reg_res_dis);
353 }
354 
hw_atl_itr_irq_status_clearlsw_set(struct aq_hw_s * aq_hw,u32 irq_status_clearlsw)355 void hw_atl_itr_irq_status_clearlsw_set(struct aq_hw_s *aq_hw,
356 					u32 irq_status_clearlsw)
357 {
358 	aq_hw_write_reg(aq_hw, HW_ATL_ITR_ISCRLSW_ADR, irq_status_clearlsw);
359 }
360 
hw_atl_itr_irq_statuslsw_get(struct aq_hw_s * aq_hw)361 u32 hw_atl_itr_irq_statuslsw_get(struct aq_hw_s *aq_hw)
362 {
363 	return aq_hw_read_reg(aq_hw, HW_ATL_ITR_ISRLSW_ADR);
364 }
365 
hw_atl_itr_res_irq_get(struct aq_hw_s * aq_hw)366 u32 hw_atl_itr_res_irq_get(struct aq_hw_s *aq_hw)
367 {
368 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_ITR_RES_ADR, HW_ATL_ITR_RES_MSK,
369 				  HW_ATL_ITR_RES_SHIFT);
370 }
371 
hw_atl_itr_res_irq_set(struct aq_hw_s * aq_hw,u32 res_irq)372 void hw_atl_itr_res_irq_set(struct aq_hw_s *aq_hw, u32 res_irq)
373 {
374 	aq_hw_write_reg_bit(aq_hw, HW_ATL_ITR_RES_ADR, HW_ATL_ITR_RES_MSK,
375 			    HW_ATL_ITR_RES_SHIFT, res_irq);
376 }
377 
378 /* set RSC interrupt */
hw_atl_itr_rsc_en_set(struct aq_hw_s * aq_hw,u32 enable)379 void hw_atl_itr_rsc_en_set(struct aq_hw_s *aq_hw, u32 enable)
380 {
381 	aq_hw_write_reg(aq_hw, HW_ATL_ITR_RSC_EN_ADR, enable);
382 }
383 
384 /* set RSC delay */
hw_atl_itr_rsc_delay_set(struct aq_hw_s * aq_hw,u32 delay)385 void hw_atl_itr_rsc_delay_set(struct aq_hw_s *aq_hw, u32 delay)
386 {
387 	aq_hw_write_reg_bit(aq_hw, HW_ATL_ITR_RSC_DELAY_ADR,
388 			    HW_ATL_ITR_RSC_DELAY_MSK,
389 			    HW_ATL_ITR_RSC_DELAY_SHIFT,
390 			    delay);
391 }
392 
393 /* rdm */
hw_atl_rdm_cpu_id_set(struct aq_hw_s * aq_hw,u32 cpuid,u32 dca)394 void hw_atl_rdm_cpu_id_set(struct aq_hw_s *aq_hw, u32 cpuid, u32 dca)
395 {
396 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCADCPUID_ADR(dca),
397 			    HW_ATL_RDM_DCADCPUID_MSK,
398 			    HW_ATL_RDM_DCADCPUID_SHIFT, cpuid);
399 }
400 
hw_atl_rdm_rx_dca_en_set(struct aq_hw_s * aq_hw,u32 rx_dca_en)401 void hw_atl_rdm_rx_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_dca_en)
402 {
403 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCA_EN_ADR, HW_ATL_RDM_DCA_EN_MSK,
404 			    HW_ATL_RDM_DCA_EN_SHIFT, rx_dca_en);
405 }
406 
hw_atl_rdm_rx_dca_mode_set(struct aq_hw_s * aq_hw,u32 rx_dca_mode)407 void hw_atl_rdm_rx_dca_mode_set(struct aq_hw_s *aq_hw, u32 rx_dca_mode)
408 {
409 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCA_MODE_ADR,
410 			    HW_ATL_RDM_DCA_MODE_MSK,
411 			    HW_ATL_RDM_DCA_MODE_SHIFT, rx_dca_mode);
412 }
413 
hw_atl_rdm_rx_desc_data_buff_size_set(struct aq_hw_s * aq_hw,u32 rx_desc_data_buff_size,u32 descriptor)414 void hw_atl_rdm_rx_desc_data_buff_size_set(struct aq_hw_s *aq_hw,
415 					   u32 rx_desc_data_buff_size,
416 					   u32 descriptor)
417 {
418 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDDATA_SIZE_ADR(descriptor),
419 			    HW_ATL_RDM_DESCDDATA_SIZE_MSK,
420 			    HW_ATL_RDM_DESCDDATA_SIZE_SHIFT,
421 			    rx_desc_data_buff_size);
422 }
423 
hw_atl_rdm_rx_desc_dca_en_set(struct aq_hw_s * aq_hw,u32 rx_desc_dca_en,u32 dca)424 void hw_atl_rdm_rx_desc_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_desc_dca_en,
425 				   u32 dca)
426 {
427 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCADDESC_EN_ADR(dca),
428 			    HW_ATL_RDM_DCADDESC_EN_MSK,
429 			    HW_ATL_RDM_DCADDESC_EN_SHIFT,
430 			    rx_desc_dca_en);
431 }
432 
hw_atl_rdm_rx_desc_en_set(struct aq_hw_s * aq_hw,u32 rx_desc_en,u32 descriptor)433 void hw_atl_rdm_rx_desc_en_set(struct aq_hw_s *aq_hw, u32 rx_desc_en,
434 			       u32 descriptor)
435 {
436 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDEN_ADR(descriptor),
437 			    HW_ATL_RDM_DESCDEN_MSK,
438 			    HW_ATL_RDM_DESCDEN_SHIFT,
439 			    rx_desc_en);
440 }
441 
hw_atl_rdm_rx_desc_head_buff_size_set(struct aq_hw_s * aq_hw,u32 rx_desc_head_buff_size,u32 descriptor)442 void hw_atl_rdm_rx_desc_head_buff_size_set(struct aq_hw_s *aq_hw,
443 					   u32 rx_desc_head_buff_size,
444 					   u32 descriptor)
445 {
446 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDHDR_SIZE_ADR(descriptor),
447 			    HW_ATL_RDM_DESCDHDR_SIZE_MSK,
448 			    HW_ATL_RDM_DESCDHDR_SIZE_SHIFT,
449 			    rx_desc_head_buff_size);
450 }
451 
hw_atl_rdm_rx_desc_head_splitting_set(struct aq_hw_s * aq_hw,u32 rx_desc_head_splitting,u32 descriptor)452 void hw_atl_rdm_rx_desc_head_splitting_set(struct aq_hw_s *aq_hw,
453 					   u32 rx_desc_head_splitting,
454 					   u32 descriptor)
455 {
456 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDHDR_SPLIT_ADR(descriptor),
457 			    HW_ATL_RDM_DESCDHDR_SPLIT_MSK,
458 			    HW_ATL_RDM_DESCDHDR_SPLIT_SHIFT,
459 			    rx_desc_head_splitting);
460 }
461 
hw_atl_rdm_rx_desc_head_ptr_get(struct aq_hw_s * aq_hw,u32 descriptor)462 u32 hw_atl_rdm_rx_desc_head_ptr_get(struct aq_hw_s *aq_hw, u32 descriptor)
463 {
464 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_RDM_DESCDHD_ADR(descriptor),
465 				  HW_ATL_RDM_DESCDHD_MSK,
466 				  HW_ATL_RDM_DESCDHD_SHIFT);
467 }
468 
hw_atl_rdm_rx_desc_len_set(struct aq_hw_s * aq_hw,u32 rx_desc_len,u32 descriptor)469 void hw_atl_rdm_rx_desc_len_set(struct aq_hw_s *aq_hw, u32 rx_desc_len,
470 				u32 descriptor)
471 {
472 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDLEN_ADR(descriptor),
473 			    HW_ATL_RDM_DESCDLEN_MSK, HW_ATL_RDM_DESCDLEN_SHIFT,
474 			    rx_desc_len);
475 }
476 
hw_atl_rdm_rx_desc_res_set(struct aq_hw_s * aq_hw,u32 rx_desc_res,u32 descriptor)477 void hw_atl_rdm_rx_desc_res_set(struct aq_hw_s *aq_hw, u32 rx_desc_res,
478 				u32 descriptor)
479 {
480 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DESCDRESET_ADR(descriptor),
481 			    HW_ATL_RDM_DESCDRESET_MSK,
482 			    HW_ATL_RDM_DESCDRESET_SHIFT,
483 			    rx_desc_res);
484 }
485 
hw_atl_rdm_rx_desc_wr_wb_irq_en_set(struct aq_hw_s * aq_hw,u32 rx_desc_wr_wb_irq_en)486 void hw_atl_rdm_rx_desc_wr_wb_irq_en_set(struct aq_hw_s *aq_hw,
487 					 u32 rx_desc_wr_wb_irq_en)
488 {
489 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_INT_DESC_WRB_EN_ADR,
490 			    HW_ATL_RDM_INT_DESC_WRB_EN_MSK,
491 			    HW_ATL_RDM_INT_DESC_WRB_EN_SHIFT,
492 			    rx_desc_wr_wb_irq_en);
493 }
494 
hw_atl_rdm_rx_head_dca_en_set(struct aq_hw_s * aq_hw,u32 rx_head_dca_en,u32 dca)495 void hw_atl_rdm_rx_head_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_head_dca_en,
496 				   u32 dca)
497 {
498 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCADHDR_EN_ADR(dca),
499 			    HW_ATL_RDM_DCADHDR_EN_MSK,
500 			    HW_ATL_RDM_DCADHDR_EN_SHIFT,
501 			    rx_head_dca_en);
502 }
503 
hw_atl_rdm_rx_pld_dca_en_set(struct aq_hw_s * aq_hw,u32 rx_pld_dca_en,u32 dca)504 void hw_atl_rdm_rx_pld_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_pld_dca_en,
505 				  u32 dca)
506 {
507 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_DCADPAY_EN_ADR(dca),
508 			    HW_ATL_RDM_DCADPAY_EN_MSK,
509 			    HW_ATL_RDM_DCADPAY_EN_SHIFT,
510 			    rx_pld_dca_en);
511 }
512 
hw_atl_rdm_rdm_intr_moder_en_set(struct aq_hw_s * aq_hw,u32 rdm_intr_moder_en)513 void hw_atl_rdm_rdm_intr_moder_en_set(struct aq_hw_s *aq_hw,
514 				      u32 rdm_intr_moder_en)
515 {
516 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_INT_RIM_EN_ADR,
517 			    HW_ATL_RDM_INT_RIM_EN_MSK,
518 			    HW_ATL_RDM_INT_RIM_EN_SHIFT,
519 			    rdm_intr_moder_en);
520 }
521 
522 /* reg */
hw_atl_reg_gen_irq_map_set(struct aq_hw_s * aq_hw,u32 gen_intr_map,u32 regidx)523 void hw_atl_reg_gen_irq_map_set(struct aq_hw_s *aq_hw, u32 gen_intr_map,
524 				u32 regidx)
525 {
526 	aq_hw_write_reg(aq_hw, HW_ATL_GEN_INTR_MAP_ADR(regidx), gen_intr_map);
527 }
528 
hw_atl_reg_gen_irq_status_get(struct aq_hw_s * aq_hw)529 u32 hw_atl_reg_gen_irq_status_get(struct aq_hw_s *aq_hw)
530 {
531 	return aq_hw_read_reg(aq_hw, HW_ATL_GEN_INTR_STAT_ADR);
532 }
533 
hw_atl_reg_irq_glb_ctl_set(struct aq_hw_s * aq_hw,u32 intr_glb_ctl)534 void hw_atl_reg_irq_glb_ctl_set(struct aq_hw_s *aq_hw, u32 intr_glb_ctl)
535 {
536 	aq_hw_write_reg(aq_hw, HW_ATL_INTR_GLB_CTL_ADR, intr_glb_ctl);
537 }
538 
hw_atl_reg_irq_thr_set(struct aq_hw_s * aq_hw,u32 intr_thr,u32 throttle)539 void hw_atl_reg_irq_thr_set(struct aq_hw_s *aq_hw, u32 intr_thr, u32 throttle)
540 {
541 	aq_hw_write_reg(aq_hw, HW_ATL_INTR_THR_ADR(throttle), intr_thr);
542 }
543 
hw_atl_reg_rx_dma_desc_base_addresslswset(struct aq_hw_s * aq_hw,u32 rx_dma_desc_base_addrlsw,u32 descriptor)544 void hw_atl_reg_rx_dma_desc_base_addresslswset(struct aq_hw_s *aq_hw,
545 					       u32 rx_dma_desc_base_addrlsw,
546 					       u32 descriptor)
547 {
548 	aq_hw_write_reg(aq_hw, HW_ATL_RX_DMA_DESC_BASE_ADDRLSW_ADR(descriptor),
549 			rx_dma_desc_base_addrlsw);
550 }
551 
hw_atl_reg_rx_dma_desc_base_addressmswset(struct aq_hw_s * aq_hw,u32 rx_dma_desc_base_addrmsw,u32 descriptor)552 void hw_atl_reg_rx_dma_desc_base_addressmswset(struct aq_hw_s *aq_hw,
553 					       u32 rx_dma_desc_base_addrmsw,
554 					       u32 descriptor)
555 {
556 	aq_hw_write_reg(aq_hw, HW_ATL_RX_DMA_DESC_BASE_ADDRMSW_ADR(descriptor),
557 			rx_dma_desc_base_addrmsw);
558 }
559 
hw_atl_reg_rx_dma_desc_status_get(struct aq_hw_s * aq_hw,u32 descriptor)560 u32 hw_atl_reg_rx_dma_desc_status_get(struct aq_hw_s *aq_hw, u32 descriptor)
561 {
562 	return aq_hw_read_reg(aq_hw, HW_ATL_RX_DMA_DESC_STAT_ADR(descriptor));
563 }
564 
hw_atl_reg_rx_dma_desc_tail_ptr_set(struct aq_hw_s * aq_hw,u32 rx_dma_desc_tail_ptr,u32 descriptor)565 void hw_atl_reg_rx_dma_desc_tail_ptr_set(struct aq_hw_s *aq_hw,
566 					 u32 rx_dma_desc_tail_ptr,
567 					 u32 descriptor)
568 {
569 	aq_hw_write_reg(aq_hw, HW_ATL_RX_DMA_DESC_TAIL_PTR_ADR(descriptor),
570 			rx_dma_desc_tail_ptr);
571 }
572 
hw_atl_reg_rx_flr_mcst_flr_msk_set(struct aq_hw_s * aq_hw,u32 rx_flr_mcst_flr_msk)573 void hw_atl_reg_rx_flr_mcst_flr_msk_set(struct aq_hw_s *aq_hw,
574 					u32 rx_flr_mcst_flr_msk)
575 {
576 	aq_hw_write_reg(aq_hw, HW_ATL_RX_FLR_MCST_FLR_MSK_ADR,
577 			rx_flr_mcst_flr_msk);
578 }
579 
hw_atl_reg_rx_flr_mcst_flr_set(struct aq_hw_s * aq_hw,u32 rx_flr_mcst_flr,u32 filter)580 void hw_atl_reg_rx_flr_mcst_flr_set(struct aq_hw_s *aq_hw, u32 rx_flr_mcst_flr,
581 				    u32 filter)
582 {
583 	aq_hw_write_reg(aq_hw, HW_ATL_RX_FLR_MCST_FLR_ADR(filter),
584 			rx_flr_mcst_flr);
585 }
586 
hw_atl_reg_rx_flr_rss_control1set(struct aq_hw_s * aq_hw,u32 rx_flr_rss_control1)587 void hw_atl_reg_rx_flr_rss_control1set(struct aq_hw_s *aq_hw,
588 				       u32 rx_flr_rss_control1)
589 {
590 	aq_hw_write_reg(aq_hw, HW_ATL_RX_FLR_RSS_CONTROL1_ADR,
591 			rx_flr_rss_control1);
592 }
593 
hw_atl_reg_rx_flr_control2_set(struct aq_hw_s * aq_hw,u32 rx_filter_control2)594 void hw_atl_reg_rx_flr_control2_set(struct aq_hw_s *aq_hw,
595 				    u32 rx_filter_control2)
596 {
597 	aq_hw_write_reg(aq_hw, HW_ATL_RX_FLR_CONTROL2_ADR, rx_filter_control2);
598 }
599 
hw_atl_reg_rx_intr_moder_ctrl_set(struct aq_hw_s * aq_hw,u32 rx_intr_moderation_ctl,u32 queue)600 void hw_atl_reg_rx_intr_moder_ctrl_set(struct aq_hw_s *aq_hw,
601 				       u32 rx_intr_moderation_ctl,
602 				       u32 queue)
603 {
604 	aq_hw_write_reg(aq_hw, HW_ATL_RX_INTR_MODERATION_CTL_ADR(queue),
605 			rx_intr_moderation_ctl);
606 }
607 
hw_atl_reg_tx_dma_debug_ctl_set(struct aq_hw_s * aq_hw,u32 tx_dma_debug_ctl)608 void hw_atl_reg_tx_dma_debug_ctl_set(struct aq_hw_s *aq_hw,
609 				     u32 tx_dma_debug_ctl)
610 {
611 	aq_hw_write_reg(aq_hw, HW_ATL_TX_DMA_DEBUG_CTL_ADR, tx_dma_debug_ctl);
612 }
613 
hw_atl_reg_tx_dma_desc_base_addresslswset(struct aq_hw_s * aq_hw,u32 tx_dma_desc_base_addrlsw,u32 descriptor)614 void hw_atl_reg_tx_dma_desc_base_addresslswset(struct aq_hw_s *aq_hw,
615 					       u32 tx_dma_desc_base_addrlsw,
616 					       u32 descriptor)
617 {
618 	aq_hw_write_reg(aq_hw, HW_ATL_TX_DMA_DESC_BASE_ADDRLSW_ADR(descriptor),
619 			tx_dma_desc_base_addrlsw);
620 }
621 
hw_atl_reg_tx_dma_desc_base_addressmswset(struct aq_hw_s * aq_hw,u32 tx_dma_desc_base_addrmsw,u32 descriptor)622 void hw_atl_reg_tx_dma_desc_base_addressmswset(struct aq_hw_s *aq_hw,
623 					       u32 tx_dma_desc_base_addrmsw,
624 					       u32 descriptor)
625 {
626 	aq_hw_write_reg(aq_hw, HW_ATL_TX_DMA_DESC_BASE_ADDRMSW_ADR(descriptor),
627 			tx_dma_desc_base_addrmsw);
628 }
629 
hw_atl_reg_tx_dma_desc_tail_ptr_set(struct aq_hw_s * aq_hw,u32 tx_dma_desc_tail_ptr,u32 descriptor)630 void hw_atl_reg_tx_dma_desc_tail_ptr_set(struct aq_hw_s *aq_hw,
631 					 u32 tx_dma_desc_tail_ptr,
632 					 u32 descriptor)
633 {
634 	aq_hw_write_reg(aq_hw, HW_ATL_TX_DMA_DESC_TAIL_PTR_ADR(descriptor),
635 			tx_dma_desc_tail_ptr);
636 }
637 
hw_atl_reg_tx_intr_moder_ctrl_set(struct aq_hw_s * aq_hw,u32 tx_intr_moderation_ctl,u32 queue)638 void hw_atl_reg_tx_intr_moder_ctrl_set(struct aq_hw_s *aq_hw,
639 				       u32 tx_intr_moderation_ctl,
640 				       u32 queue)
641 {
642 	aq_hw_write_reg(aq_hw, HW_ATL_TX_INTR_MODERATION_CTL_ADR(queue),
643 			tx_intr_moderation_ctl);
644 }
645 
646 /* RPB: rx packet buffer */
hw_atl_rpb_dma_sys_lbk_set(struct aq_hw_s * aq_hw,u32 dma_sys_lbk)647 void hw_atl_rpb_dma_sys_lbk_set(struct aq_hw_s *aq_hw, u32 dma_sys_lbk)
648 {
649 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_DMA_SYS_LBK_ADR,
650 			    HW_ATL_RPB_DMA_SYS_LBK_MSK,
651 			    HW_ATL_RPB_DMA_SYS_LBK_SHIFT, dma_sys_lbk);
652 }
653 
hw_atl_rpb_dma_net_lbk_set(struct aq_hw_s * aq_hw,u32 dma_net_lbk)654 void hw_atl_rpb_dma_net_lbk_set(struct aq_hw_s *aq_hw, u32 dma_net_lbk)
655 {
656 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_DMA_NET_LBK_ADR,
657 			    HW_ATL_RPB_DMA_NET_LBK_MSK,
658 			    HW_ATL_RPB_DMA_NET_LBK_SHIFT, dma_net_lbk);
659 }
660 
hw_atl_rpb_rpf_rx_traf_class_mode_set(struct aq_hw_s * aq_hw,u32 rx_traf_class_mode)661 void hw_atl_rpb_rpf_rx_traf_class_mode_set(struct aq_hw_s *aq_hw,
662 					   u32 rx_traf_class_mode)
663 {
664 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RPF_RX_TC_MODE_ADR,
665 			    HW_ATL_RPB_RPF_RX_TC_MODE_MSK,
666 			    HW_ATL_RPB_RPF_RX_TC_MODE_SHIFT,
667 			    rx_traf_class_mode);
668 }
669 
hw_atl_rpb_rpf_rx_traf_class_mode_get(struct aq_hw_s * aq_hw)670 u32 hw_atl_rpb_rpf_rx_traf_class_mode_get(struct aq_hw_s *aq_hw)
671 {
672 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_RPB_RPF_RX_TC_MODE_ADR,
673 			HW_ATL_RPB_RPF_RX_TC_MODE_MSK,
674 			HW_ATL_RPB_RPF_RX_TC_MODE_SHIFT);
675 }
676 
hw_atl_rpb_rx_buff_en_set(struct aq_hw_s * aq_hw,u32 rx_buff_en)677 void hw_atl_rpb_rx_buff_en_set(struct aq_hw_s *aq_hw, u32 rx_buff_en)
678 {
679 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RX_BUF_EN_ADR,
680 			    HW_ATL_RPB_RX_BUF_EN_MSK,
681 			    HW_ATL_RPB_RX_BUF_EN_SHIFT, rx_buff_en);
682 }
683 
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)684 void hw_atl_rpb_rx_buff_hi_threshold_per_tc_set(struct aq_hw_s *aq_hw,
685 						u32 rx_buff_hi_threshold_per_tc,
686 						u32 buffer)
687 {
688 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RXBHI_THRESH_ADR(buffer),
689 			    HW_ATL_RPB_RXBHI_THRESH_MSK,
690 			    HW_ATL_RPB_RXBHI_THRESH_SHIFT,
691 			    rx_buff_hi_threshold_per_tc);
692 }
693 
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)694 void hw_atl_rpb_rx_buff_lo_threshold_per_tc_set(struct aq_hw_s *aq_hw,
695 						u32 rx_buff_lo_threshold_per_tc,
696 						u32 buffer)
697 {
698 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RXBLO_THRESH_ADR(buffer),
699 			    HW_ATL_RPB_RXBLO_THRESH_MSK,
700 			    HW_ATL_RPB_RXBLO_THRESH_SHIFT,
701 			    rx_buff_lo_threshold_per_tc);
702 }
703 
hw_atl_rpb_rx_flow_ctl_mode_set(struct aq_hw_s * aq_hw,u32 rx_flow_ctl_mode)704 void hw_atl_rpb_rx_flow_ctl_mode_set(struct aq_hw_s *aq_hw, u32 rx_flow_ctl_mode)
705 {
706 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RX_FC_MODE_ADR,
707 			    HW_ATL_RPB_RX_FC_MODE_MSK,
708 			    HW_ATL_RPB_RX_FC_MODE_SHIFT, rx_flow_ctl_mode);
709 }
710 
hw_atl_rdm_rx_dma_desc_cache_init_tgl(struct aq_hw_s * aq_hw)711 void hw_atl_rdm_rx_dma_desc_cache_init_tgl(struct aq_hw_s *aq_hw)
712 {
713 	u32 val;
714 
715 	val = aq_hw_read_reg_bit(aq_hw, HW_ATL_RDM_RX_DMA_DESC_CACHE_INIT_ADR,
716 				 HW_ATL_RDM_RX_DMA_DESC_CACHE_INIT_MSK,
717 				 HW_ATL_RDM_RX_DMA_DESC_CACHE_INIT_SHIFT);
718 
719 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RDM_RX_DMA_DESC_CACHE_INIT_ADR,
720 			    HW_ATL_RDM_RX_DMA_DESC_CACHE_INIT_MSK,
721 			    HW_ATL_RDM_RX_DMA_DESC_CACHE_INIT_SHIFT,
722 			    val ^ 1);
723 }
724 
hw_atl_rdm_rx_dma_desc_cache_init_done_get(struct aq_hw_s * aq_hw)725 u32 hw_atl_rdm_rx_dma_desc_cache_init_done_get(struct aq_hw_s *aq_hw)
726 {
727 	return aq_hw_read_reg_bit(aq_hw, RDM_RX_DMA_DESC_CACHE_INIT_DONE_ADR,
728 				  RDM_RX_DMA_DESC_CACHE_INIT_DONE_MSK,
729 				  RDM_RX_DMA_DESC_CACHE_INIT_DONE_SHIFT);
730 }
731 
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)732 void hw_atl_rpb_rx_pkt_buff_size_per_tc_set(struct aq_hw_s *aq_hw,
733 					    u32 rx_pkt_buff_size_per_tc, u32 buffer)
734 {
735 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RXBBUF_SIZE_ADR(buffer),
736 			    HW_ATL_RPB_RXBBUF_SIZE_MSK,
737 			    HW_ATL_RPB_RXBBUF_SIZE_SHIFT,
738 			    rx_pkt_buff_size_per_tc);
739 }
740 
hw_atl_rpb_rx_xoff_en_per_tc_set(struct aq_hw_s * aq_hw,u32 rx_xoff_en_per_tc,u32 buffer)741 void hw_atl_rpb_rx_xoff_en_per_tc_set(struct aq_hw_s *aq_hw,
742 				      u32 rx_xoff_en_per_tc, u32 buffer)
743 {
744 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPB_RXBXOFF_EN_ADR(buffer),
745 			    HW_ATL_RPB_RXBXOFF_EN_MSK,
746 			    HW_ATL_RPB_RXBXOFF_EN_SHIFT,
747 			    rx_xoff_en_per_tc);
748 }
749 
750 /* rpf */
751 
hw_atl_rpfl2broadcast_count_threshold_set(struct aq_hw_s * aq_hw,u32 l2broadcast_count_threshold)752 void hw_atl_rpfl2broadcast_count_threshold_set(struct aq_hw_s *aq_hw,
753 					       u32 l2broadcast_count_threshold)
754 {
755 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2BC_THRESH_ADR,
756 			    HW_ATL_RPFL2BC_THRESH_MSK,
757 			    HW_ATL_RPFL2BC_THRESH_SHIFT,
758 			    l2broadcast_count_threshold);
759 }
760 
hw_atl_rpfl2broadcast_en_set(struct aq_hw_s * aq_hw,u32 l2broadcast_en)761 void hw_atl_rpfl2broadcast_en_set(struct aq_hw_s *aq_hw, u32 l2broadcast_en)
762 {
763 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2BC_EN_ADR, HW_ATL_RPFL2BC_EN_MSK,
764 			    HW_ATL_RPFL2BC_EN_SHIFT, l2broadcast_en);
765 }
766 
hw_atl_rpfl2broadcast_flr_act_set(struct aq_hw_s * aq_hw,u32 l2broadcast_flr_act)767 void hw_atl_rpfl2broadcast_flr_act_set(struct aq_hw_s *aq_hw,
768 				       u32 l2broadcast_flr_act)
769 {
770 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2BC_ACT_ADR,
771 			    HW_ATL_RPFL2BC_ACT_MSK,
772 			    HW_ATL_RPFL2BC_ACT_SHIFT, l2broadcast_flr_act);
773 }
774 
hw_atl_rpfl2multicast_flr_en_set(struct aq_hw_s * aq_hw,u32 l2multicast_flr_en,u32 filter)775 void hw_atl_rpfl2multicast_flr_en_set(struct aq_hw_s *aq_hw,
776 				      u32 l2multicast_flr_en,
777 				      u32 filter)
778 {
779 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2MC_ENF_ADR(filter),
780 			    HW_ATL_RPFL2MC_ENF_MSK,
781 			    HW_ATL_RPFL2MC_ENF_SHIFT, l2multicast_flr_en);
782 }
783 
hw_atl_rpfl2promiscuous_mode_en_get(struct aq_hw_s * aq_hw)784 u32 hw_atl_rpfl2promiscuous_mode_en_get(struct aq_hw_s *aq_hw)
785 {
786 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_RPFL2PROMIS_MODE_ADR,
787 				  HW_ATL_RPFL2PROMIS_MODE_MSK,
788 				  HW_ATL_RPFL2PROMIS_MODE_SHIFT);
789 }
790 
hw_atl_rpfl2promiscuous_mode_en_set(struct aq_hw_s * aq_hw,u32 l2promiscuous_mode_en)791 void hw_atl_rpfl2promiscuous_mode_en_set(struct aq_hw_s *aq_hw,
792 					 u32 l2promiscuous_mode_en)
793 {
794 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2PROMIS_MODE_ADR,
795 			    HW_ATL_RPFL2PROMIS_MODE_MSK,
796 			    HW_ATL_RPFL2PROMIS_MODE_SHIFT,
797 			    l2promiscuous_mode_en);
798 }
799 
hw_atl_rpfl2unicast_flr_act_set(struct aq_hw_s * aq_hw,u32 l2unicast_flr_act,u32 filter)800 void hw_atl_rpfl2unicast_flr_act_set(struct aq_hw_s *aq_hw,
801 				     u32 l2unicast_flr_act,
802 				     u32 filter)
803 {
804 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2UC_ACTF_ADR(filter),
805 			    HW_ATL_RPFL2UC_ACTF_MSK, HW_ATL_RPFL2UC_ACTF_SHIFT,
806 			    l2unicast_flr_act);
807 }
808 
hw_atl_rpfl2_uc_flr_en_set(struct aq_hw_s * aq_hw,u32 l2unicast_flr_en,u32 filter)809 void hw_atl_rpfl2_uc_flr_en_set(struct aq_hw_s *aq_hw, u32 l2unicast_flr_en,
810 				u32 filter)
811 {
812 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2UC_ENF_ADR(filter),
813 			    HW_ATL_RPFL2UC_ENF_MSK,
814 			    HW_ATL_RPFL2UC_ENF_SHIFT, l2unicast_flr_en);
815 }
816 
hw_atl_rpfl2unicast_dest_addresslsw_set(struct aq_hw_s * aq_hw,u32 l2unicast_dest_addresslsw,u32 filter)817 void hw_atl_rpfl2unicast_dest_addresslsw_set(struct aq_hw_s *aq_hw,
818 					     u32 l2unicast_dest_addresslsw,
819 					     u32 filter)
820 {
821 	aq_hw_write_reg(aq_hw, HW_ATL_RPFL2UC_DAFLSW_ADR(filter),
822 			l2unicast_dest_addresslsw);
823 }
824 
hw_atl_rpfl2unicast_dest_addressmsw_set(struct aq_hw_s * aq_hw,u32 l2unicast_dest_addressmsw,u32 filter)825 void hw_atl_rpfl2unicast_dest_addressmsw_set(struct aq_hw_s *aq_hw,
826 					     u32 l2unicast_dest_addressmsw,
827 					     u32 filter)
828 {
829 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2UC_DAFMSW_ADR(filter),
830 			    HW_ATL_RPFL2UC_DAFMSW_MSK,
831 			    HW_ATL_RPFL2UC_DAFMSW_SHIFT,
832 			    l2unicast_dest_addressmsw);
833 }
834 
hw_atl_rpfl2_accept_all_mc_packets_set(struct aq_hw_s * aq_hw,u32 l2_accept_all_mc_packets)835 void hw_atl_rpfl2_accept_all_mc_packets_set(struct aq_hw_s *aq_hw,
836 					    u32 l2_accept_all_mc_packets)
837 {
838 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPFL2MC_ACCEPT_ALL_ADR,
839 			    HW_ATL_RPFL2MC_ACCEPT_ALL_MSK,
840 			    HW_ATL_RPFL2MC_ACCEPT_ALL_SHIFT,
841 			    l2_accept_all_mc_packets);
842 }
843 
hw_atl_rpf_rpb_user_priority_tc_map_set(struct aq_hw_s * aq_hw,u32 user_priority,u32 tc)844 void hw_atl_rpf_rpb_user_priority_tc_map_set(struct aq_hw_s *aq_hw,
845 					     u32 user_priority, u32 tc)
846 {
847 /* register address for bitfield rx_tc_up{t}[2:0] */
848 	static u32 rpf_rpb_rx_tc_upt_adr[8] = {
849 			0x000054c4U, 0x000054C4U, 0x000054C4U, 0x000054C4U,
850 			0x000054c4U, 0x000054C4U, 0x000054C4U, 0x000054C4U
851 		};
852 
853 /* bitmask for bitfield rx_tc_up{t}[2:0] */
854 	static u32 rpf_rpb_rx_tc_upt_msk[8] = {
855 			0x00000007U, 0x00000070U, 0x00000700U, 0x00007000U,
856 			0x00070000U, 0x00700000U, 0x07000000U, 0x70000000U
857 		};
858 
859 /* lower bit position of bitfield rx_tc_up{t}[2:0] */
860 	static u32 rpf_rpb_rx_tc_upt_shft[8] = {
861 			0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U
862 		};
863 
864 	aq_hw_write_reg_bit(aq_hw, rpf_rpb_rx_tc_upt_adr[user_priority],
865 			    rpf_rpb_rx_tc_upt_msk[user_priority],
866 			    rpf_rpb_rx_tc_upt_shft[user_priority], tc);
867 }
868 
hw_atl_rpf_rss_key_addr_set(struct aq_hw_s * aq_hw,u32 rss_key_addr)869 void hw_atl_rpf_rss_key_addr_set(struct aq_hw_s *aq_hw, u32 rss_key_addr)
870 {
871 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_RSS_KEY_ADDR_ADR,
872 			    HW_ATL_RPF_RSS_KEY_ADDR_MSK,
873 			    HW_ATL_RPF_RSS_KEY_ADDR_SHIFT,
874 			    rss_key_addr);
875 }
876 
hw_atl_rpf_rss_key_wr_data_set(struct aq_hw_s * aq_hw,u32 rss_key_wr_data)877 void hw_atl_rpf_rss_key_wr_data_set(struct aq_hw_s *aq_hw, u32 rss_key_wr_data)
878 {
879 	aq_hw_write_reg(aq_hw, HW_ATL_RPF_RSS_KEY_WR_DATA_ADR,
880 			rss_key_wr_data);
881 }
882 
hw_atl_rpf_rss_key_wr_en_get(struct aq_hw_s * aq_hw)883 u32 hw_atl_rpf_rss_key_wr_en_get(struct aq_hw_s *aq_hw)
884 {
885 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_RPF_RSS_KEY_WR_ENI_ADR,
886 				  HW_ATL_RPF_RSS_KEY_WR_ENI_MSK,
887 				  HW_ATL_RPF_RSS_KEY_WR_ENI_SHIFT);
888 }
889 
hw_atl_rpf_rss_key_wr_en_set(struct aq_hw_s * aq_hw,u32 rss_key_wr_en)890 void hw_atl_rpf_rss_key_wr_en_set(struct aq_hw_s *aq_hw, u32 rss_key_wr_en)
891 {
892 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_RSS_KEY_WR_ENI_ADR,
893 			    HW_ATL_RPF_RSS_KEY_WR_ENI_MSK,
894 			    HW_ATL_RPF_RSS_KEY_WR_ENI_SHIFT,
895 			    rss_key_wr_en);
896 }
897 
hw_atl_rpf_rss_redir_tbl_addr_set(struct aq_hw_s * aq_hw,u32 rss_redir_tbl_addr)898 void hw_atl_rpf_rss_redir_tbl_addr_set(struct aq_hw_s *aq_hw,
899 				       u32 rss_redir_tbl_addr)
900 {
901 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_RSS_REDIR_ADDR_ADR,
902 			    HW_ATL_RPF_RSS_REDIR_ADDR_MSK,
903 			    HW_ATL_RPF_RSS_REDIR_ADDR_SHIFT,
904 			    rss_redir_tbl_addr);
905 }
906 
hw_atl_rpf_rss_redir_tbl_wr_data_set(struct aq_hw_s * aq_hw,u32 rss_redir_tbl_wr_data)907 void hw_atl_rpf_rss_redir_tbl_wr_data_set(struct aq_hw_s *aq_hw,
908 					  u32 rss_redir_tbl_wr_data)
909 {
910 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_RSS_REDIR_WR_DATA_ADR,
911 			    HW_ATL_RPF_RSS_REDIR_WR_DATA_MSK,
912 			    HW_ATL_RPF_RSS_REDIR_WR_DATA_SHIFT,
913 			    rss_redir_tbl_wr_data);
914 }
915 
hw_atl_rpf_rss_redir_wr_en_get(struct aq_hw_s * aq_hw)916 u32 hw_atl_rpf_rss_redir_wr_en_get(struct aq_hw_s *aq_hw)
917 {
918 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_RPF_RSS_REDIR_WR_ENI_ADR,
919 				  HW_ATL_RPF_RSS_REDIR_WR_ENI_MSK,
920 				  HW_ATL_RPF_RSS_REDIR_WR_ENI_SHIFT);
921 }
922 
hw_atl_rpf_rss_redir_wr_en_set(struct aq_hw_s * aq_hw,u32 rss_redir_wr_en)923 void hw_atl_rpf_rss_redir_wr_en_set(struct aq_hw_s *aq_hw, u32 rss_redir_wr_en)
924 {
925 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_RSS_REDIR_WR_ENI_ADR,
926 			    HW_ATL_RPF_RSS_REDIR_WR_ENI_MSK,
927 			    HW_ATL_RPF_RSS_REDIR_WR_ENI_SHIFT, rss_redir_wr_en);
928 }
929 
hw_atl_rpf_tpo_to_rpf_sys_lbk_set(struct aq_hw_s * aq_hw,u32 tpo_to_rpf_sys_lbk)930 void hw_atl_rpf_tpo_to_rpf_sys_lbk_set(struct aq_hw_s *aq_hw,
931 				       u32 tpo_to_rpf_sys_lbk)
932 {
933 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_TPO_RPF_SYS_LBK_ADR,
934 			    HW_ATL_RPF_TPO_RPF_SYS_LBK_MSK,
935 			    HW_ATL_RPF_TPO_RPF_SYS_LBK_SHIFT,
936 			    tpo_to_rpf_sys_lbk);
937 }
938 
hw_atl_rpf_vlan_inner_etht_set(struct aq_hw_s * aq_hw,u32 vlan_inner_etht)939 void hw_atl_rpf_vlan_inner_etht_set(struct aq_hw_s *aq_hw, u32 vlan_inner_etht)
940 {
941 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_INNER_TPID_ADR,
942 			    HW_ATL_RPF_VL_INNER_TPID_MSK,
943 			    HW_ATL_RPF_VL_INNER_TPID_SHIFT,
944 			    vlan_inner_etht);
945 }
946 
hw_atl_rpf_vlan_outer_etht_set(struct aq_hw_s * aq_hw,u32 vlan_outer_etht)947 void hw_atl_rpf_vlan_outer_etht_set(struct aq_hw_s *aq_hw, u32 vlan_outer_etht)
948 {
949 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_OUTER_TPID_ADR,
950 			    HW_ATL_RPF_VL_OUTER_TPID_MSK,
951 			    HW_ATL_RPF_VL_OUTER_TPID_SHIFT,
952 			    vlan_outer_etht);
953 }
954 
hw_atl_rpf_vlan_prom_mode_en_set(struct aq_hw_s * aq_hw,u32 vlan_prom_mode_en)955 void hw_atl_rpf_vlan_prom_mode_en_set(struct aq_hw_s *aq_hw,
956 				      u32 vlan_prom_mode_en)
957 {
958 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_PROMIS_MODE_ADR,
959 			    HW_ATL_RPF_VL_PROMIS_MODE_MSK,
960 			    HW_ATL_RPF_VL_PROMIS_MODE_SHIFT,
961 			    vlan_prom_mode_en);
962 }
963 
hw_atl_rpf_vlan_prom_mode_en_get(struct aq_hw_s * aq_hw)964 u32 hw_atl_rpf_vlan_prom_mode_en_get(struct aq_hw_s *aq_hw)
965 {
966 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_RPF_VL_PROMIS_MODE_ADR,
967 				  HW_ATL_RPF_VL_PROMIS_MODE_MSK,
968 				  HW_ATL_RPF_VL_PROMIS_MODE_SHIFT);
969 }
970 
hw_atl_rpf_vlan_accept_untagged_packets_set(struct aq_hw_s * aq_hw,u32 vlan_acc_untagged_packets)971 void hw_atl_rpf_vlan_accept_untagged_packets_set(struct aq_hw_s *aq_hw,
972 						 u32 vlan_acc_untagged_packets)
973 {
974 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_ACCEPT_UNTAGGED_MODE_ADR,
975 			    HW_ATL_RPF_VL_ACCEPT_UNTAGGED_MODE_MSK,
976 			    HW_ATL_RPF_VL_ACCEPT_UNTAGGED_MODE_SHIFT,
977 			    vlan_acc_untagged_packets);
978 }
979 
hw_atl_rpf_vlan_untagged_act_set(struct aq_hw_s * aq_hw,u32 vlan_untagged_act)980 void hw_atl_rpf_vlan_untagged_act_set(struct aq_hw_s *aq_hw,
981 				      u32 vlan_untagged_act)
982 {
983 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_UNTAGGED_ACT_ADR,
984 			    HW_ATL_RPF_VL_UNTAGGED_ACT_MSK,
985 			    HW_ATL_RPF_VL_UNTAGGED_ACT_SHIFT,
986 			    vlan_untagged_act);
987 }
988 
hw_atl_rpf_vlan_flr_en_set(struct aq_hw_s * aq_hw,u32 vlan_flr_en,u32 filter)989 void hw_atl_rpf_vlan_flr_en_set(struct aq_hw_s *aq_hw, u32 vlan_flr_en,
990 				u32 filter)
991 {
992 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_EN_F_ADR(filter),
993 			    HW_ATL_RPF_VL_EN_F_MSK,
994 			    HW_ATL_RPF_VL_EN_F_SHIFT,
995 			    vlan_flr_en);
996 }
997 
hw_atl_rpf_vlan_flr_act_set(struct aq_hw_s * aq_hw,u32 vlan_flr_act,u32 filter)998 void hw_atl_rpf_vlan_flr_act_set(struct aq_hw_s *aq_hw, u32 vlan_flr_act,
999 				 u32 filter)
1000 {
1001 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_ACT_F_ADR(filter),
1002 			    HW_ATL_RPF_VL_ACT_F_MSK,
1003 			    HW_ATL_RPF_VL_ACT_F_SHIFT,
1004 			    vlan_flr_act);
1005 }
1006 
hw_atl_rpf_vlan_id_flr_set(struct aq_hw_s * aq_hw,u32 vlan_id_flr,u32 filter)1007 void hw_atl_rpf_vlan_id_flr_set(struct aq_hw_s *aq_hw, u32 vlan_id_flr,
1008 				u32 filter)
1009 {
1010 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_ID_F_ADR(filter),
1011 			    HW_ATL_RPF_VL_ID_F_MSK,
1012 			    HW_ATL_RPF_VL_ID_F_SHIFT,
1013 			    vlan_id_flr);
1014 }
1015 
hw_atl_rpf_vlan_rxq_en_flr_set(struct aq_hw_s * aq_hw,u32 vlan_rxq_en,u32 filter)1016 void hw_atl_rpf_vlan_rxq_en_flr_set(struct aq_hw_s *aq_hw, u32 vlan_rxq_en,
1017 				    u32 filter)
1018 {
1019 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_RXQ_EN_F_ADR(filter),
1020 			    HW_ATL_RPF_VL_RXQ_EN_F_MSK,
1021 			    HW_ATL_RPF_VL_RXQ_EN_F_SHIFT,
1022 			    vlan_rxq_en);
1023 }
1024 
hw_atl_rpf_vlan_rxq_flr_set(struct aq_hw_s * aq_hw,u32 vlan_rxq,u32 filter)1025 void hw_atl_rpf_vlan_rxq_flr_set(struct aq_hw_s *aq_hw, u32 vlan_rxq,
1026 				 u32 filter)
1027 {
1028 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_VL_RXQ_F_ADR(filter),
1029 			    HW_ATL_RPF_VL_RXQ_F_MSK,
1030 			    HW_ATL_RPF_VL_RXQ_F_SHIFT,
1031 			    vlan_rxq);
1032 };
1033 
hw_atl_rpf_etht_flr_en_set(struct aq_hw_s * aq_hw,u32 etht_flr_en,u32 filter)1034 void hw_atl_rpf_etht_flr_en_set(struct aq_hw_s *aq_hw, u32 etht_flr_en,
1035 				u32 filter)
1036 {
1037 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_ENF_ADR(filter),
1038 			    HW_ATL_RPF_ET_ENF_MSK,
1039 			    HW_ATL_RPF_ET_ENF_SHIFT, etht_flr_en);
1040 }
1041 
hw_atl_rpf_etht_user_priority_en_set(struct aq_hw_s * aq_hw,u32 etht_user_priority_en,u32 filter)1042 void hw_atl_rpf_etht_user_priority_en_set(struct aq_hw_s *aq_hw,
1043 					  u32 etht_user_priority_en, u32 filter)
1044 {
1045 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_UPFEN_ADR(filter),
1046 			    HW_ATL_RPF_ET_UPFEN_MSK, HW_ATL_RPF_ET_UPFEN_SHIFT,
1047 			    etht_user_priority_en);
1048 }
1049 
hw_atl_rpf_etht_rx_queue_en_set(struct aq_hw_s * aq_hw,u32 etht_rx_queue_en,u32 filter)1050 void hw_atl_rpf_etht_rx_queue_en_set(struct aq_hw_s *aq_hw,
1051 				     u32 etht_rx_queue_en,
1052 				     u32 filter)
1053 {
1054 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_RXQFEN_ADR(filter),
1055 			    HW_ATL_RPF_ET_RXQFEN_MSK,
1056 			    HW_ATL_RPF_ET_RXQFEN_SHIFT,
1057 			    etht_rx_queue_en);
1058 }
1059 
hw_atl_rpf_etht_user_priority_set(struct aq_hw_s * aq_hw,u32 etht_user_priority,u32 filter)1060 void hw_atl_rpf_etht_user_priority_set(struct aq_hw_s *aq_hw,
1061 				       u32 etht_user_priority,
1062 				       u32 filter)
1063 {
1064 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_UPF_ADR(filter),
1065 			    HW_ATL_RPF_ET_UPF_MSK,
1066 			    HW_ATL_RPF_ET_UPF_SHIFT, etht_user_priority);
1067 }
1068 
hw_atl_rpf_etht_rx_queue_set(struct aq_hw_s * aq_hw,u32 etht_rx_queue,u32 filter)1069 void hw_atl_rpf_etht_rx_queue_set(struct aq_hw_s *aq_hw, u32 etht_rx_queue,
1070 				  u32 filter)
1071 {
1072 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_RXQF_ADR(filter),
1073 			    HW_ATL_RPF_ET_RXQF_MSK,
1074 			    HW_ATL_RPF_ET_RXQF_SHIFT, etht_rx_queue);
1075 }
1076 
hw_atl_rpf_etht_mgt_queue_set(struct aq_hw_s * aq_hw,u32 etht_mgt_queue,u32 filter)1077 void hw_atl_rpf_etht_mgt_queue_set(struct aq_hw_s *aq_hw, u32 etht_mgt_queue,
1078 				   u32 filter)
1079 {
1080 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_MNG_RXQF_ADR(filter),
1081 			    HW_ATL_RPF_ET_MNG_RXQF_MSK,
1082 			    HW_ATL_RPF_ET_MNG_RXQF_SHIFT,
1083 			    etht_mgt_queue);
1084 }
1085 
hw_atl_rpf_etht_flr_act_set(struct aq_hw_s * aq_hw,u32 etht_flr_act,u32 filter)1086 void hw_atl_rpf_etht_flr_act_set(struct aq_hw_s *aq_hw, u32 etht_flr_act,
1087 				 u32 filter)
1088 {
1089 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_ACTF_ADR(filter),
1090 			    HW_ATL_RPF_ET_ACTF_MSK,
1091 			    HW_ATL_RPF_ET_ACTF_SHIFT, etht_flr_act);
1092 }
1093 
hw_atl_rpf_etht_flr_set(struct aq_hw_s * aq_hw,u32 etht_flr,u32 filter)1094 void hw_atl_rpf_etht_flr_set(struct aq_hw_s *aq_hw, u32 etht_flr, u32 filter)
1095 {
1096 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_ET_VALF_ADR(filter),
1097 			    HW_ATL_RPF_ET_VALF_MSK,
1098 			    HW_ATL_RPF_ET_VALF_SHIFT, etht_flr);
1099 }
1100 
hw_atl_rpf_l4_spd_set(struct aq_hw_s * aq_hw,u32 val,u32 filter)1101 void hw_atl_rpf_l4_spd_set(struct aq_hw_s *aq_hw, u32 val, u32 filter)
1102 {
1103 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L4_SPD_ADR(filter),
1104 			    HW_ATL_RPF_L4_SPD_MSK,
1105 			    HW_ATL_RPF_L4_SPD_SHIFT, val);
1106 }
1107 
hw_atl_rpf_l4_dpd_set(struct aq_hw_s * aq_hw,u32 val,u32 filter)1108 void hw_atl_rpf_l4_dpd_set(struct aq_hw_s *aq_hw, u32 val, u32 filter)
1109 {
1110 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPF_L4_DPD_ADR(filter),
1111 			    HW_ATL_RPF_L4_DPD_MSK,
1112 			    HW_ATL_RPF_L4_DPD_SHIFT, val);
1113 }
1114 
1115 /* RPO: rx packet offload */
hw_atl_rpo_ipv4header_crc_offload_en_set(struct aq_hw_s * aq_hw,u32 ipv4header_crc_offload_en)1116 void hw_atl_rpo_ipv4header_crc_offload_en_set(struct aq_hw_s *aq_hw,
1117 					      u32 ipv4header_crc_offload_en)
1118 {
1119 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_IPV4CHK_EN_ADR,
1120 			    HW_ATL_RPO_IPV4CHK_EN_MSK,
1121 			    HW_ATL_RPO_IPV4CHK_EN_SHIFT,
1122 			    ipv4header_crc_offload_en);
1123 }
1124 
hw_atl_rpo_rx_desc_vlan_stripping_set(struct aq_hw_s * aq_hw,u32 rx_desc_vlan_stripping,u32 descriptor)1125 void hw_atl_rpo_rx_desc_vlan_stripping_set(struct aq_hw_s *aq_hw,
1126 					   u32 rx_desc_vlan_stripping,
1127 					   u32 descriptor)
1128 {
1129 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_DESCDVL_STRIP_ADR(descriptor),
1130 			    HW_ATL_RPO_DESCDVL_STRIP_MSK,
1131 			    HW_ATL_RPO_DESCDVL_STRIP_SHIFT,
1132 			    rx_desc_vlan_stripping);
1133 }
1134 
hw_atl_rpo_outer_vlan_tag_mode_set(void * context,u32 outervlantagmode)1135 void hw_atl_rpo_outer_vlan_tag_mode_set(void *context,
1136 					u32 outervlantagmode)
1137 {
1138 	aq_hw_write_reg_bit(context, HW_ATL_RPO_OUTER_VL_INS_MODE_ADR,
1139 			    HW_ATL_RPO_OUTER_VL_INS_MODE_MSK,
1140 			    HW_ATL_RPO_OUTER_VL_INS_MODE_SHIFT,
1141 			    outervlantagmode);
1142 }
1143 
hw_atl_rpo_outer_vlan_tag_mode_get(void * context)1144 u32 hw_atl_rpo_outer_vlan_tag_mode_get(void *context)
1145 {
1146 	return aq_hw_read_reg_bit(context, HW_ATL_RPO_OUTER_VL_INS_MODE_ADR,
1147 				  HW_ATL_RPO_OUTER_VL_INS_MODE_MSK,
1148 				  HW_ATL_RPO_OUTER_VL_INS_MODE_SHIFT);
1149 }
1150 
hw_atl_rpo_tcp_udp_crc_offload_en_set(struct aq_hw_s * aq_hw,u32 tcp_udp_crc_offload_en)1151 void hw_atl_rpo_tcp_udp_crc_offload_en_set(struct aq_hw_s *aq_hw,
1152 					   u32 tcp_udp_crc_offload_en)
1153 {
1154 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPOL4CHK_EN_ADR,
1155 			    HW_ATL_RPOL4CHK_EN_MSK,
1156 			    HW_ATL_RPOL4CHK_EN_SHIFT, tcp_udp_crc_offload_en);
1157 }
1158 
hw_atl_rpo_lro_en_set(struct aq_hw_s * aq_hw,u32 lro_en)1159 void hw_atl_rpo_lro_en_set(struct aq_hw_s *aq_hw, u32 lro_en)
1160 {
1161 	aq_hw_write_reg(aq_hw, HW_ATL_RPO_LRO_EN_ADR, lro_en);
1162 }
1163 
hw_atl_rpo_lro_patch_optimization_en_set(struct aq_hw_s * aq_hw,u32 lro_patch_optimization_en)1164 void hw_atl_rpo_lro_patch_optimization_en_set(struct aq_hw_s *aq_hw,
1165 					      u32 lro_patch_optimization_en)
1166 {
1167 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_PTOPT_EN_ADR,
1168 			    HW_ATL_RPO_LRO_PTOPT_EN_MSK,
1169 			    HW_ATL_RPO_LRO_PTOPT_EN_SHIFT,
1170 			    lro_patch_optimization_en);
1171 }
1172 
hw_atl_rpo_lro_qsessions_lim_set(struct aq_hw_s * aq_hw,u32 lro_qsessions_lim)1173 void hw_atl_rpo_lro_qsessions_lim_set(struct aq_hw_s *aq_hw,
1174 				      u32 lro_qsessions_lim)
1175 {
1176 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_QSES_LMT_ADR,
1177 			    HW_ATL_RPO_LRO_QSES_LMT_MSK,
1178 			    HW_ATL_RPO_LRO_QSES_LMT_SHIFT,
1179 			    lro_qsessions_lim);
1180 }
1181 
hw_atl_rpo_lro_total_desc_lim_set(struct aq_hw_s * aq_hw,u32 lro_total_desc_lim)1182 void hw_atl_rpo_lro_total_desc_lim_set(struct aq_hw_s *aq_hw,
1183 				       u32 lro_total_desc_lim)
1184 {
1185 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_TOT_DSC_LMT_ADR,
1186 			    HW_ATL_RPO_LRO_TOT_DSC_LMT_MSK,
1187 			    HW_ATL_RPO_LRO_TOT_DSC_LMT_SHIFT,
1188 			    lro_total_desc_lim);
1189 }
1190 
hw_atl_rpo_lro_min_pay_of_first_pkt_set(struct aq_hw_s * aq_hw,u32 lro_min_pld_of_first_pkt)1191 void hw_atl_rpo_lro_min_pay_of_first_pkt_set(struct aq_hw_s *aq_hw,
1192 					     u32 lro_min_pld_of_first_pkt)
1193 {
1194 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_PKT_MIN_ADR,
1195 			    HW_ATL_RPO_LRO_PKT_MIN_MSK,
1196 			    HW_ATL_RPO_LRO_PKT_MIN_SHIFT,
1197 			    lro_min_pld_of_first_pkt);
1198 }
1199 
hw_atl_rpo_lro_pkt_lim_set(struct aq_hw_s * aq_hw,u32 lro_pkt_lim)1200 void hw_atl_rpo_lro_pkt_lim_set(struct aq_hw_s *aq_hw, u32 lro_pkt_lim)
1201 {
1202 	aq_hw_write_reg(aq_hw, HW_ATL_RPO_LRO_RSC_MAX_ADR, lro_pkt_lim);
1203 }
1204 
hw_atl_rpo_lro_max_num_of_descriptors_set(struct aq_hw_s * aq_hw,u32 lro_max_number_of_descriptors,u32 lro)1205 void hw_atl_rpo_lro_max_num_of_descriptors_set(struct aq_hw_s *aq_hw,
1206 					       u32 lro_max_number_of_descriptors,
1207 					       u32 lro)
1208 {
1209 /* Register address for bitfield lro{L}_des_max[1:0] */
1210 	static u32 rpo_lro_ldes_max_adr[32] = {
1211 			0x000055A0U, 0x000055A0U, 0x000055A0U, 0x000055A0U,
1212 			0x000055A0U, 0x000055A0U, 0x000055A0U, 0x000055A0U,
1213 			0x000055A4U, 0x000055A4U, 0x000055A4U, 0x000055A4U,
1214 			0x000055A4U, 0x000055A4U, 0x000055A4U, 0x000055A4U,
1215 			0x000055A8U, 0x000055A8U, 0x000055A8U, 0x000055A8U,
1216 			0x000055A8U, 0x000055A8U, 0x000055A8U, 0x000055A8U,
1217 			0x000055ACU, 0x000055ACU, 0x000055ACU, 0x000055ACU,
1218 			0x000055ACU, 0x000055ACU, 0x000055ACU, 0x000055ACU
1219 		};
1220 
1221 /* Bitmask for bitfield lro{L}_des_max[1:0] */
1222 	static u32 rpo_lro_ldes_max_msk[32] = {
1223 			0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1224 			0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U,
1225 			0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1226 			0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U,
1227 			0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1228 			0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U,
1229 			0x00000003U, 0x00000030U, 0x00000300U, 0x00003000U,
1230 			0x00030000U, 0x00300000U, 0x03000000U, 0x30000000U
1231 		};
1232 
1233 /* Lower bit position of bitfield lro{L}_des_max[1:0] */
1234 	static u32 rpo_lro_ldes_max_shift[32] = {
1235 			0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U,
1236 			0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U,
1237 			0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U,
1238 			0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U
1239 		};
1240 
1241 	aq_hw_write_reg_bit(aq_hw, rpo_lro_ldes_max_adr[lro],
1242 			    rpo_lro_ldes_max_msk[lro],
1243 			    rpo_lro_ldes_max_shift[lro],
1244 			    lro_max_number_of_descriptors);
1245 }
1246 
hw_atl_rpo_lro_time_base_divider_set(struct aq_hw_s * aq_hw,u32 lro_time_base_divider)1247 void hw_atl_rpo_lro_time_base_divider_set(struct aq_hw_s *aq_hw,
1248 					  u32 lro_time_base_divider)
1249 {
1250 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_TB_DIV_ADR,
1251 			    HW_ATL_RPO_LRO_TB_DIV_MSK,
1252 			    HW_ATL_RPO_LRO_TB_DIV_SHIFT,
1253 			    lro_time_base_divider);
1254 }
1255 
hw_atl_rpo_lro_inactive_interval_set(struct aq_hw_s * aq_hw,u32 lro_inactive_interval)1256 void hw_atl_rpo_lro_inactive_interval_set(struct aq_hw_s *aq_hw,
1257 					  u32 lro_inactive_interval)
1258 {
1259 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_INA_IVAL_ADR,
1260 			    HW_ATL_RPO_LRO_INA_IVAL_MSK,
1261 			    HW_ATL_RPO_LRO_INA_IVAL_SHIFT,
1262 			    lro_inactive_interval);
1263 }
1264 
hw_atl_rpo_lro_max_coalescing_interval_set(struct aq_hw_s * aq_hw,u32 lro_max_coal_interval)1265 void hw_atl_rpo_lro_max_coalescing_interval_set(struct aq_hw_s *aq_hw,
1266 						u32 lro_max_coal_interval)
1267 {
1268 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RPO_LRO_MAX_IVAL_ADR,
1269 			    HW_ATL_RPO_LRO_MAX_IVAL_MSK,
1270 			    HW_ATL_RPO_LRO_MAX_IVAL_SHIFT,
1271 			    lro_max_coal_interval);
1272 }
1273 
1274 /* rx */
hw_atl_rx_rx_reg_res_dis_set(struct aq_hw_s * aq_hw,u32 rx_reg_res_dis)1275 void hw_atl_rx_rx_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 rx_reg_res_dis)
1276 {
1277 	aq_hw_write_reg_bit(aq_hw, HW_ATL_RX_REG_RES_DSBL_ADR,
1278 			    HW_ATL_RX_REG_RES_DSBL_MSK,
1279 			    HW_ATL_RX_REG_RES_DSBL_SHIFT,
1280 			    rx_reg_res_dis);
1281 }
1282 
1283 /* tdm */
hw_atl_tdm_cpu_id_set(struct aq_hw_s * aq_hw,u32 cpuid,u32 dca)1284 void hw_atl_tdm_cpu_id_set(struct aq_hw_s *aq_hw, u32 cpuid, u32 dca)
1285 {
1286 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DCADCPUID_ADR(dca),
1287 			    HW_ATL_TDM_DCADCPUID_MSK,
1288 			    HW_ATL_TDM_DCADCPUID_SHIFT, cpuid);
1289 }
1290 
hw_atl_tdm_large_send_offload_en_set(struct aq_hw_s * aq_hw,u32 large_send_offload_en)1291 void hw_atl_tdm_large_send_offload_en_set(struct aq_hw_s *aq_hw,
1292 					  u32 large_send_offload_en)
1293 {
1294 	aq_hw_write_reg(aq_hw, HW_ATL_TDM_LSO_EN_ADR, large_send_offload_en);
1295 }
1296 
hw_atl_tdm_tx_dca_en_set(struct aq_hw_s * aq_hw,u32 tx_dca_en)1297 void hw_atl_tdm_tx_dca_en_set(struct aq_hw_s *aq_hw, u32 tx_dca_en)
1298 {
1299 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DCA_EN_ADR, HW_ATL_TDM_DCA_EN_MSK,
1300 			    HW_ATL_TDM_DCA_EN_SHIFT, tx_dca_en);
1301 }
1302 
hw_atl_tdm_tx_dca_mode_set(struct aq_hw_s * aq_hw,u32 tx_dca_mode)1303 void hw_atl_tdm_tx_dca_mode_set(struct aq_hw_s *aq_hw, u32 tx_dca_mode)
1304 {
1305 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DCA_MODE_ADR,
1306 			    HW_ATL_TDM_DCA_MODE_MSK,
1307 			    HW_ATL_TDM_DCA_MODE_SHIFT, tx_dca_mode);
1308 }
1309 
hw_atl_tdm_tx_desc_dca_en_set(struct aq_hw_s * aq_hw,u32 tx_desc_dca_en,u32 dca)1310 void hw_atl_tdm_tx_desc_dca_en_set(struct aq_hw_s *aq_hw, u32 tx_desc_dca_en,
1311 				   u32 dca)
1312 {
1313 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DCADDESC_EN_ADR(dca),
1314 			    HW_ATL_TDM_DCADDESC_EN_MSK,
1315 			    HW_ATL_TDM_DCADDESC_EN_SHIFT,
1316 			    tx_desc_dca_en);
1317 }
1318 
hw_atl_tdm_tx_desc_en_set(struct aq_hw_s * aq_hw,u32 tx_desc_en,u32 descriptor)1319 void hw_atl_tdm_tx_desc_en_set(struct aq_hw_s *aq_hw, u32 tx_desc_en,
1320 			       u32 descriptor)
1321 {
1322 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DESCDEN_ADR(descriptor),
1323 			    HW_ATL_TDM_DESCDEN_MSK,
1324 			    HW_ATL_TDM_DESCDEN_SHIFT,
1325 			    tx_desc_en);
1326 }
1327 
hw_atl_tdm_tx_desc_head_ptr_get(struct aq_hw_s * aq_hw,u32 descriptor)1328 u32 hw_atl_tdm_tx_desc_head_ptr_get(struct aq_hw_s *aq_hw, u32 descriptor)
1329 {
1330 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_TDM_DESCDHD_ADR(descriptor),
1331 				  HW_ATL_TDM_DESCDHD_MSK,
1332 				  HW_ATL_TDM_DESCDHD_SHIFT);
1333 }
1334 
hw_atl_tdm_tx_desc_len_set(struct aq_hw_s * aq_hw,u32 tx_desc_len,u32 descriptor)1335 void hw_atl_tdm_tx_desc_len_set(struct aq_hw_s *aq_hw, u32 tx_desc_len,
1336 				u32 descriptor)
1337 {
1338 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DESCDLEN_ADR(descriptor),
1339 			    HW_ATL_TDM_DESCDLEN_MSK,
1340 			    HW_ATL_TDM_DESCDLEN_SHIFT,
1341 			    tx_desc_len);
1342 }
1343 
hw_atl_tdm_tx_desc_wr_wb_irq_en_set(struct aq_hw_s * aq_hw,u32 tx_desc_wr_wb_irq_en)1344 void hw_atl_tdm_tx_desc_wr_wb_irq_en_set(struct aq_hw_s *aq_hw,
1345 					 u32 tx_desc_wr_wb_irq_en)
1346 {
1347 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_INT_DESC_WRB_EN_ADR,
1348 			    HW_ATL_TDM_INT_DESC_WRB_EN_MSK,
1349 			    HW_ATL_TDM_INT_DESC_WRB_EN_SHIFT,
1350 			    tx_desc_wr_wb_irq_en);
1351 }
1352 
hw_atl_tdm_tx_desc_wr_wb_threshold_set(struct aq_hw_s * aq_hw,u32 tx_desc_wr_wb_threshold,u32 descriptor)1353 void hw_atl_tdm_tx_desc_wr_wb_threshold_set(struct aq_hw_s *aq_hw,
1354 					    u32 tx_desc_wr_wb_threshold,
1355 					    u32 descriptor)
1356 {
1357 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_DESCDWRB_THRESH_ADR(descriptor),
1358 			    HW_ATL_TDM_DESCDWRB_THRESH_MSK,
1359 			    HW_ATL_TDM_DESCDWRB_THRESH_SHIFT,
1360 			    tx_desc_wr_wb_threshold);
1361 }
1362 
hw_atl_tdm_tdm_intr_moder_en_set(struct aq_hw_s * aq_hw,u32 tdm_irq_moderation_en)1363 void hw_atl_tdm_tdm_intr_moder_en_set(struct aq_hw_s *aq_hw,
1364 				      u32 tdm_irq_moderation_en)
1365 {
1366 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TDM_INT_MOD_EN_ADR,
1367 			    HW_ATL_TDM_INT_MOD_EN_MSK,
1368 			    HW_ATL_TDM_INT_MOD_EN_SHIFT,
1369 			    tdm_irq_moderation_en);
1370 }
1371 
1372 /* thm */
hw_atl_thm_lso_tcp_flag_of_first_pkt_set(struct aq_hw_s * aq_hw,u32 lso_tcp_flag_of_first_pkt)1373 void hw_atl_thm_lso_tcp_flag_of_first_pkt_set(struct aq_hw_s *aq_hw,
1374 					      u32 lso_tcp_flag_of_first_pkt)
1375 {
1376 	aq_hw_write_reg_bit(aq_hw, HW_ATL_THM_LSO_TCP_FLAG_FIRST_ADR,
1377 			    HW_ATL_THM_LSO_TCP_FLAG_FIRST_MSK,
1378 			    HW_ATL_THM_LSO_TCP_FLAG_FIRST_SHIFT,
1379 			    lso_tcp_flag_of_first_pkt);
1380 }
1381 
hw_atl_thm_lso_tcp_flag_of_last_pkt_set(struct aq_hw_s * aq_hw,u32 lso_tcp_flag_of_last_pkt)1382 void hw_atl_thm_lso_tcp_flag_of_last_pkt_set(struct aq_hw_s *aq_hw,
1383 					     u32 lso_tcp_flag_of_last_pkt)
1384 {
1385 	aq_hw_write_reg_bit(aq_hw, HW_ATL_THM_LSO_TCP_FLAG_LAST_ADR,
1386 			    HW_ATL_THM_LSO_TCP_FLAG_LAST_MSK,
1387 			    HW_ATL_THM_LSO_TCP_FLAG_LAST_SHIFT,
1388 			    lso_tcp_flag_of_last_pkt);
1389 }
1390 
hw_atl_thm_lso_tcp_flag_of_middle_pkt_set(struct aq_hw_s * aq_hw,u32 lso_tcp_flag_of_middle_pkt)1391 void hw_atl_thm_lso_tcp_flag_of_middle_pkt_set(struct aq_hw_s *aq_hw,
1392 					       u32 lso_tcp_flag_of_middle_pkt)
1393 {
1394 	aq_hw_write_reg_bit(aq_hw, HW_ATL_THM_LSO_TCP_FLAG_MID_ADR,
1395 			    HW_ATL_THM_LSO_TCP_FLAG_MID_MSK,
1396 			    HW_ATL_THM_LSO_TCP_FLAG_MID_SHIFT,
1397 			    lso_tcp_flag_of_middle_pkt);
1398 }
1399 
1400 /* TPB: tx packet buffer */
hw_atl_tpb_tx_buff_en_set(struct aq_hw_s * aq_hw,u32 tx_buff_en)1401 void hw_atl_tpb_tx_buff_en_set(struct aq_hw_s *aq_hw, u32 tx_buff_en)
1402 {
1403 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TX_BUF_EN_ADR,
1404 			    HW_ATL_TPB_TX_BUF_EN_MSK,
1405 			    HW_ATL_TPB_TX_BUF_EN_SHIFT, tx_buff_en);
1406 }
1407 
hw_atl_tpb_tps_tx_tc_mode_get(struct aq_hw_s * aq_hw)1408 u32 hw_atl_tpb_tps_tx_tc_mode_get(struct aq_hw_s *aq_hw)
1409 {
1410 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_TPB_TX_TC_MODE_ADDR,
1411 			HW_ATL_TPB_TX_TC_MODE_MSK,
1412 			HW_ATL_TPB_TX_TC_MODE_SHIFT);
1413 }
1414 
hw_atl_tpb_tps_tx_tc_mode_set(struct aq_hw_s * aq_hw,u32 tx_traf_class_mode)1415 void hw_atl_tpb_tps_tx_tc_mode_set(struct aq_hw_s *aq_hw,
1416 				   u32 tx_traf_class_mode)
1417 {
1418 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TX_TC_MODE_ADDR,
1419 			HW_ATL_TPB_TX_TC_MODE_MSK,
1420 			HW_ATL_TPB_TX_TC_MODE_SHIFT,
1421 			tx_traf_class_mode);
1422 }
1423 
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)1424 void hw_atl_tpb_tx_buff_hi_threshold_per_tc_set(struct aq_hw_s *aq_hw,
1425 						u32 tx_buff_hi_threshold_per_tc,
1426 					 u32 buffer)
1427 {
1428 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TXBHI_THRESH_ADR(buffer),
1429 			    HW_ATL_TPB_TXBHI_THRESH_MSK,
1430 			    HW_ATL_TPB_TXBHI_THRESH_SHIFT,
1431 			    tx_buff_hi_threshold_per_tc);
1432 }
1433 
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)1434 void hw_atl_tpb_tx_buff_lo_threshold_per_tc_set(struct aq_hw_s *aq_hw,
1435 						u32 tx_buff_lo_threshold_per_tc,
1436 					 u32 buffer)
1437 {
1438 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TXBLO_THRESH_ADR(buffer),
1439 			    HW_ATL_TPB_TXBLO_THRESH_MSK,
1440 			    HW_ATL_TPB_TXBLO_THRESH_SHIFT,
1441 			    tx_buff_lo_threshold_per_tc);
1442 }
1443 
hw_atl_tpb_tx_dma_sys_lbk_en_set(struct aq_hw_s * aq_hw,u32 tx_dma_sys_lbk_en)1444 void hw_atl_tpb_tx_dma_sys_lbk_en_set(struct aq_hw_s *aq_hw, u32 tx_dma_sys_lbk_en)
1445 {
1446 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_DMA_SYS_LBK_ADR,
1447 			    HW_ATL_TPB_DMA_SYS_LBK_MSK,
1448 			    HW_ATL_TPB_DMA_SYS_LBK_SHIFT,
1449 			    tx_dma_sys_lbk_en);
1450 }
1451 
hw_atl_tpb_tx_dma_net_lbk_en_set(struct aq_hw_s * aq_hw,u32 tx_dma_net_lbk_en)1452 void hw_atl_tpb_tx_dma_net_lbk_en_set(struct aq_hw_s *aq_hw,
1453 				      u32 tx_dma_net_lbk_en)
1454 {
1455 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_DMA_NET_LBK_ADR,
1456 			    HW_ATL_TPB_DMA_NET_LBK_MSK,
1457 			    HW_ATL_TPB_DMA_NET_LBK_SHIFT,
1458 			    tx_dma_net_lbk_en);
1459 }
1460 
hw_atl_tpb_tx_tx_clk_gate_en_set(struct aq_hw_s * aq_hw,u32 tx_clk_gate_en)1461 void hw_atl_tpb_tx_tx_clk_gate_en_set(struct aq_hw_s *aq_hw,
1462 				      u32 tx_clk_gate_en)
1463 {
1464 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TX_CLK_GATE_EN_ADR,
1465 			    HW_ATL_TPB_TX_CLK_GATE_EN_MSK,
1466 			    HW_ATL_TPB_TX_CLK_GATE_EN_SHIFT,
1467 			    tx_clk_gate_en);
1468 }
1469 
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)1470 void hw_atl_tpb_tx_pkt_buff_size_per_tc_set(struct aq_hw_s *aq_hw,
1471 
1472 					    u32 tx_pkt_buff_size_per_tc, u32 buffer)
1473 {
1474 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TXBBUF_SIZE_ADR(buffer),
1475 			    HW_ATL_TPB_TXBBUF_SIZE_MSK,
1476 			    HW_ATL_TPB_TXBBUF_SIZE_SHIFT,
1477 			    tx_pkt_buff_size_per_tc);
1478 }
1479 
hw_atl_tpb_tx_path_scp_ins_en_set(struct aq_hw_s * aq_hw,u32 tx_path_scp_ins_en)1480 void hw_atl_tpb_tx_path_scp_ins_en_set(struct aq_hw_s *aq_hw, u32 tx_path_scp_ins_en)
1481 {
1482 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPB_TX_SCP_INS_EN_ADR,
1483 			    HW_ATL_TPB_TX_SCP_INS_EN_MSK,
1484 			    HW_ATL_TPB_TX_SCP_INS_EN_SHIFT,
1485 			    tx_path_scp_ins_en);
1486 }
1487 
1488 /* TPO: tx packet offload */
hw_atl_tpo_ipv4header_crc_offload_en_set(struct aq_hw_s * aq_hw,u32 ipv4header_crc_offload_en)1489 void hw_atl_tpo_ipv4header_crc_offload_en_set(struct aq_hw_s *aq_hw,
1490 					      u32 ipv4header_crc_offload_en)
1491 {
1492 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPO_IPV4CHK_EN_ADR,
1493 			    HW_ATL_TPO_IPV4CHK_EN_MSK,
1494 			    HW_ATL_TPO_IPV4CHK_EN_SHIFT,
1495 			    ipv4header_crc_offload_en);
1496 }
1497 
hw_atl_tpo_tcp_udp_crc_offload_en_set(struct aq_hw_s * aq_hw,u32 tcp_udp_crc_offload_en)1498 void hw_atl_tpo_tcp_udp_crc_offload_en_set(struct aq_hw_s *aq_hw,
1499 					   u32 tcp_udp_crc_offload_en)
1500 {
1501 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPOL4CHK_EN_ADR,
1502 			    HW_ATL_TPOL4CHK_EN_MSK,
1503 			    HW_ATL_TPOL4CHK_EN_SHIFT,
1504 			    tcp_udp_crc_offload_en);
1505 }
1506 
hw_atl_tpo_tx_pkt_sys_lbk_en_set(struct aq_hw_s * aq_hw,u32 tx_pkt_sys_lbk_en)1507 void hw_atl_tpo_tx_pkt_sys_lbk_en_set(struct aq_hw_s *aq_hw,
1508 				      u32 tx_pkt_sys_lbk_en)
1509 {
1510 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPO_PKT_SYS_LBK_ADR,
1511 			    HW_ATL_TPO_PKT_SYS_LBK_MSK,
1512 			    HW_ATL_TPO_PKT_SYS_LBK_SHIFT,
1513 			    tx_pkt_sys_lbk_en);
1514 }
1515 
1516 /* 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)1517 void hw_atl_tps_tx_pkt_shed_data_arb_mode_set(struct aq_hw_s *aq_hw,
1518 					      u32 tx_pkt_shed_data_arb_mode)
1519 {
1520 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DATA_TC_ARB_MODE_ADR,
1521 			    HW_ATL_TPS_DATA_TC_ARB_MODE_MSK,
1522 			    HW_ATL_TPS_DATA_TC_ARB_MODE_SHIFT,
1523 			    tx_pkt_shed_data_arb_mode);
1524 }
1525 
hw_atl_tps_tx_pkt_shed_desc_rate_curr_time_res_set(struct aq_hw_s * aq_hw,u32 curr_time_res)1526 void hw_atl_tps_tx_pkt_shed_desc_rate_curr_time_res_set(struct aq_hw_s *aq_hw,
1527 							u32 curr_time_res)
1528 {
1529 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_RATE_TA_RST_ADR,
1530 			    HW_ATL_TPS_DESC_RATE_TA_RST_MSK,
1531 			    HW_ATL_TPS_DESC_RATE_TA_RST_SHIFT,
1532 			    curr_time_res);
1533 }
1534 
hw_atl_tps_tx_pkt_shed_desc_rate_lim_set(struct aq_hw_s * aq_hw,u32 tx_pkt_shed_desc_rate_lim)1535 void hw_atl_tps_tx_pkt_shed_desc_rate_lim_set(struct aq_hw_s *aq_hw,
1536 					      u32 tx_pkt_shed_desc_rate_lim)
1537 {
1538 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_RATE_LIM_ADR,
1539 			    HW_ATL_TPS_DESC_RATE_LIM_MSK,
1540 			    HW_ATL_TPS_DESC_RATE_LIM_SHIFT,
1541 			    tx_pkt_shed_desc_rate_lim);
1542 }
1543 
hw_atl_tps_tx_pkt_shed_desc_tc_arb_mode_set(struct aq_hw_s * aq_hw,u32 arb_mode)1544 void hw_atl_tps_tx_pkt_shed_desc_tc_arb_mode_set(struct aq_hw_s *aq_hw,
1545 						 u32 arb_mode)
1546 {
1547 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_TC_ARB_MODE_ADR,
1548 			    HW_ATL_TPS_DESC_TC_ARB_MODE_MSK,
1549 			    HW_ATL_TPS_DESC_TC_ARB_MODE_SHIFT,
1550 			    arb_mode);
1551 }
1552 
hw_atl_tps_tx_pkt_shed_desc_tc_max_credit_set(struct aq_hw_s * aq_hw,const u32 tc,const u32 max_credit)1553 void hw_atl_tps_tx_pkt_shed_desc_tc_max_credit_set(struct aq_hw_s *aq_hw,
1554 						   const u32 tc,
1555 						   const u32 max_credit)
1556 {
1557 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_TCTCREDIT_MAX_ADR(tc),
1558 			    HW_ATL_TPS_DESC_TCTCREDIT_MAX_MSK,
1559 			    HW_ATL_TPS_DESC_TCTCREDIT_MAX_SHIFT,
1560 			    max_credit);
1561 }
1562 
hw_atl_tps_tx_pkt_shed_desc_tc_weight_set(struct aq_hw_s * aq_hw,const u32 tc,const u32 weight)1563 void hw_atl_tps_tx_pkt_shed_desc_tc_weight_set(struct aq_hw_s *aq_hw,
1564 					       const u32 tc,
1565 					       const u32 weight)
1566 {
1567 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_TCTWEIGHT_ADR(tc),
1568 			    HW_ATL_TPS_DESC_TCTWEIGHT_MSK,
1569 			    HW_ATL_TPS_DESC_TCTWEIGHT_SHIFT,
1570 			    weight);
1571 }
1572 
hw_atl_tps_tx_pkt_shed_desc_vm_arb_mode_set(struct aq_hw_s * aq_hw,u32 arb_mode)1573 void hw_atl_tps_tx_pkt_shed_desc_vm_arb_mode_set(struct aq_hw_s *aq_hw,
1574 						 u32 arb_mode)
1575 {
1576 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_VM_ARB_MODE_ADR,
1577 			    HW_ATL_TPS_DESC_VM_ARB_MODE_MSK,
1578 			    HW_ATL_TPS_DESC_VM_ARB_MODE_SHIFT,
1579 			    arb_mode);
1580 }
1581 
hw_atl_tps_tx_pkt_shed_tc_data_max_credit_set(struct aq_hw_s * aq_hw,const u32 tc,const u32 max_credit)1582 void hw_atl_tps_tx_pkt_shed_tc_data_max_credit_set(struct aq_hw_s *aq_hw,
1583 						   const u32 tc,
1584 						   const u32 max_credit)
1585 {
1586 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DATA_TCTCREDIT_MAX_ADR(tc),
1587 			    HW_ATL_TPS_DATA_TCTCREDIT_MAX_MSK,
1588 			    HW_ATL_TPS_DATA_TCTCREDIT_MAX_SHIFT,
1589 			    max_credit);
1590 }
1591 
hw_atl_tps_tx_pkt_shed_tc_data_weight_set(struct aq_hw_s * aq_hw,const u32 tc,const u32 weight)1592 void hw_atl_tps_tx_pkt_shed_tc_data_weight_set(struct aq_hw_s *aq_hw,
1593 					       const u32 tc,
1594 					       const u32 weight)
1595 {
1596 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DATA_TCTWEIGHT_ADR(tc),
1597 			    HW_ATL_TPS_DATA_TCTWEIGHT_MSK,
1598 			    HW_ATL_TPS_DATA_TCTWEIGHT_SHIFT,
1599 			    weight);
1600 }
1601 
hw_atl_tps_tx_desc_rate_mode_set(struct aq_hw_s * aq_hw,const u32 rate_mode)1602 void hw_atl_tps_tx_desc_rate_mode_set(struct aq_hw_s *aq_hw,
1603 				      const u32 rate_mode)
1604 {
1605 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_TX_DESC_RATE_MODE_ADR,
1606 			    HW_ATL_TPS_TX_DESC_RATE_MODE_MSK,
1607 			    HW_ATL_TPS_TX_DESC_RATE_MODE_SHIFT,
1608 			    rate_mode);
1609 }
1610 
hw_atl_tps_tx_desc_rate_en_set(struct aq_hw_s * aq_hw,const u32 desc,const u32 enable)1611 void hw_atl_tps_tx_desc_rate_en_set(struct aq_hw_s *aq_hw, const u32 desc,
1612 				    const u32 enable)
1613 {
1614 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_RATE_EN_ADR(desc),
1615 			    HW_ATL_TPS_DESC_RATE_EN_MSK,
1616 			    HW_ATL_TPS_DESC_RATE_EN_SHIFT,
1617 			    enable);
1618 }
1619 
hw_atl_tps_tx_desc_rate_x_set(struct aq_hw_s * aq_hw,const u32 desc,const u32 rate_int)1620 void hw_atl_tps_tx_desc_rate_x_set(struct aq_hw_s *aq_hw, const u32 desc,
1621 				   const u32 rate_int)
1622 {
1623 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_RATE_X_ADR(desc),
1624 			    HW_ATL_TPS_DESC_RATE_X_MSK,
1625 			    HW_ATL_TPS_DESC_RATE_X_SHIFT,
1626 			    rate_int);
1627 }
1628 
hw_atl_tps_tx_desc_rate_y_set(struct aq_hw_s * aq_hw,const u32 desc,const u32 rate_frac)1629 void hw_atl_tps_tx_desc_rate_y_set(struct aq_hw_s *aq_hw, const u32 desc,
1630 				   const u32 rate_frac)
1631 {
1632 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TPS_DESC_RATE_Y_ADR(desc),
1633 			    HW_ATL_TPS_DESC_RATE_Y_MSK,
1634 			    HW_ATL_TPS_DESC_RATE_Y_SHIFT,
1635 			    rate_frac);
1636 }
1637 
1638 /* tx */
hw_atl_tx_tx_reg_res_dis_set(struct aq_hw_s * aq_hw,u32 tx_reg_res_dis)1639 void hw_atl_tx_tx_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 tx_reg_res_dis)
1640 {
1641 	aq_hw_write_reg_bit(aq_hw, HW_ATL_TX_REG_RES_DSBL_ADR,
1642 			    HW_ATL_TX_REG_RES_DSBL_MSK,
1643 			    HW_ATL_TX_REG_RES_DSBL_SHIFT, tx_reg_res_dis);
1644 }
1645 
1646 /* msm */
hw_atl_msm_reg_access_status_get(struct aq_hw_s * aq_hw)1647 u32 hw_atl_msm_reg_access_status_get(struct aq_hw_s *aq_hw)
1648 {
1649 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_MSM_REG_ACCESS_BUSY_ADR,
1650 				  HW_ATL_MSM_REG_ACCESS_BUSY_MSK,
1651 				  HW_ATL_MSM_REG_ACCESS_BUSY_SHIFT);
1652 }
1653 
hw_atl_msm_reg_addr_for_indirect_addr_set(struct aq_hw_s * aq_hw,u32 reg_addr_for_indirect_addr)1654 void hw_atl_msm_reg_addr_for_indirect_addr_set(struct aq_hw_s *aq_hw,
1655 					       u32 reg_addr_for_indirect_addr)
1656 {
1657 	aq_hw_write_reg_bit(aq_hw, HW_ATL_MSM_REG_ADDR_ADR,
1658 			    HW_ATL_MSM_REG_ADDR_MSK,
1659 			    HW_ATL_MSM_REG_ADDR_SHIFT,
1660 			    reg_addr_for_indirect_addr);
1661 }
1662 
hw_atl_msm_reg_rd_strobe_set(struct aq_hw_s * aq_hw,u32 reg_rd_strobe)1663 void hw_atl_msm_reg_rd_strobe_set(struct aq_hw_s *aq_hw, u32 reg_rd_strobe)
1664 {
1665 	aq_hw_write_reg_bit(aq_hw, HW_ATL_MSM_REG_RD_STROBE_ADR,
1666 			    HW_ATL_MSM_REG_RD_STROBE_MSK,
1667 			    HW_ATL_MSM_REG_RD_STROBE_SHIFT,
1668 			    reg_rd_strobe);
1669 }
1670 
hw_atl_msm_reg_rd_data_get(struct aq_hw_s * aq_hw)1671 u32 hw_atl_msm_reg_rd_data_get(struct aq_hw_s *aq_hw)
1672 {
1673 	return aq_hw_read_reg(aq_hw, HW_ATL_MSM_REG_RD_DATA_ADR);
1674 }
1675 
hw_atl_msm_reg_wr_data_set(struct aq_hw_s * aq_hw,u32 reg_wr_data)1676 void hw_atl_msm_reg_wr_data_set(struct aq_hw_s *aq_hw, u32 reg_wr_data)
1677 {
1678 	aq_hw_write_reg(aq_hw, HW_ATL_MSM_REG_WR_DATA_ADR, reg_wr_data);
1679 }
1680 
hw_atl_msm_reg_wr_strobe_set(struct aq_hw_s * aq_hw,u32 reg_wr_strobe)1681 void hw_atl_msm_reg_wr_strobe_set(struct aq_hw_s *aq_hw, u32 reg_wr_strobe)
1682 {
1683 	aq_hw_write_reg_bit(aq_hw, HW_ATL_MSM_REG_WR_STROBE_ADR,
1684 			    HW_ATL_MSM_REG_WR_STROBE_MSK,
1685 			    HW_ATL_MSM_REG_WR_STROBE_SHIFT,
1686 			    reg_wr_strobe);
1687 }
1688 
1689 /* pci */
hw_atl_pci_pci_reg_res_dis_set(struct aq_hw_s * aq_hw,u32 pci_reg_res_dis)1690 void hw_atl_pci_pci_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 pci_reg_res_dis)
1691 {
1692 	aq_hw_write_reg_bit(aq_hw, HW_ATL_PCI_REG_RES_DSBL_ADR,
1693 			    HW_ATL_PCI_REG_RES_DSBL_MSK,
1694 			    HW_ATL_PCI_REG_RES_DSBL_SHIFT,
1695 			    pci_reg_res_dis);
1696 }
1697 
hw_atl_reg_glb_cpu_scratch_scp_set(struct aq_hw_s * aq_hw,u32 glb_cpu_scratch_scp,u32 scratch_scp)1698 void hw_atl_reg_glb_cpu_scratch_scp_set(struct aq_hw_s *aq_hw,
1699 					u32 glb_cpu_scratch_scp,
1700 					u32 scratch_scp)
1701 {
1702 	aq_hw_write_reg(aq_hw, HW_ATL_GLB_CPU_SCRATCH_SCP_ADR(scratch_scp),
1703 			glb_cpu_scratch_scp);
1704 }
1705 
hw_atl_pcs_ptp_clock_read_enable(struct aq_hw_s * aq_hw,u32 ptp_clock_read_enable)1706 void hw_atl_pcs_ptp_clock_read_enable(struct aq_hw_s *aq_hw,
1707 				      u32 ptp_clock_read_enable)
1708 {
1709 	aq_hw_write_reg_bit(aq_hw, HW_ATL_PCS_PTP_CLOCK_READ_ENABLE_ADR,
1710 			    HW_ATL_PCS_PTP_CLOCK_READ_ENABLE_MSK,
1711 			    HW_ATL_PCS_PTP_CLOCK_READ_ENABLE_SHIFT,
1712 			    ptp_clock_read_enable);
1713 }
1714 
hw_atl_pcs_ptp_clock_get(struct aq_hw_s * aq_hw,u32 index)1715 u32 hw_atl_pcs_ptp_clock_get(struct aq_hw_s *aq_hw, u32 index)
1716 {
1717 	return aq_hw_read_reg(aq_hw, HW_ATL_PCS_PTP_TS_VAL_ADDR(index));
1718 }
1719 
hw_atl_mcp_up_force_intr_set(struct aq_hw_s * aq_hw,u32 up_force_intr)1720 void hw_atl_mcp_up_force_intr_set(struct aq_hw_s *aq_hw, u32 up_force_intr)
1721 {
1722 	aq_hw_write_reg_bit(aq_hw, HW_ATL_MCP_UP_FORCE_INTERRUPT_ADR,
1723 			    HW_ATL_MCP_UP_FORCE_INTERRUPT_MSK,
1724 			    HW_ATL_MCP_UP_FORCE_INTERRUPT_SHIFT,
1725 			    up_force_intr);
1726 }
1727 
hw_atl_rpfl3l4_ipv4_dest_addr_clear(struct aq_hw_s * aq_hw,u8 location)1728 void hw_atl_rpfl3l4_ipv4_dest_addr_clear(struct aq_hw_s *aq_hw, u8 location)
1729 {
1730 	aq_hw_write_reg(aq_hw, HW_ATL_RPF_L3_DSTA_ADR(location), 0U);
1731 }
1732 
hw_atl_rpfl3l4_ipv4_src_addr_clear(struct aq_hw_s * aq_hw,u8 location)1733 void hw_atl_rpfl3l4_ipv4_src_addr_clear(struct aq_hw_s *aq_hw, u8 location)
1734 {
1735 	aq_hw_write_reg(aq_hw, HW_ATL_RPF_L3_SRCA_ADR(location), 0U);
1736 }
1737 
hw_atl_rpfl3l4_cmd_clear(struct aq_hw_s * aq_hw,u8 location)1738 void hw_atl_rpfl3l4_cmd_clear(struct aq_hw_s *aq_hw, u8 location)
1739 {
1740 	aq_hw_write_reg(aq_hw, HW_ATL_RPF_L3_REG_CTRL_ADR(location), 0U);
1741 }
1742 
hw_atl_rpfl3l4_ipv6_dest_addr_clear(struct aq_hw_s * aq_hw,u8 location)1743 void hw_atl_rpfl3l4_ipv6_dest_addr_clear(struct aq_hw_s *aq_hw, u8 location)
1744 {
1745 	int i;
1746 
1747 	for (i = 0; i < 4; ++i)
1748 		aq_hw_write_reg(aq_hw,
1749 				HW_ATL_RPF_L3_DSTA_ADR(location + i),
1750 				0U);
1751 }
1752 
hw_atl_rpfl3l4_ipv6_src_addr_clear(struct aq_hw_s * aq_hw,u8 location)1753 void hw_atl_rpfl3l4_ipv6_src_addr_clear(struct aq_hw_s *aq_hw, u8 location)
1754 {
1755 	int i;
1756 
1757 	for (i = 0; i < 4; ++i)
1758 		aq_hw_write_reg(aq_hw,
1759 				HW_ATL_RPF_L3_SRCA_ADR(location + i),
1760 				0U);
1761 }
1762 
hw_atl_rpfl3l4_ipv4_dest_addr_set(struct aq_hw_s * aq_hw,u8 location,u32 ipv4_dest)1763 void hw_atl_rpfl3l4_ipv4_dest_addr_set(struct aq_hw_s *aq_hw, u8 location,
1764 				       u32 ipv4_dest)
1765 {
1766 	aq_hw_write_reg(aq_hw, HW_ATL_RPF_L3_DSTA_ADR(location),
1767 			ipv4_dest);
1768 }
1769 
hw_atl_rpfl3l4_ipv4_src_addr_set(struct aq_hw_s * aq_hw,u8 location,u32 ipv4_src)1770 void hw_atl_rpfl3l4_ipv4_src_addr_set(struct aq_hw_s *aq_hw, u8 location,
1771 				      u32 ipv4_src)
1772 {
1773 	aq_hw_write_reg(aq_hw,
1774 			HW_ATL_RPF_L3_SRCA_ADR(location),
1775 			ipv4_src);
1776 }
1777 
hw_atl_rpfl3l4_cmd_set(struct aq_hw_s * aq_hw,u8 location,u32 cmd)1778 void hw_atl_rpfl3l4_cmd_set(struct aq_hw_s *aq_hw, u8 location, u32 cmd)
1779 {
1780 	aq_hw_write_reg(aq_hw, HW_ATL_RPF_L3_REG_CTRL_ADR(location), cmd);
1781 }
1782 
hw_atl_rpfl3l4_ipv6_src_addr_set(struct aq_hw_s * aq_hw,u8 location,u32 * ipv6_src)1783 void hw_atl_rpfl3l4_ipv6_src_addr_set(struct aq_hw_s *aq_hw, u8 location,
1784 				      u32 *ipv6_src)
1785 {
1786 	int i;
1787 
1788 	for (i = 0; i < 4; ++i)
1789 		aq_hw_write_reg(aq_hw,
1790 				HW_ATL_RPF_L3_SRCA_ADR(location + i),
1791 				ipv6_src[3 - i]);
1792 }
1793 
hw_atl_rpfl3l4_ipv6_dest_addr_set(struct aq_hw_s * aq_hw,u8 location,u32 * ipv6_dest)1794 void hw_atl_rpfl3l4_ipv6_dest_addr_set(struct aq_hw_s *aq_hw, u8 location,
1795 				       u32 *ipv6_dest)
1796 {
1797 	int i;
1798 
1799 	for (i = 0; i < 4; ++i)
1800 		aq_hw_write_reg(aq_hw,
1801 				HW_ATL_RPF_L3_DSTA_ADR(location + i),
1802 				ipv6_dest[3 - i]);
1803 }
1804 
hw_atl_sem_ram_get(struct aq_hw_s * self)1805 u32 hw_atl_sem_ram_get(struct aq_hw_s *self)
1806 {
1807 	return hw_atl_reg_glb_cpu_sem_get(self, HW_ATL_FW_SM_RAM);
1808 }
1809 
hw_atl_sem_mdio_get(struct aq_hw_s * self)1810 u32 hw_atl_sem_mdio_get(struct aq_hw_s *self)
1811 {
1812 	return hw_atl_reg_glb_cpu_sem_get(self, HW_ATL_FW_SM_MDIO);
1813 }
1814 
hw_atl_sem_reset1_get(struct aq_hw_s * self)1815 u32 hw_atl_sem_reset1_get(struct aq_hw_s *self)
1816 {
1817 	return hw_atl_reg_glb_cpu_sem_get(self, HW_ATL_FW_SM_RESET1);
1818 }
1819 
hw_atl_sem_reset2_get(struct aq_hw_s * self)1820 u32 hw_atl_sem_reset2_get(struct aq_hw_s *self)
1821 {
1822 	return hw_atl_reg_glb_cpu_sem_get(self, HW_ATL_FW_SM_RESET2);
1823 }
1824 
hw_atl_scrpad_get(struct aq_hw_s * aq_hw,u32 scratch_scp)1825 u32 hw_atl_scrpad_get(struct aq_hw_s *aq_hw, u32 scratch_scp)
1826 {
1827 	return aq_hw_read_reg(aq_hw,
1828 			      HW_ATL_GLB_CPU_SCRATCH_SCP_ADR(scratch_scp));
1829 }
1830 
hw_atl_scrpad12_get(struct aq_hw_s * self)1831 u32 hw_atl_scrpad12_get(struct aq_hw_s *self)
1832 {
1833 	return  hw_atl_scrpad_get(self, 0xB);
1834 }
1835 
hw_atl_scrpad25_get(struct aq_hw_s * self)1836 u32 hw_atl_scrpad25_get(struct aq_hw_s *self)
1837 {
1838 	return hw_atl_scrpad_get(self, 0x18);
1839 }
1840 
hw_atl_glb_mdio_iface1_set(struct aq_hw_s * aq_hw,u32 value)1841 void hw_atl_glb_mdio_iface1_set(struct aq_hw_s *aq_hw, u32 value)
1842 {
1843 	aq_hw_write_reg(aq_hw, HW_ATL_GLB_MDIO_IFACE_N_ADR(1), value);
1844 }
1845 
hw_atl_glb_mdio_iface1_get(struct aq_hw_s * aq_hw)1846 u32 hw_atl_glb_mdio_iface1_get(struct aq_hw_s *aq_hw)
1847 {
1848 	return aq_hw_read_reg(aq_hw, HW_ATL_GLB_MDIO_IFACE_N_ADR(1));
1849 }
1850 
hw_atl_glb_mdio_iface2_set(struct aq_hw_s * aq_hw,u32 value)1851 void hw_atl_glb_mdio_iface2_set(struct aq_hw_s *aq_hw, u32 value)
1852 {
1853 	aq_hw_write_reg(aq_hw, HW_ATL_GLB_MDIO_IFACE_N_ADR(2), value);
1854 }
1855 
hw_atl_glb_mdio_iface2_get(struct aq_hw_s * aq_hw)1856 u32 hw_atl_glb_mdio_iface2_get(struct aq_hw_s *aq_hw)
1857 {
1858 	return aq_hw_read_reg(aq_hw, HW_ATL_GLB_MDIO_IFACE_N_ADR(2));
1859 }
1860 
hw_atl_glb_mdio_iface3_set(struct aq_hw_s * aq_hw,u32 value)1861 void hw_atl_glb_mdio_iface3_set(struct aq_hw_s *aq_hw, u32 value)
1862 {
1863 	aq_hw_write_reg(aq_hw, HW_ATL_GLB_MDIO_IFACE_N_ADR(3), value);
1864 }
1865 
hw_atl_glb_mdio_iface3_get(struct aq_hw_s * aq_hw)1866 u32 hw_atl_glb_mdio_iface3_get(struct aq_hw_s *aq_hw)
1867 {
1868 	return aq_hw_read_reg(aq_hw, HW_ATL_GLB_MDIO_IFACE_N_ADR(3));
1869 }
1870 
hw_atl_glb_mdio_iface4_set(struct aq_hw_s * aq_hw,u32 value)1871 void hw_atl_glb_mdio_iface4_set(struct aq_hw_s *aq_hw, u32 value)
1872 {
1873 	aq_hw_write_reg(aq_hw, HW_ATL_GLB_MDIO_IFACE_N_ADR(4), value);
1874 }
1875 
hw_atl_glb_mdio_iface4_get(struct aq_hw_s * aq_hw)1876 u32 hw_atl_glb_mdio_iface4_get(struct aq_hw_s *aq_hw)
1877 {
1878 	return aq_hw_read_reg(aq_hw, HW_ATL_GLB_MDIO_IFACE_N_ADR(4));
1879 }
1880 
hw_atl_glb_mdio_iface5_set(struct aq_hw_s * aq_hw,u32 value)1881 void hw_atl_glb_mdio_iface5_set(struct aq_hw_s *aq_hw, u32 value)
1882 {
1883 	aq_hw_write_reg(aq_hw, HW_ATL_GLB_MDIO_IFACE_N_ADR(5), value);
1884 }
1885 
hw_atl_glb_mdio_iface5_get(struct aq_hw_s * aq_hw)1886 u32 hw_atl_glb_mdio_iface5_get(struct aq_hw_s *aq_hw)
1887 {
1888 	return aq_hw_read_reg(aq_hw, HW_ATL_GLB_MDIO_IFACE_N_ADR(5));
1889 }
1890 
hw_atl_mdio_busy_get(struct aq_hw_s * aq_hw)1891 u32 hw_atl_mdio_busy_get(struct aq_hw_s *aq_hw)
1892 {
1893 	return aq_hw_read_reg_bit(aq_hw, HW_ATL_MDIO_BUSY_ADR,
1894 				  HW_ATL_MDIO_BUSY_MSK,
1895 				  HW_ATL_MDIO_BUSY_SHIFT);
1896 }
1897