octeontx2-af: Gather RVU blocks HW info
authorSunil Goutham <sgoutham@marvell.com>
Wed, 10 Oct 2018 12:44:23 +0000 (18:14 +0530)
committerDavid S. Miller <davem@davemloft.net>
Wed, 10 Oct 2018 17:06:01 +0000 (10:06 -0700)
This patch gathers NPA/NIX/SSO/SSOW/TIM/CPT RVU blocks's
HW info like number of LFs. Important register offsets
saved for later use to avoid code duplication for each block.
A bitmap is allocated for each of the blocks which later
on will be used to allocate a LF for a RVU PF/VF.

Also added RVU NIX/NPA block registers and few registers
of other blocks.

Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/octeontx2/af/rvu.c
drivers/net/ethernet/marvell/octeontx2/af/rvu.h
drivers/net/ethernet/marvell/octeontx2/af/rvu_reg.h

index a3ce158..cd15653 100644 (file)
@@ -56,6 +56,15 @@ int rvu_poll_reg(struct rvu *rvu, u64 block, u64 offset, u64 mask, bool zero)
        return -EBUSY;
 }
 
+int rvu_alloc_bitmap(struct rsrc_bmap *rsrc)
+{
+       rsrc->bmap = kcalloc(BITS_TO_LONGS(rsrc->max),
+                            sizeof(long), GFP_KERNEL);
+       if (!rsrc->bmap)
+               return -ENOMEM;
+       return 0;
+}
+
 static void rvu_check_block_implemented(struct rvu *rvu)
 {
        struct rvu_hwinfo *hw = rvu->hw;
@@ -97,6 +106,157 @@ static void rvu_reset_all_blocks(struct rvu *rvu)
        rvu_block_reset(rvu, BLKADDR_NDC2, NDC_AF_BLK_RST);
 }
 
