linux/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c
<<
>>
Prefs
   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