#ifndef __COMCERTO_GEM100_H__ #define __COMCERTO_GEM100_H__ #include #define GEM_DEF_PCLK_DIV (MDC_DIV_32) //////////////////////////////////////////////////////////// // GEMAC IP wrapper // //////////////////////////////////////////////////////////// #define GEM_ARM_FIFO_CTRL 0x0000 #define GEM_ARM_TX_FIFO_SIZE 0x0014 #define GEM_ARM_RX_FIFO_SIZE 0x0024 #define GEM_ARM_RX_FIFO_HIGH 0x0028 #define GEM_ARM_RX_FIFO_LOW 0x002C #define GEM_FIFO_CTRL 0xD000 #define GEM_RX_FIFO_HIGH 0xD024 #define GEM_RX_FIFO_LOW 0xD028 #define GEM_IP 0xE000 #define GEM_CFG 0xF000 #define GEM_TX_CTRL 0xF004 #define GEM_TX_COLL 0xF008 #define GEM_RX_CTRL 0xF010 #define GEM_RX_STAT_PKTSIZE 0xF014 #define GEM_RX_STAT_FIFODEPTH 0xF018 #define GEM_RX_STAT_FIFODATA 0xF01C #define GEM_FIFO_CTRL_TXFF_EN (1 << 0) #define GEM_FIFO_CTRL_HBTXRQ_EN (1 << 1) #define GEM_FIFO_CTRL_RXFF_EN (1 << 3) #define GEM_FIFO_CTRL_HBRXRQ_EN (1 << 4) #define GEM_FIFO_CTRL_TXCP_INH (1 << 5) #define GEM_FIFO_CTRL_RXCMPLTIE (1 << 11) #define GEM_CONF_MODE_SEL_PIN (0 << 0) #define GEM_CONF_MODE_SEL_GEM (1 << 0) #define GEM_CONF_MODE_GEM_MASK (7 << 1) #define GEM_CONF_MODE_GEM_MII (0 << 1) #define GEM_CONF_MODE_GEM_GMII (1 << 1) #define GEM_CONF_MODE_GEM_RMII (2 << 1) #define GEM_CONF_MODE_GEM_RGMII (3 << 1) #define GEM_CONF_MODE_GEM_SMII (6 << 1) #define GEM_CONF_MODE_PIN_MASK (7 << 4) #define GEM_CONF_MODE_PIN_MII (0 << 4) #define GEM_CONF_MODE_PIN_GMII (1 << 4) #define GEM_CONF_MODE_PIN_RMII (2 << 4) #define GEM_CONF_MODE_PIN_RGMII (3 << 4) #define GEM_CONF_MODE_PIN_SMII (6 << 4) #define GEM_CONF_DUPLEX_SEL_PHY (0 << 8) #define GEM_CONF_DUPLEX_SEL_GEM (1 << 8) #define GEM_CONF_DUPLEX_GEM_HALF (0 << 9) #define GEM_CONF_DUPLEX_GEM_FULL (1 << 9) #define GEM_CONF_DUPLEX_PHY_HALF (0 << 10) #define GEM_CONF_DUPLEX_PHY_FULL (1 << 10) #define GEM_CONF_SPEED_SEL_PHY (0 << 11) #define GEM_CONF_SPEED_SEL_GEM (1 << 11) #define GEM_CONF_SPEED_MASK (3 << 12) #define GEM_CONF_SPEED_GEM_10M (0 << 12) #define GEM_CONF_SPEED_GEM_100M (1 << 12) #define GEM_CONF_SPEED_GEM_1G (2 << 12) #define GEM_CONF_SPEED_PHY_10M (0 << 14) #define GEM_CONF_SPEED_PHY_100M (1 << 14) #define GEM_CONF_SPEED_PHY_1G (2 << 14) #define GEM_CONF_PHY_LINK_DOWN (0 << 16) #define GEM_CONF_PHY_LINK_UP (1 << 16) #define GEM_CONF_GEM_LOOPBACK (1 << 17) #define GEM_TXCTRL_DMAIF_EN (1 << 0) #define GEM_TXCTRL_CRC_EN (1 << 1) #define GEM_TXCTRL_RETR_EN (1 << 2) #define GEM_TXCTRL_TX_STATE 0xf0000 #define GEM_RXCTRL_DMAIF_EN (1 << 0) #define GEM_RXCTRL_RX_STATE 0xf0000 // Host fifo control bits #define ARM_FIFO_RXDREQWE (1 << 2) #define ARM_FIFO_TXDREQRE (1 << 3) #define ARM_FIFO_TXFF_RES (1 << 12) #define ARM_FIFO_RXFF_RES (1 << 13) #define ARM_FIFO_RXCP_INH (1 << 15) /* Define some bit positions for registers. */ /* Bit positions for network control register */ #define GEM_READ_SNAP (1<<14) /* Read snapshot register */ #define GEM_TAKE_SNAP (1<<13) /* Take a snapshot */ #define GEM_TX_0Q_PAUSE (1<<12) /* Transmit zero quantum pause frame */ #define GEM_TX_PAUSE (1<<11) /* Transmit pause frame */ #define GEM_TX_HALT (1<<10) /* Halt transmission after curr frame */ #define GEM_TX_START (1<<9) /* Start tx (tx_go) */ #define GEM_STATS_WR_EN (1<<7) /* Enable writing to stat registers */ #define GEM_STATS_INC (1<<6) /* Increment statistic registers */ #define GEM_STATS_CLR (1<<5) /* Clear statistic registers */ #define GEM_MDIO_EN (1<<4) /* Enable MDIO port */ #define GEM_TX_EN (1<<3) /* Enable transmit circuits */ #define GEM_RX_EN (1<<2) /* Enable receive circuits */ #define GEM_LB_MAC (1<<1) /* Perform local loopback at MAC */ #define GEM_LB_PHY (1<<0) /* Perform ext loopback through PHY */ /* Bit positions for network configuration register */ #define GEM_RX_NO_PAUSE (1<<23) /* Do not copy pause frames to memory */ #define GEM_AHB_WIDTH1 (1<<22) /* Bit 1 for defining AHB width */ #define GEM_AHB_WIDTH0 (1<<21) /* Bit 0 for defining AHB width */ #define GEM_MDC_DIV2 (1<<20) /* PCLK divisor for MDC, bit 2 */ #define GEM_MDC_DIV1 (1<<19) /* PCLK divisor for MDC, bit 1 */ #define GEM_MDC_DIV0 (1<<18) /* PCLK divisor for MDC, bit 0 */ #define GEM_RX_NO_FCS (1<<17) /* Discard FCS from received frames. */ #define GEM_RX_LEN_CHK (1<<16) /* Receive length check. */ #define GEM_RX_OFFSET_BASE 14 /* Pos of LSB for rx buffer offsets. */ #define GEM_RX_OFFSET1 (1<<(GEM_RX_OFFSET_BASE + 1)) /* RX offset bit 1 */ #define GEM_RX_OFFSET0 (1<