File Index
Files and directories
Sign in
FILE

hw_atl_llh.c

File preview with syntax highlighting.

linux-6.19.14/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c C
   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
  60u32 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
  67u32 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
  74u32 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
  81u32 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
  88u32 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
  93void 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
  98void 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 */
 104void 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
 110u32 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
 115void 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
 123void 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
 130u32 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
 137u32 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 */
 143u32 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
 148u64 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
 153u64 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
 158u64 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
 163u64 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 */
 169void 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
 175void 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
 216void 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
 257void 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
 297void 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
 337void 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
 343void 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
 348void 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
 355void 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
 361u32 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
 366u32 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
 372void 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 */
 379void 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 */
 385void 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 */
 394void 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
 401void 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
 407void 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
 414void 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
 424void 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
 433void 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
 442void 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
 452void 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
 462u32 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
 469void 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
 477void 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
 486void 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
 495void 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
 504void 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
 513void 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 */
 523void 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
 529u32 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
 534void 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
 539void 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
 544void 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
 552void 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
 560u32 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
 565void 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
 573void 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
 580void 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
 587void 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
 594void 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
 600void 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
 608void 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
 614void 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
 622void 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
 630void 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
 638void 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 */
 647void 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
 654void 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
 661void 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
 670u32 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
 677void 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
 684void 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
 694void 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
 704void 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
 711void 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
 725u32 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
 732void 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
 741void 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
 752void 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
 761void 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
 767void 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
 775void 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
 784u32 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
 791void 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
 800void 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
 809void 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
 817void 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
 825void 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
 835void 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
 844void 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
 869void 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
 877void 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
 883u32 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
 890void 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
 898void 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
 907void 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
 916u32 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
 923void 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
 930void 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
 939void 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
 947void 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
 955void 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
 964u32 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
 971void 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
 980void 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
 989void 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
 998void 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
1007void 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
1016void 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
1025void 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
1034void 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
1042void 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
1050void 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
1060void 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
1069void 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
1077void 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
1086void 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
1094void 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
1101void 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
1108void 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 */
1116void 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
1125void 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
1135void 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
1144u32 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
1151void 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
1159void 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
1164void 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
1173void 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
1182void 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
1191void 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
1200void 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
1205void 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
1247void 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
1256void 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
1265void 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 */
1275void 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 */
1284void 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
1291void 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
1297void 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
1303void 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
1310void 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
1319void 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
1328u32 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
1335void 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
1344void 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
1353void 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
1363void 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 */
1373void 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
1382void 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
1391void 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 */
1401void 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
1408u32 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
1415void 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
1424void 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
1434void 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
1444void 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
1452void 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
1461void 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
1470void 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
1480void 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 */
1489void 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
1498void 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
1507void 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 */
1517void 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
1526void 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
1535void 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
1544void 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
1553void 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
1563void 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
1573void 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
1582void 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
1592void 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
1602void 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
1611void 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
1620void 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
1629void 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 */
1639void 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 */
1647u32 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
1654void 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
1663void 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
1671u32 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
1676void 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
1681void 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 */
1690void 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
1698void 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
1706void 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
1715u32 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
1720void 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
1728void 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
1733void 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
1738void 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
1743void 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
1753void 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
1763void 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
1770void 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
1778void 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
1783void 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
1794void 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
1805u32 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
1810u32 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
1815u32 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
1820u32 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
1825u32 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
1831u32 hw_atl_scrpad12_get(struct aq_hw_s *self)
1832{
1833	return  hw_atl_scrpad_get(self, 0xB);
1834}
1835
1836u32 hw_atl_scrpad25_get(struct aq_hw_s *self)
1837{
1838	return hw_atl_scrpad_get(self, 0x18);
1839}
1840
1841void 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
1846u32 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
1851void 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
1856u32 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
1861void 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
1866u32 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
1871void 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
1876u32 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
1881void 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
1886u32 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
1891u32 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}
~/ Read-only file preview.