/* SPDX-License-Identifier: GPL-2.0 */ /* Copyright(c) 2022 - 2024 Mucse Corporation. */ #ifndef RNPM_REGS_H #define RNPM_REGS_H /* BAR4 memory */ /* ------------------------------------------*/ /* module | size | start | end */ /* DMA | 64KB | 0_0000H | 0_FFFFH */ /* ETH | 64KB | 1_0000H | 1_FFFFH */ /* REG | 64KB | 3_0000H | 3_FFFFH */ /* SERDES | 128KB | 4_0000H | 5_FFFFH */ /* XLMAC1 | 64KB | 6_0000H | 6_FFFFH */ /* XLMAC2 | 64KB | 7_0000H | 7_FFFFH */ /* XLMAC3 | 64KB | 8_0000H | 8_FFFFH */ /* XLMAC4 | 64KB | 9_0000H | 9_FFFFH */ /* MSIX | 64KB | A_0000H | A_FFFFH */ /* SWITCH | 64KB | B_0000H | B_FFFFH */ /* TCAM | 256KB | C_0000H | F_FFFFH */ /* ------------------------------------------*/ /* ==================== RNPM-DMA Global Registers ==================== */ #define RNPM_DMA_VERSION (0x0000) #define RNPM_DMA_CONFIG (0x0004) #define DMA_MAC_LOOPBACK (1 << 0) #define DMA_SWITCH_LOOPBACK (1 << 1) #define DMA_VEB_BYPASS (1 << 4) #define DMA_AXI_ORDER (1 << 5) #define DMA_RX_PADDING (1 << 8) #define DMA_MAP_MODE(n) (n << 12) #define DMA_RX_FRAGMENT_BYTES(n) (((n) / 16) << 16) #define RNPM_DMA_STATUS (0x0008) #define DMA_RING_NUM (0xff << 24) #define RNPM_DMA_DUMY (0x000c) /* RNPM-DMA AXI Register */ #define RNPM_DMA_AXI_EN (0x0010) #define RX_AXI_RW_EN (0x3 << 0) #define TX_AXI_RW_EN (0x3 << 2) #define RNPM_DMA_AXI_STAT (0x0014) #define RNPM_VEB_MAC_MASK_LO (0x0020) #define RNPM_VEB_MAC_MASK_HI (0x0024) #define RNPM_VEB_VLAN_MASK (0x0028) #define DEBUG_PROBE_NUM (16) #define RNPM_DMA_DEBUG_PROBE_LO_REG(n) (0x0100 + 0x08 * (n)) #define RNPM_DMA_DEBUG_PROBE_HI_REG(n) (0x0100 + 0x08 * (n)) #define DEBUG_CNT_NUM (76) #define RNPM_DMA_DEBUG_CNT(n) (0x0200 + 0x04 * (n)) #define RNPM_DMA_STATS_DMA_TO_DMA_CHANNEL(i) \ (RNPM_DMA_DEBUG_CNT(17) + 0x04 * (i)) #define RNPM_DMA_STATS_DMA_TO_DMA_CHANNEL_0 (RNPM_DMA_DEBUG_CNT(17)) #define RNPM_DMA_STATS_DMA_TO_DMA_CHANNEL_1 (RNPM_DMA_DEBUG_CNT(18)) #define RNPM_DMA_STATS_DMA_TO_DMA_CHANNEL_2 (RNPM_DMA_DEBUG_CNT(19)) #define RNPM_DMA_STATS_DMA_TO_DMA_CHANNEL_3 (RNPM_DMA_DEBUG_CNT(20)) #define RNPM_DMA_STATS_DMA_TO_SWITCH (RNPM_DMA_DEBUG_CNT(21)) #define RNPM_DMA_STATS_MAC_TO_DMA (RNPM_DMA_DEBUG_CNT(22)) #define RNPM_DMA_STATS_SWITCH_TO_DMA (RNPM_DMA_DEBUG_CNT(23)) #define RNPM_PCI_WR_TO_HOST (RNPM_DMA_DEBUG_CNT(34)) /* DMA-ENABLE-IRQ */ #define RNPM_DMA_RX_START(idx) (0x8010 + 0x100 * (idx)) #define RNPM_DMA_RX_READY(idx) (0x8014 + 0x100 * (idx)) #define RNPM_DMA_TX_START(idx) (0x8018 + 0x100 * (idx)) // #define RNPM_DMA_TX_START(idx) (0x000c) #define RNPM_DMA_TX_READY(idx) (0x801c + 0x100 * (idx)) #define RNPM_DMA_INT_STAT(idx) (0x8020 + 0x100 * (idx)) #define RNPM_DMA_INT_MASK(idx) (0x8024 + 0x100 * (idx)) #define TX_INT_MASK (1 << 1) #define RX_INT_MASK (1 << 0) #define RNPM_DMA_INT_CLR(idx) (0x8028 + 0x100 * (idx)) /* RX-Queue Registers */ #define RNPM_DMA_REG_RX_DESC_BUF_BASE_ADDR_HI(idx) (0x8030 + 0x100 * (idx)) #define RNPM_DMA_REG_RX_DESC_BUF_BASE_ADDR_LO(idx) (0x8034 + 0x100 * (idx)) #define RNPM_DMA_REG_RX_DESC_BUF_LEN(idx) (0x8038 + 0x100 * (idx)) #define RNPM_DMA_REG_RX_DESC_BUF_HEAD(idx) (0x803c + 0x100 * (idx)) #define RNPM_DMA_REG_RX_DESC_BUF_TAIL(idx) (0x8040 + 0x100 * (idx)) #define RNPM_DMA_REG_RX_DESC_FETCH_CTRL(idx) (0x8044 + 0x100 * (idx)) #define RNPM_DMA_REG_RX_INT_DELAY_TIMER(idx) (0x8048 + 0x100 * (idx)) #define RNPM_DMA_REG_RX_INT_DELAY_PKTCNT(idx) (0x804c + 0x100 * (idx)) #define RNPM_DMA_REG_RX_ARB_DEF_LVL(idx) (0x8050 + 0x100 * (idx)) #define PCI_DMA_REG_RX_DESC_TIMEOUT_TH(idx) (0x8054 + 0x100 * (idx)) /* TX-Queue Registers */ #define RNPM_DMA_REG_TX_DESC_BUF_BASE_ADDR_HI(idx) (0x8060 + 0x100 * (idx)) #define RNPM_DMA_REG_TX_DESC_BUF_BASE_ADDR_LO(idx) (0x8064 + 0x100 * (idx)) #define RNPM_DMA_REG_TX_DESC_BUF_LEN(idx) (0x8068 + 0x100 * (idx)) #define RNPM_DMA_REG_TX_DESC_BUF_HEAD(idx) (0x806c + 0x100 * (idx)) #define RNPM_DMA_REG_TX_DESC_BUF_TAIL(idx) (0x8070 + 0x100 * (idx)) #define RNPM_DMA_REG_TX_DESC_FETCH_CTRL(idx) (0x8074 + 0x100 * (idx)) #define RNPM_DMA_REG_TX_INT_DELAY_TIMER(idx) (0x8078 + 0x100 * (idx)) #define RNPM_DMA_REG_TX_INT_DELAY_PKTCNT(idx) (0x807c + 0x100 * (idx)) #define RNPM_DMA_REG_TX_ARB_DEF_LVL(idx) (0x8080 + 0x100 * (idx)) #define RNPM_DMA_REG_TX_FLOW_CTRL_TH(idx) (0x8084 + 0x100 * (idx)) #define RNPM_DMA_REG_TX_FLOW_CTRL_TM(idx) (0x8088 + 0x100 * (idx)) /* VEB Registers */ #define VEB_TBL_CNTS (64) #define RNPM_DMA_PORT_VBE_MAC_LO_TBL(port, vf) \ (0x80A0 + 4 * (port) + 0x100 * (vf)) #define RNPM_DMA_PORT_VBE_MAC_HI_TBL(port, vf) \ (0x80B0 + 4 * (port) + 0x100 * (vf)) #define RNPM_DMA_PORT_VEB_VID_TBL(port, vf) (0x80C0 + 4 * (port) + 0x100 * (vf)) #define RNPM_DMA_PORT_VEB_VF_RING_TBL(port, vf) \ (0x80D0 + 4 * (port) + 0x100 * (vf)) /* ================================================================== */ /* ==================== RNPM-ETH Global Registers ==================== */ #define RNPM_ETH_BASE (0x10000) #define ETH_ERR_SCTP (1 << 4) #define ETH_ERR_L4 (1 << 3) #define ETH_ERR_L3 (1 << 2) #define ETH_ERR_PKT_LEN_ERR (1 << 1) #define ETH_ERR_HDR_LEN_ERR (1 << 0) #define ETH_IGNORE_ALL_ERR \ (ETH_ERR_SCTP | ETH_ERR_L4 | ETH_ERR_L3 | ETH_ERR_PKT_LEN_ERR | \ ETH_ERR_HDR_LEN_ERR) #define VM_DMAC_TBL_SZ (128) #define RNPM_ETH_ENABLE_RSS_ONLY (0x3f30001) #define RNPM_ETH_DISABLE_RSS (0) #define RNPM_ETH_TX_PROGFULL_THRESH_PORT(n) \ (RNPM_ETH_BASE + 0x0060 + 0x08 * (n)) #define RNPM_ETH_TX_PROGEMPTY_THRESH_PORT(n) \ (RNPM_ETH_BASE + 0x0064 + 0x08 * (n)) #define RNPM_ETH_EMAC_DMA_PROFULL_THRESH (RNPM_ETH_BASE + 0x0080) #define RNPM_ETH_EMAC_DMA_PROEMPTY_THRESH (RNPM_ETH_BASE + 0x0084) #define RNPM_ETH_EMAC_SW_PROFULL_THRESH (RNPM_ETH_BASE + 0x0088) #define RNPM_ETH_EMAC_SW_PROEMPTY_THRESH (RNPM_ETH_BASE + 0x008c) #define RNPM_ETH_EMAC_BMC_TX_PROFULL_THRESH (RNPM_ETH_BASE + 0x0090) #define RNPM_ETH_EMAC_BMC_TX_PROEMPTY_THRESH (RNPM_ETH_BASE + 0x0094) #define RNPM_ETH_CNT_PKT_EMAC_TX(n) (RNPM_ETH_BASE + 0x00a0 + 0x04 * (n)) #define RNPM_ETH_CNT_PKT_PECL_TX(n) (RNPM_ETH_BASE + 0x00b0 + 0x04 * (n)) #define RNPM_ETH_STATUS_TX_FLOWCTRL(n) (RNPM_ETH_BASE + 0x00c0 + 0x04 * (n)) #define RNPM_ETH_VERSION_FLOWWCTRL (RNPM_ETH_BASE + 0x00d0) #define RNPM_ETH_CFG_ETH_MAC (RNPM_ETH_BASE + 0x00d4) #define RNPM_ETH_SCA_TX_CS(port) (RNPM_ETH_BASE + 0x0100 + 0x08 * (port)) #define RNPM_ETH_SCA_TX_NS(port) (RNPM_ETH_BASE + 0x0104 + 0x08 * (port)) #define RNPM_ETH_TXTRANS_CS(port) (RNPM_ETH_BASE + 0x0120 + 0x08 * (port)) #define RNPM_ETH_TXTRANS_NS(port) (RNPM_ETH_BASE + 0x0124 + 0x08 * (port)) #define RNPM_ETH_1TO4_INST0_IN_PKTS (RNPM_ETH_BASE + 0x0200) #define RNPM_ETH_1TO4_INST1_IN_PKTS (RNPM_ETH_BASE + 0x0204) #define RNPM_ETH_1TO4_INST2_IN_PKTS (RNPM_ETH_BASE + 0x0208) #define RNPM_ETH_1TO4_INST3_IN_PKTS (RNPM_ETH_BASE + 0x020c) #define RNPM_ETH_IN_0_TX_PKT_NUM(port) (RNPM_ETH_BASE + 0x0210 + 0x10 * (port)) #define RNPM_ETH_IN_1_TX_PKT_NUM(port) (RNPM_ETH_BASE + 0x0214 + 0x10 * (port)) #define RNPM_ETH_IN_2_TX_PKT_NUM(port) (RNPM_ETH_BASE + 0x0218 + 0x10 * (port)) #define RNPM_ETH_IN_3_TX_PKT_NUM(port) (RNPM_ETH_BASE + 0x021c + 0x10 * (port)) #define RNPM_ETH_EMAC_TX_TO_PHY_PKTS(port) (RNPM_ETH_BASE + 0x0250 + 4 * (port)) #define RNPM_ETH_TXTRANS_PTP_PKT_NUM(port) (RNPM_ETH_BASE + 0x0260 + 4 * (port)) #define RNPM_ETH_TX_DEBUG(n) (RNPM_ETH_BASE + 0x0300 + 0x04 * (n)) #define RNPM_ETH_TX_DEBUG_PORT0_SOP (RNPM_ETH_BASE + 0x0300) #define RNPM_ETH_TX_DEBUG_PORT0_EOP (RNPM_ETH_BASE + 0x0304) #define RNPM_ETH_TX_DEBUG_PORT1_SOP (RNPM_ETH_BASE + 0x0308) #define RNPM_ETH_TX_DEBUG_PORT1_EOP (RNPM_ETH_BASE + 0x030c) #define RNPM_ETH_TX_DEBUG_PORT2_SOP (RNPM_ETH_BASE + 0x0310) #define RNPM_ETH_TX_DEBUG_PORT2_EOP (RNPM_ETH_BASE + 0x0314) #define RNPM_ETH_TX_DEBUG_PORT3_SOP (RNPM_ETH_BASE + 0x0318) #define RNPM_ETH_TX_DEBUG_PORT3_EOP (RNPM_ETH_BASE + 0x031c) #define RNPM_ETH_TX_DEBUG_EMPTY (RNPM_ETH_BASE + 0x0334) #define RNPM_ETH_TX_DEBUG_PROG_FULL (RNPM_ETH_BASE + 0x0338) #define RNPM_ETH_TX_DEBUG_FULL (RNPM_ETH_BASE + 0x033c) /* 1588 */ #define RNPM_ETH_PTP_TX_STATUS(n) (RNPM_ETH_BASE + 0x0400 + 0x14 * (n)) #define RNPM_ETH_PTP_TX_HTIMES(n) (RNPM_ETH_BASE + 0x0404 + 0x14 * (n)) #define RNPM_ETH_PTP_TX_LTIMES(n) (RNPM_ETH_BASE + 0x0408 + 0x14 * (n)) #define RNPM_ETH_PTP_TX_TSVALUE_STATUS(n) (RNPM_ETH_BASE + 0x040c + 0x14 * (n)) #define RNPM_ETH_PTP_TX_CLEAR(n) (RNPM_ETH_BASE + 0x0410 + 0x14 * (n)) #define RNPM_ETH_MAC_SPEED_PORT(n) (RNPM_ETH_BASE + 0x0450 + 0x04 * (n)) #define RNPM_ETH_MAC_LOOPBACK_MODE_PORT(n) (RNPM_ETH_BASE + 0x0460 + 0x04 * (n)) #define RNPM_ETH_EXCEPT_DROP_PROC (RNPM_ETH_BASE + 0x0470) #define RNPM_ETH_IPP (RNPM_ETH_BASE + 0x8000) #define RNPM_ETH_BYPASS (RNPM_ETH_BASE + 0x8000) #define RNPM_ETH_TUNNEL_MOD (RNPM_ETH_BASE + 0x8004) #define INNER_L4_BIT BIT(6) #define PKT_LEN_ERR (2) #define HDR_LEN_ERR (1) #define RNPM_ETH_LOOPBACK_EN (RNPM_ETH_BASE + 0x8008) #define RNPM_FIFO_CTRL_MODE (RNPM_ETH_BASE + 0x800c) #define RNPM_ETH_VXLAN_PORT (RNPM_ETH_BASE + 0x8010) #define RNPM_ETH_NVGRE_PORT (RNPM_ETH_BASE + 0x8014) #define RNPM_ETH_RDMA_PORT (RNPM_ETH_BASE + 0x8018) #define RNPM_HOST_FILTER_EN (RNPM_ETH_BASE + 0x801c) #define RNPM_MNG_FILTER_EN (RNPM_ETH_BASE + 0x8020) #define RNPM_ETH_TCAM_EN (RNPM_ETH_BASE + 0x8024) #define RNPM_CONGEST_DROP_EN (RNPM_ETH_BASE + 0x8028) #define RNPM_REDIR_EN (RNPM_ETH_BASE + 0x8030) #define RNPM_ETH_SCTP_CHECKSUM_EN (RNPM_ETH_BASE + 0x8038) #define RNPM_ETH_ARP_FUNC_EN (RNPM_ETH_BASE + 0x803c) #define RNPM_ETH_VLAN_VME_REG(n) (RNPM_ETH_BASE + 0x8040 + 0x04 * (n)) #define RNPM_ETH_CVLAN_RM_EN (RNPM_ETH_BASE + 0x8050) #define RNPM_ETH_VLAN_RM_TYPE (RNPM_ETH_BASE + 0x8054) #define RNPM_ETH_WRAP_FIELD_TYPE (RNPM_ETH_BASE + 0x805c) #define RNPM_ETH_ERR_MASK_VECTOR (RNPM_ETH_BASE + 0x8060) #define RNPM_ETH_DEFAULT_RX_RING (RNPM_ETH_BASE + 0x806c) #define DROP_ALL_THRESH (2046) // drop all rx #define RECEIVE_ALL_THRESH (0x270) // receive all rx #define RNPM_ETH_RX_PROGFULL_THRESH_PORT(n) \ (RNPM_ETH_BASE + 0x8070 + 0x08 * (n)) #define RNPM_ETH_RX_PROGEMPTY_THRESH_PORT(n) \ (RNPM_ETH_BASE + 0x8074 + 0x08 * (n)) #define RNPM_ETH_EMAC_GAT_PROGFULL_THRESH (RNPM_ETH_BASE + 0x8090) #define RNPM_ETH_EMAC_GAT_PROGEMPTY_THRESH (RNPM_ETH_BASE + 0x8094) #define RNPM_ETH_EMAC_PARSE_PROGFULL_THRESH (RNPM_ETH_BASE + 0x8098) #define RNPM_ETH_EMAC_PARSE_PROGEMPTY_THRESH (RNPM_ETH_BASE + 0x809c) #define RNPM_ETH_FC_PROGFULL_THRESH (RNPM_ETH_BASE + 0x80a0) #define RNPM_ETH_FC_PROGEMPTY_THRESH (RNPM_ETH_BASE + 0x80a4) #define RNPM_ETH_DIS_PROGFULL_THRESH (RNPM_ETH_BASE + 0x80a8) #define RNPM_ETH_DIS_PROGEMPTY_THRESH (RNPM_ETH_BASE + 0x80ac) #define RNPM_ETH_COV_PROGFULL_THRESH (RNPM_ETH_BASE + 0x80b0) #define RNPM_ETH_COV_PROGEMPTY_THRESH (RNPM_ETH_BASE + 0x80b4) #define RNPM_ETH_BMC_RX_PROGFULL_THRESH (RNPM_ETH_BASE + 0x80b8) #define RNPM_ETH_BMC_RX_PROGEMPTY_THRESH (RNPM_ETH_BASE + 0x80bc) #define RNPM_ETH_HIGH_WATER(n) (RNPM_ETH_BASE + 0x80c0 + n * (0x08)) #define RNPM_ETH_LOW_WATER(n) (RNPM_ETH_BASE + 0x80c4 + n * (0x08)) #define RNPM_ETH_DEFAULT_RX_MIN_LEN (RNPM_ETH_BASE + 0x80f0) #define RNPM_ETH_DEFAULT_RX_MAX_LEN (RNPM_ETH_BASE + 0x80f4) #define RNPM_ETH_PTP_EVENT_PORT (RNPM_ETH_BASE + 0x80f8) #define RNPM_ETH_PTP_GENER_PORT_REG (RNPM_ETH_BASE + 0x80fc) #define RNPM_ETH_RX_TRANS_CS_PORT(n) (RNPM_ETH_BASE + 0x8100 + 0x08 * (n)) #define RNPM_ETH_RX_TRANS_NS_PORT(n) (RNPM_ETH_BASE + 0x8104 + 0x08 * (n)) #define RNPM_ETH_GAT_RX_CS (RNPM_ETH_BASE + 0x8120) #define RNPM_ETH_GAT_RX_NS (RNPM_ETH_BASE + 0x8124) #define RNPM_ETH_EMAC_PIP_CS (RNPM_ETH_BASE + 0x8128) #define RNPM_ETH_EMAC_PIP_NS (RNPM_ETH_BASE + 0x812c) #define RNPM_ETH_EMAC_FC_CS (RNPM_ETH_BASE + 0x8138) #define RNPM_ETH_EMAC_FC_NS (RNPM_ETH_BASE + 0x813c) #define RNPM_ETH_EMAC_DIS_CS (RNPM_ETH_BASE + 0x8140) #define RNPM_ETH_EMAC_DIS_NS (RNPM_ETH_BASE + 0x8144) #define RNPM_ETH_HOST_L2_FILTER_CS (RNPM_ETH_BASE + 0x8150) #define RNPM_ETH_HOST_L2_FILTER_NS (RNPM_ETH_BASE + 0x8154) #define RNPM_ETH_EMAC_DECAP_CS (RNPM_ETH_BASE + 0x8158) #define RNPM_ETH_EMAC_DECAP_NS (RNPM_ETH_BASE + 0x815c) #define RNPM_ETH_PFC_CONFIG_PROT(n) (RNPM_ETH_BASE + 0x8180 + n * (0x04)) #define RNPM_ETH_RX_PKT_NUM(port) (RNPM_ETH_BASE + 0x8220 + 0x04 * (port)) #define RNPM_ETH_RX_DROP_PKT_NUM(port) (RNPM_ETH_BASE + 0x8230 + 0x04 * (port)) #define RNPM_ETH_TOTAL_GAT_RX_PKT_NUM (RNPM_ETH_BASE + 0x8240) #define RNPM_ETH_PKT_ARP_REQ_NUM (RNPM_ETH_BASE + 0x8250) #define RNPM_ETH_PKT_ARP_RESPONSE_NUM (RNPM_ETH_BASE + 0x8254) #define RNPM_ETH_ICMP_NUM (RNPM_ETH_BASE + 0x8258) #define RNPM_ETH_PKT_UDP_NUM (RNPM_ETH_BASE + 0x825c) #define RNPM_ETH_PKT_TCP_NUM (RNPM_ETH_BASE + 0x8260) #define RNPM_ETH_PKT_ESP_NUM (RNPM_ETH_BASE + 0x8264) #define RNPM_ETH_PKT_GRE_NUM (RNPM_ETH_BASE + 0x8268) #define RNPM_ETH_PKT_SCTP_NUM (RNPM_ETH_BASE + 0x826c) #define RNPM_ETH_PKT_TCPSYN_NUM (RNPM_ETH_BASE + 0x8270) #define RNPM_ETH_PKT_VXLAN_NUM (RNPM_ETH_BASE + 0x8274) #define RNPM_ETH_PKT_NVGRE_NUM (RNPM_ETH_BASE + 0x8278) #define RNPM_ETH_PKT_FRAGMENT_NUM (RNPM_ETH_BASE + 0x827c) #define RNPM_ETH_PKT_LAYER1_VLAN_NUM (RNPM_ETH_BASE + 0x8280) #define RNPM_ETH_PKT_LAYER2_VLAN_NUM (RNPM_ETH_BASE + 0x8284) #define RNPM_ETH_PKT_IPV4_NUM (RNPM_ETH_BASE + 0x8288) #define RNPM_ETH_PKT_IPV6_NUM (RNPM_ETH_BASE + 0x828c) #define RNPM_ETH_PKT_INGRESS_NUM (RNPM_ETH_BASE + 0x8290) #define RNPM_ETH_PKT_EGRESS_NUM (RNPM_ETH_BASE + 0x8294) #define RNPM_ETH_PKT_IP_HDR_LEN_ERR_NUM (RNPM_ETH_BASE + 0x8298) #define RNPM_ETH_PKT_IP_PKT_LEN_ERR_NUM (RNPM_ETH_BASE + 0x829c) #define RNPM_ETH_PKT_L3_HDR_CHK_ERR_NUM (RNPM_ETH_BASE + 0x82a0) #define RNPM_ETH_PKT_L4_HDR_CHK_ERR_NUM (RNPM_ETH_BASE + 0x82a4) #define RNPM_ETH_PKT_SCTP_CHK_ERR_NUM (RNPM_ETH_BASE + 0x82a8) #define RNPM_ETH_PKT_VLAN_ERR_NUM (RNPM_ETH_BASE + 0x82ac) #define RNPM_ETH_PKT_RDMA_NUM (RNPM_ETH_BASE + 0x82b0) #define RNPM_ETH_PKT_ARP_AUTO_RESPONSE_NUM (RNPM_ETH_BASE + 0x82b4) #define RNPM_ETH_PKT_ICMPV6_NUM (RNPM_ETH_BASE + 0x82b8) #define RNPM_ETH_PKT_IPV6_EXTEND_NUM (RNPM_ETH_BASE + 0x82bc) #define RNPM_ETH_PKT_802_3_NUM (RNPM_ETH_BASE + 0x82c0) #define RNPM_ETH_PKT_EXCEPT_SHORT_NUM (RNPM_ETH_BASE + 0x82c4) #define RNPM_ETH_PKT_PTP_NUM (RNPM_ETH_BASE + 0x82c8) #define RNPM_ETH_DECAP_PKT_IN_NUM (RNPM_ETH_BASE + 0x82d0) #define RNPM_ETH_DECAP_PKT_OUT_NUM (RNPM_ETH_BASE + 0x82d4) #define RNPM_ETH_DECAP_DMAC_OUT_NUM (RNPM_ETH_BASE + 0x82d8) #define RNPM_ETH_DECAP_BMC_OUT_NUM (RNPM_ETH_BASE + 0x82dc) #define RNPM_ETH_DECAP_SW_OUT_NUM (RNPM_ETH_BASE + 0x82e0) #define RNPM_ETH_DECAP_MIRROR_OUT_NUM (RNPM_ETH_BASE + 0x82e4) #define RNPM_ETH_DECAP_PKT_DROP_NUM(port) \ (RNPM_ETH_BASE + 0x82e8 + 0x04 * (port)) #define RNPM_ETH_INVALID_DROP_PKTS RNPM_ETH_DECAP_PKT_DROP_NUM(0) #define RNPM_ETH_FILTER_DROP_PKTS RNPM_ETH_DECAP_PKT_DROP_NUM(1) #define RNPM_ETH_DECAP_DMAC_DROP_NUM (RNPM_ETH_BASE + 0x82f0) #define RNPM_ETH_DECAP_BMC_DROP_NUM (RNPM_ETH_BASE + 0x82f4) #define RNPM_ETH_DECAP_SWITCH_DROP_NUM (RNPM_ETH_BASE + 0x82f8) #define RNPM_ETH_DECAP_RM_VLAN_NUM (RNPM_ETH_BASE + 0x82fc) #define RNPM_ETH_RX_FC_PKT_IN_NUM (RNPM_ETH_BASE + 0x8300) #define RNPM_ETH_RX_FC_PKT_OUT_NUM (RNPM_ETH_BASE + 0x8304) #define RNPM_ETH_RX_FC_PKT_DROP0_NUM (RNPM_ETH_BASE + 0x8308) #define RNPM_ETH_RX_FC_PKT_DROP1_NUM (RNPM_ETH_BASE + 0x830c) #define RNPM_ETH_RING_FC_STATUS0 (RNPM_ETH_BASE + 0x8310) #define RNPM_ETH_RING_FC_STATUS1 (RNPM_ETH_BASE + 0x8314) #define RNPM_ETH_RING_FC_STATUS2 (RNPM_ETH_BASE + 0x8318) #define RNPM_ETH_RING_FC_STATUS3 (RNPM_ETH_BASE + 0x831c) #define RNPM_ETH_RX_DEBUG(n) (RNPM_ETH_BASE + 0x8400 + 0x04 * (n)) #define RNPM_ETH_RX_FC_DEBUG0_NUM RNPM_ETH_RX_DEBUG(0) #define RNPM_ETH_RX_FC_DEBUG1_NUM RNPM_ETH_RX_DEBUG(1) #define RNPM_ETH_RX_DIS_DEBUG0_NUM RNPM_ETH_RX_DEBUG(2) #define RNPM_ETH_RX_DIS_DEBUG1_NUM RNPM_ETH_RX_DEBUG(3) #define RNPM_ETH_HOST_L2_DROP_PKTS RNPM_ETH_RX_DEBUG(4) #define RNPM_ETH_REDIR_INPUT_MATCH_DROP_PKTS RNPM_ETH_RX_DEBUG(5) #define RNPM_ETH_ETYPE_DROP_PKTS RNPM_ETH_RX_DEBUG(6) #define RNPM_ETH_TCP_SYN_DROP_PKTS RNPM_ETH_RX_DEBUG(7) #define RNPM_ETH_REDIR_TUPLE5_DROP_PKTS RNPM_ETH_RX_DEBUG(8) #define RNPM_ETH_REDIR_TCAM_DROP_PKTS RNPM_ETH_RX_DEBUG(9) #define RNPM_ETH_VMARK_TC(n) (RNPM_ETH_BASE + 0x8500 + 0x04 * (n)) #define RNPM_RING_FC_ENABLE (RNPM_ETH_BASE + 0x8520) #define RNPM_SELECT_RING_EN(n) (RNPM_ETH_BASE + 0x8524 + (0x4 * n)) #define RNPM_TC_FC_SW_EN (RNPM_ETH_BASE + 0x8534) #define RNPM_ETH_LOCAL_DIP(n) (RNPM_ETH_BASE + 0x8600 + 0x04 * (n)) #define RNPM_ETH_LOCAL_DMAC_H(n) (RNPM_ETH_BASE + 0x8700 + 0x04 * (n)) #define RNPM_ETH_LOCAL_DMAC_L(n) (RNPM_ETH_BASE + 0x8800 + 0x04 * (n)) /* Rx Ring Flow Control */ /* tc 8 */ #define RNPM_RXTRANS_RX_PKTS(port) (RNPM_ETH_BASE + 0x8900 + 0x40 * (port)) #define RNPM_RXTRANS_DROP_PKTS(port) (RNPM_ETH_BASE + 0x8904 + 0x40 * (port)) #define RNPM_RXTRANS_WDT_ERR_PKTS(port) (RNPM_ETH_BASE + 0x8908 + 0x40 * (port)) #define RNPM_RXTRANS_CODE_ERR_PKTS(port) \ (RNPM_ETH_BASE + 0x890c + 0x40 * (port)) #define RNPM_RXTRANS_CRC_ERR_PKTS(port) (RNPM_ETH_BASE + 0x8910 + 0x40 * (port)) #define RNPM_RXTRANS_SLEN_ERR_PKTS(port) \ (RNPM_ETH_BASE + 0x8914 + 0x40 * (port)) #define RNPM_RXTRANS_GLEN_ERR_PKTS(port) \ (RNPM_ETH_BASE + 0x8918 + 0x40 * (port)) #define RNPM_RXTRANS_IPH_ERR_PKTS(port) (RNPM_ETH_BASE + 0x891c + 0x40 * (port)) #define RNPM_RXTRANS_CSUM_ERR_PKTS(port) \ (RNPM_ETH_BASE + 0x8920 + 0x40 * (port)) #define RNPM_RXTRANS_LEN_ERR_PKTS(port) (RNPM_ETH_BASE + 0x8924 + 0x40 * (port)) #define RNPM_RXTRANS_CUT_ERR_PKTS(port) (RNPM_ETH_BASE + 0x8928 + 0x40 * (port)) #define RNPM_RXTRANS_EXCEPT_BYTES(port) (RNPM_ETH_BASE + 0x892c + 0x40 * (port)) #define RNPM_RXTRANS_G1600_BYTES_PKTS(port) \ (RNPM_ETH_BASE + 0x8930 + 0x40 * (port)) #define RNPM_RX_RING_MAXRATE(n) (RNPM_ETH_BASE + 0x8a00 + (0x4 * n)) // emac_mng_filter no used in host #define RNPM_ETH_RX_PROGFULL_RTRN(n) (RNPM_ETH_BASE + 0x8c00 + 0x04 * (n)) #define RNPM_ETH_CNT_PKT_EMAC_RX(n) (RNPM_ETH_BASE + 0x8c10 + 0x04 * (n)) #define RNPM_ETH_CNT_PKT_PECL_RX(n) (RNPM_ETH_BASE + 0x8c20 + 0x04 * (n)) #define RNPM_ETH_STATUS_RX_FLOWCTRL(n) (RNPM_ETH_BASE + 0x8c30 + 0x04 * (n)) #define RNPM_ETH_DMAC_FCTRL (RNPM_ETH_BASE + 0x9110) #define RNPM_ETH_DMAC_MCSTCTRL (RNPM_ETH_BASE + 0x9114) #define RNPM_MCSTCTRL_MULTICASE_TBL_EN (1 << 2) #define RNPM_MCSTCTRL_UNICASE_TBL_EN (1 << 3) #define RNPM_MCSTCTRL_DMAC_47 (0x00) #define RNPM_MCSTCTRL_DMAC_46 (0x01) #define RNPM_MCSTCTRL_DMAC_45 (0x02) #define RNPM_MCSTCTRL_DMAC_43 (0x03) #define RNPM_ETH_VLAN_FILTER_ENABLE (RNPM_ETH_BASE + 0x9118) #define RNPM_ETH_INPORT_POLICY_VAL (RNPM_ETH_BASE + 0x91d0) #define RNPM_ETH_INPORT_POLICY_REG(n) (RNPM_ETH_BASE + 0x91e0 + 0x04 * (n)) #define ETH_LAYER2_NUM (16) #define RNPM_ETH_LAYER2_ETQF(n) (RNPM_ETH_BASE + 0x9200 + 0x04 * (n)) #define RNPM_ETH_LAYER2_ETQS(n) (RNPM_ETH_BASE + 0x9240 + 0x04 * (n)) #define RNPM_ETH_LAYER2_ETQS_DEFAULT (RNPM_ETH_BASE + 0x9280) #define RNPM_ETH_ETQF_DEFAULT (RNPM_ETH_BASE + 0x9284) #define RNPM_ETH_SYNQF (RNPM_ETH_BASE + 0x9290) #define RNPM_ETH_SYNQF_PRIORITY (RNPM_ETH_BASE + 0x9294) /* [3:0]: * 4'b0000: RSS disable * 4'b0001: RSS only * 4'b0100: DCB and RSS--8 * 16 * 4'b1010: POOLS and RSS--32 * 4 * [3] :virtual enable * [16]:ipv4_hash_tcp_enable * [17]:ipv4_hash_enable * [20]:ipv6_hash_enable * [21]:ipv6_hash_tcp_enable * [22]:ipv4_hash_udp_enable * [23]:ipv6_hash_udp_enable * [24]:ipv4_hash_sctp_enable * [25]:ipv6_hash_sctp_enable */ #define RNPM_ETH_RSS_CONTROL (RNPM_ETH_BASE + 0x92a0) #define RNPM_MRQC_IOV_EN (RNPM_ETH_BASE + 0x92a0) #define RNPM_IOV_ENABLED (1 << 3) #define RNPM_ETH_RSS_KEY (RNPM_ETH_BASE + 0x92d0) #define RNPM_ETH_RAR_RL(n) (RNPM_ETH_BASE + 0xa000 + 0x04 * n) #define RNPM_ETH_RAR_RH(n) (RNPM_ETH_BASE + 0xa400 + 0x04 * n) #define RNPM_ETH_UTA(n) (RNPM_ETH_BASE + 0xa800 + 0x04 * n) #define RNPM_ETH_MUTICAST_HASH_TABLE(n) (RNPM_ETH_BASE + 0xac00 + 0x04 * n) #define RNPM_MTA(n) RNPM_ETH_MUTICAST_HASH_TABLE(n) #define RNPM_ETH_VLAN_FILTER_TABLE(n) (RNPM_ETH_BASE + 0xb000 + 0x04 * (n)) #define RNPM_VFTA RNPM_ETH_VLAN_FILTER_TABLE #define RNPM_FCTRL_MULTICASE_BYPASS (1 << 8) #define RNPM_FCTRL_UNICASE_BYPASS (1 << 9) #define RNPM_FCTRL_BROADCASE_BYPASS (1 << 10) #define RNPM_ETH_ETYPE_TABLE(n) (RNPM_ETH_BASE + 0xb300 + 0x04 * (n)) #define RNPM_VM_DMAC_MPSAR_RING(entry) (RNPM_ETH_BASE + 0xb400 + (4 * (entry))) #define RNPM_VLVF(idx) (RNPM_ETH_BASE + 0xb600 + 4 * (idx)) #define RNPM_VLVFB(idx) (RNPM_ETH_BASE + 0xb700 + 4 * (idx)) #define RNPM_VM_TUNNEL_PFVLVF_L(n) (RNPM_ETH_BASE + 0xb800 + 0x04 * (n)) #define RNPM_VM_TUNNEL_PFVLVF_H(n) (RNPM_ETH_BASE + 0xb900 + 0x04 * (n)) /* 5 tuple */ #define ETH_TUPLE5_NUM (128) #define RNPM_ETH_TUPLE5_SAQF(n) (RNPM_ETH_BASE + 0xc000 + 0x04 * (n)) #define RNPM_ETH_TUPLE5_DAQF(n) (RNPM_ETH_BASE + 0xc400 + 0x04 * (n)) #define RNPM_ETH_TUPLE5_SDPQF(n) (RNPM_ETH_BASE + 0xc800 + 0x04 * (n)) #define RNPM_ETH_TUPLE5_FTQF(n) (RNPM_ETH_BASE + 0xcc00 + 0x04 * (n)) #define RNPM_ETH_TUPLE5_POLICY(n) (RNPM_ETH_BASE + 0xd000 + 0x04 * (n)) #define RNPM_ETH_RSS_INDIR_TBL(p, n) \ (RNPM_ETH_BASE + 0xe000 + 0x04 * (n) + 0x200 * (p)) /* tc is 8 */ #define RNPM_ETH_TC_IPH_OFFSET_TABLE(n) (RNPM_ETH_BASE + 0xe800 + 0x04 * (n)) #define RNPM_ETH_TC_VLAN_OFFSET_TABLE(n) (RNPM_ETH_BASE + 0xe820 + 0x04 * (n)) /* port is 4 */ #define RNPM_ETH_TC_PORT_OFFSET_TABLE(n) (RNPM_ETH_BASE + 0xe840 + 0x04 * (n)) #define RNPM_REDIR_RING_MASK (RNPM_ETH_BASE + 0xe860) /* uv3p only */ #define RNPM_ETH_RSS_MODE (0x6fe00) #define RNPM_ETH_RSS_INDIR_TBL_UV3P(n) (0x6ff00 + 0x04 * (n)) /* ================================================================== */ /* ==================== RNPM-REG Global Registers ==================== */ #define RNPM_COMM_REG0 (0x30000) #define RNPM_TOP_NIC_VERSION (RNPM_COMM_REG0 + 0x0000) #define RNPM_TOP_NIC_CONFIG (RNPM_COMM_REG0 + 0x0004) #define RNPM_TOP_NIC_STAT (RNPM_COMM_REG0 + 0x0008) #define RNPM_TOP_NIC_DUMMY (RNPM_COMM_REG0 + 0x000c) #define RNPM_TOP_NIC_REST_N (RNPM_COMM_REG0 + 0x0010) #define NIC_RESET (0) /* dma top */ #define RNPM_TOP_DMA_MEM_SLP (RNPM_COMM_REG0 + 0x4004) #define RNPM_TOP_DMA_MEM_SD (RNPM_COMM_REG0 + 0x4008) /* eth top */ #define RNPM_TOP_ETH_TIMESTAMP_SEL (RNPM_COMM_REG0 + 0x8010) #define RNPM_TOP_ETH_MAC_CLK_SEL (RNPM_COMM_REG0 + 0x8014) #define RNPM_TOP_ETH_INF_ETH_STATUS (RNPM_COMM_REG0 + 0x8018) #define RNPM_TOP_ETH_BUG_40G_PATCH (RNPM_COMM_REG0 + 0x801c) #define RNPM_TOP_ETH_PWR_PORT_NUM (4) #define RNPM_TOP_ETH_PWR_CLAMP_CTRL_PORT(n) \ (RNPM_COMM_REG0 + 0x8020 + 0xc * (n)) #define RNPM_TOP_ETH_PWR_ISOLATE_PORT(n) (RNPM_COMM_REG0 + 0x8024 + 0xc * (n)) #define RNPM_TOP_ETH_PWR_DOWN_PORT(n) (RNPM_COMM_REG0 + 0x8028 + 0xc * (n)) #define RNPM_TOP_ETH_TCAM_CONFIG_ENABLE (RNPM_COMM_REG0 + 0x8050) #define RNPM_TOP_ETH_SLIP (RNPM_COMM_REG0 + 0x8060) #define RNPM_TOP_ETH_SHUT_DOWN (RNPM_COMM_REG0 + 0x8064) #define RNPM_TOP_ETH_OVS_SLIP (RNPM_COMM_REG0 + 0x8068) #define RNPM_TOP_ETH_OVS_SHUT_DOWN (RNPM_COMM_REG0 + 0x806c) /* ?? */ #define RNPM_FC_PORT_ENABLE (RNPM_COMM_REG0 + 0x9004) #define RNPM_FC_PORT_PRIO_MAP(n) (RNPM_COMM_REG0 + 0x9008 + (0x04 * n)) #define RNPM_FC_EN_CONF_AVAILBLE (RNPM_COMM_REG0 + 0x9018) #define RNPM_FC_UNCTAGS_MAP_OFFSET (16) /* mac top */ #define RNPM_TOP_MAC_OUI (RNPM_COMM_REG0 + 0xc004) #define RNPM_TOP_MAC_SN (RNPM_COMM_REG0 + 0xc008) /* ================================================================== */ /* ==================== RNPM-SERDES Global Registers ================= */ #define RNPM_SERDES (0x40000) #define RNPM_PCS_OFFSET (0x1000) #define RNPM_PCS_BASE(i) (RNPM_SERDES + RNPM_PCS_OFFSET * i) #define RNPM_PCS_1G_OR_10G BIT(13) #define RNPM_PCS_SPPEED_MASK (0x1c) #define RNPM_PCS_SPPEED_10G (0x0) #define RNPM_PCS_SPPEED_40G (0xc) #define RNPM_PCS_LINK_SPEED (0x30000) #define RNPM_PCS_LINKUP BIT(2) #define RNPM_PCS_LINK_STATUS (0x30001) /* ================================================================== */ /* ==================== RNPM-MAC Global Registers ==================== */ /* === MAC Registers== */ #define RNPM_XLMAC (0x60000) #define MAC_OFFSET (0x10000) #define RNPM_MAC_TX_CFG(i) (RNPM_XLMAC + 0x0000 + i * MAC_OFFSET) #define RNPM_MAC_RX_CFG(i) (RNPM_XLMAC + 0x0004 + i * MAC_OFFSET) #define RNPM_RX_ALL BIT(0) #define RNPM_RX_ALL_MUL BIT(4) #define RNPM_RX_HUC BIT(1) #define RNPM_VLAN_HASH_EN BIT(16) #define RNPM_RA BIT(31) #define RNPM_MAX_RX_CFG_IPC BIT(9) #define RNPM_HPF BIT(10) #define RNPM_MAC_PKT_FLT(i) (RNPM_XLMAC + 0x0008 + i * MAC_OFFSET) #define RNPM_FLT_HMC BIT(2) #define RNPM_FLT_HUC BIT(1) #define RNPM_MAC_MC_HASH_TABLE(i, idx) \ (RNPM_XLMAC + 0x0010 + 0x04 * idx + i * MAC_OFFSET) #define RNPM_MAC_LPI_CTRL(i) (RNPM_XLMAC + 0x00d0 + i * MAC_OFFSET) #define RNPM_ERIVLT BIT(27) #define RNPM_EDVLP BIT(26) #define RNPM_VTHM BIT(25) #define RNPM_EVLRXS BIT(24) #define RNPM_EVLS_OFFSET (21) #define RNPM_EVLS_ALWAYS_STRIP (0x3) #define RNPM_DOVLTC BIT(20) #define RNPM_ERSVLM BIT(19) #define RNPM_ESVL BIT(18) #define RNPM_VTIM BIT(17) #define RNPM_ETV BIT(16) #define RNPM_VL_MODE_ON (0xFFFF) #define RNPM_VL_MODE_OFF (0x0000) #define RNPM_MAC_TX_VLAN_TAG(i) (RNPM_XLMAC + 0x0050 + i * MAC_OFFSET) #define RNPM_VLTI BIT(20) #define RNPM_CSVL BIT(19) #define RNPM_MAC_TX_VLAN_MODE(i) (RNPM_XLMAC + 0x0060 + i * MAC_OFFSET) #define RNPM_MAC_INNER_VLAN_INCL(i) (RNPM_XLMAC + 0x0064 + i * MAC_OFFSET) #define RNPM_MAC_VLAN_HASH_TB(i) (RNPM_XLMAC + 0x0058 + i * MAC_OFFSET) #define RNPM_MAC_Q0_TX_FLOW_CTRL(i, num) \ (RNPM_XLMAC + 0x0070 + i * MAC_OFFSET + 0x04 * (num)) #define RNPM_MAC_RX_FLOW_CTRL(i) (RNPM_XLMAC + 0x0090 + i * MAC_OFFSET) #define RNPM_MAC_HW_FEATURE(i) (RNPM_XLMAC + 0x0120 + i * MAC_OFFSET) #define RNPM_MAC_UNICAST_LOW(i, port) \ (RNPM_XLMAC + 0x304 + i * 0x08 + port * MAC_OFFSET) #define RNPM_MAC_UNICAST_HIGH(i, port) \ (RNPM_XLMAC + 0x300 + i * 0x08 + port * MAC_OFFSET) /* 1588 */ #define RNPM_MAC_TS_CTRL(i) (RNPM_XLMAC + 0X0d00 + i * MAC_OFFSET) #define RNPM_MAC_SUB_SECOND_INCREMENT(i) (RNPM_XLMAC + 0x0d04 + i * MAC_OFFSET) #define RNPM_MAC_SYS_TIME_SEC_CFG(i) (RNPM_XLMAC + 0x0d08 + i * MAC_OFFSET) #define RNPM_MAC_SYS_TIME_NANOSEC_CFG(i) (RNPM_XLMAC + 0x0d0c + i * MAC_OFFSET) #define RNPM_MAC_SYS_TIME_SEC_UPDATE(i) (RNPM_XLMAC + 0x0d10 + i * MAC_OFFSET) #define RNPM_MAC_SYS_TIME_NANOSEC_UPDATE(i) \ (RNPM_XLMAC + 0x0d14 + i * MAC_OFFSET) #define RNPM_MAC_TS_ADDEND(i) (RNPM_XLMAC + 0x0d18 + i * MAC_OFFSET) #define RNPM_MAC_TS_STATS(i) (RNPM_XLMAC + 0x0d20 + i * MAC_OFFSET) #define RNPM_MAC_INTERRUPT_ENABLE(i) (RNPM_XLMAC + 0x00b4 + i * MAC_OFFSET) #define RNPM_MAC_STATS_BROADCAST_LOW(i) (RNPM_XLMAC + 0x0918 + i * MAC_OFFSET) #define RNPM_MAC_STATS_BROADCAST_HIGH(i) (RNPM_XLMAC + 0x091c + i * MAC_OFFSET) #define RNPM_MAC_STATS_MULTICAST_LOW(i) (RNPM_XLMAC + 0x0920 + i * MAC_OFFSET) #define RNPM_MAC_STATS_MULTICAST_HIGH(i) (RNPM_XLMAC + 0x0924 + i * MAC_OFFSET) #define RNPM_MAC_STATS_RX_PAUSE_LOW(i) (RNPM_XLMAC + 0x0988 + i * MAC_OFFSET) #define RNPM_MAC_STATS_RX_PAUSE_HIGH(i) (RNPM_XLMAC + 0x098c + i * MAC_OFFSET) #define RNPM_MAC_STATS_TX_PAUSE_LOW(i) (RNPM_XLMAC + 0x0894 + i * MAC_OFFSET) #define RNPM_MAC_STATS_TX_PAUSE_HIGH(i) (RNPM_XLMAC + 0x0898 + i * MAC_OFFSET) #define RNPM_TX_FLOW_ENABLE_MASK (0x2) #define RNPM_RX_FLOW_ENABLE_MASK (0x1) /* ================================================================== */ /* ==================== RNPM-MSIX Global Registers ==================== */ //==== Ring-MSIX Registers (MSI-X_module_design.docs) === #define RING_VECTOR(n) (0x04 * (n)) /* ================================================================== */ /* ==================== RNPM-SWITCH Global Registers ================= */ #define RNPM_SWITCH_BASE (0xB0000) /* port is 6 */ #define RNPM_SWITCH_RULE_INGS(port, n) \ (RNPM_SWITCH_BASE + 0x24 * (port) + 0x1000 + 0x04 * (n)) #define RNPM_SWITCH_RULE_INGS_RPU_NP(port) \ (RNPM_SWITCH_BASE + 0x24 * (port) + 0x1014) #define RNPM_SWITCH_RULE_INGS_RPU_SWITCH(port) \ (RNPM_SWITCH_BASE + 0x24 * (port) + 0x1018) #define RNPM_SWITCH_RULE_INGS_SEC(port) \ (RNPM_SWITCH_BASE + 0x24 * (port) + 0x101c) #define RNPM_SWITCH_RULE_INGS_EXFPGA(port) \ (RNPM_SWITCH_BASE + 0x24 * (port) + 0x1020) #define RNPM_SWITCH_CNT_EGRESS_PKT(port) \ (RNPM_SWITCH_BASE + 0x10db + 0x04 * (n)) #define RNPM_SWITCH_CNT_INGRESS_PKT(port) \ (RNPM_SWITCH_BASE + 0x10f0 + 0x04 * (n)) #define RNPM_SWITCH_RPUUP_DATA_PROG_FULL_THRESH (RNPM_SWITCH_BASE + 0x1108) #define RNPM_SWITCH_RPUDN_DATA_PROG_FULL_THRESH (RNPM_SWITCH_BASE + 0x110c) #define RNPM_SWITCH_MAC0_DATA_PROG_FULL_THRESH (RNPM_SWITCH_BASE + 0x1110) #define RNPM_SWITCH_MAC1_DATA_PROG_FULL_THRESH (RNPM_SWITCH_BASE + 0x1114) #define RNPM_SWITCH_DMA0_DATA_PROG_FULL_THRESH (RNPM_SWITCH_BASE + 0x1118) #define RNPM_SWITCH_DMA1_DATA_PROG_FULL_THRESH (RNPM_SWITCH_BASE + 0x111c) #define RNPM_SWITCH_REG1_INGRESS_STATUS(port) \ (RNPM_SWITCH_BASE + 0x1120 + 0x08 * (port)) #define RNPM_SWITCH_REG2_INGRESS_STATUS(port) \ (RNPM_SWITCH_BASE + 0x1124 + 0x08 * (port)) #define RNPM_SWITCH_REG_STATUS_ROBIN(port) \ (RNPM_SWITCH_BASE + 0x1150 + 0x04 * (port)) #define RNPM_SWITCH_REG_EGRESS_STATUS(port) \ (RNPM_SWITCH_BASE + 0x1168 + 0x04 * (port)) #define RNPM_SWITCH_INFO_FIFO_DMA_TX(n) (RNPM_SWITCH_BASE + 0x1198 + 0x08 * (n)) #define RNPM_SWITCH_INFO_FIFO_DMA_RX(n) (RNPM_SWITCH_BASE + 0x119c + 0x08 * (n)) #define RNPM_SWITCH_INFO_FIFO_MAC_TX(n) (RNPM_SWITCH_BASE + 0x11a8 + 0x08 * (n)) #define RNPM_SWITCH_INFO_FIFO_MAC_RX(n) (RNPM_SWITCH_BASE + 0x11ac + 0x08 * (n)) #define RNPM_SWITCH_INFO_FIFO_RPUUP_RX(n) \ (RNPM_SWITCH_BASE + 0x11bc + 0x08 * (n)) #define RNPM_SWITCH_INFO_FIFO_RPUDN_RX(n) \ (RNPM_SWITCH_BASE + 0x11c0 + 0x08 * (n)) #define RNPM_SWITCH_EN_SOFT_RESET (RNPM_SWITCH_BASE + 0xf000) #define RNPM_SWITCH_SOFT_RESET (RNPM_SWITCH_BASE + 0xf004) #define RNPM_SWITCH_CLR_INGS_ERR (RNPM_SWITCH_BASE + 0xf008) #define RNPM_SWITCH_ERR_CODE_INGS(port) \ (RNPM_SWITCH_BASE + 0xf010 + 0x04 * (port)) #define RNPM_SWITCH_MEM_SD (RNPM_SWITCH_BASE + 0xf028) #define RNPM_SWITCH_MEM_SLP (RNPM_SWITCH_BASE + 0xf02c) #define RNPM_SWITCH_EN_INVALID_DPORT_DROP_O (RNPM_SWITCH_BASE + 0xf030) /* ================================================================== */ /* ==================== RNPM-TCAM Global Registers ==================== */ #define RNPM_TCAM_BASE (0xc0000) #define RNPM_TCAM_SDPQF(n) \ (RNPM_TCAM_BASE + 0x00 + 0x40 * (n / 2) + 0x10 * (n % 2)) #define RNPM_TCAM_DAQF(n) \ (RNPM_TCAM_BASE + 0x04 + 0x40 * (n / 2) + 0x10 * (n % 2)) #define RNPM_TCAM_SAQF(n) \ (RNPM_TCAM_BASE + 0x08 + 0x40 * (n / 2) + 0x10 * (n % 2)) #define RNPM_TCAM_APQF(n) \ (RNPM_TCAM_BASE + 0x0c + 0x40 * (n / 2) + 0x10 * (n % 2)) #define RNPM_TCAM_SDPQF_MASK(n) \ (RNPM_TCAM_BASE + 0x20 + 0x40 * (n / 2) + 0x10 * (n % 2)) #define RNPM_TCAM_DAQF_MASK(n) \ (RNPM_TCAM_BASE + 0x24 + 0x40 * (n / 2) + 0x10 * (n % 2)) #define RNPM_TCAM_SAQF_MASK(n) \ (RNPM_TCAM_BASE + 0x28 + 0x40 * (n / 2) + 0x10 * (n % 2)) #define RNPM_TCAM_APQF_MASK(n) \ (RNPM_TCAM_BASE + 0x2c + 0x40 * (n / 2) + 0x10 * (n % 2)) #define RNPM_TCAM_MODE (RNPM_TCAM_BASE + 0x20000) #define RNPM_TCAM_CACHE_ENABLE (RNPM_TCAM_BASE + 0x20004) #define RNPM_TCAM_CACHE_ADDR_CLR (RNPM_TCAM_BASE + 0x20008) #define RNPM_TCAM_CACHE_REQ_CLR (RNPM_TCAM_BASE + 0x2000c) /* ================================================================== */ /* ==================== OTHER Global Registers ==================== */ /* ===== PF-VF Functions ==== */ #define VF_NUM_REG (0xa3000) /* 8bit: 7:vf_actiove 6:fun0/fun1 [5:0]:vf_num */ #define VF_NUM(vfnum, fun) ((1 << 7) | (((fun)&0x1) << 6) | ((vfnum)&0x3F)) #define PF_NUM(fun) (((fun)&0x1) << 6) #define IS_VF(vfnum) (((vfnum) & (1 << 7)) ? 1 : 0) /* PFC Flow Control*/ enum NIC_MODE { MODE_NIC_MODE_1PORT_40G = 0, MODE_NIC_MODE_1PORT = 1, MODE_NIC_MODE_2PORT = 2, MODE_NIC_MODE_4PORT = 3, }; /* ================================================================== */ #endif /* RNPM_REGS_H */