blob: 90fb8ac6d6d105e4c20b0ba90ceb240d028da485 [file] [log] [blame]
/* FILE NAME: air_reg.h
* PURPOSE:
* Define the chip registers in AIR SDK.
* NOTES:
*/
#ifndef AIR_REG_H
#define AIR_REG_H
/* INCLUDE FILE DECLARATIONS
*/
/* NAMING CONSTANT DECLARATIONS
*/
#define PORT_CTRL_PORT_OFFSET (0x200)
/* SYS SCU */
#define RST_CTRL1 (0x100050c0)
#define SYS_SW_RST_OFFT (31)
/* ARL Register Base */
#define REG_ARL_BASE_ADDRESS (0x10200000)
#define AGC (0x000C)
/* fields of AGC */
#define AGC_TICK_SEL (0x1 << 30)
#define MFC (REG_ARL_BASE_ADDRESS + 0x0010)
/* fields of MFC */
#define VTCR_ADDR (0x0090)
#define VTCR_VID_OFFT (0)
#define VTCR_VID_LENG (12)
#define VTCR_VID_RELMASK (0x00000FFF)
#define VTCR_VID_MASK (VTCR_VID_RELMASK << VTCR_VID_OFFT)
#define VTCR_FUNC_OFFT (12)
#define VTCR_FUNC_LENG (4)
#define VTCR_FUNC_RELMASK (0x0000000F)
#define VTCR_FUNC_MASK (VTCR_FUNC_RELMASK << VTCR_FUNC_OFFT)
#define VTCR_FUNC_READ_ACL_RULE (0x4 << VTCR_FUNC_OFFT)
#define VTCR_FUNC_WRITE_ACL_RULE (0x5 << VTCR_FUNC_OFFT)
#define VTCR_FUNC_READ_TRTCM (0x6 << VTCR_FUNC_OFFT)
#define VTCR_FUNC_WRITE_TRTCM (0x7 << VTCR_FUNC_OFFT)
#define VTCR_FUNC_READ_ACL_MASK (0x8 << VTCR_FUNC_OFFT)
#define VTCR_FUNC_WRITE_ACL_MASK (0x9 << VTCR_FUNC_OFFT)
#define VTCR_FUNC_READ_ACL_RULE_CTRL (0xA << VTCR_FUNC_OFFT)
#define VTCR_FUNC_WRITE_ACL_RULE_CTRL (0xB << VTCR_FUNC_OFFT)
#define VTCR_FUNC_READ_ACL_RATE_CTRL (0xC << VTCR_FUNC_OFFT)
#define VTCR_FUNC_WRITE_ACL_RATE_CTRL (0xD << VTCR_FUNC_OFFT)
#define VTCR_IDX_INVLD_OFFT (16)
#define VTCR_IDX_INVLD_RELMASK (0x00000001)
#define VTCR_IDX_INVLD_MASK (VTCR_IDX_INVLD_RELMASK << VTCR_IDX_INVLD_OFFT)
#define VTCR_BUSY_OFFT (31)
#define VTCR_BUSY_LENG (1)
#define VTCR_BUSY_RELMASK (0x00000001)
#define VTCR_BUSY_MASK (VTCR_BUSY_RELMASK << VTCR_BUSY_OFFT)
#define PIM_DSCP(d) (0x0058 + (4 * (d / 10)))
#define UNUF (0x102000B4)
#define UNMF (0x102000B8)
#define BCF (0x102000BC)
#define QRYP (0x102000D8)
#define VAWD1_ADDR (0x0094)
#define VAWD2_ADDR (0x0098)
#define VAWD3_ADDR (0x00E0)
#define VAWD4_ADDR (0x00E4)
#define VAWD5_ADDR (0x00E8)
#define VAWD6_ADDR (0x00EC)
#define VAWD7_ADDR (0x00F0)
#define VAWD8_ADDR (0x00F4)
#define VAWD_ADDR(n) ((n<2)?(VAWD1_ADDR+(0x4*n)):(VAWD3_ADDR+(0x4*(n-2))))
#define SCH_CTRL_BASE (0x1000)
#define SCH_CTRL_PORT_OFFSET (0x100)
#define MMSCR(p) (SCH_CTRL_BASE + (p * SCH_CTRL_PORT_OFFSET) + 0x90)
#define MMSCR0(p, q) (SCH_CTRL_BASE + (p * SCH_CTRL_PORT_OFFSET) + (8 * q))
#define MMSCR1(p, q) (SCH_CTRL_BASE + (p * SCH_CTRL_PORT_OFFSET) + (8 * q) + 0x04)
#define MMSCR2(p, q) (SCH_CTRL_BASE + (p * SCH_CTRL_PORT_OFFSET) + (8 * q) + 0x50)
#define MMSCR3(p, q) (SCH_CTRL_BASE + (p * SCH_CTRL_PORT_OFFSET) + (8 * q) + 0x54)
/* fields of GERLCR */
#define EGC_MFRM_EX_OFFSET (9)
#define EGC_MFRM_EX_LENGTH (1)
#define BMU_CTRL_BASE (0x1800)
#define BMU_CTRL_PORT_OFFSET (0x100)
/* fields of MMDPR */
#define MMDPR_BASE (BMU_CTRL_BASE + 0xC)
#define MMDPR_PORT_OFFSET (0x100)
#define MMDPR_COLOR_OFFSET (0x20)
#define MMDPR_QUEUE_OFFSET (0x4)
#define MMDPR(p,c,q) (MMDPR_BASE + (p * MMDPR_PORT_OFFSET) + (c * MMDPR_COLOR_OFFSET) + (q * MMDPR_QUEUE_OFFSET))
#define MMDPR_EN (1 << 31)
#define MMDPR_PR_OFFSET (24)
#define MMDPR_PR_LENGTH (3)
#define MMDPR_HT_OFFSET (12)
#define MMDPR_HT_LENGTH (9)
#define MMDPR_LT_OFFSET (0)
#define MMDPR_LT_LENGTH (9)
/* fields of GIRLCR */
#define IGC_MFRM_EX_OFFSET (9)
#define IGC_MFRM_EX_LENGTH (1)
#define PORT_CTRL_BASE (0x10208000)
#define PORT_CTRL_REG(p, r) (PORT_CTRL_BASE + (p) * PORT_CTRL_PORT_OFFSET + (r))
#define PORTMATRIX(p) PORT_CTRL_REG(p, 0x44)
#define PCR(p) PORT_CTRL_REG(p, 0x04)
#define PCR_PORT_VLAN_OFFT (0)
#define PCR_PORT_VLAN_LENG (2)
#define PCR_PORT_VLAN_RELMASK (0x00000003)
#define PCR_PORT_VLAN_MASK (PCR_PORT_VLAN_RELMASK << PCR_PORT_VLAN_OFFT)
#define PCR_PORT_RX_MIR_OFFT (16)
#define PCR_PORT_RX_MIR_LENG (2)
#define PCR_PORT_TX_MIR_OFFT (20)
#define PCR_PORT_TX_MIR_LENG (2)
#define PCR_PORT_PRI_OFFT (24)
#define PCR_PORT_PRI_LENG (3)
#define PCR_PORT_PRI_RELMASK (0x00000007)
#define PCR_PORT_PRI_MASK (PCR_PORT_PRI_RELMASK << PCR_PORT_PRI_OFFT)
#define PCR_PORT_ACL_MIS_FWD_OFFT (4)
#define PCR_PORT_ACL_MIS_FWD_LENG (3)
#define PCR_PORT_ACL_MIS_FWD_RELMASK (0x00000007)
#define PCR_PORT_ACL_MIS_FWD_MASK (PCR_PORT_ACL_MIS_FWD_RELMASK << PCR_PORT_ACL_MIS_FWD_OFFT)
#define PCR_EG_TAG_OFFT (28)
#define PCR_EG_TAG_LENG (2)
#define PCR_EG_TAG_RELMASK (0x00000003)
#define PCR_EG_TAG_MASK (PCR_EG_TAG_RELMASK << PCR_EG_TAG_OFFT)
#define PCR_RMK_DSCP_EN (0x1000)
#define PCR_RMK_1Q_EN (0x0800)
#define PVC(p) PORT_CTRL_REG(p, 0x10)
#define PVC_ACC_FRM_OFFT (0)
#define PVC_ACC_FRM_LENG (2)
#define PVC_ACC_FRM_RELMASK (0x00000003)
#define PVC_ACC_FRM_MASK (PVC_ACC_FRM_RELMASK << PVC_ACC_FRM_OFFT)
#define PVC_UC_LKYV_EN_OFFT (2)
#define PVC_UC_LKYV_EN_LENG (1)
#define PVC_UC_LKYV_EN_RELMASK (0x00000001)
#define PVC_UC_LKYV_EN_MASK (PVC_UC_LKYV_EN_RELMASK << PVC_UC_LKYV_EN_OFFT)
#define PVC_MC_LKYV_EN_OFFT (3)
#define PVC_MC_LKYV_EN_LENG (1)
#define PVC_MC_LKYV_EN_RELMASK (0x00000001)
#define PVC_MC_LKYV_EN_MASK (PVC_MC_LKYV_EN_RELMASK << PVC_MC_LKYV_EN_OFFT)
#define PVC_BC_LKYV_EN_OFFT (4)
#define PVC_BC_LKYV_EN_LENG (1)
#define PVC_BC_LKYV_EN_RELMASK (0x00000001)
#define PVC_BC_LKYV_EN_MASK (PVC_BC_LKYV_EN_RELMASK << PVC_BC_LKYV_EN_OFFT)
#define PVC_SPTAG_EN_OFFT (5)
#define PVC_SPTAG_EN_LENG (1)
#define PVC_SPTAG_EN_RELMASK (0x00000001)
#define PVC_SPTAG_EN_MASK (PVC_SPTAG_EN_RELMASK << PVC_SPTAG_EN_OFFT)
#define PVC_VLAN_ATTR_OFFT (6)
#define PVC_VLAN_ATTR_LENG (2)
#define PVC_VLAN_ATTR_RELMASK (0x00000003)
#define PVC_VLAN_ATTR_MASK (PVC_VLAN_ATTR_RELMASK << PVC_VLAN_ATTR_OFFT)
#define PVC_EG_TAG_OFFT (8)
#define PVC_EG_TAG_LENG (3)
#define PVC_EG_TAG_RELMASK (0x00000007)
#define PVC_EG_TAG_MASK (PVC_EG_TAG_RELMASK << PVC_EG_TAG_OFFT)
#define PVC_SPTAG_MODE_OFFT (11)
#define PVC_SPTAG_MODE_LENG (1)
#define PVC_STAG_VPID_OFFT (16)
#define PVC_STAG_VPID_LENG (16)
#define PVC_STAG_VPID_RELMASK (0x0000FFFF)
#define PVC_STAG_VPID_MASK (PVC_STAG_VPID_RELMASK << PVC_STAG_VPID_OFFT)
#define PPBV1(p) PORT_CTRL_REG(p, 0x14)
#define PPBV1_G0_PORT_VID_OFFT (0)
#define PPBV1_G0_PORT_VID_LENG (12)
#define PPBV1_G0_PORT_VID_RELMASK (0x00000FFF)
#define PPBV1_G0_PORT_VID_MASK (PPBV1_G0_PORT_VID_RELMASK << PPBV1_G0_PORT_VID_OFFT)
#define PVID(p) PORT_CTRL_REG(p, 0x48)
#define PVID_PCVID_OFFT (0)
#define PVID_PCVID_LENG (12)
#define PVID_PCVID_RELMASK (0x00000FFF)
#define PVID_PCVID_MASK (PVID_PCVID_RELMASK << PVID_PCVID_OFFT)
#define BSR(p) PORT_CTRL_REG(p, 0x50)
#define BSR1(p) PORT_CTRL_REG(p, 0x54)
#define BSR_EXT1(p) PORT_CTRL_REG(p, 0x58)
#define BSR1_EXT1(p) PORT_CTRL_REG(p, 0x5C)
#define BSR_EXT2(p) PORT_CTRL_REG(p, 0x60)
#define BSR1_EXT2(p) PORT_CTRL_REG(p, 0x64)
#define BSR_EXT3(p) PORT_CTRL_REG(p, 0x68)
#define BSR1_EXT3(p) PORT_CTRL_REG(p, 0x6C)
#define BSR_STORM_COUNT_MSK (0xFF)
#define BSR_STORM_UNIT_MSK (7)
#define BSR_STORM_UNIT_OFFT (8)
#define BSR_STORM_RATE_BASED (0x1)
#define BSR_STORM_DROP_EN (0x10)
#define BSR_STORM_BCST_EN (0x2)
#define BSR_STORM_MCST_EN (0x4)
#define BSR_STORM_UCST_EN (0x8)
#define BSR1_10M_COUNT_OFFT (0)
#define BSR1_100M_COUNT_OFFT (8)
#define BSR1_1000M_COUNT_OFFT (16)
#define BSR1_2500M_COUNT_OFFT (24)
#define PEM(p, q) (PORT_CTRL_REG(p, (0x44 + (4 * (q/2)))))
#define PORT_MAC_CTRL_BASE (0x10210000)
#define PORT_MAC_CTRL_PORT_OFFSET (0x200)
#define PORT_MAC_CTRL_REG(p, r) (PORT_MAC_CTRL_BASE + (p) * PORT_MAC_CTRL_PORT_OFFSET + (r))
#define PMCR(p) PORT_MAC_CTRL_REG(p, 0x00)
#define ARL_CTRL_BASE (0x0000)
#define CFC (0x0004)
/* fields of CFC */
#define CFC_MIRROR_EN_OFFSET (19)
#define CFC_MIRROR_EN_LEN (1)
#define CFC_MIRROR_PORT_OFFSET (16)
#define CFC_MIRROR_PORT_LEN (3)
#define MFC_CPU_PORT_OFFSET (8)
#define MFC_CPU_PORT_LENGTH (5)
#define MFC_CPU_EN_OFFSET (15)
#define MFC_CPU_EN_LENGTH (1)
#define ISC (0x0018)
#define TSRA1 (0x0084)
#define TSRA2 (0x0088)
#define ATRD (0x008C)
#define CPGC (0x00B0)
#define PSC(p) PORT_CTRL_REG(p, 0xC)
#define PSC_DIS_LRN_OFFSET (4)
#define PSC_DIS_LRN_LENGTH (1)
#define PSC_SA_CNT_EN_OFFSET (5)
#define PSC_SA_CNT_EN_LENGTH (1)
#define PSC_SA_CNT_LMT_OFFSET (8)
#define PSC_SA_CNT_LMT_LENGTH (12)
#define PSC_SA_CNT_LMT_REALMASK (0x00000FFF)
#define PSC_SA_CNT_LMT_MASK (PSC_SA_CNT_LMT_REALMASK << PSC_SA_CNT_LMT_OFFSET)
#define PSC_SA_CNT_LMT_MAX (0x800)
/* fields of CPGC */
#define COL_EN (0x01)
#define COL_CLK_EN (0x02)
#define CKGCR (0x10213E1C)
#define CKG_LNKDN_GLB_STOP (0x01)
#define CKG_LNKDN_PORT_STOP (0x02)
/* fields of TRTCM*/
#define TRTCM (ARL_CTRL_BASE + 0x009C)
#define TRTCM_EN (1 << 31)
#define ARL_TRUNK_BASE (0x10200000)
#define PTC (ARL_TRUNK_BASE + 0x400)
#define PTSEED (ARL_TRUNK_BASE + 0x404)
#define PTGC (ARL_TRUNK_BASE + 0x408)
#define PTG(g) (ARL_TRUNK_BASE + 0x40C + ((g) * 0x8 ))
#define PTGRSTS (ARL_TRUNK_BASE + 0x44C)
#define MIR (REG_ARL_BASE_ADDRESS + (0xCC))
/* fields of MIR */
#define MIR_MIRROR_BASE_OFFSER (8)
#define MIR_MIRROR_EN_OFFSER(p) ((p) * MIR_MIRROR_BASE_OFFSER + 0x07)
#define MIR_MIRROR_EN_LEN (1)
#define MIR_MIRROR_PORT_OFFSER(p) ((p) * MIR_MIRROR_BASE_OFFSER + 0x00)
#define MIR_MIRROR_PORT_LEN (5)
#define MIR_MIRROR_TAG_TX_EN_OFFSER(p) ((p) * MIR_MIRROR_BASE_OFFSER + 0x06)
#define MIR_MIRROR_TAG_TX_EN_LEN (1)
/* fields of ATA1 */
#define ATA1 (REG_ARL_BASE_ADDRESS + 0x0304)
#define ATA1_MAC_ADDR_MSB_OFFSET (0)
#define ATA1_MAC_ADDR_MSB_LENGTH (32)
//#define ATA1_SAT_ADDR_OFFSET (0)
//#define ATA1_SAT_ADDR_LENGTH (11)
//#define ATA1_SAT_BANK_OFFSET (16)
//#define ATA1_SAT_BANK_LENGTH (4)
/* fields of ATA2 */
#define ATA2 (REG_ARL_BASE_ADDRESS + 0x0308)
#define ATA2_MAC_AGETIME_OFFSET (0)
#define ATA2_MAC_AGETIME_LENGTH (9)
#define ATA2_MAC_LIFETIME_OFFSET (9)
#define ATA2_MAC_LIFETIME_LENGTH (1)
#define ATA2_MAC_UNAUTH_OFFSET (10)
#define ATA2_MAC_UNAUTH_LENGTH (1)
#define ATA2_MAC_ADDR_LSB_OFFSET (16)
#define ATA2_MAC_ADDR_LSB_LENGTH (16)
/* fields of ATWD */
#define ATWD (REG_ARL_BASE_ADDRESS + 0x0324)
#define ATWD_MAC_LIVE_OFFSET (0)
#define ATWD_MAC_LIVE_LENGTH (1)
#define ATWD_MAC_LEAK_OFFSET (1)
#define ATWD_MAC_LEAK_LENGTH (1)
#define ATWD_MAC_UPRI_OFFSET (2)
#define ATWD_MAC_UPRI_LENGTH (3)
#define ATWD_MAC_FWD_OFFSET (5)
#define ATWD_MAC_FWD_LENGTH (3)
#define ATWD_MAC_MIR_OFFSET (8)
#define ATWD_MAC_MIR_LENGTH (2)
#define ATWD_MAC_ETAG_OFFSET (12)
#define ATWD_MAC_ETAG_LENGTH (3)
#define ATWD_MAC_IVL_OFFSET (15)
#define ATWD_MAC_IVL_LENGTH (1)
#define ATWD_MAC_VID_OFFSET (16)
#define ATWD_MAC_VID_LENGTH (12)
#define ATWD_MAC_FID_OFFSET (28)
#define ATWD_MAC_FID_LENGTH (4)
/* fields of ATWD2 */
#define ATWD2 (REG_ARL_BASE_ADDRESS + 0x0328)
#define ATWD2_MAC_PORT_OFFSET (0)
#define ATWD2_MAC_PORT_LENGTH (8)
/* fields of ATC */
#define ATC (REG_ARL_BASE_ADDRESS + 0x0300)
#define ATC_MAC_OFFSET (0)
#define ATC_MAC_LENGTH (3)
#define ATC_SAT_OFFSET (4)
#define ATC_SAT_LENGTH (2)
#define ATC_MAT_OFFSET (7)
#define ATC_MAT_LENGTH (5)
#define ATC_ENTRY_HIT_OFFSET (12)
#define ATC_ENTRY_HIT_LENGTH (4)
#define ATC_ADDR_OFFSET (16)
#define ATC_ADDR_LENGTH (9)
#define ATC_SINGLE_HIT_OFFSET (30)
#define ATC_SINGLE_HIT_LENGTH (1)
#define ATC_BUSY_OFFSET (31)
#define ATC_BUSY_LENGTH (1)
typedef enum {
_ATC_CMD_READ = 0,
_ATC_CMD_WRITE,
_ATC_CMD_CLEAN,
_ATC_CMD_SEARCH = 4,
_ATC_CMD_SEARCH_NEXT,
_ATC_CMD_LAST
}_ATC_CMD_T;
#define ATC_CMD_READ (_ATC_CMD_READ << ATC_MAC_OFFSET)
#define ATC_CMD_WRITE (_ATC_CMD_WRITE << ATC_MAC_OFFSET)
#define ATC_CMD_CLEAN (_ATC_CMD_CLEAN << ATC_MAC_OFFSET)
#define ATC_CMD_SEARCH (_ATC_CMD_SEARCH << ATC_MAC_OFFSET)
#define ATC_CMD_SEARCH_NEXT (_ATC_CMD_SEARCH_NEXT << ATC_MAC_OFFSET)
typedef enum {
_ATC_SAT_MAC = 0,
_ATC_SAT_DIP,
_ATC_SAT_SIP,
_ATC_SAT_ADDR,
_ATC_SAT_LAST
}_ATC_SAT_T;
#define ATC_SAT_MAC (_ATC_SAT_MAC << ATC_SAT_OFFSET)
#define ATC_SAT_DIP (_ATC_SAT_DIP << ATC_SAT_OFFSET)
#define ATC_SAT_SIP (_ATC_SAT_SIP << ATC_SAT_OFFSET)
#define ATC_SAT_ADDR (_ATC_SAT_ADDR << ATC_SAT_OFFSET)
typedef enum {
_ATC_MAT_ALL = 0,
_ATC_MAT_MAC,
_ATC_MAT_DYNAMIC_MAC,
_ATC_MAT_STATIC_MAC,
_ATC_MAT_DIP,
_ATC_MAT_DIPV4,
_ATC_MAT_DIPV6,
_ATC_MAT_SIP,
_ATC_MAT_SIPV4,
_ATC_MAT_SIPV6,
_ATC_MAT_MAC_BY_VID,
_ATC_MAT_MAC_BY_FID,
_ATC_MAT_MAC_BY_PORT,
_ATC_MAT_SIP_BY_DIPV4,
_ATC_MAT_SIP_BY_SIPV4,
_ATC_MAT_SIP_BY_DIPV6,
_ATC_MAT_SIP_BY_SIPV6,
_ATC_MAT_LAST
}_ATC_MAT_T;
#define ATC_MAT_ALL (_ATC_MAT_ALL << ATC_MAT_OFFSET)
#define ATC_MAT_MAC (_ATC_MAT_MAC << ATC_MAT_OFFSET)
#define ATC_MAT_DYNAMIC_MAC (_ATC_MAT_DYNAMIC_MAC << ATC_MAT_OFFSET)
#define ATC_MAT_STATIC_MAC (_ATC_MAT_STATIC_MAC << ATC_MAT_OFFSET)
#define ATC_MAT_DIP (_ATC_MAT_DIP << ATC_MAT_OFFSET)
#define ATC_MAT_DIPV4 (_ATC_MAT_DIPV4 << ATC_MAT_OFFSET)
#define ATC_MAT_DIPV6 (_ATC_MAT_DIPV6 << ATC_MAT_OFFSET)
#define ATC_MAT_SIP (_ATC_MAT_SIP << ATC_MAT_OFFSET)
#define ATC_MAT_SIPV4 (_ATC_MAT_SIPV4 << ATC_MAT_OFFSET)
#define ATC_MAT_SIPV6 (_ATC_MAT_SIPV6 << ATC_MAT_OFFSET)
#define ATC_MAT_MAC_BY_VID (_ATC_MAT_MAC_BY_VID << ATC_MAT_OFFSET)
#define ATC_MAT_MAC_BY_FID (_ATC_MAT_MAC_BY_FID << ATC_MAT_OFFSET)
#define ATC_MAT_MAC_BY_PORT (_ATC_MAT_MAC_BY_PORT << ATC_MAT_OFFSET)
#define ATC_MAT_SIP_BY_DIPV4 (_ATC_MAT_SIP_BY_DIPV4 << ATC_MAT_OFFSET)
#define ATC_MAT_SIP_BY_SIPV4 (_ATC_MAT_SIP_BY_SIPV4 << ATC_MAT_OFFSET)
#define ATC_MAT_SIP_BY_DIPV6 (_ATC_MAT_SIP_BY_DIPV6 << ATC_MAT_OFFSET)
#define ATC_MAT_SIP_BY_SIPV6 (_ATC_MAT_SIP_BY_SIPV6 << ATC_MAT_OFFSET)
#define ATC_START_BUSY (0x01 << ATC_BUSY_OFFSET)
/* fields of AAC*/
#define AAC (REG_ARL_BASE_ADDRESS + 0x00A0)
#define AAC_AGE_UNIT_OFFSET (0)
#define AAC_AGE_UNIT_LENGTH (11)
#define AAC_AGE_CNT_OFFSET (12)
#define AAC_AGE_CNT_LENGTH (9)
#define AAC_AUTO_FLUSH_OFFSET (28)
#define AAC_AUTO_FLUSH_LENGTH (1)
#define AGDIS (REG_ARL_BASE_ADDRESS + 0x00C0)
/* fields of ATWDS */
#define ATRDS (REG_ARL_BASE_ADDRESS + 0x0330)
#define ATRD0_MAC_SEL_OFFSET (0)
#define ATRD0_MAC_SEL_LENGTH (2)
/* fields of ATRD0 */
#define ATRD0 (REG_ARL_BASE_ADDRESS + 0x0334)
//need to verify 32'b 0
#define ATRD0_MAC_LIVE_OFFSET (0)
#define ATRD0_MAC_LIVE_LENGTH (1)
#define ATRD0_MAC_LIFETIME_OFFSET (1)
#define ATRD0_MAC_LIFETIME_LENGTH (2)
#define ATRD0_MAC_TYPE_OFFSET (3)
#define ATRD0_MAC_TYPE_LENGTH (2)
#define ATRD0_MAC_LEAK_OFFSET (5)
#define ATRD0_MAC_LEAK_LENGTH (1)
#define ATRD0_MAC_UPRI_OFFSET (6)
#define ATRD0_MAC_UPRI_LENGTH (3)
#define ATRD0_MAC_IVL_OFFSET (9)
#define ATRD0_MAC_IVL_LENGTH (1)
#define ATRD0_MAC_VID_OFFSET (10)
#define ATRD0_MAC_VID_LENGTH (12)
#define ATRD0_MAC_ETAG_OFFSET (22)
#define ATRD0_MAC_ETAG_LENGTH (3)
#define ATRD0_MAC_FID_OFFSET (25)
#define ATRD0_MAC_FID_LENGTH (4)
#define ATRD1_MAC_UNAUTH_OFFSET (31)
#define ATRD1_MAC_UNAUTH_LENGTH (1)
/* fields of ATRD1 */
#define ATRD1 (REG_ARL_BASE_ADDRESS + 0x0338)
//need to verify 32'b 0
#define ATRD1_MAC_FWD_OFFSET (0)
#define ATRD1_MAC_FWD_LENGTH (3)
#define ATRD1_MAC_AGETIME_OFFSET (3)
#define ATRD1_MAC_AGETIME_LENGTH (9)
#define ATRD1_MAC_MIR_OFFSET (12)
#define ATRD1_MAC_MIR_LENGTH (4)
#define ATRD1_MAC_ADDR_LSB_OFFSET (16)
#define ATRD1_MAC_ADDR_LSB_LENGTH (16)
/* fields of ATRD2 */
#define ATRD2 (REG_ARL_BASE_ADDRESS + 0x033C)
#define ATRD2_MAC_ADDR_MSB_OFFSET (0)
#define ATRD2_MAC_ADDR_MSB_LENGTH (32)
/* fields of ATRD3 */
#define ATRD3 (REG_ARL_BASE_ADDRESS + 0x0340)
//need to verify 32'b 0
#define ATRD3_MAC_PORT_OFFSET (0)
#define ATRD3_MAC_PORT_LENGTH (8)
#define REG_SCH_PORT_ADDRESS (REG_ARL_BASE_ADDRESS + 0xc000)
#define MMSCR0_Q0(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p))
#define MMSCR1_Q0(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x4)
#define MMSCR0_Q1(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x8)
#define MMSCR1_Q1(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0xc)
#define MMSCR0_Q2(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x10)
#define MMSCR1_Q2(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x14)
#define MMSCR0_Q3(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x18)
#define MMSCR1_Q3(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x1c)
#define MMSCR0_Q4(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x20)
#define MMSCR1_Q4(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x24)
#define MMSCR0_Q5(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x28)
#define MMSCR1_Q5(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x2c)
#define MMSCR0_Q6(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x30)
#define MMSCR1_Q6(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x34)
#define MMSCR0_Q7(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x38)
#define MMSCR1_Q7(p) (REG_SCH_PORT_ADDRESS + PORT_CTRL_PORT_OFFSET * (p) + 0x3c)
#define PUPW(p) PORT_CTRL_REG(p, 0x30)
#define PEM1 (REG_ARL_BASE_ADDRESS + 0x0048)
#define PEM2 (REG_ARL_BASE_ADDRESS + 0x004c)
#define PEM3 (REG_ARL_BASE_ADDRESS + 0x0050)
#define PEM4 (REG_ARL_BASE_ADDRESS + 0x0054)
#define PIM1 (REG_ARL_BASE_ADDRESS + 0x0058)
#define PIM2 (REG_ARL_BASE_ADDRESS + 0x005c)
#define PIM3 (REG_ARL_BASE_ADDRESS + 0x0060)
#define PIM4 (REG_ARL_BASE_ADDRESS + 0x0064)
#define PIM5 (REG_ARL_BASE_ADDRESS + 0x0068)
#define PIM6 (REG_ARL_BASE_ADDRESS + 0x006c)
#define PIM7 (REG_ARL_BASE_ADDRESS + 0x0070)
/* fields of ingress and egress rate control */
#define IRLCR(p) (REG_ARL_BASE_ADDRESS + (p * PORT_CTRL_PORT_OFFSET) + 0x4000)
#define ERLCR(p) (REG_ARL_BASE_ADDRESS + (p * PORT_CTRL_PORT_OFFSET) + 0xC040)
#define REG_RATE_CIR_OFFT (0)
#define REG_RATE_CIR_LENG (17)
#define REG_TB_EN_OFFT (19)
#define REG_RATE_TB_OFFT (20)
#define REG_RATE_TB_LENG (4)
#define REG_RATE_CBS_OFFT (24)
#define REG_RATE_CBS_LENG (7)
#define REG_RATE_EN_OFFT (31)
/* fields of global ingress and egress rate control */
#define GIRLCR (REG_ARL_BASE_ADDRESS + 0x7E24)
#define GERLCR (REG_ARL_BASE_ADDRESS + 0xFE00)
#define REG_IPG_BYTE_OFFT (0)
#define REG_IPG_BYTE_LENG (8)
#define REG_MFRM_EX_OFFT (9)
#define REG_MFRM_EX_LENG (1)
#define SFLOW_MFRM_EX_OFFT (25)
#define SFLOW_MFRM_EX_LENG (1)
#define L1_RATE_IPG_BYTE_CNT (0x18)
#define L2_RATE_IPG_BYTE_CNT (0x04)
/* fields of PTC */
#define PTC_INFO_SEL_SP (1 << 0)
#define PTC_INFO_SEL_SA (1 << 1)
#define PTC_INFO_SEL_DA (1 << 2)
#define PTC_INFO_SEL_SIP (1 << 3)
#define PTC_INFO_SEL_DIP (1 << 4)
#define PTC_INFO_SEL_SPORT (1 << 5)
#define PTC_INFO_SEL_DPORT (1 << 6)
#define SSC(p) PORT_CTRL_REG(p, 0x00)
#define PIC(p) PORT_CTRL_REG(p, 0x08)
/* fields of IGMP SNOOPING */
#define IGMP_HW_GQUERY 1
#define IGMP_HW_SQUERY (1 << 2)
#define IGMP_HW_JOIN (1 << 4)
#define IGMPV3_HW_JOIN (1 << 6)
#define DMAC_01005E (1 << 8)
#define DMAC_3333XX (1 << 9)
#define MCAST_DIP (1 << 10)
#define IGMP_HW_LEAVE (1 << 12)
#define IGMP_AUTO_DOWNGRADE (1 << 20)
#define IGMP_AUTO_ROUTER (1 << 18)
#define IGMP_ROBUSTNESS_OFFSET 16
#define IGMP_QUERYINTERVAL_OFFSET 8
/* fields of MLD SNOOPING */
#define MLD_HW_GQUERY (1 << 1)
#define MLD_HW_SQUERY (1 << 3)
#define MLD_HW_JOIN (1 << 5)
#define MLDV2_HW_JOIN (1 << 7)
#define MLD_HW_LEAVE (1 << 13)
#define MLD_AUTO_ROUTER (1 << 19)
#define PMSR(p) PORT_MAC_CTRL_REG(p, 0x10)
/* fields of loop detect */
#define LPDET_CTRL 0x30C0
#define LPDET_OFFSET 24
#define LPDET_TRIGGER_OFFSET 23
#define LPDET_TRIGGER_PERIODICAL 1
#define LPDET_TRIGGER_BROADCAST 0
/* Port debug count register */
#define DBG_CNT_BASE 0x3018
#define DBG_CNT_PORT_BASE 0x100
#define DBG_CNT(p) (DBG_CNT_BASE + (p) * DBG_CNT_PORT_BASE)
#define DIS_CLR (1 << 31)
#define PFC_STS(p) PORT_MAC_CTRL_REG(p, 0x24)
#define PFC_CTRL (PORT_MAC_CTRL_BASE + 0xB0)
#define PFC_EN(p) (1 << p)
#define PFC_SYN_EN(p) (0x80 << p)
#define GMACCR (PORT_MAC_CTRL_BASE + 0x3e00)
#define MTCC_LMT_S 8
#define MAX_RX_JUMBO_S 4
/* Values of MAX_RX_PKT_LEN */
#define RX_PKT_LEN_1518 (0)
#define RX_PKT_LEN_1536 (1)
#define RX_PKT_LEN_1522 (2)
#define RX_PKT_LEN_MAX_JUMBO (3)
/* Fields of PMCR */
#define FORCE_MODE (1 << 31)
#define IPG_CFG_S (20)
#define IPG_CFG_M (0x300000)
#define EXT_PHY (1 << 19)
#define MAC_MODE (1 << 18)
#define MAC_TX_EN (1 << 16)
#define MAC_RX_EN (1 << 15)
#define MAC_PRE (1 << 14)
#define BKOFF_EN (1 << 12)
#define BACKPR_EN (1 << 11)
#define FORCE_EEE1G (1 << 7)
#define FORCE_EEE100 (1 << 6)
#define FORCE_RX_FC (1 << 5)
#define FORCE_TX_FC (1 << 4)
#define FORCE_SPD_S (28)
#define FORCE_SPD_M (0x70000000)
#define FORCE_DPX (1 << 25)
#define FORCE_LINK (1 << 24)
/* Fields of PMSR */
#define EEE1G_STS (1 << 7)
#define EEE100_STS (1 << 6)
#define RX_FC_STS (1 << 5)
#define TX_FC_STS (1 << 4)
#define MAC_SPD_STS_S (28)
#define MAC_SPD_STS_M (0x70000000)
#define MAC_DPX_STS (1 << 25)
#define MAC_LNK_STS (1 << 24)
/* Values of MAC_SPD_STS */
#define MAC_SPD_10 0
#define MAC_SPD_100 1
#define MAC_SPD_1000 2
#define MAC_SPD_2500 3
/* Values of IPG_CFG */
#define IPG_96BIT 0
#define IPG_96BIT_WITH_SHORT_IPG 1
#define IPG_64BIT 2
/* Register of MIB Base address */
#define MAC_GLOBAL_REG_BASE 0x10213E00
#define ARL_ACL_ATK_REG_BASE 0x10200000
#define MIB_BASE 0x10214000
#define MIB_PORT_OFFSET 0x0200
#define MIB_ACL_EVENT_OFFSET 0x0F00
#define MIB_TDPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x00)
#define MIB_TCRC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x04)
#define MIB_TUPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x08)
#define MIB_TMPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x0C)
#define MIB_TBPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x10)
#define MIB_TCEC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x14)
#define MIB_TSCEC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x18)
#define MIB_TMCEC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x1C)
#define MIB_TDEC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x20)
#define MIB_TLCEC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x24)
#define MIB_TXCEC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x28)
#define MIB_TPPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x2C)
#define MIB_TL64PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x30)
#define MIB_TL65PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x34)
#define MIB_TL128PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x38)
#define MIB_TL256PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x3C)
#define MIB_TL512PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x40)
#define MIB_TL1024PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x44)
#define MIB_TL1519PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x48)
#define MIB_TOCL(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x4C)
#define MIB_TOCH(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x50)
#define MIB_TODPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x54)
#define MIB_TOCL2(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x58)
#define MIB_TOCH2(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x5C)
#define MIB_RDPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x80)
#define MIB_RFPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x84)
#define MIB_RUPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x88)
#define MIB_RMPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x8C)
#define MIB_RBPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x90)
#define MIB_RAEPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x94)
#define MIB_RCEPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x98)
#define MIB_RUSPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x9C)
#define MIB_RFEPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xA0)
#define MIB_ROSPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xA4)
#define MIB_RJEPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xA8)
#define MIB_RPPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xAC)
#define MIB_RL64PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xB0)
#define MIB_RL65PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xB4)
#define MIB_RL128PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xB8)
#define MIB_RL256PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xBC)
#define MIB_RL512PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xC0)
#define MIB_RL1024PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xC4)
#define MIB_RL1519PC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xC8)
#define MIB_ROCL(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xCC)
#define MIB_ROCH(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xD0)
#define MIB_RCDPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xD4)
#define MIB_RIDPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xD8)
#define MIB_RADPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xDC)
#define MIB_FCDPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xE0)
#define MIB_WRDPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xE4)
#define MIB_MRDPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xE8)
#define MIB_ROCL2(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xEC)
#define MIB_ROCH2(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xF0)
#define MIB_SFSPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xF4)
#define MIB_SFTPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xF8)
#define MIB_RXC_DPC(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0xFC)
#define MIB_TMIB_HF_STS(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x7C)
#define MIB_RMIB_HF_STS(p) (MIB_BASE + (p) * MIB_PORT_OFFSET + 0x100)
#define ACL_MIB_CNT_CFG (ARL_ACL_ATK_REG_BASE + 0x534)
#define ACL_MIB_CNT (ARL_ACL_ATK_REG_BASE + 0x538)
#define MIB_CCR (MAC_GLOBAL_REG_BASE + 0x0030)
#define MIB_PCLR (MAC_GLOBAL_REG_BASE + 0x0034)
#define MIB_CCR_MIB_ENABLE_OFFSET (31)
#define MIB_CCR_MIB_ENABLE_LENGTH (1)
#define MIB_CCR_MIB_ENABLE (1 << 31)
#define MIB_CCR_RX_OCT_CNT_GOOD (1 << 7)
#define MIB_CCR_RX_OCT_CNT_BAD (1 << 6)
#define MIB_CCR_TX_OCT_CNT_GOOD (1 << 5)
#define MIB_CCR_TX_OCT_CNT_BAD (1 << 4)
#define CSR_ACL_MIB_CLEAR (1 << 0)
#define SGMII_REG_BASE 0x5000
#define SGMII_REG_PORT_BASE 0x1000
#define SGMII_REG(p, r) (SGMII_REG_BASE + (p) * SGMII_REG_PORT_BASE + (r))
#define PCS_CONTROL_1(p) SGMII_REG(p, 0x00)
#define PCS_SPEED_ABILITY(p) SGMII_REG(p, 0x08)
#define SGMII_MODE(p) SGMII_REG(p, 0x20)
#define QPHY_PWR_STATE_CTRL(p) SGMII_REG(p, 0xE8)
#define PHYA_CTRL_SIGNAL3(p) SGMII_REG(p, 0x128)
/* Fields of PCS_CONTROL_1 */
#define SGMII_AN_ABILITY (1 << 19)
#define SGMII_LINK_STATUS (1 << 18)
#define SGMII_AN_ENABLE_OFFT (12)
#define SGMII_AN_ENABLE (1 << 12)
#define SGMII_AN_RESTART (1 << 9)
/* Fields of SGMII_MODE */
#define SGMII_REMOTE_FAULT_DIS (1 << 8)
#define SGMII_IF_MODE_FORCE_DUPLEX (1 << 4)
#define SGMII_IF_MODE_FORCE_SPEED_OFFT (0x2)
#define SGMII_IF_MODE_FORCE_SPEED_R (0x2)
#define SGMII_IF_MODE_FORCE_SPEED_M (0x0C)
#define SGMII_IF_MODE_ADVERT_AN (1 << 1)
/* Config of AN Tx control information (SGMII)
* LINK- 1:link up, 0:link down
* DUPLEX- 1:full, 0:half
* MODE - 1:SGMII, 0:Clause37
*/
#define AN_CONFIG_TX_LINK (1 << 15)
#define AN_CONFIG_TX_DUPLEX (1 << 12)
#define AN_CONFIG_TX_SPEED_OFFT (10)
#define AN_CONFIG_TX_SPEED_MSK (3 << AN_CONFIG_TX_SPEED_OFFT)
#define AN_CONFIG_TX_MODE_SGMII (1)
/* Config of AN Tx control information (Clause37)
* MODE - 1:SGMII, 0:Clause37
*/
#define AN_CONFIG_TX_FULL_DUPLEX_CL37 (1 << 5)
#define AN_CONFIG_TX_HALF_DUPLEX_CL37 (1 << 6)
#define AN_CONFIG_TX_SYMMETRIC_PAUSE (1 << 7)
#define AN_CONFIG_TX_ASYMMETRIC_PAUSE (1 << 8)
/* Values of SGMII_IF_MODE_FORCE_SPEED */
#define SGMII_IF_MODE_FORCE_SPEED_10 0
#define SGMII_IF_MODE_FORCE_SPEED_100 1
#define SGMII_IF_MODE_FORCE_SPEED_1000 2
/* Fields of QPHY_PWR_STATE_CTRL */
#define PHYA_PWD (1 << 4)
/* Fields of PHYA_CTRL_SIGNAL3 */
#define RG_TPHY_SPEED_S 2
#define RG_TPHY_SPEED_M 0x0c
/* Values of RG_TPHY_SPEED */
#define RG_TPHY_SPEED_1000 0
#define RG_TPHY_SPEED_2500 1
#define SCU_BASE 0x10000000
#define RG_RGMII_TXCK_C (SCU_BASE + 0x1d0)
#define HSGMII_AN_CSR_BASE 0x10220000
#define SGMII_REG_AN0 (HSGMII_AN_CSR_BASE + 0x000)
#define SGMII_REG_AN_13 (HSGMII_AN_CSR_BASE + 0x034)
#define SGMII_REG_AN_FORCE_CL37 (HSGMII_AN_CSR_BASE + 0x060)
#define HSGMII_CSR_PCS_BASE 0x10220000
#define RG_HSGMII_PCS_CTROL_1 (HSGMII_CSR_PCS_BASE + 0xa00)
#define RG_AN_SGMII_MODE_FORCE (HSGMII_CSR_PCS_BASE + 0xa24)
#define MULTI_SGMII_CSR_BASE 0x10224000
#define SGMII_STS_CTRL_0 (MULTI_SGMII_CSR_BASE + 0x018)
#define MSG_RX_CTRL_0 (MULTI_SGMII_CSR_BASE + 0x100)
#define MSG_RX_LIK_STS_0 (MULTI_SGMII_CSR_BASE + 0x514)
#define MSG_RX_LIK_STS_2 (MULTI_SGMII_CSR_BASE + 0x51c)
#define PHY_RX_FORCE_CTRL_0 (MULTI_SGMII_CSR_BASE + 0x520)
#define XFI_CSR_PCS_BASE 0x10225000
#define RG_USXGMII_AN_CONTROL_0 (XFI_CSR_PCS_BASE + 0xbf8)
#define MULTI_PHY_RA_CSR_BASE 0x10226000
#define RG_RATE_ADAPT_CTRL_0 (MULTI_PHY_RA_CSR_BASE + 0x000)
#define RATE_ADP_P0_CTRL_0 (MULTI_PHY_RA_CSR_BASE + 0x100)
#define MII_RA_AN_ENABLE (MULTI_PHY_RA_CSR_BASE + 0x300)
#define QP_DIG_CSR_BASE 0x1022a000
#define QP_CK_RST_CTRL_4 (QP_DIG_CSR_BASE + 0x310)
#define QP_DIG_MODE_CTRL_0 (QP_DIG_CSR_BASE + 0x324)
#define QP_DIG_MODE_CTRL_1 (QP_DIG_CSR_BASE + 0x330)
#define SERDES_WRAPPER_BASE 0x1022c000
#define USGMII_CTRL_0 (SERDES_WRAPPER_BASE + 0x000)
#define QP_PMA_TOP_BASE 0x1022e000
#define PON_RXFEDIG_CTRL_0 (QP_PMA_TOP_BASE + 0x100)
#define PON_RXFEDIG_CTRL_9 (QP_PMA_TOP_BASE + 0x124)
#define SS_LCPLL_PWCTL_SETTING_2 (QP_PMA_TOP_BASE + 0x208)
#define SS_LCPLL_TDC_FLT_2 (QP_PMA_TOP_BASE + 0x230)
#define SS_LCPLL_TDC_FLT_5 (QP_PMA_TOP_BASE + 0x23c)
#define SS_LCPLL_TDC_PCW_1 (QP_PMA_TOP_BASE + 0x248)
#define INTF_CTRL_8 (QP_PMA_TOP_BASE + 0x320)
#define INTF_CTRL_9 (QP_PMA_TOP_BASE + 0x324)
#define PLL_CTRL_0 (QP_PMA_TOP_BASE + 0x400)
#define PLL_CTRL_2 (QP_PMA_TOP_BASE + 0x408)
#define PLL_CTRL_3 (QP_PMA_TOP_BASE + 0x40c)
#define PLL_CTRL_4 (QP_PMA_TOP_BASE + 0x410)
#define PLL_CK_CTRL_0 (QP_PMA_TOP_BASE + 0x414)
#define RX_DLY_0 (QP_PMA_TOP_BASE + 0x614)
#define RX_CTRL_2 (QP_PMA_TOP_BASE + 0x630)
#define RX_CTRL_5 (QP_PMA_TOP_BASE + 0x63c)
#define RX_CTRL_6 (QP_PMA_TOP_BASE + 0x640)
#define RX_CTRL_7 (QP_PMA_TOP_BASE + 0x644)
#define RX_CTRL_8 (QP_PMA_TOP_BASE + 0x648)
#define RX_CTRL_26 (QP_PMA_TOP_BASE + 0x690)
#define RX_CTRL_42 (QP_PMA_TOP_BASE + 0x6d0)
#define QP_ANA_CSR_BASE 0x1022f000
#define RG_QP_RX_DAC_EN (QP_ANA_CSR_BASE + 0x00)
#define RG_QP_RXAFE_RESERVE (QP_ANA_CSR_BASE + 0x04)
#define RG_QP_CDR_LPF_MJV_LIM (QP_ANA_CSR_BASE + 0x0c)
#define RG_QP_CDR_LPF_SETVALUE (QP_ANA_CSR_BASE + 0x14)
#define RG_QP_CDR_PR_CKREF_DIV1 (QP_ANA_CSR_BASE + 0x18)
#define RG_QP_CDR_PR_KBAND_DIV_PCIE (QP_ANA_CSR_BASE + 0x1c)
#define RG_QP_CDR_FORCE_IBANDLPF_R_OFF (QP_ANA_CSR_BASE + 0x20)
#define RG_QP_TX_MODE_16B_EN (QP_ANA_CSR_BASE + 0x28)
#define RG_QP_PLL_IPLL_DIG_PWR_SEL (QP_ANA_CSR_BASE + 0x3c)
#define RG_QP_PLL_SDM_ORD (QP_ANA_CSR_BASE + 0x40)
#define ETHER_SYS_BASE 0x1028c800
#define RG_P5MUX_MODE (ETHER_SYS_BASE + 0x00)
#define RG_FORCE_CKDIR_SEL (ETHER_SYS_BASE + 0x04)
#define RG_SWITCH_MODE (ETHER_SYS_BASE + 0x08)
#define RG_FORCE_MAC5_SB (ETHER_SYS_BASE + 0x2c)
#define CSR_RMII (ETHER_SYS_BASE + 0x70)
#define SYS_CTRL 0x7000
#define SW_PHY_RST (1 << 2)
#define SW_SYS_RST (1 << 1)
#define SW_REG_RST (1 << 0)
#define PHY_IAC 0x1000e000
#define CLKGEN_CTRL 0x7500
#define CLK_SKEW_OUT_S 8
#define CLK_SKEW_OUT_M 0x300
#define CLK_SKEW_IN_S 6
#define CLK_SKEW_IN_M 0xc0
#define RXCLK_NO_DELAY (1 << 5)
#define TXCLK_NO_REVERSE (1 << 4)
#define GP_MODE_S 1
#define GP_MODE_M 0x06
#define GP_CLK_EN (1 << 0)
/* Values of GP_MODE */
#define GP_MODE_RGMII 0
#define GP_MODE_MII 1
#define GP_MODE_REV_MII 2
/* Values of CLK_SKEW_IN */
#define CLK_SKEW_IN_NO_CHANGE 0
#define CLK_SKEW_IN_DELAY_100PPS 1
#define CLK_SKEW_IN_DELAY_200PPS 2
#define CLK_SKEW_IN_REVERSE 3
/* Values of CLK_SKEW_OUT */
#define CLK_SKEW_OUT_NO_CHANGE 0
#define CLK_SKEW_OUT_DELAY_100PPS 1
#define CLK_SKEW_OUT_DELAY_200PPS 2
#define CLK_SKEW_OUT_REVERSE 3
#define HWSTRAP 0x7800
#define XTAL_FSEL_S 7
#define XTAL_FSEL_M (1 << 7)
#define XTAL_40MHZ 0
#define XTAL_25MHZ 1
#define PLLGP_EN 0x7820
#define EN_COREPLL (1 << 2)
#define SW_CLKSW (1 << 1)
#define SW_PLLGP (1 << 0)
#define PLLGP_CR0 0x78a8
#define RG_COREPLL_EN (1 << 22)
#define RG_COREPLL_POSDIV_S 23
#define RG_COREPLL_POSDIV_M 0x3800000
#define RG_COREPLL_SDM_PCW_S 1
#define RG_COREPLL_SDM_PCW_M 0x3ffffe
#define RG_COREPLL_SDM_PCW_CHG (1 << 0)
#define MHWSTRAP 0x7804
#define STRAP_CHG_STRAP (1 << 8)
#define STRAP_PHY_EN (1 << 6)
#define TOP_SIG_SR 0x780c
#define PAD_DUAL_SGMII_EN (1 << 1)
/* RGMII and SGMII PLL clock */
#define ANA_PLLGP_CR2 0x78b0
#define ANA_PLLGP_CR5 0x78bc
/* Efuse Register Define */
#define GBE_EFUSE 0x7bc8
#define GBE_SEL_EFUSE_EN (1 << 0)
/* GPIO_PAD_0 */
#define GPIO_MODE0 0x7c0c
#define GPIO_MODE0_S 0
#define GPIO_MODE0_M 0xf
#define GPIO_0_INTERRUPT_MODE 0x1
#define SMT0_IOLB 0x7f04
#define SMT_IOLB_5_SMI_MDC_EN (1 << 5)
/* PHY CL22 reg */
#define PHY_PAGE_0 0x0
/* Mode Control Register */
#define PHY_MCR 0x00
#define MCR_SR (1 << 15)
#define MCR_LB (1 << 14)
#define MCR_MR_FC_SPD_INT_0 (1 << 13)
#define MCR_AN_EN (1 << 12)
#define MCR_PW_DN (1 << 11)
#define MCR_ISO (1 << 10)
#define MCR_RST_AN (1 << 9)
#define MCR_MR_DUX (1 << 8)
#define MCR_MR_CLS_TEST (1 << 7)
#define MCR_MR_FC_SPD_INT_1 (1 << 6)
/* Mode Status Register */
#define PHY_MSR 0x01
#define MSR_CAP_100T4 (1 << 15)
#define MSR_CAP_100X_FDX (1 << 14)
#define MSR_CAP_100X_HDX (1 << 13)
#define MSR_CAP_10T_FDX (1 << 12)
#define MSR_CAP_10T_HDX (1 << 11)
#define MSR_CAP_100T2_HDX (1 << 10)
#define MSR_CAP_100T2_FDX (1 << 9)
#define MSR_EXT_STA_EN (1 << 8)
#define MSR_PRAM_SUP_CAP (1 << 6)
#define MSR_AN_COMP (1 << 5)
#define MSR_RMT_FAULT (1 << 4)
#define MSR_AN_CAP (1 << 3)
#define MSR_LINK_STA (1 << 2)
#define MSR_JAB_DECT (1 << 1)
#define MSR_EXT_CAP (1 << 0)
/* Auto-Negotiation Advertisement Register */
#define PHY_AN_ADV 0x04
#define AN_ADV_NX_PAGE_REQ (1 << 15)
#define AN_ADV_RF (1 << 13)
#define AN_ADV_CAP_PAUSE (3 << 10)
#define AN_ADV_CAP_100_T4 (1 << 9)
#define AN_ADV_CAP_100_FDX (1 << 8)
#define AN_ADV_CAP_100_HDX (1 << 7)
#define AN_ADV_CAP_10_FDX (1 << 6)
#define AN_ADV_CAP_10_HDX (1 << 5)
#define AN_ADV_802_9_ISLAN_16T (2 << 0)
#define AN_ADV_802_3 (1 << 0)
/* Auto-Negotiation Link Partner Advertisement Register */
#define PHY_AN_LP_ADV 0x05
#define AN_LP_NX_PAGE_REQ (1 << 15)
#define AN_LP_ACK (1 << 14)
#define AN_LP_RF (1 << 13)
#define AN_LP_CAP_PAUSE (3 << 10)
#define AN_LP_CAP_100_T4 (1 << 9)
#define AN_LP_CAP_100_FDX (1 << 8)
#define AN_LP_CAP_100_HDX (1 << 7)
#define AN_LP_CAP_10_FDX (1 << 6)
#define AN_LP_CAP_10_HDX (1 << 5)
#define AN_LP_802_9_ISLAN_16T (2 << 0)
#define AN_LP_802_3 (1 << 0)
/* 1000BASE-T Control Register */
#define PHY_CR1G 0x09
#define CR1G_TEST_TM4 (4 << 13)
#define CR1G_TEST_TM3 (3 << 13)
#define CR1G_TEST_TM2 (2 << 13)
#define CR1G_TEST_TM1 (1 << 13)
#define CR1G_TEST_NORMAL (0 << 13)
#define CR1G_MS_EN (1 << 12)
#define CR1G_MS_CONF (1 << 11)
#define CR1G_PORT_TYPE (1 << 10)
#define CR1G_ADV_CAP1000_FDX (1 << 9)
#define CR1G_ADV_CAP1000_HDX (1 << 8)
/* 1000BASE-T Status Register */
#define PHY_SR1G 0x0A
#define SR1G_MS_CFG_FAULT (1 << 15)
#define SR1G_MS_CFG_RES (1 << 14)
#define SR1G_LOC_RX (1 << 13)
#define SR1G_RMT_RX (1 << 12)
#define SR1G_CAP1000_FDX (1 << 11)
#define SR1G_CAP1000_HDX (1 << 10)
#define SR1G_IDLE_ERR_MASK 0xFF
#define PHY_PAGE_1 0x1
/* Ethernet Packet Generator Control Register */
#define PHY_EPG 0x1D
#define EPG_EN (1 << 15)
#define EPG_RUN (1 << 14)
#define EPG_TX_DUR (1 << 13)
#define EPG_PKT_LEN_10KB (3 << 11)
#define EPG_PKT_LEN_1518B (2 << 11)
#define EPG_PKT_LEN_64B (1 << 11)
#define EPG_PKT_LEN_125B (0 << 11)
#define EPG_PKT_GAP (1 << 10)
#define EPG_DES_ADDR(a) ( ( (a) & 0xF ) << 6 )
#define EPG_SUR_ADDR(a) ( ( (a) & 0xF ) << 2 )
#define EPG_PL_TYP_RANDOM (1 << 1)
#define EPG_BAD_FCS (1 << 0)
/* external*/
#define EXPHY_CMD_WRITE (0x10)
#define DFETAILDC_COEFF_L (0x11)
#define DFETAILDC_COEFF_M (0x12)
/* PHY CL22 reg */
#define PHY_PAGE (0x1F)
/* PHY CL45 reg */
#define PHY_DEV_07H (0x07)
#define PHY_DEV_1FH (0x1F)
#define PHY_DEV_1EH (0x1E)
/* dev 07h, reg 03Ch: EEE Advertisement Register */
#define EEE_ADV_REG (0x3C)
#define EEE_ADV_1000BT (1 << 2)
#define EEE_ADV_100BT (1 << 1)
/* dev 1Eh, reg 013h: TX pair delay Register */
#define TX_PAIR_DELAY_SEL_REG (0x013)
/* dev 1Eh, reg 03Ch: Bypass power-down Register */
#define BYPASS_POWER_DOWN_REG0 (0x3C)
#define BYPASS_POWER_DOWN_REG1 (0x3D)
#define BYPASS_POWER_DOWN_REG2 (0x3E)
/* dev 1Eh, reg 145h: T10 Test Conttrol Register */
#define PD_DIS (1 << 15)
#define FC_TDI_EN (1 << 14)
#define FC_DI_ACT (1 << 13)
#define FC_LITN_NO_COMP (1 << 12)
#define FC_MDI_CO_MDIX (3 << 3)
#define FC_MDI_CO_MDI (2 << 3)
#define FC_MDI_CO_NOT (0 << 3)
#define FC_10T_POLAR_SWAP (3 << 1)
#define FC_10T_POLAR_NORMAL (2 << 1)
#define FC_10T_POLAR_NOT (0 << 1)
/* dev 1Eh, reg 14Ah: DSP control 1 Register */
#define DSP_CONTROL_REG (0x14A)
#define PICMD_MISER_MODE_INT(v) (((v) & 0x7ff) << 5)
/* dev 1Eh, reg 20Bh: DSP state machine PM control Register */
#define DSP_FRE_PM_REG (0x20B)
/* dev 1Eh, reg 20Eh: DSP state machine FRE control Register */
#define DSP_FRE_REG (0x20E)
#define DSP_FRE_RP_FSM_EN (1 << 4)
#define DSP_FRE_DW_AUTO_INC (1 << 2)
#define DSP_FRE_WR_EN (1 << 1)
#define DSP_FRE_SW_RST (1 << 0)
/* dev 1Eh, reg 2d1h: Register */
#define RG_LPI_REG (0x2D1)
#define RG_LPI_VCO_EEE_STGO_EN (1 << 10)
#define RG_LPI_TR_READY (1 << 9)
#define RG_LPI_SKIP_SD_SLV_TR (1 << 8)
#define VCO_SLICER_THRES_H (0x33)
/* dev 1Fh, reg 021h: LED Basic control Register */
#define LED_BCR (0x021)
#define LED_BCR_EXT_CTRL (1 << 15)
#define LED_BCR_EVT_ALL (1 << 4)
#define LED_BCR_CLK_EN (1 << 3)
#define LED_BCR_TIME_TEST (1 << 2)
#define LED_BCR_MODE_MASK (3)
#define LED_BCR_MODE_DISABLE (0)
#define LED_BCR_MODE_2LED (1)
#define LED_BCR_MODE_3LED_1 (2)
#define LED_BCR_MODE_3LED_2 (3)
/* dev 1Fh, reg 022h: LED On Duration Register */
#define LED_ON_DUR (0x022)
#define LED_ON_DUR_MASK (0xFFFF)
/* dev 1Fh, reg 023h: LED Blinking Duration Register */
#define LED_BLK_DUR (0x023)
#define LED_BLK_DUR_MASK (0xFFFF)
/* dev 1Fh, reg 024h: LED On Control Register */
#define LED_ON_CTRL(i) (0x024 + ( (i) * 2 ))
#define LED_ON_EN (1 << 15)
#define LED_ON_POL (1 << 14)
#define LED_ON_EVT_MASK (0x7F)
#define LED_ON_EVT_FORCE (1 << 6)
#define LED_ON_EVT_HDX (1 << 5)
#define LED_ON_EVT_FDX (1 << 4)
#define LED_ON_EVT_LINK_DN (1 << 3)
#define LED_ON_EVT_LINK_10M (1 << 2)
#define LED_ON_EVT_LINK_100M (1 << 1)
#define LED_ON_EVT_LINK_1000M (1 << 0)
/* dev 1Fh, reg 025h: LED Blinking Control Register */
#define LED_BLK_CTRL(i) (0x025 + ( (i) * 2 ))
#define LED_BLK_EVT_MASK (0x3FF)
#define LED_BLK_EVT_FORCE (1 << 9)
#define LED_BLK_EVT_RX_IDL (1 << 8)
#define LED_BLK_EVT_RX_CRC (1 << 7)
#define LED_BLK_EVT_CLS (1 << 6)
#define LED_BLK_EVT_10M_RX_ACT (1 << 5)
#define LED_BLK_EVT_10M_TX_ACT (1 << 4)
#define LED_BLK_EVT_100M_RX_ACT (1 << 3)
#define LED_BLK_EVT_100M_TX_ACT (1 << 2)
#define LED_BLK_EVT_1000M_RX_ACT (1 << 1)
#define LED_BLK_EVT_1000M_TX_ACT (1 << 0)
/* dev 1Fh, reg 27Bh: 10M Driver Register */
#define CR_RG_TX_CM_10M(val) ( ( (val) & 0x3 ) << 12 )
#define CR_RG_DELAY_TX_10M(val) ( ( (val) & 0x3 ) << 8 )
#define CR_DA_TX_GAIN_10M_EEE(val) ( ( ( ( (val) / 10 ) - 3 ) & 0x7 ) << 4 )
#define CR_DA_TX_GAIN_10M(val) ( ( ( (val) / 10 ) - 3 ) & 0x7 )
/* dev 1Fh, reg 403h: PLL_group Control Register */
#define PLL_GROUP_CONTROL_REG (0x403)
#define RG_SYSPLL_DDSFBK_EN (1 << 12)
#define RG_SYSPLL_DMY1 (3 << 8)
#define RG_SYSPLL_EEE_EN (1 << 7) //1:enable/0:disable EEE mode when RG_SYSPLL_EEE_EN_PYPASS = 1
#define RG_SYSPLL_EEE_EN_PYPASS (1 << 6) //EEE enable is control by 0:top/1:RG_SYSPLL_EEE_EN
#define RG_SYSPLL_AFE_PWD (1 << 5) //1:enable/0:disable analog power down when RG_SYSPLL_AFE_PWD_BYPASS = 1
#define RG_SYSPLL_AFE_PWD_BYPASS (1 << 4) //Analog power down is control by 0:top/1:RG_SYSPLL_AFE_PWD
#define RG_SYSPLL_EFUSE_DIS (1 << 3) //1:efuse mode / 0:disable efuse mode, and use internal RG
#define RG_CLKDRV_FORCEIN (3 << 1) //analog test mode
#define RG_XSQ_LPF_EN (1 << 0) //analog test mode
/* Register of ACL address */
#define ARL_GLOBAL_CNTRL (REG_ARL_BASE_ADDRESS + 0x00c)
#define ACL_BASE (REG_ARL_BASE_ADDRESS + 0x500)
#define ACL_GLOBAL_CFG (ACL_BASE + 0x00)
#define ACL_PORT_EN (ACL_BASE + 0x04)
#define ACL_GROUP_CFG (ACL_BASE + 0x08)
#define ACL_MEM_CFG (ACL_BASE + 0x0c)
#define ACL_MEM_CFG_WDATA0 (ACL_BASE + 0x10)
#define ACL_MEM_CFG_WDATA1 (ACL_BASE + 0x14)
#define ACL_MEM_CFG_WDATA2 (ACL_BASE + 0x18)
#define ACL_MEM_CFG_WDATA3 (ACL_BASE + 0x1c)
#define ACL_MEM_CFG_RDATA0 (ACL_BASE + 0x20)
#define ACL_MEM_CFG_RDATA1 (ACL_BASE + 0x24)
#define ACL_MEM_CFG_RDATA2 (ACL_BASE + 0x28)
#define ACL_MEM_CFG_RDATA3 (ACL_BASE + 0x2c)
#define ACL_STATUS (ACL_BASE + 0x30)
#define ACL_TRTCM (REG_ARL_BASE_ADDRESS + 0x100)
#define ACL_TRTCMA (REG_ARL_BASE_ADDRESS + 0x104)
#define ACL_TRTCMW_CBS (REG_ARL_BASE_ADDRESS + 0x108)
#define ACL_TRTCMW_EBS (REG_ARL_BASE_ADDRESS + 0x10C)
#define ACL_TRTCMW_CIR (REG_ARL_BASE_ADDRESS + 0x110)
#define ACL_TRTCMW_EIR (REG_ARL_BASE_ADDRESS + 0x114)
#define ACL_TRTCMR_CBS (REG_ARL_BASE_ADDRESS + 0x118)
#define ACL_TRTCMR_EBS (REG_ARL_BASE_ADDRESS + 0x11c)
#define ACL_TRTCMR_CIR (REG_ARL_BASE_ADDRESS + 0x120)
#define ACL_TRTCMR_EIR (REG_ARL_BASE_ADDRESS + 0x124)
#define ACLRMC (REG_ARL_BASE_ADDRESS + 0x470)
#define ACLRMD1 (REG_ARL_BASE_ADDRESS + 0x474)
#define ACLRMD2 (REG_ARL_BASE_ADDRESS + 0x478)
#define ACL_UDF_BASE (REG_ARL_BASE_ADDRESS + 0x200)
#define ACL_AUTC (ACL_UDF_BASE + 0x00)
#define ACL_AUTW0 (ACL_UDF_BASE + 0x08)
#define ACL_AUTW1 (ACL_UDF_BASE + 0x0c)
#define ACL_AUTW2 (ACL_UDF_BASE + 0x10)
#define ACL_AUTR0 (ACL_UDF_BASE + 0x20)
#define ACL_AUTR1 (ACL_UDF_BASE + 0x24)
#define ACL_AUTR2 (ACL_UDF_BASE + 0x28)
/* Register of DPCR */
#define BMU_PORT_BASE (0x10204000)
#define DPCR_COLOR_OFFSET (0x20)
#define DPCR_QUEUE_OFFSET (0x4)
#define DPCR_EN(p) (BMU_PORT_BASE + (p * PORT_CTRL_PORT_OFFSET) + 0x08)
#define DPCR_BASE (BMU_PORT_BASE + 0x10)
#define DPCR(p, c, q) (DPCR_BASE + (p * PORT_CTRL_PORT_OFFSET) + (c * DPCR_COLOR_OFFSET) + (q * DPCR_QUEUE_OFFSET))
/* Register of VLAN */
#define VTCR (0x10200600)
#define VLNWDATA0 (0x10200604)
#define VLNWDATA1 (0x10200608)
#define VLNWDATA2 (0x1020060C)
#define VLNWDATA3 (0x10200610)
#define VLNWDATA4 (0x10200614)
#define VLNRDATA0 (0x10200618)
#define VLNRDATA1 (0x1020061C)
#define VLNRDATA2 (0x10200620)
#define VLNRDATA3 (0x10200624)
#define VLNRDATA4 (0x10200628)
/* MACRO FUNCTION DECLARATIONS
*/
/* DATA TYPE DECLARATIONS
*/
/* EXPORTED SUBPROGRAM SPECIFICATIONS
*/
#endif /* AIR_REG_H */