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