blob: 3459cefcab9b5437e5f13f4c51c6135068a0fc6f [file] [log] [blame]
/* FILE NAME: an8855_reg.h
* PURPOSE:
* It provides AN8855 register definition.
* NOTES:
*
*/
#ifndef AN8855_REG_H
#define AN8855_REG_H
#define PORT_CTRL_BASE 0x10208000
#define PORT_CTRL_PORT_OFFSET 0x200
#define PORT_CTRL_REG(p, r) (PORT_CTRL_BASE + (p) * PORT_CTRL_PORT_OFFSET + (r))
#define PCR(p) PORT_CTRL_REG(p, 0x04)
#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)
/* 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 GMACCR (PORT_MAC_CTRL_BASE + 0x30e0)
#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
#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 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_LINK_STATUS (1 << 18)
#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_S 0x2
#define SGMII_IF_MODE_FORCE_SPEED_M 0x0c
#define SGMII_IF_MODE_ADVERT_AN (1 << 1)
/* 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 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 IAC_MAX_BUSY_TIME (1000)
#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 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)
#endif /* End of AN8855_REG_H */