+static void rvu_free_hw_resources(struct rvu *rvu)
+{
+       struct rvu_hwinfo *hw = rvu->hw;
+       struct rvu_block *block;
+       int id;
+
+       /* Free all bitmaps */
+       for (id = 0; id < BLK_COUNT; id++) {
+               block = &hw->block[id];
+               kfree(block->lf.bmap);
+       }
+}
+
+static int rvu_setup_hw_resources(struct rvu *rvu)
+{
+       struct rvu_hwinfo *hw = rvu->hw;
+       struct rvu_block *block;
+       int err;
+       u64 cfg;
+
+       /* Get HW supported max RVU PF & VF count */
+       cfg = rvu_read64(rvu, BLKADDR_RVUM, RVU_PRIV_CONST);
+       hw->total_pfs = (cfg >> 32) & 0xFF;
+       hw->total_vfs = (cfg >> 20) & 0xFFF;
+       hw->max_vfs_per_pf = (cfg >> 40) & 0xFF;
+
+       /* Init NPA LF's bitmap */
+       block = &hw->block[BLKADDR_NPA];
+       if (!block->implemented)
+               goto nix;
+       cfg = rvu_read64(rvu, BLKADDR_NPA, NPA_AF_CONST);
+       block->lf.max = (cfg >> 16) & 0xFFF;
+       block->addr = BLKADDR_NPA;
+       block->lfshift = 8;
+       block->lookup_reg = NPA_AF_RVU_LF_CFG_DEBUG;
+       block->pf_lfcnt_reg = RVU_PRIV_PFX_NPA_CFG;
+       block->vf_lfcnt_reg = RVU_PRIV_HWVFX_NPA_CFG;
+       block->lfcfg_reg = NPA_PRIV_LFX_CFG;
+       block->msixcfg_reg = NPA_PRIV_LFX_INT_CFG;
+       block->lfreset_reg = NPA_AF_LF_RST;
+       sprintf(block->name, "NPA");
+       err = rvu_alloc_bitmap(&block->lf);
+       if (err)
+               return err;
+
+nix:
+       /* Init NIX LF's bitmap */
+       block = &hw->block[BLKADDR_NIX0];
+       if (!block->implemented)
+               goto sso;
+       cfg = rvu_read64(rvu, BLKADDR_NIX0, NIX_AF_CONST2);
+       block->lf.max = cfg & 0xFFF;
+       block->addr = BLKADDR_NIX0;
+       block->lfshift = 8;
+       block->lookup_reg = NIX_AF_RVU_LF_CFG_DEBUG;
+       block->pf_lfcnt_reg = RVU_PRIV_PFX_NIX_CFG;
+       block->vf_lfcnt_reg = RVU_PRIV_HWVFX_NIX_CFG;
+       block->lfcfg_reg = NIX_PRIV_LFX_CFG;
+       block->msixcfg_reg = NIX_PRIV_LFX_INT_CFG;
+       block->lfreset_reg = NIX_AF_LF_RST;
+       sprintf(block->name, "NIX");
+       err = rvu_alloc_bitmap(&block->lf);
+       if (err)
+               return err;
+
+sso:
+       /* Init SSO group's bitmap */
+       block = &hw->block[BLKADDR_SSO];
+       if (!block->implemented)
+               goto ssow;
+       cfg = rvu_read64(rvu, BLKADDR_SSO, SSO_AF_CONST);
+       block->lf.max = cfg & 0xFFFF;
+       block->addr = BLKADDR_SSO;
+       block->multislot = true;
+       block->lfshift = 3;
+       block->lookup_reg = SSO_AF_RVU_LF_CFG_DEBUG;
+       block->pf_lfcnt_reg = RVU_PRIV_PFX_SSO_CFG;
+       block->vf_lfcnt_reg = RVU_PRIV_HWVFX_SSO_CFG;
+       block->lfcfg_reg = SSO_PRIV_LFX_HWGRP_CFG;
+       block->msixcfg_reg = SSO_PRIV_LFX_HWGRP_INT_CFG;
+       block->lfreset_reg = SSO_AF_LF_HWGRP_RST;
+       sprintf(block->name, "SSO GROUP");
+       err = rvu_alloc_bitmap(&block->lf);
+       if (err)
+               return err;
+
+ssow:
+       /* Init SSO workslot's bitmap */
+       block = &hw->block[BLKADDR_SSOW];
+       if (!block->implemented)
+               goto tim;
+       block->lf.max = (cfg >> 56) & 0xFF;
+       block->addr = BLKADDR_SSOW;
+       block->multislot = true;
+       block->lfshift = 3;
+       block->lookup_reg = SSOW_AF_RVU_LF_HWS_CFG_DEBUG;
+       block->pf_lfcnt_reg = RVU_PRIV_PFX_SSOW_CFG;
+       block->vf_lfcnt_reg = RVU_PRIV_HWVFX_SSOW_CFG;
+       block->lfcfg_reg = SSOW_PRIV_LFX_HWS_CFG;
+       block->msixcfg_reg = SSOW_PRIV_LFX_HWS_INT_CFG;
+       block->lfreset_reg = SSOW_AF_LF_HWS_RST;
+       sprintf(block->name, "SSOWS");
+       err = rvu_alloc_bitmap(&block->lf);
+       if (err)
+               return err;
+
+tim:
+       /* Init TIM LF's bitmap */
+       block = &hw->block[BLKADDR_TIM];
+       if (!block->implemented)
+               goto cpt;
+       cfg = rvu_read64(rvu, BLKADDR_TIM, TIM_AF_CONST);
+       block->lf.max = cfg & 0xFFFF;
+       block->addr = BLKADDR_TIM;
+       block->multislot = true;
+       block->lfshift = 3;
+       block->lookup_reg = TIM_AF_RVU_LF_CFG_DEBUG;
+       block->pf_lfcnt_reg = RVU_PRIV_PFX_TIM_CFG;
+       block->vf_lfcnt_reg = RVU_PRIV_HWVFX_TIM_CFG;
+       block->lfcfg_reg = TIM_PRIV_LFX_CFG;
+       block->msixcfg_reg = TIM_PRIV_LFX_INT_CFG;
+       block->lfreset_reg = TIM_AF_LF_RST;
+       sprintf(block->name, "TIM");
+       err = rvu_alloc_bitmap(&block->lf);
+       if (err)
+               return err;
+
+cpt:
+       /* Init CPT LF's bitmap */
+       block = &hw->block[BLKADDR_CPT0];
+       if (!block->implemented)
+               return 0;
+       cfg = rvu_read64(rvu, BLKADDR_CPT0, CPT_AF_CONSTANTS0);
+       block->lf.max = cfg & 0xFF;
+       block->addr = BLKADDR_CPT0;
+       block->multislot = true;
+       block->lfshift = 3;
+       block->lookup_reg = CPT_AF_RVU_LF_CFG_DEBUG;
+       block->pf_lfcnt_reg = RVU_PRIV_PFX_CPT_CFG;
+       block->vf_lfcnt_reg = RVU_PRIV_HWVFX_CPT_CFG;
+       block->lfcfg_reg = CPT_PRIV_LFX_CFG;
+       block->msixcfg_reg = CPT_PRIV_LFX_INT_CFG;
+       block->lfreset_reg = CPT_AF_LF_RST;
+       sprintf(block->name, "CPT");
+       err = rvu_alloc_bitmap(&block->lf);
+       if (err)
+               return err;
+
+       return 0;
+}
+
 static int rvu_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 {
        struct device *dev = &pdev->dev;
@@ -155,6 +315,10 @@ static int rvu_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 
        rvu_reset_all_blocks(rvu);
 
+       err = rvu_setup_hw_resources(rvu);
+       if (err)
+               goto err_release_regions;
+
        return 0;
 
 err_release_regions:
@@ -172,6 +336,9 @@ static void rvu_remove(struct pci_dev *pdev)
 {
        struct rvu *rvu = pci_get_drvdata(pdev);
 
+       rvu_reset_all_blocks(rvu);
+       rvu_free_hw_resources(rvu);
+
        pci_release_regions(pdev);
        pci_disable_device(pdev);
        pci_set_drvdata(pdev, NULL);
index e2c54d0..592b820 100644 (file)
 
 #define NAME_SIZE                              32
 
+struct rsrc_bmap {
+       unsigned long *bmap;    /* Pointer to resource bitmap */
+       u16  max;               /* Max resource id or count */
+};
+
 struct rvu_block {
+       struct rsrc_bmap lf;
+       bool multislot;
        bool implemented;
+       u8   addr;  /* RVU_BLOCK_ADDR_E */
+       u8   lfshift;
+       u64  lookup_reg;
+       u64  pf_lfcnt_reg;
+       u64  vf_lfcnt_reg;
+       u64  lfcfg_reg;
+       u64  msixcfg_reg;
+       u64  lfreset_reg;
+       unsigned char name[NAME_SIZE];
 };
 
 struct rvu_hwinfo {
+       u8      total_pfs;   /* MAX RVU PFs HW supports */
+       u16     total_vfs;   /* Max RVU VFs HW supports */
+       u16     max_vfs_per_pf; /* Max VFs that can be attached to a PF */
+
        struct rvu_block block[BLK_COUNT]; /* Block info */
 };
 
@@ -63,6 +83,7 @@ static inline u64 rvupf_read64(struct rvu *rvu, u64 offset)
  * RVU
  */
 
+int rvu_alloc_bitmap(struct rsrc_bmap *rsrc);
 int rvu_poll_reg(struct rvu *rvu, u64 block, u64 offset, u64 mask, bool zero);
 
 #endif /* RVU_H */
index f4ba5a1..bbeed77 100644 (file)
 #define RVU_PF_MSIX_VECX_CTL(a)             (0x008 | (a) << 4)
 #define RVU_PF_MSIX_PBAX(a)                 (0xF0000 | (a) << 3)
 
+/* NPA block's admin function registers */
 #define NPA_AF_BLK_RST                  (0x0000)
-#define NIX_AF_BLK_RST                  (0x00B0)
-#define SSO_AF_BLK_RST                  (0x10f8)
-#define TIM_AF_BLK_RST                  (0x10)
-#define CPT_AF_BLK_RST                  (0x46000)
+#define NPA_AF_CONST                    (0x0010)
+#define NPA_AF_CONST1                   (0x0018)
+#define NPA_AF_LF_RST                   (0x0020)
+#define NPA_AF_GEN_CFG                  (0x0030)
+#define NPA_AF_NDC_CFG                  (0x0040)
+#define NPA_AF_INP_CTL                  (0x00D0)
+#define NPA_AF_ACTIVE_CYCLES_PC         (0x00F0)
+#define NPA_AF_AVG_DELAY                (0x0100)
+#define NPA_AF_GEN_INT                  (0x0140)
+#define NPA_AF_GEN_INT_W1S              (0x0148)
+#define NPA_AF_GEN_INT_ENA_W1S          (0x0150)
+#define NPA_AF_GEN_INT_ENA_W1C          (0x0158)
+#define NPA_AF_RVU_INT                  (0x0160)
+#define NPA_AF_RVU_INT_W1S              (0x0168)
+#define NPA_AF_RVU_INT_ENA_W1S          (0x0170)
+#define NPA_AF_RVU_INT_ENA_W1C          (0x0178)
+#define NPA_AF_ERR_INT                 (0x0180)
+#define NPA_AF_ERR_INT_W1S             (0x0188)
+#define NPA_AF_ERR_INT_ENA_W1S         (0x0190)
+#define NPA_AF_ERR_INT_ENA_W1C         (0x0198)
+#define NPA_AF_RAS                     (0x01A0)
+#define NPA_AF_RAS_W1S                 (0x01A8)
+#define NPA_AF_RAS_ENA_W1S             (0x01B0)
+#define NPA_AF_RAS_ENA_W1C             (0x01B8)
+#define NPA_AF_BP_TEST                  (0x0200)
+#define NPA_AF_ECO                      (0x0300)
+#define NPA_AF_AQ_CFG                   (0x0600)
+#define NPA_AF_AQ_BASE                  (0x0610)
+#define NPA_AF_AQ_STATUS               (0x0620)
+#define NPA_AF_AQ_DOOR                  (0x0630)
+#define NPA_AF_AQ_DONE_WAIT             (0x0640)
+#define NPA_AF_AQ_DONE                  (0x0650)
+#define NPA_AF_AQ_DONE_ACK              (0x0660)
+#define NPA_AF_AQ_DONE_INT              (0x0680)
+#define NPA_AF_AQ_DONE_INT_W1S          (0x0688)
+#define NPA_AF_AQ_DONE_ENA_W1S          (0x0690)
+#define NPA_AF_AQ_DONE_ENA_W1C          (0x0698)
+#define NPA_AF_LFX_AURAS_CFG(a)         (0x4000 | (a) << 18)
+#define NPA_AF_LFX_LOC_AURAS_BASE(a)    (0x4010 | (a) << 18)
+#define NPA_AF_LFX_QINTS_CFG(a)         (0x4100 | (a) << 18)
+#define NPA_AF_LFX_QINTS_BASE(a)        (0x4110 | (a) << 18)
+#define NPA_PRIV_AF_INT_CFG             (0x10000)
+#define NPA_PRIV_LFX_CFG               (0x10010)
+#define NPA_PRIV_LFX_INT_CFG           (0x10020)
+#define NPA_AF_RVU_LF_CFG_DEBUG         (0x10030)
+
+/* NIX block's admin function registers */
+#define NIX_AF_CFG                     (0x0000)
+#define NIX_AF_STATUS                  (0x0010)
+#define NIX_AF_NDC_CFG                 (0x0018)
+#define NIX_AF_CONST                   (0x0020)
+#define NIX_AF_CONST1                  (0x0028)
+#define NIX_AF_CONST2                  (0x0030)
+#define NIX_AF_CONST3                  (0x0038)
+#define NIX_AF_SQ_CONST                        (0x0040)
+#define NIX_AF_CQ_CONST                        (0x0048)
+#define NIX_AF_RQ_CONST                        (0x0050)
+#define NIX_AF_PSE_CONST               (0x0060)
+#define NIX_AF_TL1_CONST               (0x0070)
+#define NIX_AF_TL2_CONST               (0x0078)
+#define NIX_AF_TL3_CONST               (0x0080)
+#define NIX_AF_TL4_CONST               (0x0088)
+#define NIX_AF_MDQ_CONST               (0x0090)
+#define NIX_AF_MC_MIRROR_CONST         (0x0098)
+#define NIX_AF_LSO_CFG                 (0x00A8)
+#define NIX_AF_BLK_RST                 (0x00B0)
+#define NIX_AF_TX_TSTMP_CFG            (0x00C0)
+#define NIX_AF_RX_CFG                  (0x00D0)
+#define NIX_AF_AVG_DELAY               (0x00E0)
+#define NIX_AF_CINT_DELAY              (0x00F0)
+#define NIX_AF_RX_MCAST_BASE           (0x0100)
+#define NIX_AF_RX_MCAST_CFG            (0x0110)
+#define NIX_AF_RX_MCAST_BUF_BASE       (0x0120)
+#define NIX_AF_RX_MCAST_BUF_CFG                (0x0130)
+#define NIX_AF_RX_MIRROR_BUF_BASE      (0x0140)
+#define NIX_AF_RX_MIRROR_BUF_CFG       (0x0148)
+#define NIX_AF_LF_RST                  (0x0150)
+#define NIX_AF_GEN_INT                 (0x0160)
+#define NIX_AF_GEN_INT_W1S             (0x0168)
+#define NIX_AF_GEN_INT_ENA_W1S         (0x0170)
+#define NIX_AF_GEN_INT_ENA_W1C         (0x0178)
+#define NIX_AF_ERR_INT                 (0x0180)
+#define NIX_AF_ERR_INT_W1S             (0x0188)
+#define NIX_AF_ERR_INT_ENA_W1S         (0x0190)
+#define NIX_AF_ERR_INT_ENA_W1C         (0x0198)
+#define NIX_AF_RAS                     (0x01A0)
+#define NIX_AF_RAS_W1S                 (0x01A8)
+#define NIX_AF_RAS_ENA_W1S             (0x01B0)
+#define NIX_AF_RAS_ENA_W1C             (0x01B8)
+#define NIX_AF_RVU_INT                 (0x01C0)
+#define NIX_AF_RVU_INT_W1S             (0x01C8)
+#define NIX_AF_RVU_INT_ENA_W1S         (0x01D0)
+#define NIX_AF_RVU_INT_ENA_W1C         (0x01D8)
+#define NIX_AF_TCP_TIMER               (0x01E0)
+#define NIX_AF_RX_WQE_TAG_CTL          (0x01F0)
+#define NIX_AF_RX_DEF_OL2              (0x0200)
+#define NIX_AF_RX_DEF_OIP4             (0x0210)
+#define NIX_AF_RX_DEF_IIP4             (0x0220)
+#define NIX_AF_RX_DEF_OIP6             (0x0230)
+#define NIX_AF_RX_DEF_IIP6             (0x0240)
+#define NIX_AF_RX_DEF_OTCP             (0x0250)
+#define NIX_AF_RX_DEF_ITCP             (0x0260)
+#define NIX_AF_RX_DEF_OUDP             (0x0270)
+#define NIX_AF_RX_DEF_IUDP             (0x0280)
+#define NIX_AF_RX_DEF_OSCTP            (0x0290)
+#define NIX_AF_RX_DEF_ISCTP            (0x02A0)
+#define NIX_AF_RX_DEF_IPSECX           (0x02B0)
+#define NIX_AF_RX_IPSEC_GEN_CFG                (0x0300)
+#define NIX_AF_RX_CPTX_INST_ADDR       (0x0310)
+#define NIX_AF_NDC_TX_SYNC             (0x03F0)
+#define NIX_AF_AQ_CFG                  (0x0400)
+#define NIX_AF_AQ_BASE                 (0x0410)
+#define NIX_AF_AQ_STATUS               (0x0420)
+#define NIX_AF_AQ_DOOR                 (0x0430)
+#define NIX_AF_AQ_DONE_WAIT            (0x0440)
+#define NIX_AF_AQ_DONE                 (0x0450)
+#define NIX_AF_AQ_DONE_ACK             (0x0460)
+#define NIX_AF_AQ_DONE_TIMER           (0x0470)
+#define NIX_AF_AQ_DONE_INT             (0x0480)
+#define NIX_AF_AQ_DONE_INT_W1S         (0x0488)
+#define NIX_AF_AQ_DONE_ENA_W1S         (0x0490)
+#define NIX_AF_AQ_DONE_ENA_W1C         (0x0498)
+#define NIX_AF_RX_LINKX_SLX_SPKT_CNT   (0x0500)
+#define NIX_AF_RX_LINKX_SLX_SXQE_CNT   (0x0510)
+#define NIX_AF_RX_MCAST_JOBSX_SW_CNT   (0x0520)
+#define NIX_AF_RX_MIRROR_JOBSX_SW_CNT  (0x0530)
+#define NIX_AF_RX_LINKX_CFG(a)         (0x0540 | (a) << 16)
+#define NIX_AF_RX_SW_SYNC              (0x0550)
+#define NIX_AF_RX_SW_SYNC_DONE         (0x0560)
+#define NIX_AF_SEB_ECO                 (0x0600)
+#define NIX_AF_SEB_TEST_BP             (0x0610)
+#define NIX_AF_NORM_TX_FIFO_STATUS     (0x0620)
+#define NIX_AF_EXPR_TX_FIFO_STATUS     (0x0630)
+#define NIX_AF_SDP_TX_FIFO_STATUS      (0x0640)
+#define NIX_AF_TX_NPC_CAPTURE_CONFIG   (0x0660)
+#define NIX_AF_TX_NPC_CAPTURE_INFO     (0x0670)
+
+#define NIX_AF_DEBUG_NPC_RESP_DATAX(a)          (0x680 | (a) << 3)
+#define NIX_AF_SMQX_CFG(a)                      (0x700 | (a) << 16)
+#define NIX_AF_PSE_CHANNEL_LEVEL                (0x800)
+#define NIX_AF_PSE_SHAPER_CFG                   (0x810)
+#define NIX_AF_TX_EXPR_CREDIT                  (0x830)
+#define NIX_AF_MARK_FORMATX_CTL(a)              (0x900 | (a) << 18)
+#define NIX_AF_TX_LINKX_NORM_CREDIT(a)         (0xA00 | (a) << 16)
+#define NIX_AF_TX_LINKX_EXPR_CREDIT(a)         (0xA10 | (a) << 16)
+#define NIX_AF_TX_LINKX_SW_XOFF(a)              (0xA20 | (a) << 16)
+#define NIX_AF_TX_LINKX_HW_XOFF(a)              (0xA30 | (a) << 16)
+#define NIX_AF_SDP_LINK_CREDIT                  (0xa40)
+#define NIX_AF_SDP_SW_XOFFX(a)                  (0xA60 | (a) << 3)
+#define NIX_AF_SDP_HW_XOFFX(a)                  (0xAC0 | (a) << 3)
+#define NIX_AF_TL4X_BP_STATUS(a)                (0xB00 | (a) << 16)
+#define NIX_AF_TL4X_SDP_LINK_CFG(a)             (0xB10 | (a) << 16)
+#define NIX_AF_TL1X_SCHEDULE(a)                 (0xC00 | (a) << 16)
+#define NIX_AF_TL1X_SHAPE(a)                    (0xC10 | (a) << 16)
+#define NIX_AF_TL1X_CIR(a)                      (0xC20 | (a) << 16)
+#define NIX_AF_TL1X_SHAPE_STATE(a)              (0xC50 | (a) << 16)
+#define NIX_AF_TL1X_SW_XOFF(a)                  (0xC70 | (a) << 16)
+#define NIX_AF_TL1X_TOPOLOGY(a)                 (0xC80 | (a) << 16)
+#define NIX_AF_TL1X_GREEN(a)                    (0xC90 | (a) << 16)
+#define NIX_AF_TL1X_YELLOW(a)                   (0xCA0 | (a) << 16)
+#define NIX_AF_TL1X_RED(a)                      (0xCB0 | (a) << 16)
+#define NIX_AF_TL1X_MD_DEBUG0(a)                (0xCC0 | (a) << 16)
+#define NIX_AF_TL1X_MD_DEBUG1(a)                (0xCC8 | (a) << 16)
+#define NIX_AF_TL1X_MD_DEBUG2(a)                (0xCD0 | (a) << 16)
+#define NIX_AF_TL1X_MD_DEBUG3(a)                (0xCD8 | (a) << 16)
+#define NIX_AF_TL1A_DEBUG                       (0xce0)
+#define NIX_AF_TL1B_DEBUG                       (0xcf0)
+#define NIX_AF_TL1_DEBUG_GREEN                  (0xd00)
+#define NIX_AF_TL1_DEBUG_NODE                   (0xd10)
+#define NIX_AF_TL1X_DROPPED_PACKETS(a)          (0xD20 | (a) << 16)
+#define NIX_AF_TL1X_DROPPED_BYTES(a)            (0xD30 | (a) << 16)
+#define NIX_AF_TL1X_RED_PACKETS(a)              (0xD40 | (a) << 16)
+#define NIX_AF_TL1X_RED_BYTES(a)                (0xD50 | (a) << 16)
+#define NIX_AF_TL1X_YELLOW_PACKETS(a)           (0xD60 | (a) << 16)
+#define NIX_AF_TL1X_YELLOW_BYTES(a)             (0xD70 | (a) << 16)
+#define NIX_AF_TL1X_GREEN_PACKETS(a)            (0xD80 | (a) << 16)
+#define NIX_AF_TL1X_GREEN_BYTES(a)              (0xD90 | (a) << 16)
+#define NIX_AF_TL2X_SCHEDULE(a)                 (0xE00 | (a) << 16)
+#define NIX_AF_TL2X_SHAPE(a)                    (0xE10 | (a) << 16)
+#define NIX_AF_TL2X_CIR(a)                      (0xE20 | (a) << 16)
+#define NIX_AF_TL2X_PIR(a)                      (0xE30 | (a) << 16)
+#define NIX_AF_TL2X_SCHED_STATE(a)              (0xE40 | (a) << 16)
+#define NIX_AF_TL2X_SHAPE_STATE(a)              (0xE50 | (a) << 16)
+#define NIX_AF_TL2X_POINTERS(a)                 (0xE60 | (a) << 16)
+#define NIX_AF_TL2X_SW_XOFF(a)                  (0xE70 | (a) << 16)
+#define NIX_AF_TL2X_TOPOLOGY(a)                 (0xE80 | (a) << 16)
+#define NIX_AF_TL2X_PARENT(a)                   (0xE88 | (a) << 16)
+#define NIX_AF_TL2X_GREEN(a)                    (0xE90 | (a) << 16)
+#define NIX_AF_TL2X_YELLOW(a)                   (0xEA0 | (a) << 16)
+#define NIX_AF_TL2X_RED(a)                      (0xEB0 | (a) << 16)
+#define NIX_AF_TL2X_MD_DEBUG0(a)                (0xEC0 | (a) << 16)
+#define NIX_AF_TL2X_MD_DEBUG1(a)                (0xEC8 | (a) << 16)
+#define NIX_AF_TL2X_MD_DEBUG2(a)                (0xED0 | (a) << 16)
+#define NIX_AF_TL2X_MD_DEBUG3(a)                (0xED8 | (a) << 16)
+#define NIX_AF_TL2A_DEBUG                       (0xee0)
+#define NIX_AF_TL2B_DEBUG                       (0xef0)
+#define NIX_AF_TL3X_SCHEDULE(a)                 (0x1000 | (a) << 16)
+#define NIX_AF_TL3X_SHAPE(a)                    (0x1010 | (a) << 16)
+#define NIX_AF_TL3X_CIR(a)                      (0x1020 | (a) << 16)
+#define NIX_AF_TL3X_PIR(a)                      (0x1030 | (a) << 16)
+#define NIX_AF_TL3X_SCHED_STATE(a)              (0x1040 | (a) << 16)
+#define NIX_AF_TL3X_SHAPE_STATE(a)              (0x1050 | (a) << 16)
+#define NIX_AF_TL3X_POINTERS(a)                 (0x1060 | (a) << 16)
+#define NIX_AF_TL3X_SW_XOFF(a)                  (0x1070 | (a) << 16)
+#define NIX_AF_TL3X_TOPOLOGY(a)                 (0x1080 | (a) << 16)
+#define NIX_AF_TL3X_PARENT(a)                   (0x1088 | (a) << 16)
+#define NIX_AF_TL3X_GREEN(a)                    (0x1090 | (a) << 16)
+#define NIX_AF_TL3X_YELLOW(a)                   (0x10A0 | (a) << 16)
+#define NIX_AF_TL3X_RED(a)                      (0x10B0 | (a) << 16)
+#define NIX_AF_TL3X_MD_DEBUG0(a)                (0x10C0 | (a) << 16)
+#define NIX_AF_TL3X_MD_DEBUG1(a)                (0x10C8 | (a) << 16)
+#define NIX_AF_TL3X_MD_DEBUG2(a)                (0x10D0 | (a) << 16)
+#define NIX_AF_TL3X_MD_DEBUG3(a)                (0x10D8 | (a) << 16)
+#define NIX_AF_TL3A_DEBUG                       (0x10e0)
+#define NIX_AF_TL3B_DEBUG                       (0x10f0)
+#define NIX_AF_TL4X_SCHEDULE(a)                 (0x1200 | (a) << 16)
+#define NIX_AF_TL4X_SHAPE(a)                    (0x1210 | (a) << 16)
+#define NIX_AF_TL4X_CIR(a)                      (0x1220 | (a) << 16)
+#define NIX_AF_TL4X_PIR(a)                      (0x1230 | (a) << 16)
+#define NIX_AF_TL4X_SCHED_STATE(a)              (0x1240 | (a) << 16)
+#define NIX_AF_TL4X_SHAPE_STATE(a)              (0x1250 | (a) << 16)
+#define NIX_AF_TL4X_POINTERS(a)                 (0x1260 | (a) << 16)
+#define NIX_AF_TL4X_SW_XOFF(a)                  (0x1270 | (a) << 16)
+#define NIX_AF_TL4X_TOPOLOGY(a)                 (0x1280 | (a) << 16)
+#define NIX_AF_TL4X_PARENT(a)                   (0x1288 | (a) << 16)
+#define NIX_AF_TL4X_GREEN(a)                    (0x1290 | (a) << 16)
+#define NIX_AF_TL4X_YELLOW(a)                   (0x12A0 | (a) << 16)
+#define NIX_AF_TL4X_RED(a)                      (0x12B0 | (a) << 16)
+#define NIX_AF_TL4X_MD_DEBUG0(a)                (0x12C0 | (a) << 16)
+#define NIX_AF_TL4X_MD_DEBUG1(a)                (0x12C8 | (a) << 16)
+#define NIX_AF_TL4X_MD_DEBUG2(a)                (0x12D0 | (a) << 16)
+#define NIX_AF_TL4X_MD_DEBUG3(a)                (0x12D8 | (a) << 16)
+#define NIX_AF_TL4A_DEBUG                       (0x12e0)
+#define NIX_AF_TL4B_DEBUG                       (0x12f0)
+#define NIX_AF_MDQX_SCHEDULE(a)                 (0x1400 | (a) << 16)
+#define NIX_AF_MDQX_SHAPE(a)                    (0x1410 | (a) << 16)
+#define NIX_AF_MDQX_CIR(a)                      (0x1420 | (a) << 16)
+#define NIX_AF_MDQX_PIR(a)                      (0x1430 | (a) << 16)
+#define NIX_AF_MDQX_SCHED_STATE(a)              (0x1440 | (a) << 16)
+#define NIX_AF_MDQX_SHAPE_STATE(a)              (0x1450 | (a) << 16)
+#define NIX_AF_MDQX_POINTERS(a)                 (0x1460 | (a) << 16)
+#define NIX_AF_MDQX_SW_XOFF(a)                  (0x1470 | (a) << 16)
+#define NIX_AF_MDQX_PARENT(a)                   (0x1480 | (a) << 16)
+#define NIX_AF_MDQX_MD_DEBUG(a)                 (0x14C0 | (a) << 16)
+#define NIX_AF_MDQX_PTR_FIFO(a)                 (0x14D0 | (a) << 16)
+#define NIX_AF_MDQA_DEBUG                       (0x14e0)
+#define NIX_AF_MDQB_DEBUG                       (0x14f0)
+#define NIX_AF_TL3_TL2X_CFG(a)                  (0x1600 | (a) << 18)
+#define NIX_AF_TL3_TL2X_BP_STATUS(a)            (0x1610 | (a) << 16)
+#define NIX_AF_TL3_TL2X_LINKX_CFG(a, b)         (0x1700 | (a) << 16 | (b) << 3)
+#define NIX_AF_RX_FLOW_KEY_ALGX_FIELDX(a, b)    (0x1800 | (a) << 18 | (b) << 3)
+#define NIX_AF_TX_MCASTX(a)                     (0x1900 | (a) << 15)
+#define NIX_AF_TX_VTAG_DEFX_CTL(a)              (0x1A00 | (a) << 16)
+#define NIX_AF_TX_VTAG_DEFX_DATA(a)             (0x1A10 | (a) << 16)
+#define NIX_AF_RX_BPIDX_STATUS(a)               (0x1A20 | (a) << 17)
+#define NIX_AF_RX_CHANX_CFG(a)                  (0x1A30 | (a) << 15)
+#define NIX_AF_CINT_TIMERX(a)                   (0x1A40 | (a) << 18)
+#define NIX_AF_LSO_FORMATX_FIELDX(a, b)         (0x1B00 | (a) << 16 | (b) << 3)
+#define NIX_AF_LFX_CFG(a)              (0x4000 | (a) << 17)
+#define NIX_AF_LFX_SQS_CFG(a)          (0x4020 | (a) << 17)
+#define NIX_AF_LFX_TX_CFG2(a)          (0x4028 | (a) << 17)
+#define NIX_AF_LFX_SQS_BASE(a)         (0x4030 | (a) << 17)
+#define NIX_AF_LFX_RQS_CFG(a)          (0x4040 | (a) << 17)
+#define NIX_AF_LFX_RQS_BASE(a)         (0x4050 | (a) << 17)
+#define NIX_AF_LFX_CQS_CFG(a)          (0x4060 | (a) << 17)
+#define NIX_AF_LFX_CQS_BASE(a)         (0x4070 | (a) << 17)
+#define NIX_AF_LFX_TX_CFG(a)           (0x4080 | (a) << 17)
+#define NIX_AF_LFX_TX_PARSE_CFG(a)     (0x4090 | (a) << 17)
+#define NIX_AF_LFX_RX_CFG(a)           (0x40A0 | (a) << 17)
+#define NIX_AF_LFX_RSS_CFG(a)          (0x40C0 | (a) << 17)
+#define NIX_AF_LFX_RSS_BASE(a)         (0x40D0 | (a) << 17)
+#define NIX_AF_LFX_QINTS_CFG(a)                (0x4100 | (a) << 17)
+#define NIX_AF_LFX_QINTS_BASE(a)       (0x4110 | (a) << 17)
+#define NIX_AF_LFX_CINTS_CFG(a)                (0x4120 | (a) << 17)
+#define NIX_AF_LFX_CINTS_BASE(a)       (0x4130 | (a) << 17)
+#define NIX_AF_LFX_RX_IPSEC_CFG0(a)    (0x4140 | (a) << 17)
+#define NIX_AF_LFX_RX_IPSEC_CFG1(a)    (0x4148 | (a) << 17)
+#define NIX_AF_LFX_RX_IPSEC_DYNO_CFG(a)        (0x4150 | (a) << 17)
+#define NIX_AF_LFX_RX_IPSEC_DYNO_BASE(a)       (0x4158 | (a) << 17)
+#define NIX_AF_LFX_RX_IPSEC_SA_BASE(a) (0x4170 | (a) << 17)
+#define NIX_AF_LFX_TX_STATUS(a)                (0x4180 | (a) << 17)
+#define NIX_AF_LFX_RX_VTAG_TYPEX(a, b) (0x4200 | (a) << 17 | (b) << 3)
+#define NIX_AF_LFX_LOCKX(a, b)         (0x4300 | (a) << 17 | (b) << 3)
+#define NIX_AF_LFX_TX_STATX(a, b)      (0x4400 | (a) << 17 | (b) << 3)
+#define NIX_AF_LFX_RX_STATX(a, b)      (0x4500 | (a) << 17 | (b) << 3)
+#define NIX_AF_LFX_RSS_GRPX(a, b)      (0x4600 | (a) << 17 | (b) << 3)
+#define NIX_AF_RX_NPC_MC_RCV           (0x4700)
+#define NIX_AF_RX_NPC_MC_DROP          (0x4710)
+#define NIX_AF_RX_NPC_MIRROR_RCV       (0x4720)
+#define NIX_AF_RX_NPC_MIRROR_DROP      (0x4730)
+#define NIX_AF_RX_ACTIVE_CYCLES_PCX(a) (0x4800 | (a) << 16)
+
+#define NIX_PRIV_AF_INT_CFG            (0x8000000)
+#define NIX_PRIV_LFX_CFG               (0x8000010)
+#define NIX_PRIV_LFX_INT_CFG           (0x8000020)
+#define NIX_AF_RVU_LF_CFG_DEBUG                (0x8000030)
+
+/* SSO */
+#define SSO_AF_CONST                   (0x1000)
+#define SSO_AF_CONST1                  (0x1008)
+#define SSO_AF_BLK_RST                 (0x10f8)
+#define SSO_AF_LF_HWGRP_RST            (0x10e0)
+#define SSO_AF_RVU_LF_CFG_DEBUG                (0x3800)
+#define SSO_PRIV_LFX_HWGRP_CFG         (0x10000)
+#define SSO_PRIV_LFX_HWGRP_INT_CFG     (0x20000)
+
+/* SSOW */
+#define SSOW_AF_RVU_LF_HWS_CFG_DEBUG   (0x0010)
+#define SSOW_AF_LF_HWS_RST             (0x0030)
+#define SSOW_PRIV_LFX_HWS_CFG          (0x1000)
+#define SSOW_PRIV_LFX_HWS_INT_CFG      (0x2000)
+
+/* TIM */
+#define TIM_AF_CONST                   (0x90)
+#define TIM_PRIV_LFX_CFG               (0x20000)
+#define TIM_PRIV_LFX_INT_CFG           (0x24000)
+#define TIM_AF_RVU_LF_CFG_DEBUG                (0x30000)
+#define TIM_AF_BLK_RST                 (0x10)
+#define TIM_AF_LF_RST                  (0x20)
+
+/* CPT */
+#define CPT_AF_CONSTANTS0              (0x0000)
+#define CPT_PRIV_LFX_CFG               (0x41000)
+#define CPT_PRIV_LFX_INT_CFG           (0x43000)
+#define CPT_AF_RVU_LF_CFG_DEBUG                (0x45000)
+#define CPT_AF_LF_RST                  (0x44000)
+#define CPT_AF_BLK_RST                 (0x46000)
+
 #define NDC_AF_BLK_RST                  (0x002F0)
 #define NPC_AF_BLK_RST                  (0x00040)