#ifndef _SYS_MAC_NXGE_MAC_HW_H
#define _SYS_MAC_NXGE_MAC_HW_H
#ifdef __cplusplus
extern "C" {
#endif
#include <nxge_defs.h>
#define NXGE_1GETHERMIN 255
#define NXGE_ETHERMIN 97
#define NXGE_MAX_HEADER 250
typedef enum {
NXGE_TX_DISABLE,
NXGE_RX_DISABLE,
NXGE_CHIP_RESET
} nxge_reset_t;
#define NXGE_DELAY_AFTER_TXRX 10000
#define NXGE_DELAY_AFTER_RESET 1000
#define NXGE_DELAY_AFTER_EE_RESET 10000
#define NXGE_DELAY_AFTER_LINK_RESET 13
#define NXGE_LINK_RESETS 8
#define FILTER_M_CTL 0xDCEF1
#define HASH_BITS 8
#define NMCFILTER_BITS (1 << HASH_BITS)
#define HASH_REG_WIDTH 16
#define BROADCAST_HASH_WORD 0x0f
#define BROADCAST_HASH_BIT 0x8000
#define NMCFILTER_REGS NMCFILTER_BITS / HASH_REG_WIDTH
#define XMAC_PORT_0 0
#define XMAC_PORT_1 1
#define BMAC_PORT_0 2
#define BMAC_PORT_1 3
#define MAC_RESET_WAIT 10
#define MAC_ADDR_REG_MASK 0xFFFF
#define NXGE_PORT_SPD_NONE 0x0
#define NXGE_PORT_SPD_1G 0x1
#define NXGE_PORT_SPD_10G 0x2
#define NXGE_PORT_SPD_RSVD 0x7
#define NXGE_PHY_NONE 0x0
#define NXGE_PHY_COPPER 0x1
#define NXGE_PHY_FIBRE 0x2
#define NXGE_PHY_SERDES 0x3
#define NXGE_PHY_RGMII_FIBER 0x4
#define NXGE_PHY_TN1010 0x5
#define NXGE_PHY_RSVD 0x7
#define NXGE_PORT_SPD_SHIFT 0
#define NXGE_PORT_SPD_MASK 0x0f
#define NXGE_PHY_SHIFT 16
#define NXGE_PHY_MASK 0x0f0000
#define NXGE_PORT_10G_COPPER (NXGE_PORT_SPD_10G | \
(NXGE_PHY_COPPER << NXGE_PHY_SHIFT))
#define NXGE_PORT_1G_COPPER (NXGE_PORT_SPD_1G | \
(NXGE_PHY_COPPER << NXGE_PHY_SHIFT))
#define NXGE_PORT_1G_FIBRE (NXGE_PORT_SPD_1G | \
(NXGE_PHY_FIBRE << NXGE_PHY_SHIFT))
#define NXGE_PORT_10G_FIBRE (NXGE_PORT_SPD_10G | \
(NXGE_PHY_FIBRE << NXGE_PHY_SHIFT))
#define NXGE_PORT_1G_SERDES (NXGE_PORT_SPD_1G | \
(NXGE_PHY_SERDES << NXGE_PHY_SHIFT))
#define NXGE_PORT_10G_SERDES (NXGE_PORT_SPD_10G | \
(NXGE_PHY_SERDES << NXGE_PHY_SHIFT))
#define NXGE_PORT_1G_RGMII_FIBER (NXGE_PORT_SPD_1G | \
(NXGE_PHY_RGMII_FIBER << NXGE_PHY_SHIFT))
#define NXGE_PORT_TN1010 (NXGE_PORT_SPD_NONE | \
(NXGE_PHY_TN1010 << NXGE_PHY_SHIFT))
#define NXGE_PORT_NONE (NXGE_PORT_SPD_NONE | \
(NXGE_PHY_NONE << NXGE_PHY_SHIFT))
#define NXGE_PORT_RSVD (NXGE_PORT_SPD_RSVD | \
(NXGE_PHY_RSVD << NXGE_PHY_SHIFT))
#define NXGE_PORT_TYPE_MASK (NXGE_PORT_SPD_MASK | NXGE_PHY_MASK)
#define NXGE_PORT_TYPE_SHIFT 4
typedef enum nxge_network_mode {
NET_2_10GE_FIBER = 1,
NET_2_10GE_COPPER,
NET_1_10GE_FIBER_3_1GE_COPPER,
NET_1_10GE_COPPER_3_1GE_COPPER,
NET_1_10GE_FIBER_3_1GE_FIBER,
NET_1_10GE_COPPER_3_1GE_FIBER,
NET_2_1GE_FIBER_2_1GE_COPPER,
NET_QGE_FIBER,
NET_QGE_COPPER
} nxge_network_mode_t;
typedef enum nxge_port {
PORT_TYPE_XMAC = 1,
PORT_TYPE_BMAC,
PORT_TYPE_LOGICAL
} nxge_port_t;
typedef enum nxge_port_mode {
PORT_1G_COPPER = 1,
PORT_1G_FIBER,
PORT_10G_COPPER,
PORT_10G_FIBER,
PORT_10G_SERDES,
PORT_1G_SERDES,
PORT_1G_RGMII_FIBER,
PORT_HSP_MODE,
PORT_LOGICAL,
PORT_1G_TN1010,
PORT_10G_TN1010
} nxge_port_mode_t;
typedef enum nxge_linkchk_mode {
LINKCHK_INTR = 1,
LINKCHK_TIMER
} nxge_linkchk_mode_t;
typedef enum {
LINK_INTR_STOP,
LINK_INTR_START
} link_intr_enable_t, *link_intr_enable_pt;
typedef enum {
LINK_MONITOR_STOP,
LINK_MONITOR_START,
LINK_MONITOR_STOPPING
} link_mon_enable_t, *link_mon_enable_pt;
typedef enum {
NO_XCVR,
INT_MII_XCVR,
EXT_MII_XCVR,
PCS_XCVR,
XPCS_XCVR,
HSP_XCVR,
LOGICAL_XCVR
} xcvr_inuse_t;
#define PORT_1_OFFSET 0x6000
#define PORT_GT_1_OFFSET 0x4000
#define XMAC_ADDR_OFFSET_0 0
#define XMAC_ADDR_OFFSET_1 0x6000
#define XMAC_ADDR_OFFSET(port_num)\
(XMAC_ADDR_OFFSET_0 + ((port_num) * PORT_1_OFFSET))
#define XMAC_REG_ADDR(port_num, reg)\
(FZC_MAC + (XMAC_ADDR_OFFSET(port_num)) + (reg))
#define XMAC_PORT_ADDR(port_num)\
(FZC_MAC + XMAC_ADDR_OFFSET(port_num))
#define BMAC_ADDR_OFFSET_2 0x0C000
#define BMAC_ADDR_OFFSET_3 0x10000
#define BMAC_ADDR_OFFSET(port_num)\
(BMAC_ADDR_OFFSET_2 + (((port_num) - 2) * PORT_GT_1_OFFSET))
#define BMAC_REG_ADDR(port_num, reg)\
(FZC_MAC + (BMAC_ADDR_OFFSET(port_num)) + (reg))
#define BMAC_PORT_ADDR(port_num)\
(FZC_MAC + BMAC_ADDR_OFFSET(port_num))
#define PCS_ADDR_OFFSET_0 0x04000
#define PCS_ADDR_OFFSET_1 0x0A000
#define PCS_ADDR_OFFSET_2 0x0E000
#define PCS_ADDR_OFFSET_3 0x12000
#define PCS_ADDR_OFFSET(port_num)\
((port_num <= 1) ? \
(PCS_ADDR_OFFSET_0 + (port_num) * PORT_1_OFFSET) : \
(PCS_ADDR_OFFSET_2 + (((port_num) - 2) * PORT_GT_1_OFFSET)))
#define PCS_REG_ADDR(port_num, reg)\
(FZC_MAC + (PCS_ADDR_OFFSET((port_num)) + (reg)))
#define PCS_PORT_ADDR(port_num)\
(FZC_MAC + (PCS_ADDR_OFFSET(port_num)))
#define XPCS_ADDR_OFFSET_0 0x02000
#define XPCS_ADDR_OFFSET_1 0x08000
#define XPCS_ADDR_OFFSET(port_num)\
(XPCS_ADDR_OFFSET_0 + ((port_num) * PORT_1_OFFSET))
#define XPCS_ADDR(port_num, reg)\
(FZC_MAC + (XPCS_ADDR_OFFSET((port_num)) + (reg)))
#define XPCS_PORT_ADDR(port_num)\
(FZC_MAC + (XPCS_ADDR_OFFSET(port_num)))
#define ESR_ADDR_OFFSET 0x14000
#define ESR_ADDR(reg)\
(FZC_MAC + (ESR_ADDR_OFFSET) + (reg))
#define MIF_ADDR_OFFSET 0x16000
#define MIF_ADDR(reg)\
(FZC_MAC + (MIF_ADDR_OFFSET) + (reg))
#define BTXMAC_SW_RST_REG 0x000
#define BRXMAC_SW_RST_REG 0x008
#define MAC_SEND_PAUSE_REG 0x010
#define BTXMAC_STATUS_REG 0x020
#define BRXMAC_STATUS_REG 0x028
#define BMAC_CTRL_STAT_REG 0x030
#define BTXMAC_STAT_MSK_REG 0x040
#define BRXMAC_STAT_MSK_REG 0x048
#define BMAC_C_S_MSK_REG 0x050
#define TXMAC_CONFIG_REG 0x060
typedef union _btxmac_config_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsrvd : 22;
uint32_t hdx_ctrl2 : 1;
uint32_t no_fcs : 1;
uint32_t hdx_ctrl : 7;
uint32_t txmac_enable : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t txmac_enable : 1;
uint32_t hdx_ctrl : 7;
uint32_t no_fcs : 1;
uint32_t hdx_ctrl2 : 1;
uint32_t rsrvd : 22;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} btxmac_config_t, *p_btxmac_config_t;
#define RXMAC_CONFIG_REG 0x068
typedef union _brxmac_config_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsrvd : 20;
uint32_t mac_reg_sw_test : 2;
uint32_t mac2ipp_pkt_cnt_en : 1;
uint32_t rx_crs_extend_en : 1;
uint32_t error_chk_dis : 1;
uint32_t addr_filter_en : 1;
uint32_t hash_filter_en : 1;
uint32_t promiscuous_group : 1;
uint32_t promiscuous : 1;
uint32_t strip_fcs : 1;
uint32_t strip_pad : 1;
uint32_t rxmac_enable : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t rxmac_enable : 1;
uint32_t strip_pad : 1;
uint32_t strip_fcs : 1;
uint32_t promiscuous : 1;
uint32_t promiscuous_group : 1;
uint32_t hash_filter_en : 1;
uint32_t addr_filter_en : 1;
uint32_t error_chk_dis : 1;
uint32_t rx_crs_extend_en : 1;
uint32_t mac2ipp_pkt_cnt_en : 1;
uint32_t mac_reg_sw_test : 2;
uint32_t rsrvd : 20;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} brxmac_config_t, *p_brxmac_config_t;
#define MAC_CTRL_CONFIG_REG 0x070
#define MAC_XIF_CONFIG_REG 0x078
typedef union _bxif_config_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsrvd2 : 24;
uint32_t sel_clk_25mhz : 1;
uint32_t led_polarity : 1;
uint32_t force_led_on : 1;
uint32_t used : 1;
uint32_t gmii_mode : 1;
uint32_t rsrvd : 1;
uint32_t loopback : 1;
uint32_t tx_output_en : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t tx_output_en : 1;
uint32_t loopback : 1;
uint32_t rsrvd : 1;
uint32_t gmii_mode : 1;
uint32_t used : 1;
uint32_t force_led_on : 1;
uint32_t led_polarity : 1;
uint32_t sel_clk_25mhz : 1;
uint32_t rsrvd2 : 24;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} bxif_config_t, *p_bxif_config_t;
#define BMAC_MIN_REG 0x0a0
#define BMAC_MAX_REG 0x0a8
#define MAC_PA_SIZE_REG 0x0b0
#define MAC_CTRL_TYPE_REG 0x0c8
#define BMAC_ADDR0_REG 0x100
#define BMAC_ADDR1_REG 0x108
#define BMAC_ADDR2_REG 0x110
#define BMAC_ADDR3_REG 0x118
#define BMAC_ADDR4_REG 0x120
#define BMAC_ADDR5_REG 0x128
#define BMAC_ADDR6_REG 0x130
#define BMAC_ADDR7_REG 0x138
#define BMAC_ADDR8_REG 0x140
#define BMAC_ADDR9_REG 0x148
#define BMAC_ADDR10_REG 0x150
#define BMAC_ADDR11_REG 0x158
#define BMAC_ADDR12_REG 0x160
#define BMAC_ADDR13_REG 0x168
#define BMAC_ADDR14_REG 0x170
#define BMAC_ADDR15_REG 0x178
#define BMAC_ADDR16_REG 0x180
#define BMAC_ADDR17_REG 0x188
#define BMAC_ADDR18_REG 0x190
#define BMAC_ADDR19_REG 0x198
#define BMAC_ADDR20_REG 0x1a0
#define BMAC_ADDR21_REG 0x1a8
#define BMAC_ADDR22_REG 0x1b0
#define BMAC_ADDR23_REG 0x1b8
#define MAC_FC_ADDR0_REG 0x268
#define MAC_FC_ADDR1_REG 0x270
#define MAC_FC_ADDR2_REG 0x278
#define MAC_ADDR_FILT0_REG 0x298
#define MAC_ADDR_FILT1_REG 0x2a0
#define MAC_ADDR_FILT2_REG 0x2a8
#define MAC_ADDR_FILT12_MASK_REG 0x2b0
#define MAC_ADDR_FILT00_MASK_REG 0x2b8
#define MAC_HASH_TBL0_REG 0x2c0
#define MAC_HASH_TBL1_REG 0x2c8
#define MAC_HASH_TBL2_REG 0x2d0
#define MAC_HASH_TBL3_REG 0x2d8
#define MAC_HASH_TBL4_REG 0x2e0
#define MAC_HASH_TBL5_REG 0x2e8
#define MAC_HASH_TBL6_REG 0x2f0
#define MAC_HASH_TBL7_REG 0x2f8
#define MAC_HASH_TBL8_REG 0x300
#define MAC_HASH_TBL9_REG 0x308
#define MAC_HASH_TBL10_REG 0x310
#define MAC_HASH_TBL11_REG 0x318
#define MAC_HASH_TBL12_REG 0x320
#define MAC_HASH_TBL13_REG 0x328
#define MAC_HASH_TBL14_REG 0x330
#define MAC_HASH_TBL15_REG 0x338
#define RXMAC_FRM_CNT_REG 0x370
#define MAC_LEN_ER_CNT_REG 0x378
#define BMAC_AL_ER_CNT_REG 0x380
#define BMAC_CRC_ER_CNT_REG 0x388
#define BMAC_CD_VIO_CNT_REG 0x390
#define BMAC_SM_REG 0x3a0
#define BMAC_ALTAD_CMPEN_REG 0x3f8
#define BMAC_HOST_INF0_REG 0x400
#define BMAC_HOST_INF1_REG 0x408
#define BMAC_HOST_INF2_REG 0x410
#define BMAC_HOST_INF3_REG 0x418
#define BMAC_HOST_INF4_REG 0x420
#define BMAC_HOST_INF5_REG 0x428
#define BMAC_HOST_INF6_REG 0x430
#define BMAC_HOST_INF7_REG 0x438
#define BMAC_HOST_INF8_REG 0x440
#define BTXMAC_BYTE_CNT_REG 0x448
#define BTXMAC_FRM_CNT_REG 0x450
#define BRXMAC_BYTE_CNT_REG 0x458
#define BMAC_ALT_ADDR0N_REG_ADDR(x) (BMAC_ADDR3_REG + (x) * 24)
#define BMAC_ALT_ADDR1N_REG_ADDR(x) (BMAC_ADDR3_REG + 8 + (x) * 24)
#define BMAC_ALT_ADDR2N_REG_ADDR(x) (BMAC_ADDR3_REG + 0x10 + (x) * 24)
#define BMAC_HASH_TBLN_REG_ADDR(x) (MAC_HASH_TBL0_REG + (x) * 8)
#define BMAC_HOST_INFN_REG_ADDR(x) (BMAC_HOST_INF0_REG + (x) * 8)
#define XTXMAC_SW_RST_REG 0x000
#define XRXMAC_SW_RST_REG 0x008
#define XTXMAC_STATUS_REG 0x020
#define XRXMAC_STATUS_REG 0x028
#define XMAC_CTRL_STAT_REG 0x030
#define XTXMAC_STAT_MSK_REG 0x040
#define XRXMAC_STAT_MSK_REG 0x048
#define XMAC_C_S_MSK_REG 0x050
#define XMAC_CONFIG_REG 0x060
typedef union _xmac_cfg_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t sel_clk_25mhz : 1;
uint32_t pcs_bypass : 1;
uint32_t xpcs_bypass : 1;
uint32_t mii_gmii_mode : 2;
uint32_t lfs_disable : 1;
uint32_t loopback : 1;
uint32_t tx_output_en : 1;
uint32_t sel_por_clk_src : 1;
uint32_t led_polarity : 1;
uint32_t force_led_on : 1;
uint32_t pass_fctl_frames : 1;
uint32_t recv_pause_en : 1;
uint32_t mac2ipp_pkt_cnt_en : 1;
uint32_t strip_crc : 1;
uint32_t addr_filter_en : 1;
uint32_t hash_filter_en : 1;
uint32_t code_viol_chk_dis : 1;
uint32_t reserved_mcast : 1;
uint32_t rx_crc_chk_dis : 1;
uint32_t error_chk_dis : 1;
uint32_t promisc_grp : 1;
uint32_t promiscuous : 1;
uint32_t rx_mac_enable : 1;
uint32_t warning_msg_en : 1;
uint32_t used : 3;
uint32_t always_no_crc : 1;
uint32_t var_min_ipg_en : 1;
uint32_t strech_mode : 1;
uint32_t tx_enable : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t tx_enable : 1;
uint32_t strech_mode : 1;
uint32_t var_min_ipg_en : 1;
uint32_t always_no_crc : 1;
uint32_t used : 3;
uint32_t warning_msg_en : 1;
uint32_t rx_mac_enable : 1;
uint32_t promiscuous : 1;
uint32_t promisc_grp : 1;
uint32_t error_chk_dis : 1;
uint32_t rx_crc_chk_dis : 1;
uint32_t reserved_mcast : 1;
uint32_t code_viol_chk_dis : 1;
uint32_t hash_filter_en : 1;
uint32_t addr_filter_en : 1;
uint32_t strip_crc : 1;
uint32_t mac2ipp_pkt_cnt_en : 1;
uint32_t recv_pause_en : 1;
uint32_t pass_fctl_frames : 1;
uint32_t force_led_on : 1;
uint32_t led_polarity : 1;
uint32_t sel_por_clk_src : 1;
uint32_t tx_output_en : 1;
uint32_t loopback : 1;
uint32_t lfs_disable : 1;
uint32_t mii_gmii_mode : 2;
uint32_t xpcs_bypass : 1;
uint32_t pcs_bypass : 1;
uint32_t sel_clk_25mhz : 1;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} xmac_cfg_t, *p_xmac_cfg_t;
#define XMAC_IPG_REG 0x080
#define XMAC_MIN_REG 0x088
#define XMAC_MAX_REG 0x090
#define XMAC_ADDR0_REG 0x0a0
#define XMAC_ADDR1_REG 0x0a8
#define XMAC_ADDR2_REG 0x0b0
#define XRXMAC_BT_CNT_REG 0x100
#define XRXMAC_BC_FRM_CNT_REG 0x108
#define XRXMAC_MC_FRM_CNT_REG 0x110
#define XRXMAC_FRAG_CNT_REG 0x118
#define XRXMAC_HIST_CNT1_REG 0x120
#define XRXMAC_HIST_CNT2_REG 0x128
#define XRXMAC_HIST_CNT3_REG 0x130
#define XRXMAC_HIST_CNT4_REG 0x138
#define XRXMAC_HIST_CNT5_REG 0x140
#define XRXMAC_HIST_CNT6_REG 0x148
#define XRXMAC_MPSZER_CNT_REG 0x150
#define XRXMAC_CRC_ER_CNT_REG 0x158
#define XRXMAC_CD_VIO_CNT_REG 0x160
#define XRXMAC_AL_ER_CNT_REG 0x168
#define XTXMAC_FRM_CNT_REG 0x170
#define XTXMAC_BYTE_CNT_REG 0x178
#define XMAC_LINK_FLT_CNT_REG 0x180
#define XRXMAC_HIST_CNT7_REG 0x188
#define XMAC_SM_REG 0x1a8
#define XMAC_INTERN1_REG 0x1b0
#define XMAC_INTERN2_REG 0x1b8
#define XMAC_ADDR_CMPEN_REG 0x208
#define XMAC_ADDR3_REG 0x218
#define XMAC_ADDR4_REG 0x220
#define XMAC_ADDR5_REG 0x228
#define XMAC_ADDR6_REG 0x230
#define XMAC_ADDR7_REG 0x238
#define XMAC_ADDR8_REG 0x240
#define XMAC_ADDR9_REG 0x248
#define XMAC_ADDR10_REG 0x250
#define XMAC_ADDR11_REG 0x258
#define XMAC_ADDR12_REG 0x260
#define XMAC_ADDR13_REG 0x268
#define XMAC_ADDR14_REG 0x270
#define XMAC_ADDR15_REG 0x278
#define XMAC_ADDR16_REG 0x280
#define XMAC_ADDR17_REG 0x288
#define XMAC_ADDR18_REG 0x290
#define XMAC_ADDR19_REG 0x298
#define XMAC_ADDR20_REG 0x2a0
#define XMAC_ADDR21_REG 0x2a8
#define XMAC_ADDR22_REG 0x2b0
#define XMAC_ADDR23_REG 0x2b8
#define XMAC_ADDR24_REG 0x2c0
#define XMAC_ADDR25_REG 0x2c8
#define XMAC_ADDR26_REG 0x2d0
#define XMAC_ADDR27_REG 0x2d8
#define XMAC_ADDR28_REG 0x2e0
#define XMAC_ADDR29_REG 0x2e8
#define XMAC_ADDR30_REG 0x2f0
#define XMAC_ADDR31_REG 0x2f8
#define XMAC_ADDR32_REG 0x300
#define XMAC_ADDR33_REG 0x308
#define XMAC_ADDR34_REG 0x310
#define XMAC_ADDR35_REG 0x318
#define XMAC_ADDR36_REG 0x320
#define XMAC_ADDR37_REG 0x328
#define XMAC_ADDR38_REG 0x330
#define XMAC_ADDR39_REG 0x338
#define XMAC_ADDR40_REG 0x340
#define XMAC_ADDR41_REG 0x348
#define XMAC_ADDR42_REG 0x350
#define XMAC_ADDR43_REG 0x358
#define XMAC_ADDR44_REG 0x360
#define XMAC_ADDR45_REG 0x368
#define XMAC_ADDR46_REG 0x370
#define XMAC_ADDR47_REG 0x378
#define XMAC_ADDR48_REG 0x380
#define XMAC_ADDR49_REG 0x388
#define XMAC_ADDR50_REG 0x390
#define XMAC_ADDR_FILT0_REG 0x818
#define XMAC_ADDR_FILT1_REG 0x820
#define XMAC_ADDR_FILT2_REG 0x828
#define XMAC_ADDR_FILT12_MASK_REG 0x830
#define XMAC_ADDR_FILT0_MASK_REG 0x838
#define XMAC_HASH_TBL0_REG 0x840
#define XMAC_HASH_TBL1_REG 0x848
#define XMAC_HASH_TBL2_REG 0x850
#define XMAC_HASH_TBL3_REG 0x858
#define XMAC_HASH_TBL4_REG 0x860
#define XMAC_HASH_TBL5_REG 0x868
#define XMAC_HASH_TBL6_REG 0x870
#define XMAC_HASH_TBL7_REG 0x878
#define XMAC_HASH_TBL8_REG 0x880
#define XMAC_HASH_TBL9_REG 0x888
#define XMAC_HASH_TBL10_REG 0x890
#define XMAC_HASH_TBL11_REG 0x898
#define XMAC_HASH_TBL12_REG 0x8a0
#define XMAC_HASH_TBL13_REG 0x8a8
#define XMAC_HASH_TBL14_REG 0x8b0
#define XMAC_HASH_TBL15_REG 0x8b8
#define XMAC_HOST_INF0_REG 0x900
#define XMAC_HOST_INF1_REG 0x908
#define XMAC_HOST_INF2_REG 0x910
#define XMAC_HOST_INF3_REG 0x918
#define XMAC_HOST_INF4_REG 0x920
#define XMAC_HOST_INF5_REG 0x928
#define XMAC_HOST_INF6_REG 0x930
#define XMAC_HOST_INF7_REG 0x938
#define XMAC_HOST_INF8_REG 0x940
#define XMAC_HOST_INF9_REG 0x948
#define XMAC_HOST_INF10_REG 0x950
#define XMAC_HOST_INF11_REG 0x958
#define XMAC_HOST_INF12_REG 0x960
#define XMAC_HOST_INF13_REG 0x968
#define XMAC_HOST_INF14_REG 0x970
#define XMAC_HOST_INF15_REG 0x978
#define XMAC_HOST_INF16_REG 0x980
#define XMAC_HOST_INF17_REG 0x988
#define XMAC_HOST_INF18_REG 0x990
#define XMAC_HOST_INF19_REG 0x998
#define XMAC_PA_DATA0_REG 0xb80
#define XMAC_PA_DATA1_REG 0xb88
#define XMAC_DEBUG_SEL_REG 0xb90
#define XMAC_TRAINING_VECT_REG 0xb98
#define XMAC_ALT_ADDR0N_REG_ADDR(x) (XMAC_ADDR3_REG + (x) * 24)
#define XMAC_ALT_ADDR1N_REG_ADDR(x) (XMAC_ADDR3_REG + 8 + (x) * 24)
#define XMAC_ALT_ADDR2N_REG_ADDR(x) (XMAC_ADDR3_REG + 16 + (x) * 24)
#define XMAC_HASH_TBLN_REG_ADDR(x) (XMAC_HASH_TBL0_REG + (x) * 8)
#define XMAC_HOST_INFN_REG_ADDR(x) (XMAC_HOST_INF0_REG + (x) * 8)
#define MIF_BB_MDC_REG 0
#define MIF_BB_MDO_REG 0x008
#define MIF_BB_MDO_EN_REG 0x010
#define MIF_OUTPUT_FRAME_REG 0x018
#define MIF_CONFIG_REG 0x020
#define MIF_POLL_STATUS_REG 0x028
#define MIF_POLL_MASK_REG 0x030
#define MIF_STATE_MACHINE_REG 0x038
#define MIF_STATUS_REG 0x040
#define MIF_MASK_REG 0x048
#define PCS_MII_CTRL_REG 0
#define PCS_MII_STATUS_REG 0x008
#define PCS_MII_ADVERT_REG 0x010
#define PCS_MII_LPA_REG 0x018
#define PCS_CONFIG_REG 0x020
#define PCS_STATE_MACHINE_REG 0x028
#define PCS_INTR_STATUS_REG 0x030
#define PCS_DATAPATH_MODE_REG 0x0a0
#define PCS_PACKET_COUNT_REG 0x0c0
#define XPCS_CTRL_1_REG 0
#define XPCS_STATUS_1_REG 0x008
#define XPCS_DEV_ID_REG 0x010
#define XPCS_SPEED_ABILITY_REG 0x018
#define XPCS_DEV_IN_PKG_REG 0x020
#define XPCS_CTRL_2_REG 0x028
#define XPCS_STATUS_2_REG 0x030
#define XPCS_PKG_ID_REG 0x038
#define XPCS_STATUS_REG 0x040
#define XPCS_TEST_CTRL_REG 0x048
#define XPCS_CFG_VENDOR_1_REG 0x050
#define XPCS_DIAG_VENDOR_2_REG 0x058
#define XPCS_MASK_1_REG 0x060
#define XPCS_PKT_CNTR_REG 0x068
#define XPCS_TX_STATE_MC_REG 0x070
#define XPCS_DESKEW_ERR_CNTR_REG 0x078
#define XPCS_SYM_ERR_CNTR_L0_L1_REG 0x080
#define XPCS_SYM_ERR_CNTR_L2_L3_REG 0x088
#define XPCS_TRAINING_VECTOR_REG 0x090
#define ESR_RESET_REG 0
#define ESR_CONFIG_REG 0x008
#define ESR_0_PLL_CONFIG_REG 0x010
#define ESR_0_CONTROL_REG 0x018
#define ESR_0_TEST_CONFIG_REG 0x020
#define ESR_1_PLL_CONFIG_REG 0x028
#define ESR_1_CONTROL_REG 0x030
#define ESR_1_TEST_CONFIG_REG 0x038
#define ESR_ENET_RGMII_CFG_REG 0x040
#define ESR_INTERNAL_SIGNALS_REG 0x800
#define ESR_DEBUG_SEL_REG 0x808
#define MAC_SEND_PAUSE_TIME_MASK 0x0000FFFF
#define MAC_SEND_PAUSE_SEND 0x00010000
#define MAC_TX_FRAME_XMIT 0x00000001
#define MAC_TX_UNDERRUN 0x00000002
#define MAC_TX_MAX_PACKET_ERR 0x00000004
#define MAC_TX_BYTE_CNT_EXP 0x00000400
#define MAC_TX_FRAME_CNT_EXP 0x00000800
#define MAC_RX_FRAME_RECV 0x00000001
#define MAC_RX_OVERFLOW 0x00000002
#define MAC_RX_FRAME_COUNT 0x00000004
#define MAC_RX_ALIGN_ERR 0x00000008
#define MAC_RX_CRC_ERR 0x00000010
#define MAC_RX_LEN_ERR 0x00000020
#define MAC_RX_VIOL_ERR 0x00000040
#define MAC_RX_BYTE_CNT_EXP 0x00000080
#define MAC_CTRL_PAUSE_RECEIVED 0x00000001
#define MAC_CTRL_PAUSE_STATE 0x00000002
#define MAC_CTRL_NOPAUSE_STATE 0x00000004
#define MAC_CTRL_PAUSE_TIME_MASK 0xFFFF0000
#define MAC_CTRL_PAUSE_TIME_SHIFT 16
#define MAC_TX_CFG_TXMAC_ENABLE 0x00000001
#define MAC_TX_CFG_NO_FCS 0x00000100
#define MAC_RX_CFG_RXMAC_ENABLE 0x00000001
#define MAC_RX_CFG_STRIP_PAD 0x00000002
#define MAC_RX_CFG_STRIP_FCS 0x00000004
#define MAC_RX_CFG_PROMISC 0x00000008
#define MAC_RX_CFG_PROMISC_GROUP 0x00000010
#define MAC_RX_CFG_HASH_FILTER_EN 0x00000020
#define MAC_RX_CFG_ADDR_FILTER_EN 0x00000040
#define MAC_RX_CFG_DISABLE_DISCARD 0x00000080
#define MAC_RX_MAC2IPP_PKT_CNT_EN 0x00000200
#define MAC_RX_MAC_REG_RW_TEST_MASK 0x00000c00
#define MAC_RX_MAC_REG_RW_TEST_SHIFT 10
#define MAC_CTRL_CFG_SEND_PAUSE_EN 0x00000001
#define MAC_CTRL_CFG_RECV_PAUSE_EN 0x00000002
#define MAC_CTRL_CFG_PASS_CTRL 0x00000004
#define MAC_XIF_TX_OUTPUT_EN 0x00000001
#define MAC_XIF_MII_INT_LOOPBACK 0x00000002
#define MAC_XIF_GMII_MODE 0x00000008
#define MAC_XIF_LINK_LED 0x00000020
#define MAC_XIF_LED_POLARITY 0x00000040
#define MAC_XIF_SEL_CLK_25MHZ 0x00000080
#define BMAC_MIN_FRAME_MASK 0x3FF
#define BMAC_MAX_BURST_MASK 0x3FFF0000
#define BMAC_MAX_BURST_SHIFT 16
#define BMAC_MAX_FRAME_MASK 0x00007FFF
#define BMAC_MAX_FRAME_SHIFT 0
#define BMAC_PA_SIZE_MASK 0x000003FF
#define BMAC_ALT_ADDR_BASE 0x118
#define BMAC_MAX_ALT_ADDR_ENTRY 7
#define BMAC_MAX_ADDR_ENTRY (BMAC_MAX_ALT_ADDR_ENTRY + 1)
#define MAC_MAX_HASH_ENTRY 16
#define MAC_SM_RLM_MASK 0x07800000
#define MAC_SM_RLM_SHIFT 23
#define MAC_SM_RX_FC_MASK 0x00700000
#define MAC_SM_RX_FC_SHIFT 20
#define MAC_SM_TLM_MASK 0x000F0000
#define MAC_SM_TLM_SHIFT 16
#define MAC_SM_ENCAP_SM_MASK 0x0000F000
#define MAC_SM_ENCAP_SM_SHIFT 12
#define MAC_SM_TX_REQ_MASK 0x00000C00
#define MAC_SM_TX_REQ_SHIFT 10
#define MAC_SM_TX_FC_MASK 0x000003C0
#define MAC_SM_TX_FC_SHIFT 6
#define MAC_SM_FIFO_WRITE_SEL_MASK 0x00000038
#define MAC_SM_FIFO_WRITE_SEL_SHIFT 3
#define MAC_SM_TX_FIFO_EMPTY_MASK 0x00000007
#define MAC_SM_TX_FIFO_EMPTY_SHIFT 0
#define BMAC_ADDR0_CMPEN 0x00000001
#define BMAC_ADDRN_CMPEN(x) (BMAC_ADDR0_CMP_EN << (x))
#define BMAC_MAX_HOST_INFO_ENTRY 9
#define XTXMAC_SOFT_RST 0x00000001
#define XTXMAC_REG_RST 0x00000002
#define XRXMAC_SOFT_RST 0x00000001
#define XRXMAC_REG_RST 0x00000002
#define XMAC_TX_FRAME_XMIT 0x00000001
#define XMAC_TX_UNDERRUN 0x00000002
#define XMAC_TX_MAX_PACKET_ERR 0x00000004
#define XMAC_TX_OVERFLOW 0x00000008
#define XMAC_TX_FIFO_XFR_ERR 0x00000010
#define XMAC_TX_BYTE_CNT_EXP 0x00000400
#define XMAC_TX_FRAME_CNT_EXP 0x00000800
#define XMAC_RX_FRAME_RCVD 0x00000001
#define XMAC_RX_OVERFLOW 0x00000002
#define XMAC_RX_UNDERFLOW 0x00000004
#define XMAC_RX_CRC_ERR_CNT_EXP 0x00000008
#define XMAC_RX_LEN_ERR_CNT_EXP 0x00000010
#define XMAC_RX_VIOL_ERR_CNT_EXP 0x00000020
#define XMAC_RX_OCT_CNT_EXP 0x00000040
#define XMAC_RX_HST_CNT1_EXP 0x00000080
#define XMAC_RX_HST_CNT2_EXP 0x00000100
#define XMAC_RX_HST_CNT3_EXP 0x00000200
#define XMAC_RX_HST_CNT4_EXP 0x00000400
#define XMAC_RX_HST_CNT5_EXP 0x00000800
#define XMAC_RX_HST_CNT6_EXP 0x00001000
#define XMAC_RX_BCAST_CNT_EXP 0x00002000
#define XMAC_RX_MCAST_CNT_EXP 0x00004000
#define XMAC_RX_FRAG_CNT_EXP 0x00008000
#define XMAC_RX_ALIGNERR_CNT_EXP 0x00010000
#define XMAC_RX_LINK_FLT_CNT_EXP 0x00020000
#define XMAC_RX_REMOTE_FLT_DET 0x00040000
#define XMAC_RX_LOCAL_FLT_DET 0x00080000
#define XMAC_RX_HST_CNT7_EXP 0x00100000
#define XMAC_CTRL_PAUSE_RCVD 0x00000001
#define XMAC_CTRL_PAUSE_STATE 0x00000002
#define XMAC_CTRL_NOPAUSE_STATE 0x00000004
#define XMAC_CTRL_PAUSE_TIME_MASK 0xFFFF0000
#define XMAC_CTRL_PAUSE_TIME_SHIFT 16
#define XMAC_CONFIG_TX_BIT_MASK 0x000000ff
#define XMAC_CONFIG_RX_BIT_MASK 0x001fff00
#define XMAC_CONFIG_XIF_BIT_MASK 0xffe00000
#define XMAC_TX_CFG_TX_ENABLE 0x00000001
#define XMAC_TX_CFG_STRETCH_MD 0x00000002
#define XMAC_TX_CFG_VAR_MIN_IPG_EN 0x00000004
#define XMAC_TX_CFG_ALWAYS_NO_CRC 0x00000008
#define XMAC_WARNING_MSG_ENABLE 0x00000080
#define XMAC_RX_CFG_RX_ENABLE 0x00000100
#define XMAC_RX_CFG_PROMISC 0x00000200
#define XMAC_RX_CFG_PROMISC_GROUP 0x00000400
#define XMAC_RX_CFG_ERR_CHK_DISABLE 0x00000800
#define XMAC_RX_CFG_CRC_CHK_DISABLE 0x00001000
#define XMAC_RX_CFG_RESERVED_MCAST 0x00002000
#define XMAC_RX_CFG_CD_VIO_CHK 0x00004000
#define XMAC_RX_CFG_HASH_FILTER_EN 0x00008000
#define XMAC_RX_CFG_ADDR_FILTER_EN 0x00010000
#define XMAC_RX_CFG_STRIP_CRC 0x00020000
#define XMAC_RX_MAC2IPP_PKT_CNT_EN 0x00040000
#define XMAC_RX_CFG_RX_PAUSE_EN 0x00080000
#define XMAC_RX_CFG_PASS_FLOW_CTRL 0x00100000
#define XMAC_XIF_FORCE_LED_ON 0x00200000
#define XMAC_XIF_LED_POLARITY 0x00400000
#define XMAC_XIF_SEL_POR_CLK_SRC 0x00800000
#define XMAC_XIF_TX_OUTPUT_EN 0x01000000
#define XMAC_XIF_LOOPBACK 0x02000000
#define XMAC_XIF_LFS_DISABLE 0x04000000
#define XMAC_XIF_MII_MODE_MASK 0x18000000
#define XMAC_XIF_MII_MODE_SHIFT 27
#define XMAC_XIF_XGMII_MODE 0x00
#define XMAC_XIF_GMII_MODE 0x01
#define XMAC_XIF_MII_MODE 0x02
#define XMAC_XIF_ILLEGAL_MODE 0x03
#define XMAC_XIF_XPCS_BYPASS 0x20000000
#define XMAC_XIF_1G_PCS_BYPASS 0x40000000
#define XMAC_XIF_SEL_CLK_25MHZ 0x80000000
#define XMAC_IPG_VALUE_MASK 0x00000007
#define XMAC_IPG_VALUE_SHIFT 0
#define XMAC_IPG_VALUE1_MASK 0x0000ff00
#define XMAC_IPG_VALUE1_SHIFT 8
#define XMAC_IPG_STRETCH_RATIO_MASK 0x001f0000
#define XMAC_IPG_STRETCH_RATIO_SHIFT 16
#define XMAC_IPG_STRETCH_CONST_MASK 0x00e00000
#define XMAC_IPG_STRETCH_CONST_SHIFT 21
#define IPG_12_15_BYTE 3
#define IPG_16_19_BYTE 4
#define IPG_20_23_BYTE 5
#define IPG1_12_BYTES 10
#define IPG1_13_BYTES 11
#define IPG1_14_BYTES 12
#define IPG1_15_BYTES 13
#define IPG1_16_BYTES 14
#define XMAC_MIN_TX_FRM_SZ_MASK 0x3ff
#define XMAC_MIN_TX_FRM_SZ_SHIFT 0
#define XMAC_SLOT_TIME_MASK 0x0003fc00
#define XMAC_SLOT_TIME_SHIFT 10
#define XMAC_MIN_RX_FRM_SZ_MASK 0x3ff00000
#define XMAC_MIN_RX_FRM_SZ_SHIFT 20
#define XMAC_MAX_FRM_SZ_MASK 0x00003fff
#define XMAC_SM_TX_LNK_MGMT_MASK 0x00000007
#define XMAC_SM_TX_LNK_MGMT_SHIFT 0
#define XMAC_SM_SOP_DETECT 0x00000008
#define XMAC_SM_LNK_FLT_SIG_MASK 0x00000030
#define XMAC_SM_LNK_FLT_SIG_SHIFT 4
#define XMAC_SM_MII_GMII_MD_RX_LNK 0x00000040
#define XMAC_SM_XGMII_MD_RX_LNK 0x00000080
#define XMAC_SM_XGMII_ONLY_VAL_SIG 0x00000100
#define XMAC_SM_ALT_ADR_N_HSH_FN_SIG 0x00000200
#define XMAC_SM_RXMAC_IPP_STAT_MASK 0x00001c00
#define XMAC_SM_RXMAC_IPP_STAT_SHIFT 10
#define XMAC_SM_RXFIFO_WPTR_CLK_MASK 0x007c0000
#define XMAC_SM_RXFIFO_WPTR_CLK_SHIFT 18
#define XMAC_SM_RXFIFO_RPTR_CLK_MASK 0x0F800000
#define XMAC_SM_RXFIFO_RPTR_CLK_SHIFT 23
#define XMAC_SM_TXFIFO_FULL_CLK 0x10000000
#define XMAC_SM_TXFIFO_EMPTY_CLK 0x20000000
#define XMAC_SM_RXFIFO_FULL_CLK 0x40000000
#define XMAC_SM_RXFIFO_EMPTY_CLK 0x80000000
#define XMAC_IS1_OPP_TXMAC_STAT_MASK 0x0000000F
#define XMAC_IS1_OPP_TXMAC_STAT_SHIFT 0
#define XMAC_IS1_OPP_TXMAC_ABORT 0x00000010
#define XMAC_IS1_OPP_TXMAC_TAG 0x00000020
#define XMAC_IS1_OPP_TXMAC_ACK 0x00000040
#define XMAC_IS1_TXMAC_OPP_REQ 0x00000080
#define XMAC_IS1_RXMAC_IPP_STAT_MASK 0x0FFFFF00
#define XMAC_IS1_RXMAC_IPP_STAT_SHIFT 8
#define XMAC_IS1_RXMAC_IPP_CTRL 0x10000000
#define XMAC_IS1_RXMAC_IPP_TAG 0x20000000
#define XMAC_IS1_IPP_RXMAC_REQ 0x40000000
#define XMAC_IS1_RXMAC_IPP_ACK 0x80000000
#define XMAC_IS2_TX_HB_TIMER_MASK 0x0000000F
#define XMAC_IS2_TX_HB_TIMER_SHIFT 0
#define XMAC_IS2_RX_HB_TIMER_MASK 0x000000F0
#define XMAC_IS2_RX_HB_TIMER_SHIFT 4
#define XMAC_IS2_XPCS_RXC_MASK 0x0000FF00
#define XMAC_IS2_XPCS_RXC_SHIFT 8
#define XMAC_IS2_XPCS_TXC_MASK 0x00FF0000
#define XMAC_IS2_XPCS_TXC_SHIFT 16
#define XMAC_IS2_LOCAL_FLT_OC_SYNC 0x01000000
#define XMAC_IS2_RMT_FLT_OC_SYNC 0x02000000
#define XTXMAC_FRM_CNT_MASK 0xFFFFFFFF
#define XTXMAC_BYTE_CNT_MASK 0xFFFFFFFF
#define XRXMAC_CRC_ER_CNT_MASK 0x000000FF
#define XRXMAC_MPSZER_CNT_MASK 0x000000FF
#define XRXMAC_CD_VIO_CNT_MASK 0x000000FF
#define XRXMAC_BT_CNT_MASK 0xFFFFFFFF
#define XRXMAC_HIST_CNT1_MASK 0x001FFFFF
#define XRXMAC_HIST_CNT2_MASK 0x001FFFFF
#define XRXMAC_HIST_CNT3_MASK 0x000FFFFF
#define XRXMAC_HIST_CNT4_MASK 0x0007FFFF
#define XRXMAC_HIST_CNT5_MASK 0x0003FFFF
#define XRXMAC_HIST_CNT6_MASK 0x0001FFFF
#define XRXMAC_HIST_CNT7_MASK 0x07FFFFFF
#define XRXMAC_BC_FRM_CNT_MASK 0x001FFFFF
#define XRXMAC_MC_FRM_CNT_MASK 0x001FFFFF
#define XRXMAC_FRAG_CNT_MASK 0x001FFFFF
#define XRXMAC_AL_ER_CNT_MASK 0x000000FF
#define XMAC_LINK_FLT_CNT_MASK 0x000000FF
#define BTXMAC_FRM_CNT_MASK 0x001FFFFF
#define BTXMAC_BYTE_CNT_MASK 0x07FFFFFF
#define RXMAC_FRM_CNT_MASK 0x0000FFFF
#define BRXMAC_BYTE_CNT_MASK 0x07FFFFFF
#define BMAC_AL_ER_CNT_MASK 0x0000FFFF
#define MAC_LEN_ER_CNT_MASK 0x0000FFFF
#define BMAC_CRC_ER_CNT_MASK 0x0000FFFF
#define BMAC_CD_VIO_CNT_MASK 0x0000FFFF
#define XMAC_XPCS_DESKEW_ERR_CNT_MASK 0x000000FF
#define XMAC_XPCS_SYM_ERR_CNT_L0_MASK 0x0000FFFF
#define XMAC_XPCS_SYM_ERR_CNT_L1_MASK 0xFFFF0000
#define XMAC_XPCS_SYM_ERR_CNT_L1_SHIFT 16
#define XMAC_XPCS_SYM_ERR_CNT_L2_MASK 0x0000FFFF
#define XMAC_XPCS_SYM_ERR_CNT_L3_MASK 0xFFFF0000
#define XMAC_XPCS_SYM_ERR_CNT_L3_SHIFT 16
#define XMAC_MAX_ALT_ADDR_ENTRY 16
#define XMAC_MAX_ADDR_ENTRY (XMAC_MAX_ALT_ADDR_ENTRY + 1)
#define MAC_MAX_ALT_ADDR_ENTRY XMAC_MAX_ALT_ADDR_ENTRY
#define MAC_MAX_HOST_INFO_ENTRY XMAC_MAX_HOST_INFO_ENTRY
#define XMAC_UNIQUE_HOST_INFO_ENTRY 17
#define BMAC_UNIQUE_HOST_INFO_ENTRY 0
#define XMAC_MULTI_HOST_INFO_ENTRY 16
#define BMAC_MULTI_HOST_INFO_ENTRY 8
typedef union hostinfo {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t reserved2 : 23;
uint32_t mac_pref : 1;
uint32_t reserved1 : 5;
uint32_t rdc_tbl_num : 3;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t rdc_tbl_num : 3;
uint32_t reserved1 : 5;
uint32_t mac_pref : 1;
uint32_t reserved2 : 23;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} hostinfo_t;
typedef union hostinfo *hostinfo_pt;
#define XMAC_HI_RDC_TBL_NUM_MASK 0x00000007
#define XMAC_HI_MAC_PREF 0x00000100
#define XMAC_MAX_HOST_INFO_ENTRY 20
#define MIF_FRAME_START_MASK 0xC0000000
#define MIF_FRAME_ST_22 0x40000000
#define MIF_FRAME_ST_45 0x00000000
#define MIF_FRAME_OPCODE_MASK 0x30000000
#define MIF_FRAME_OP_READ_22 0x20000000
#define MIF_FRAME_OP_WRITE_22 0x10000000
#define MIF_FRAME_OP_ADDR_45 0x00000000
#define MIF_FRAME_OP_READ_45 0x30000000
#define MIF_FRAME_OP_WRITE_45 0x10000000
#define MIF_FRAME_OP_P_R_I_A_45 0x10000000
#define MIF_FRAME_PHY_ADDR_MASK 0x0F800000
#define MIF_FRAME_PHY_ADDR_SHIFT 23
#define MIF_FRAME_REG_ADDR_MASK 0x007C0000
#define MIF_FRAME_REG_ADDR_SHIFT 18
#define MIF_FRAME_TURN_AROUND_MSB 0x00020000
#define MIF_FRAME_TURN_AROUND_LSB 0x00010000
#define MIF_FRAME_DATA_MASK 0x0000FFFF
#define FRAME45_ST 0
#define FRAME45_OP_ADDR 0
#define FRAME45_OP_WRITE 1
#define FRAME45_OP_READ_INC 2
#define FRAME45_OP_READ 3
typedef union _mif_frame_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t st : 2;
uint32_t op : 2;
uint32_t phyad : 5;
uint32_t regad : 5;
uint32_t ta_msb : 1;
uint32_t ta_lsb : 1;
uint32_t data : 16;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t data : 16;
uint32_t ta_lsb : 1;
uint32_t ta_msb : 1;
uint32_t regad : 5;
uint32_t phyad : 5;
uint32_t op : 2;
uint32_t st : 2;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} mif_frame_t;
#define MIF_CFG_POLL_EN 0x00000008
#define MIF_CFG_BB_MODE 0x00000010
#define MIF_CFG_POLL_REG_MASK 0x000003E0
#define MIF_CFG_POLL_REG_SHIFT 5
#define MIF_CFG_POLL_PHY_MASK 0x00007C00
#define MIF_CFG_POLL_PHY_SHIFT 10
#define MIF_CFG_INDIRECT_MODE 0x0000800
#define MIF_CFG_ATCE_GE_EN 0x00010000
typedef union _mif_cfg_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res2 : 15;
uint32_t atca_ge : 1;
uint32_t indirect_md : 1;
uint32_t phy_addr : 5;
uint32_t reg_addr : 5;
uint32_t bb_mode : 1;
uint32_t poll_en : 1;
uint32_t res1 : 2;
uint32_t res : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t res : 1;
uint32_t res1 : 2;
uint32_t poll_en : 1;
uint32_t bb_mode : 1;
uint32_t reg_addr : 5;
uint32_t phy_addr : 5;
uint32_t indirect_md : 1;
uint32_t atca_ge : 1;
uint32_t res2 : 15;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} mif_cfg_t;
#define MIF_POLL_STATUS_DATA_MASK 0xffff0000
#define MIF_POLL_STATUS_STAT_MASK 0x0000ffff
typedef union _mif_poll_stat_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint16_t data;
uint16_t status;
#elif defined(_BIT_FIELDS_LTOH)
uint16_t status;
uint16_t data;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} mif_poll_stat_t;
#define MIF_POLL_MASK_MASK 0x0000ffff
typedef union _mif_poll_mask_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint16_t rsvd;
uint16_t mask;
#elif defined(_BIT_FIELDS_LTOH)
uint16_t mask;
uint16_t rsvd;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} mif_poll_mask_t;
#define MIF_STATUS_INIT_DONE_MASK 0x00000001
#define MIF_STATUS_XGE_ERR0_MASK 0x00000002
#define MIF_STATUS_XGE_ERR1_MASK 0x00000004
#define MIF_STATUS_PEU_ERR_MASK 0x00000008
#define MIF_STATUS_EXT_PHY_INTR0_MASK 0x00000010
#define MIF_STATUS_EXT_PHY_INTR1_MASK 0x00000020
typedef union _mif_stat_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsvd:26;
uint32_t ext_phy_intr_flag1:1;
uint32_t ext_phy_intr_flag0:1;
uint32_t peu_err:1;
uint32_t xge_err1:1;
uint32_t xge_err0:1;
uint32_t mif_init_done_stat:1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t mif_init_done_stat:1;
uint32_t xge_err0:1;
uint32_t xge_err1:1;
uint32_t ext_phy_intr_flag0:1;
uint32_t ext_phy_intr_flag1:1;
uint32_t rsvd:26;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} mif_stat_t;
#define MIF_SM_EXECUTION_MASK 0x0000003f
#define MIF_SM_EXECUTION_SHIFT 0
#define MIF_SM_CONTROL_MASK 0x000001c0
#define MIF_SM_CONTROL_MASK_SHIFT 6
#define MIF_SM_MDI 0x00000200
#define MIF_SM_MDO 0x00000400
#define MIF_SM_MDO_EN 0x00000800
#define MIF_SM_MDC 0x00001000
#define MIF_SM_MDI_0 0x00002000
#define MIF_SM_MDI_1 0x00004000
#define MIF_SM_MDI_2 0x00008000
#define MIF_SM_PORT_ADDR_MASK 0x001f0000
#define MIF_SM_PORT_ADDR_SHIFT 16
#define MIF_SM_INT_SIG_MASK 0xffe00000
#define MIF_SM_INT_SIG_SHIFT 21
#define PCS_MII_CTRL_1000_SEL 0x0040
#define PCS_MII_CTRL_COLLISION_TEST 0x0080
#define PCS_MII_CTRL_DUPLEX 0x0100
#define PCS_MII_RESTART_AUTONEG 0x0200
#define PCS_MII_ISOLATE 0x0400
#define PCS_MII_POWER_DOWN 0x0800
#define PCS_MII_AUTONEG_EN 0x1000
#define PCS_MII_10_100_SEL 0x2000
#define PCS_MII_RESET 0x8000
typedef union _pcs_ctrl_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res0 : 16;
uint32_t reset : 1;
uint32_t res1 : 1;
uint32_t sel_10_100 : 1;
uint32_t an_enable : 1;
uint32_t pwr_down : 1;
uint32_t isolate : 1;
uint32_t restart_an : 1;
uint32_t duplex : 1;
uint32_t col_test : 1;
uint32_t sel_1000 : 1;
uint32_t res2 : 6;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t res2 : 6;
uint32_t sel_1000 : 1;
uint32_t col_test : 1;
uint32_t duplex : 1;
uint32_t restart_an : 1;
uint32_t isolate : 1;
uint32_t pwr_down : 1;
uint32_t an_enable : 1;
uint32_t sel_10_100 : 1;
uint32_t res1 : 1;
uint32_t reset : 1;
uint32_t res0 : 16;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} pcs_ctrl_t;
#define PCS_MII_STATUS_EXTEND_CAP 0x0001
#define PCS_MII_STATUS_JABBER_DETECT 0x0002
#define PCS_MII_STATUS_LINK_STATUS 0x0004
#define PCS_MII_STATUS_AUTONEG_ABLE 0x0008
#define PCS_MII_STATUS_REMOTE_FAULT 0x0010
#define PCS_MII_STATUS_AUTONEG_COMP 0x0020
#define PCS_MII_STATUS_EXTEND_STATUS 0x0100
typedef union _pcs_stat_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res0 : 23;
uint32_t ext_stat : 1;
uint32_t res1 : 2;
uint32_t an_complete : 1;
uint32_t remote_fault : 1;
uint32_t an_able : 1;
uint32_t link_stat : 1;
uint32_t jabber_detect : 1;
uint32_t ext_cap : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ext_cap : 1;
uint32_t jabber_detect : 1;
uint32_t link_stat : 1;
uint32_t an_able : 1;
uint32_t remote_fault : 1;
uint32_t an_complete : 1;
uint32_t res1 : 2;
uint32_t ext_stat : 1;
uint32_t res0 : 23;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} pcs_stat_t;
#define PCS_MII_ADVERT_FD 0x0020
#define PCS_MII_ADVERT_HD 0x0040
#define PCS_MII_ADVERT_SYM_PAUSE 0x0080
#define PCS_MII_ADVERT_ASYM_PAUSE 0x0100
#define PCS_MII_ADVERT_RF_MASK 0x3000
#define PCS_MII_ADVERT_RF_SHIFT 12
#define PCS_MII_ADVERT_ACK 0x4000
#define PCS_MII_ADVERT_NEXT_PAGE 0x8000
#define PCS_MII_LPA_FD PCS_MII_ADVERT_FD
#define PCS_MII_LPA_HD PCS_MII_ADVERT_HD
#define PCS_MII_LPA_SYM_PAUSE PCS_MII_ADVERT_SYM_PAUSE
#define PCS_MII_LPA_ASYM_PAUSE PCS_MII_ADVERT_ASYM_PAUSE
#define PCS_MII_LPA_RF_MASK PCS_MII_ADVERT_RF_MASK
#define PCS_MII_LPA_RF_SHIFT PCS_MII_ADVERT_RF_SHIFT
#define PCS_MII_LPA_ACK PCS_MII_ADVERT_ACK
#define PCS_MII_LPA_NEXT_PAGE PCS_MII_ADVERT_NEXT_PAGE
typedef union _pcs_anar_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res0 : 16;
uint32_t next_page : 1;
uint32_t ack : 1;
uint32_t remote_fault : 2;
uint32_t res1 : 3;
uint32_t asm_pause : 1;
uint32_t pause : 1;
uint32_t half_duplex : 1;
uint32_t full_duplex : 1;
uint32_t res2 : 5;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t res2 : 5;
uint32_t full_duplex : 1;
uint32_t half_duplex : 1;
uint32_t pause : 1;
uint32_t asm_pause : 1;
uint32_t res1 : 3;
uint32_t remore_fault : 2;
uint32_t ack : 1;
uint32_t next_page : 1;
uint32_t res0 : 16;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} pcs_anar_t, *p_pcs_anar_t;
#define PCS_CFG_EN 0x0001
#define PCS_CFG_SD_OVERRIDE 0x0002
#define PCS_CFG_SD_ACTIVE_LOW 0x0004
#define PCS_CFG_JITTER_STUDY_MASK 0x0018
#define PCS_CFG_JITTER_STUDY_SHIFT 4
#define PCS_CFG_10MS_TIMER_OVERRIDE 0x0020
#define PCS_CFG_MASK 0x0040
typedef union _pcs_cfg_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res0 : 25;
uint32_t mask : 1;
uint32_t override_10ms_timer : 1;
uint32_t jitter_study : 2;
uint32_t sig_det_a_low : 1;
uint32_t sig_det_override : 1;
uint32_t enable : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t enable : 1;
uint32_t sig_det_override : 1;
uint32_t sig_det_a_low : 1;
uint32_t jitter_study : 2;
uint32_t override_10ms_timer : 1;
uint32_t mask : 1;
uint32_t res0 : 25;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} pcs_cfg_t, *p_pcs_cfg_t;
#define PCS_SM_TX_STATE_MASK 0x0000000F
#define PCS_SM_TX_STATE_SHIFT 0
#define PCS_SM_RX_STATE_MASK 0x000000F0
#define PCS_SM_RX_STATE_SHIFT 4
#define PCS_SM_WORD_SYNC_STATE_MASK 0x00000700
#define PCS_SM_WORD_SYNC_STATE_SHIFT 8
#define PCS_SM_SEQ_DETECT_STATE_MASK 0x00001800
#define PCS_SM_SEQ_DETECT_STATE_SHIFT 11
#define PCS_SM_LINK_STATE_MASK 0x0001E000
#define PCS_SM_LINK_STATE_SHIFT 13
#define PCS_SM_LOSS_LINK_C 0x00100000
#define PCS_SM_LOSS_LINK_SYNC 0x00200000
#define PCS_SM_LOSS_SIGNAL_DETECT 0x00400000
#define PCS_SM_NO_LINK_BREAKLINK 0x01000000
#define PCS_SM_NO_LINK_SERDES 0x02000000
#define PCS_SM_NO_LINK_C 0x04000000
#define PCS_SM_NO_LINK_SYNC 0x08000000
#define PCS_SM_NO_LINK_WAIT_C 0x10000000
#define PCS_SM_NO_LINK_NO_IDLE 0x20000000
typedef union _pcs_stat_mc_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res2 : 2;
uint32_t lnk_dwn_ni : 1;
uint32_t lnk_dwn_wc : 1;
uint32_t lnk_dwn_ls : 1;
uint32_t lnk_dwn_nc : 1;
uint32_t lnk_dwn_ser : 1;
uint32_t lnk_loss_bc : 1;
uint32_t res1 : 1;
uint32_t loss_sd : 1;
uint32_t lnk_loss_sync : 1;
uint32_t lnk_loss_c : 1;
uint32_t res0 : 3;
uint32_t link_cfg_stat : 4;
uint32_t seq_detc_stat : 2;
uint32_t word_sync : 3;
uint32_t rx_ctrl : 4;
uint32_t tx_ctrl : 4;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t tx_ctrl : 4;
uint32_t rx_ctrl : 4;
uint32_t word_sync : 3;
uint32_t seq_detc_stat : 2;
uint32_t link_cfg_stat : 4;
uint32_t res0 : 3;
uint32_t lnk_loss_c : 1;
uint32_t lnk_loss_sync : 1;
uint32_t loss_sd : 1;
uint32_t res1 : 1;
uint32_t lnk_loss_bc : 1;
uint32_t lnk_dwn_ser : 1;
uint32_t lnk_dwn_nc : 1;
uint32_t lnk_dwn_ls : 1;
uint32_t lnk_dwn_wc : 1;
uint32_t lnk_dwn_ni : 1;
uint32_t res2 : 2;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} pcs_stat_mc_t, *p_pcs_stat_mc_t;
#define PCS_INTR_STATUS_LINK_CHANGE 0x04
#define PCS_DATAPATH_MODE_PCS 0
#define PCS_DATAPATH_MODE_MII 0x00000002
#define PCS_PACKET_COUNT_TX_MASK 0x000007FF
#define PCS_PACKET_COUNT_RX_MASK 0x07FF0000
#define PCS_PACKET_COUNT_RX_SHIFT 16
#define XPCS_CTRL1_RST 0x8000
#define XPCS_CTRL1_LOOPBK 0x4000
#define XPCS_CTRL1_SPEED_SEL_3 0x2000
#define XPCS_CTRL1_LOW_PWR 0x0800
#define XPCS_CTRL1_SPEED_SEL_1 0x0040
#define XPCS_CTRL1_SPEED_SEL_0_MASK 0x003c
#define XPCS_CTRL1_SPEED_SEL_0_SHIFT 2
typedef union _xpcs_ctrl1_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res3 : 16;
uint32_t reset : 1;
uint32_t csr_lb : 1;
uint32_t csr_speed_sel3 : 1;
uint32_t res2 : 1;
uint32_t csr_low_pwr : 1;
uint32_t res1 : 4;
uint32_t csr_speed_sel1 : 1;
uint32_t csr_speed_sel0 : 4;
uint32_t res0 : 2;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t res0 : 2;
uint32_t csr_speed_sel0 : 4;
uint32_t csr_speed_sel1 : 1;
uint32_t res1 : 4;
uint32_t csr_low_pwr : 1;
uint32_t res2 : 1;
uint32_t csr_speed_sel3 : 1;
uint32_t csr_lb : 1;
uint32_t reset : 1;
uint32_t res3 : 16;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} xpcs_ctrl1_t;
#define XPCS_STATUS1_FAULT 0x0080
#define XPCS_STATUS1_RX_LINK_STATUS_UP 0x0004
#define XPCS_STATUS1_LOW_POWER_ABILITY 0x0002
#define XPCS_STATUS_RX_LINK_STATUS_UP 0x1000
typedef union _xpcs_stat1_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res4 : 16;
uint32_t res3 : 8;
uint32_t csr_fault : 1;
uint32_t res1 : 4;
uint32_t csr_rx_link_stat : 1;
uint32_t csr_low_pwr_ability : 1;
uint32_t res0 : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t res0 : 1;
uint32_t csr_low_pwr_ability : 1;
uint32_t csr_rx_link_stat : 1;
uint32_t res1 : 4;
uint32_t csr_fault : 1;
uint32_t res3 : 8;
uint32_t res4 : 16;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} xpcs_stat1_t;
#define XPCS_SPEED_ABILITY_10_GIG 0x0001
typedef union _xpcs_speed_ab_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1 : 16;
uint32_t res0 : 15;
uint32_t csr_10gig : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t csr_10gig : 1;
uint32_t res0 : 15;
uint32_t res1 : 16;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} xpcs_speed_ab_t;
#define XPCS_DEV_IN_PKG_CSR_VENDOR2 0x80000000
#define XPCS_DEV_IN_PKG_CSR_VENDOR1 0x40000000
#define XPCS_DEV_IN_PKG_DTE_XS 0x00000020
#define XPCS_DEV_IN_PKG_PHY_XS 0x00000010
#define XPCS_DEV_IN_PKG_PCS 0x00000008
#define XPCS_DEV_IN_PKG_WIS 0x00000004
#define XPCS_DEV_IN_PKG_PMD_PMA 0x00000002
#define XPCS_DEV_IN_PKG_CLS_22_REG 0x00000000
typedef union _xpcs_dev_in_pkg_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t csr_vendor2 : 1;
uint32_t csr_vendor1 : 1;
uint32_t res1 : 14;
uint32_t res0 : 10;
uint32_t dte_xs : 1;
uint32_t phy_xs : 1;
uint32_t pcs : 1;
uint32_t wis : 1;
uint32_t pmd_pma : 1;
uint32_t clause_22_reg : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t clause_22_reg : 1;
uint32_t pmd_pma : 1;
uint32_t wis : 1;
uint32_t pcs : 1;
uint32_t phy_xs : 1;
uint32_t dte_xs : 1;
uint32_t res0 : 10;
uint32_t res1 : 14;
uint32_t csr_vendor1 : 1;
uint32_t csr_vendor2 : 1;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} xpcs_dev_in_pkg_t;
#define XPCS_PSC_SEL_MASK 0x0003
#define PSC_SEL_10G_BASE_X_PCS 0x0001
typedef union _xpcs_ctrl2_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1 : 16;
uint32_t res0 : 14;
uint32_t csr_psc_sel : 2;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t csr_psc_sel : 2;
uint32_t res0 : 14;
uint32_t res1 : 16;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} xpcs_ctrl2_t;
#define XPCS_STATUS2_DEV_PRESENT_MASK 0xc000
#define XPCS_STATUS2_TX_FAULT 0x0800
#define XPCS_STATUS2_RX_FAULT 0x0400
#define XPCS_STATUS2_TEN_GBASE_W 0x0004
#define XPCS_STATUS2_TEN_GBASE_X 0x0002
#define XPCS_STATUS2_TEN_GBASE_R 0x0001
typedef union _xpcs_stat2_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res2 : 16;
uint32_t csr_dev_pres : 2;
uint32_t res1 : 2;
uint32_t csr_tx_fault : 1;
uint32_t csr_rx_fault : 1;
uint32_t res0 : 7;
uint32_t ten_gbase_w : 1;
uint32_t ten_gbase_x : 1;
uint32_t ten_gbase_r : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ten_gbase_r : 1;
uint32_t ten_gbase_x : 1;
uint32_t ten_gbase_w : 1;
uint32_t res0 : 7;
uint32_t csr_rx_fault : 1;
uint32_t csr_tx_fault : 1;
uint32_t res1 : 2;
uint32_t csr_dev_pres : 2;
uint32_t res2 : 16;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} xpcs_stat2_t;
#define XPCS_STATUS_LANE_ALIGN 0x1000
#define XPCS_STATUS_PATTERN_TEST_ABLE 0x0800
#define XPCS_STATUS_LANE3_SYNC 0x0008
#define XPCS_STATUS_LANE2_SYNC 0x0004
#define XPCS_STATUS_LANE1_SYNC 0x0002
#define XPCS_STATUS_LANE0_SYNC 0x0001
typedef union _xpcs_stat_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res2 : 16;
uint32_t res1 : 3;
uint32_t csr_lane_align : 1;
uint32_t csr_pattern_test_able : 1;
uint32_t res0 : 7;
uint32_t csr_lane3_sync : 1;
uint32_t csr_lane2_sync : 1;
uint32_t csr_lane1_sync : 1;
uint32_t csr_lane0_sync : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t csr_lane0_sync : 1;
uint32_t csr_lane1_sync : 1;
uint32_t csr_lane2_sync : 1;
uint32_t csr_lane3_sync : 1;
uint32_t res0 : 7;
uint32_t csr_pat_test_able : 1;
uint32_t csr_lane_align : 1;
uint32_t res1 : 3;
uint32_t res2 : 16;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} xpcs_stat_t;
#define XPCS_TEST_CTRL_TX_TEST_ENABLE 0x0004
#define XPCS_TEST_CTRL_TEST_PATTERN_SEL_MASK 0x0003
#define TEST_PATTERN_HIGH_FREQ 0
#define TEST_PATTERN_LOW_FREQ 1
#define TEST_PATTERN_MIXED_FREQ 2
typedef union _xpcs_test_ctl_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1 : 16;
uint32_t res0 : 13;
uint32_t csr_tx_test_en : 1;
uint32_t csr_test_pat_sel : 2;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t csr_test_pat_sel : 2;
uint32_t csr_tx_test_en : 1;
uint32_t res0 : 13;
uint32_t res1 : 16;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} xpcs_test_ctl_t;
#define XPCS_DIAG_EB_ALIGN_ERR3 0x40
#define XPCS_DIAG_EB_ALIGN_ERR2 0x20
#define XPCS_DIAG_EB_ALIGN_ERR1 0x10
#define XPCS_DIAG_EB_DESKEW_OK 0x08
#define XPCS_DIAG_EB_ALIGN_DET3 0x04
#define XPCS_DIAG_EB_ALIGN_DET2 0x02
#define XPCS_DIAG_EB_ALIGN_DET1 0x01
#define XPCS_DIAG_EB_DESKEW_LOSS 0
#define XPCS_DIAG_SYNC_3_INVALID 0x8
#define XPCS_DIAG_SYNC_2_INVALID 0x4
#define XPCS_DIAG_SYNC_1_INVALID 0x2
#define XPCS_DIAG_SYNC_IN_SYNC 0x1
#define XPCS_DIAG_SYNC_LOSS_SYNC 0
#define XPCS_RX_SM_RECEIVE_STATE 1
#define XPCS_RX_SM_FAULT_STATE 0
typedef union _xpcs_diag_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1 : 7;
uint32_t sync_sm_lane3 : 4;
uint32_t sync_sm_lane2 : 4;
uint32_t sync_sm_lane1 : 4;
uint32_t sync_sm_lane0 : 4;
uint32_t elastic_buffer_sm : 8;
uint32_t receive_sm : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t receive_sm : 1;
uint32_t elastic_buffer_sm : 8;
uint32_t sync_sm_lane0 : 4;
uint32_t sync_sm_lane1 : 4;
uint32_t sync_sm_lane2 : 4;
uint32_t sync_sm_lane3 : 4;
uint32_t res1 : 7;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} xpcs_diag_t;
#define XPCS_TX_SM_SEND_UNDERRUN 0x9
#define XPCS_TX_SM_SEND_RANDOM_Q 0x8
#define XPCS_TX_SM_SEND_RANDOM_K 0x7
#define XPCS_TX_SM_SEND_RANDOM_A 0x6
#define XPCS_TX_SM_SEND_RANDOM_R 0x5
#define XPCS_TX_SM_SEND_Q 0x4
#define XPCS_TX_SM_SEND_K 0x3
#define XPCS_TX_SM_SEND_A 0x2
#define XPCS_TX_SM_SEND_SDP 0x1
#define XPCS_TX_SM_SEND_DATA 0
#define XPCS_CFG_VENDOR_DBG_SEL_MASK 0x78
#define XPCS_CFG_VENDOR_DBG_SEL_SHIFT 3
#define XPCS_CFG_BYPASS_SIG_DETECT 0x0004
#define XPCS_CFG_ENABLE_TX_BUFFERS 0x0002
#define XPCS_CFG_XPCS_ENABLE 0x0001
typedef union _xpcs_config_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t msw;
uint32_t lsw;
#elif defined(_LITTLE_ENDIAN)
uint32_t lsw;
uint32_t msw;
#endif
} val;
struct {
#if defined(_BIG_ENDIAN)
uint32_t w1;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1 : 16;
uint32_t res0 : 9;
uint32_t csr_vendor_dbg_sel : 4;
uint32_t csr_bypass_sig_detect : 1;
uint32_t csr_en_tx_buf : 1;
uint32_t csr_xpcs_en : 1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t csr_xpcs_en : 1;
uint32_t csr_en_tx_buf : 1;
uint32_t csr_bypass_sig_detect : 1;
uint32_t csr_vendor_dbg_sel : 4;
uint32_t res0 : 9;
uint32_t res1 : 16;
#endif
} w0;
#if defined(_LITTLE_ENDIAN)
uint32_t w1;
#endif
} bits;
} xpcs_config_t;
#define XPCS_MASK1_FAULT_MASK 0x0080
#define XPCS_MASK1_RX_LINK_STATUS_MASK 0x0040
#define XPCS_PKT_CNTR_TX_PKT_CNT_MASK 0xffff0000
#define XPCS_PKT_CNTR_TX_PKT_CNT_SHIFT 16
#define XPCS_PKT_CNTR_RX_PKT_CNT_MASK 0x0000ffff
#define XPCS_PKT_CNTR_RX_PKT_CNT_SHIFT 0
#define XPCS_TX_STATE_MC_TX_STATE_MASK 0x0f
#define XPCS_DESKEW_ERR_CNTR_MASK 0xff
#define XPCS_SYM_ERR_CNT_L1_MASK 0xffff0000
#define XPCS_SYM_ERR_CNT_L0_MASK 0x0000ffff
#define XPCS_SYM_ERR_CNT_L3_MASK 0xffff0000
#define XPCS_SYM_ERR_CNT_L2_MASK 0x0000ffff
#define XPCS_SYM_ERR_CNT_MULTIPLIER 16
#define ESR_RESET_1 2
#define ESR_RESET_0 1
#define ESR_BLUNT_END_LOOPBACK 2
#define ESR_FORCE_SERDES_SERDES_RDY 1
#define ESR_PLL_CFG_FBDIV_0 0x1
#define ESR_PLL_CFG_FBDIV_1 0x2
#define ESR_PLL_CFG_FBDIV_2 0x4
#define ESR_PLL_CFG_HALF_RATE_0 0x8
#define ESR_PLL_CFG_HALF_RATE_1 0x10
#define ESR_PLL_CFG_HALF_RATE_2 0x20
#define ESR_PLL_CFG_HALF_RATE_3 0x40
#define ESR_PLL_CFG_1G_SERDES (ESR_PLL_CFG_FBDIV_0 | \
ESR_PLL_CFG_HALF_RATE_0 | \
ESR_PLL_CFG_HALF_RATE_1 | \
ESR_PLL_CFG_HALF_RATE_2 | \
ESR_PLL_CFG_HALF_RATE_3)
#define ESR_PLL_CFG_10G_SERDES ESR_PLL_CFG_FBDIV_2
#define ESR_CTL_EN_SYNCDET_0 0x00000001
#define ESR_CTL_EN_SYNCDET_1 0x00000002
#define ESR_CTL_EN_SYNCDET_2 0x00000004
#define ESR_CTL_EN_SYNCDET_3 0x00000008
#define ESR_CTL_OUT_EMPH_0_MASK 0x00000070
#define ESR_CTL_OUT_EMPH_0_SHIFT 4
#define ESR_CTL_OUT_EMPH_1_MASK 0x00000380
#define ESR_CTL_OUT_EMPH_1_SHIFT 7
#define ESR_CTL_OUT_EMPH_2_MASK 0x00001c00
#define ESR_CTL_OUT_EMPH_2_SHIFT 10
#define ESR_CTL_OUT_EMPH_3_MASK 0x0000e000
#define ESR_CTL_OUT_EMPH_3_SHIFT 13
#define ESR_CTL_LOSADJ_0_MASK 0x00070000
#define ESR_CTL_LOSADJ_0_SHIFT 16
#define ESR_CTL_LOSADJ_1_MASK 0x00380000
#define ESR_CTL_LOSADJ_1_SHIFT 19
#define ESR_CTL_LOSADJ_2_MASK 0x01c00000
#define ESR_CTL_LOSADJ_2_SHIFT 22
#define ESR_CTL_LOSADJ_3_MASK 0x0e000000
#define ESR_CTL_LOSADJ_3_SHIFT 25
#define ESR_CTL_RXITERM_0 0x10000000
#define ESR_CTL_RXITERM_1 0x20000000
#define ESR_CTL_RXITERM_2 0x40000000
#define ESR_CTL_RXITERM_3 0x80000000
#define ESR_CTL_1G_SERDES (ESR_CTL_EN_SYNCDET_0 | \
ESR_CTL_EN_SYNCDET_1 | \
ESR_CTL_EN_SYNCDET_2 | \
ESR_CTL_EN_SYNCDET_3 | \
(0x1 << ESR_CTL_OUT_EMPH_0_SHIFT) | \
(0x1 << ESR_CTL_OUT_EMPH_1_SHIFT) | \
(0x1 << ESR_CTL_OUT_EMPH_2_SHIFT) | \
(0x1 << ESR_CTL_OUT_EMPH_3_SHIFT) | \
(0x1 << ESR_CTL_OUT_EMPH_3_SHIFT) | \
(0x1 << ESR_CTL_LOSADJ_0_SHIFT) | \
(0x1 << ESR_CTL_LOSADJ_1_SHIFT) | \
(0x1 << ESR_CTL_LOSADJ_2_SHIFT) | \
(0x1 << ESR_CTL_LOSADJ_3_SHIFT))
#define ESR_TSTCFG_LBTEST_MD_0_MASK 0x00000003
#define ESR_TSTCFG_LBTEST_MD_0_SHIFT 0
#define ESR_TSTCFG_LBTEST_MD_1_MASK 0x0000000c
#define ESR_TSTCFG_LBTEST_MD_1_SHIFT 2
#define ESR_TSTCFG_LBTEST_MD_2_MASK 0x00000030
#define ESR_TSTCFG_LBTEST_MD_2_SHIFT 4
#define ESR_TSTCFG_LBTEST_MD_3_MASK 0x000000c0
#define ESR_TSTCFG_LBTEST_MD_3_SHIFT 6
#define ESR_TSTCFG_LBTEST_PAD (ESR_PAD_LOOPBACK_CH3 | \
ESR_PAD_LOOPBACK_CH2 | \
ESR_PAD_LOOPBACK_CH1 | \
ESR_PAD_LOOPBACK_CH0)
#define ESR_RGMII_PT0_IN_USE 0x00000001
#define ESR_RGMII_PT1_IN_USE 0x00000002
#define ESR_RGMII_PT2_IN_USE 0x00000004
#define ESR_RGMII_PT3_IN_USE 0x00000008
#define ESR_RGMII_REG_RW_TEST 0x00000010
#define ESR_SIG_MASK 0xFFFFFFFF
#define ESR_SIG_P0_BITS_MASK 0x33E0000F
#define ESR_SIG_P1_BITS_MASK 0x0C1F00F0
#define ESR_SIG_SERDES_RDY0_P0 0x20000000
#define ESR_SIG_DETECT0_P0 0x10000000
#define ESR_SIG_SERDES_RDY0_P1 0x08000000
#define ESR_SIG_DETECT0_P1 0x04000000
#define ESR_SIG_XSERDES_RDY_P0 0x02000000
#define ESR_SIG_XDETECT_P0_CH3 0x01000000
#define ESR_SIG_XDETECT_P0_CH2 0x00800000
#define ESR_SIG_XDETECT_P0_CH1 0x00400000
#define ESR_SIG_XDETECT_P0_CH0 0x00200000
#define ESR_SIG_XSERDES_RDY_P1 0x00100000
#define ESR_SIG_XDETECT_P1_CH3 0x00080000
#define ESR_SIG_XDETECT_P1_CH2 0x00040000
#define ESR_SIG_XDETECT_P1_CH1 0x00020000
#define ESR_SIG_XDETECT_P1_CH0 0x00010000
#define ESR_SIG_LOS_P1_CH3 0x00000080
#define ESR_SIG_LOS_P1_CH2 0x00000040
#define ESR_SIG_LOS_P1_CH1 0x00000020
#define ESR_SIG_LOS_P1_CH0 0x00000010
#define ESR_SIG_LOS_P0_CH3 0x00000008
#define ESR_SIG_LOS_P0_CH2 0x00000004
#define ESR_SIG_LOS_P0_CH1 0x00000002
#define ESR_SIG_LOS_P0_CH0 0x00000001
#define ESR_SIG_P0_BITS_MASK_1G (ESR_SIG_SERDES_RDY0_P0 | \
ESR_SIG_DETECT0_P0)
#define ESR_SIG_P1_BITS_MASK_1G (ESR_SIG_SERDES_RDY0_P1 | \
ESR_SIG_DETECT0_P1)
#define ESR_DEBUG_SEL_MASK 0x00000003f
#define ESR_NO_LOOPBACK_CH3 (0x0 << 6)
#define ESR_EWRAP_CH3 (0x1 << 6)
#define ESR_PAD_LOOPBACK_CH3 (0x2 << 6)
#define ESR_REVLOOPBACK_CH3 (0x3 << 6)
#define ESR_NO_LOOPBACK_CH2 (0x0 << 4)
#define ESR_EWRAP_CH2 (0x1 << 4)
#define ESR_PAD_LOOPBACK_CH2 (0x2 << 4)
#define ESR_REVLOOPBACK_CH2 (0x3 << 4)
#define ESR_NO_LOOPBACK_CH1 (0x0 << 2)
#define ESR_EWRAP_CH1 (0x1 << 2)
#define ESR_PAD_LOOPBACK_CH1 (0x2 << 2)
#define ESR_REVLOOPBACK_CH1 (0x3 << 2)
#define ESR_NO_LOOPBACK_CH0 0x0
#define ESR_EWRAP_CH0 0x1
#define ESR_PAD_LOOPBACK_CH0 0x2
#define ESR_REVLOOPBACK_CH0 0x3
#define NXGE_BASE(x, y) \
(((y) << (x ## _SHIFT)) & (x ## _MASK))
#define NXGE_VAL_GET(fieldname, regval) \
(((regval) & ((fieldname) ## _MASK)) >> ((fieldname) ## _SHIFT))
#define NXGE_VAL_SET(fieldname, regval, val) \
{ \
(regval) &= ~((fieldname) ## _MASK); \
(regval) |= ((val) << (fieldname ## _SHIFT)); \
}
#ifdef __cplusplus
}
#endif
#endif