/* B2_TST_CTRL1 8 bit Test Control Register 1 */ enum {
TST_FRC_DPERR_MR = 1<<7, /* force DATAPERR on MST RD */
TST_FRC_DPERR_MW = 1<<6, /* force DATAPERR on MST WR */
TST_FRC_DPERR_TR = 1<<5, /* force DATAPERR on TRG RD */
TST_FRC_DPERR_TW = 1<<4, /* force DATAPERR on TRG WR */
TST_FRC_APERR_M = 1<<3, /* force ADDRPERR on MST */
TST_FRC_APERR_T = 1<<2, /* force ADDRPERR on TRG */
TST_CFG_WRITE_ON = 1<<1, /* Enable Config Reg WR */
TST_CFG_WRITE_OFF= 1<<0, /* Disable Config Reg WR */
};
/* B2_MAC_CFG 8 bit MAC Configuration / Chip Revision */ enum {
CFG_CHIP_R_MSK = 0xf<<4, /* Bit 7.. 4: Chip Revision */ /* Bit 3.. 2: reserved */
CFG_DIS_M2_CLK = 1<<1, /* Disable Clock for 2nd MAC */
CFG_SNG_MAC = 1<<0, /* MAC Config: 0=2 MACs / 1=1 MAC*/
};
/* B2_CHIP_ID 8 bit Chip Identification Number */ enum {
CHIP_ID_GENESIS = 0x0a, /* Chip ID for GENESIS */
CHIP_ID_YUKON = 0xb0, /* Chip ID for YUKON */
CHIP_ID_YUKON_LITE = 0xb1, /* Chip ID for YUKON-Lite (Rev. A1-A3) */
CHIP_ID_YUKON_LP = 0xb2, /* Chip ID for YUKON-LP */
CHIP_ID_YUKON_XL = 0xb3, /* Chip ID for YUKON-2 XL */
CHIP_ID_YUKON_EC = 0xb6, /* Chip ID for YUKON-2 EC */
CHIP_ID_YUKON_FE = 0xb7, /* Chip ID for YUKON-2 FE */
/* B2_TI_TEST 8 Bit Timer Test */ /* B2_IRQM_TEST 8 bit IRQ Moderation Timer Test */ /* B28_DPT_TST 8 bit Descriptor Poll Timer Test Reg */ enum {
TIM_T_ON = 1<<2, /* Test mode on */
TIM_T_OFF = 1<<1, /* Test mode off */
TIM_T_STEP = 1<<0, /* Test step */
};
/* Transmit Arbiter Registers MAC 1 and 2, use SK_REG() to access */ /* TXA_ITI_INI 32 bit Tx Arb Interval Timer Init Val */ /* TXA_ITI_VAL 32 bit Tx Arb Interval Timer Value */ /* TXA_LIM_INI 32 bit Tx Arb Limit Counter Init Val */ /* TXA_LIM_VAL 32 bit Tx Arb Limit Counter Value */
#define TXA_MAX_VAL 0x00ffffffUL /* Bit 23.. 0: Max TXA Timer/Cnt Val */
/* TXA_CTRL 8 bit Tx Arbiter Control Register */ enum {
TXA_ENA_FSYNC = 1<<7, /* Enable force of sync Tx queue */
TXA_DIS_FSYNC = 1<<6, /* Disable force of sync Tx queue */
TXA_ENA_ALLOC = 1<<5, /* Enable alloc of free bandwidth */
TXA_DIS_ALLOC = 1<<4, /* Disable alloc of free bandwidth */
TXA_START_RC = 1<<3, /* Start sync Rate Control */
TXA_STOP_RC = 1<<2, /* Stop sync Rate Control */
TXA_ENA_ARB = 1<<1, /* Enable Tx Arbiter */
TXA_DIS_ARB = 1<<0, /* Disable Tx Arbiter */
};
/* * Bank 4 - 5
*/ /* Transmit Arbiter Registers MAC 1 and 2, use SK_REG() to access */ enum {
TXA_ITI_INI = 0x0200,/* 32 bit Tx Arb Interval Timer Init Val*/
TXA_ITI_VAL = 0x0204,/* 32 bit Tx Arb Interval Timer Value */
TXA_LIM_INI = 0x0208,/* 32 bit Tx Arb Limit Counter Init Val */
TXA_LIM_VAL = 0x020c,/* 32 bit Tx Arb Limit Counter Value */
TXA_CTRL = 0x0210,/* 8 bit Tx Arbiter Control Register */
TXA_TEST = 0x0211,/* 8 bit Tx Arbiter Test Register */
TXA_STAT = 0x0212,/* 8 bit Tx Arbiter Status Register */
};
/* Queue Register Offsets, use Q_ADDR() to access */ enum {
B8_Q_REGS = 0x0400, /* base of Queue registers */
Q_D = 0x00, /* 8*32 bit Current Descriptor */
Q_DA_L = 0x20, /* 32 bit Current Descriptor Address Low dWord */
Q_DA_H = 0x24, /* 32 bit Current Descriptor Address High dWord */
Q_AC_L = 0x28, /* 32 bit Current Address Counter Low dWord */
Q_AC_H = 0x2c, /* 32 bit Current Address Counter High dWord */
Q_BC = 0x30, /* 32 bit Current Byte Counter */
Q_CSR = 0x34, /* 32 bit BMU Control/Status Register */
Q_F = 0x38, /* 32 bit Flag Register */
Q_T1 = 0x3c, /* 32 bit Test Register 1 */
Q_T1_TR = 0x3c, /* 8 bit Test Register 1 Transfer SM */
Q_T1_WR = 0x3d, /* 8 bit Test Register 1 Write Descriptor SM */
Q_T1_RD = 0x3e, /* 8 bit Test Register 1 Read Descriptor SM */
Q_T1_SV = 0x3f, /* 8 bit Test Register 1 Supervisor SM */
Q_T2 = 0x40, /* 32 bit Test Register 2 */
Q_T3 = 0x44, /* 32 bit Test Register 3 */
/* Receive MAC FIFO, Receive LED, and Link_Sync regs (GENESIS only) */ enum {
RX_MFF_EA = 0x0c00,/* 32 bit Receive MAC FIFO End Address */
RX_MFF_WP = 0x0c04,/* 32 bit Receive MAC FIFO Write Pointer */
RX_MFF_RP = 0x0c0c,/* 32 bit Receive MAC FIFO Read Pointer */
RX_MFF_PC = 0x0c10,/* 32 bit Receive MAC FIFO Packet Cnt */
RX_MFF_LEV = 0x0c14,/* 32 bit Receive MAC FIFO Level */
RX_MFF_CTRL1 = 0x0c18,/* 16 bit Receive MAC FIFO Control Reg 1*/
RX_MFF_STAT_TO = 0x0c1a,/* 8 bit Receive MAC Status Timeout */
RX_MFF_TIST_TO = 0x0c1b,/* 8 bit Receive MAC Time Stamp Timeout */
RX_MFF_CTRL2 = 0x0c1c,/* 8 bit Receive MAC FIFO Control Reg 2*/
RX_MFF_TST1 = 0x0c1d,/* 8 bit Receive MAC FIFO Test Reg 1 */
RX_MFF_TST2 = 0x0c1e,/* 8 bit Receive MAC FIFO Test Reg 2 */
RX_LED_INI = 0x0c20,/* 32 bit Receive LED Cnt Init Value */
RX_LED_VAL = 0x0c24,/* 32 bit Receive LED Cnt Current Value */
RX_LED_CTRL = 0x0c28,/* 8 bit Receive LED Cnt Control Reg */
RX_LED_TST = 0x0c29,/* 8 bit Receive LED Cnt Test Register */
LNK_SYNC_INI = 0x0c30,/* 32 bit Link Sync Cnt Init Value */
LNK_SYNC_VAL = 0x0c34,/* 32 bit Link Sync Cnt Current Value */
LNK_SYNC_CTRL = 0x0c38,/* 8 bit Link Sync Cnt Control Register */
LNK_SYNC_TST = 0x0c39,/* 8 bit Link Sync Cnt Test Register */
LNK_LED_REG = 0x0c3c,/* 8 bit Link LED Register */
};
/* RX_MFF_TST2 8 bit Receive MAC FIFO Test Register 2 */ /* TX_MFF_TST2 8 bit Transmit MAC FIFO Test Register 2 */ enum {
MFF_WSP_T_ON = 1<<6, /* Tx: Write Shadow Ptr TestOn */
MFF_WSP_T_OFF = 1<<5, /* Tx: Write Shadow Ptr TstOff */
MFF_WSP_INC = 1<<4, /* Tx: Write Shadow Ptr Increment */
MFF_PC_DEC = 1<<3, /* Packet Counter Decrement */
MFF_PC_T_ON = 1<<2, /* Packet Counter Test On */
MFF_PC_T_OFF = 1<<1, /* Packet Counter Test Off */
MFF_PC_INC = 1<<0, /* Packet Counter Increment */
};
/* RX_MFF_TST1 8 bit Receive MAC FIFO Test Register 1 */ /* TX_MFF_TST1 8 bit Transmit MAC FIFO Test Register 1 */ enum {
MFF_WP_T_ON = 1<<6, /* Write Pointer Test On */
MFF_WP_T_OFF = 1<<5, /* Write Pointer Test Off */
MFF_WP_INC = 1<<4, /* Write Pointer Increm */
MFF_RP_T_ON = 1<<2, /* Read Pointer Test On */
MFF_RP_T_OFF = 1<<1, /* Read Pointer Test Off */
MFF_RP_DEC = 1<<0, /* Read Pointer Decrement */
};
/* RX_MFF_CTRL2 8 bit Receive MAC FIFO Control Reg 2 */ /* TX_MFF_CTRL2 8 bit Transmit MAC FIFO Control Reg 2 */ enum {
MFF_ENA_OP_MD = 1<<3, /* Enable Operation Mode */
MFF_DIS_OP_MD = 1<<2, /* Disable Operation Mode */
MFF_RST_CLR = 1<<1, /* Clear MAC FIFO Reset */
MFF_RST_SET = 1<<0, /* Set MAC FIFO Reset */
};
/* Link LED Counter Registers (GENESIS only) */
/* RX_LED_CTRL 8 bit Receive LED Cnt Control Reg */ /* TX_LED_CTRL 8 bit Transmit LED Cnt Control Reg */ /* LNK_SYNC_CTRL 8 bit Link Sync Cnt Control Register */ enum {
LED_START = 1<<2, /* Start Timer */
LED_STOP = 1<<1, /* Stop Timer */
LED_STATE = 1<<0, /* Rx/Tx: LED State, 1=LED on */
};
/* RX_LED_TST 8 bit Receive LED Cnt Test Register */ /* TX_LED_TST 8 bit Transmit LED Cnt Test Register */ /* LNK_SYNC_TST 8 bit Link Sync Cnt Test Register */ enum {
LED_T_ON = 1<<2, /* LED Counter Test mode On */
LED_T_OFF = 1<<1, /* LED Counter Test mode Off */
LED_T_STEP = 1<<0, /* LED Counter Step */
};
/* LNK_LED_REG 8 bit Link LED Register */ enum {
LED_BLK_ON = 1<<5, /* Link LED Blinking On */
LED_BLK_OFF = 1<<4, /* Link LED Blinking Off */
LED_SYNC_ON = 1<<3, /* Use Sync Wire to switch LED */
LED_SYNC_OFF = 1<<2, /* Disable Sync Wire Input */
LED_REG_ON = 1<<1, /* switch LED on */
LED_REG_OFF = 1<<0, /* switch LED off */
};
/* Receive GMAC FIFO (YUKON) */ enum {
RX_GMF_EA = 0x0c40,/* 32 bit Rx GMAC FIFO End Address */
RX_GMF_AF_THR = 0x0c44,/* 32 bit Rx GMAC FIFO Almost Full Thresh. */
RX_GMF_CTRL_T = 0x0c48,/* 32 bit Rx GMAC FIFO Control/Test */
RX_GMF_FL_MSK = 0x0c4c,/* 32 bit Rx GMAC FIFO Flush Mask */
RX_GMF_FL_THR = 0x0c50,/* 32 bit Rx GMAC FIFO Flush Threshold */
RX_GMF_WP = 0x0c60,/* 32 bit Rx GMAC FIFO Write Pointer */
RX_GMF_WLEV = 0x0c68,/* 32 bit Rx GMAC FIFO Write Level */
RX_GMF_RP = 0x0c70,/* 32 bit Rx GMAC FIFO Read Pointer */
RX_GMF_RLEV = 0x0c78,/* 32 bit Rx GMAC FIFO Read Level */
};
/* TXA_TEST 8 bit Tx Arbiter Test Register */ enum {
TXA_INT_T_ON = 1<<5, /* Tx Arb Interval Timer Test On */
TXA_INT_T_OFF = 1<<4, /* Tx Arb Interval Timer Test Off */
TXA_INT_T_STEP = 1<<3, /* Tx Arb Interval Timer Step */
TXA_LIM_T_ON = 1<<2, /* Tx Arb Limit Timer Test On */
TXA_LIM_T_OFF = 1<<1, /* Tx Arb Limit Timer Test Off */
TXA_LIM_T_STEP = 1<<0, /* Tx Arb Limit Timer Step */
};
/* TXA_STAT 8 bit Tx Arbiter Status Register */ enum {
TXA_PRIO_XS = 1<<0, /* sync queue has prio to send */
};
/* Q_BC 32 bit Current Byte Counter */
/* BMU Control Status Registers */ /* B0_R1_CSR 32 bit BMU Ctrl/Stat Rx Queue 1 */ /* B0_R2_CSR 32 bit BMU Ctrl/Stat Rx Queue 2 */ /* B0_XA1_CSR 32 bit BMU Ctrl/Stat Sync Tx Queue 1 */ /* B0_XS1_CSR 32 bit BMU Ctrl/Stat Async Tx Queue 1 */ /* B0_XA2_CSR 32 bit BMU Ctrl/Stat Sync Tx Queue 2 */ /* B0_XS2_CSR 32 bit BMU Ctrl/Stat Async Tx Queue 2 */ /* Q_CSR 32 bit BMU Control/Status Register */
enum {
CSR_SV_IDLE = 1<<24, /* BMU SM Idle */
CSR_DESC_CLR = 1<<21, /* Clear Reset for Descr */
CSR_DESC_SET = 1<<20, /* Set Reset for Descr */
CSR_FIFO_CLR = 1<<19, /* Clear Reset for FIFO */
CSR_FIFO_SET = 1<<18, /* Set Reset for FIFO */
CSR_HPI_RUN = 1<<17, /* Release HPI SM */
CSR_HPI_RST = 1<<16, /* Reset HPI SM to Idle */
CSR_SV_RUN = 1<<15, /* Release Supervisor SM */
CSR_SV_RST = 1<<14, /* Reset Supervisor SM */
CSR_DREAD_RUN = 1<<13, /* Release Descr Read SM */
CSR_DREAD_RST = 1<<12, /* Reset Descr Read SM */
CSR_DWRITE_RUN = 1<<11, /* Release Descr Write SM */
CSR_DWRITE_RST = 1<<10, /* Reset Descr Write SM */
CSR_TRANS_RUN = 1<<9, /* Release Transfer SM */
CSR_TRANS_RST = 1<<8, /* Reset Transfer SM */
CSR_ENA_POL = 1<<7, /* Enable Descr Polling */
CSR_DIS_POL = 1<<6, /* Disable Descr Polling */
CSR_STOP = 1<<5, /* Stop Rx/Tx Queue */
CSR_START = 1<<4, /* Start Rx/Tx Queue */
CSR_IRQ_CL_P = 1<<3, /* (Rx) Clear Parity IRQ */
CSR_IRQ_CL_B = 1<<2, /* Clear EOB IRQ */
CSR_IRQ_CL_F = 1<<1, /* Clear EOF IRQ */
CSR_IRQ_CL_C = 1<<0, /* Clear ERR IRQ */
};
/* Transmit MAC FIFO and Transmit LED Registers (GENESIS only), */ enum {
TX_MFF_EA = 0x0d00,/* 32 bit Transmit MAC FIFO End Address */
TX_MFF_WP = 0x0d04,/* 32 bit Transmit MAC FIFO WR Pointer */
TX_MFF_WSP = 0x0d08,/* 32 bit Transmit MAC FIFO WR Shadow Ptr */
TX_MFF_RP = 0x0d0c,/* 32 bit Transmit MAC FIFO RD Pointer */
TX_MFF_PC = 0x0d10,/* 32 bit Transmit MAC FIFO Packet Cnt */
TX_MFF_LEV = 0x0d14,/* 32 bit Transmit MAC FIFO Level */
TX_MFF_CTRL1 = 0x0d18,/* 16 bit Transmit MAC FIFO Ctrl Reg 1 */
TX_MFF_WAF = 0x0d1a,/* 8 bit Transmit MAC Wait after flush */
TX_MFF_CTRL2 = 0x0d1c,/* 8 bit Transmit MAC FIFO Ctrl Reg 2 */
TX_MFF_TST1 = 0x0d1d,/* 8 bit Transmit MAC FIFO Test Reg 1 */
TX_MFF_TST2 = 0x0d1e,/* 8 bit Transmit MAC FIFO Test Reg 2 */
TX_LED_INI = 0x0d20,/* 32 bit Transmit LED Cnt Init Value */
TX_LED_VAL = 0x0d24,/* 32 bit Transmit LED Cnt Current Val */
TX_LED_CTRL = 0x0d28,/* 8 bit Transmit LED Cnt Control Reg */
TX_LED_TST = 0x0d29,/* 8 bit Transmit LED Cnt Test Reg */
};
/* Counter and Timer constants, for a host clock of 62.5 MHz */ #define SK_XMIT_DUR 0x002faf08UL /* 50 ms */ #define SK_BLK_DUR 0x01dcd650UL /* 500 ms */
#define SK_DPOLL_DEF 0x00ee6b28UL /* 250 ms at 62.5 MHz */
#define SK_DPOLL_MAX 0x00ffffffUL /* 268 ms at 62.5 MHz */ /* 215 ms at 78.12 MHz */
#define SK_FACT_62 100 /* is given in percent */ #define SK_FACT_53 85 /* on GENESIS: 53.12 MHz */ #define SK_FACT_78 125 /* on YUKON: 78.12 MHz */
/* Transmit GMAC FIFO (YUKON only) */ enum {
TX_GMF_EA = 0x0d40,/* 32 bit Tx GMAC FIFO End Address */
TX_GMF_AE_THR = 0x0d44,/* 32 bit Tx GMAC FIFO Almost Empty Thresh.*/
TX_GMF_CTRL_T = 0x0d48,/* 32 bit Tx GMAC FIFO Control/Test */
/* Descriptor Poll Timer Registers */
B28_DPT_INI = 0x0e00,/* 24 bit Descriptor Poll Timer Init Val */
B28_DPT_VAL = 0x0e04,/* 24 bit Descriptor Poll Timer Curr Val */
B28_DPT_CTRL = 0x0e08,/* 8 bit Descriptor Poll Timer Ctrl Reg */
B28_DPT_TST = 0x0e0a,/* 8 bit Descriptor Poll Timer Test Reg */
/* Time Stamp Timer Registers (YUKON only) */
GMAC_TI_ST_VAL = 0x0e14,/* 32 bit Time Stamp Timer Curr Val */
GMAC_TI_ST_CTRL = 0x0e18,/* 8 bit Time Stamp Timer Ctrl Reg */
GMAC_TI_ST_TST = 0x0e1a,/* 8 bit Time Stamp Timer Test Reg */
};
/* GMAC and GPHY Control Registers (YUKON only) */ enum {
GMAC_CTRL = 0x0f00,/* 32 bit GMAC Control Reg */
GPHY_CTRL = 0x0f04,/* 32 bit GPHY Control Reg */
GMAC_IRQ_SRC = 0x0f08,/* 8 bit GMAC Interrupt Source Reg */
GMAC_IRQ_MSK = 0x0f0c,/* 8 bit GMAC Interrupt Mask Reg */
GMAC_LINK_CTRL = 0x0f10,/* 16 bit Link Control Reg */
/* Wake-up Frame Pattern Match Control Registers (YUKON only) */
WOL_REG_OFFS = 0x20,/* HW-Bug: Address is + 0x20 against spec. */
WOL_CTRL_STAT = 0x0f20,/* 16 bit WOL Control/Status Reg */
WOL_MATCH_CTL = 0x0f22,/* 8 bit WOL Match Control Reg */
WOL_MATCH_RES = 0x0f23,/* 8 bit WOL Match Result Reg */
WOL_MAC_ADDR = 0x0f24,/* 32 bit WOL MAC Address */
WOL_PATT_RPTR = 0x0f2c,/* 8 bit WOL Pattern Read Pointer */
/* WOL Pattern Length Registers (YUKON only) */
WOL_PATT_LEN_LO = 0x0f30,/* 32 bit WOL Pattern Length 3..0 */
WOL_PATT_LEN_HI = 0x0f34,/* 24 bit WOL Pattern Length 6..4 */
/* WOL Pattern Counter Registers (YUKON only) */
WOL_PATT_CNT_0 = 0x0f38,/* 32 bit WOL Pattern Counter 3..0 */
WOL_PATT_CNT_4 = 0x0f3c,/* 24 bit WOL Pattern Counter 6..4 */
}; #define WOL_REGS(port, x) (x + (port)*0x80)
enum {
WOL_PATT_RAM_1 = 0x1000,/* WOL Pattern RAM Link 1 */
WOL_PATT_RAM_2 = 0x1400,/* WOL Pattern RAM Link 2 */
}; #define WOL_PATT_RAM_BASE(port) (WOL_PATT_RAM_1 + (port)*0x400)
XMR_FS_BURST = 1<<11, /* Bit 11: Burst Mode */
XMR_FS_CEX_ERR = 1<<10, /* Bit 10: Carrier Ext. Error */
XMR_FS_802_3 = 1<<9, /* Bit 9: 802.3 Frame */
XMR_FS_COL_ERR = 1<<8, /* Bit 8: Collision Error */
XMR_FS_CAR_ERR = 1<<7, /* Bit 7: Carrier Event Error */
XMR_FS_LEN_ERR = 1<<6, /* Bit 6: In-Range Length Error */
XMR_FS_FRA_ERR = 1<<5, /* Bit 5: Framing Error */
XMR_FS_RUNT = 1<<4, /* Bit 4: Runt Frame */
XMR_FS_LNG_ERR = 1<<3, /* Bit 3: Giant (Jumbo) Frame */
XMR_FS_FCS_ERR = 1<<2, /* Bit 2: Frame Check Sequ Err */
XMR_FS_ERR = 1<<1, /* Bit 1: Frame Error */
XMR_FS_MCTRL = 1<<0, /* Bit 0: MAC Control Packet */
/* * XMR_FS_ERR will be set if * XMR_FS_FCS_ERR, XMR_FS_LNG_ERR, XMR_FS_RUNT, * XMR_FS_FRA_ERR, XMR_FS_LEN_ERR, or XMR_FS_CEX_ERR * is set. XMR_FS_LNG_ERR and XMR_FS_LEN_ERR will issue * XMR_FS_ERR unless the corresponding bit in the Receive Command * Register is set.
*/
};
/* ,* XMAC-PHY Registers, indirect addressed over the XMAC
*/ enum {
PHY_XMAC_CTRL = 0x00,/* 16 bit r/w PHY Control Register */
PHY_XMAC_STAT = 0x01,/* 16 bit r/w PHY Status Register */
PHY_XMAC_ID0 = 0x02,/* 16 bit r/o PHY ID0 Register */
PHY_XMAC_ID1 = 0x03,/* 16 bit r/o PHY ID1 Register */
PHY_XMAC_AUNE_ADV = 0x04,/* 16 bit r/w Auto-Neg. Advertisement */
PHY_XMAC_AUNE_LP = 0x05,/* 16 bit r/o Link Partner Abi Reg */
PHY_XMAC_AUNE_EXP = 0x06,/* 16 bit r/o Auto-Neg. Expansion Reg */
PHY_XMAC_NEPG = 0x07,/* 16 bit r/w Next Page Register */
PHY_XMAC_NEPG_LP = 0x08,/* 16 bit r/o Next Page Link Partner */
PHY_XMAC_EXT_STAT = 0x0f,/* 16 bit r/o Ext Status Register */
PHY_XMAC_RES_ABI = 0x10,/* 16 bit r/o PHY Resolved Ability */
}; /* * Broadcom-PHY Registers, indirect addressed over XMAC
*/ enum {
PHY_BCOM_CTRL = 0x00,/* 16 bit r/w PHY Control Register */
PHY_BCOM_STAT = 0x01,/* 16 bit r/o PHY Status Register */
PHY_BCOM_ID0 = 0x02,/* 16 bit r/o PHY ID0 Register */
PHY_BCOM_ID1 = 0x03,/* 16 bit r/o PHY ID1 Register */
PHY_BCOM_AUNE_ADV = 0x04,/* 16 bit r/w Auto-Neg. Advertisement */
PHY_BCOM_AUNE_LP = 0x05,/* 16 bit r/o Link Part Ability Reg */
PHY_BCOM_AUNE_EXP = 0x06,/* 16 bit r/o Auto-Neg. Expansion Reg */
PHY_BCOM_NEPG = 0x07,/* 16 bit r/w Next Page Register */
PHY_BCOM_NEPG_LP = 0x08,/* 16 bit r/o Next Page Link Partner */ /* Broadcom-specific registers */
PHY_BCOM_1000T_CTRL = 0x09,/* 16 bit r/w 1000Base-T Control Reg */
PHY_BCOM_1000T_STAT = 0x0a,/* 16 bit r/o 1000Base-T Status Reg */
PHY_BCOM_EXT_STAT = 0x0f,/* 16 bit r/o Extended Status Reg */
PHY_BCOM_P_EXT_CTRL = 0x10,/* 16 bit r/w PHY Extended Ctrl Reg */
PHY_BCOM_P_EXT_STAT = 0x11,/* 16 bit r/o PHY Extended Stat Reg */
PHY_BCOM_RE_CTR = 0x12,/* 16 bit r/w Receive Error Counter */
PHY_BCOM_FC_CTR = 0x13,/* 16 bit r/w False Carrier Sense Cnt */
PHY_BCOM_RNO_CTR = 0x14,/* 16 bit r/w Receiver NOT_OK Cnt */
PHY_BCOM_AUX_CTRL = 0x18,/* 16 bit r/w Auxiliary Control Reg */
PHY_BCOM_AUX_STAT = 0x19,/* 16 bit r/o Auxiliary Stat Summary */
PHY_BCOM_INT_STAT = 0x1a,/* 16 bit r/o Interrupt Status Reg */
PHY_BCOM_INT_MASK = 0x1b,/* 16 bit r/w Interrupt Mask Reg */
};
/* * Marvel-PHY Registers, indirect addressed over GMAC
*/ enum {
PHY_MARV_CTRL = 0x00,/* 16 bit r/w PHY Control Register */
PHY_MARV_STAT = 0x01,/* 16 bit r/o PHY Status Register */
PHY_MARV_ID0 = 0x02,/* 16 bit r/o PHY ID0 Register */
PHY_MARV_ID1 = 0x03,/* 16 bit r/o PHY ID1 Register */
PHY_MARV_AUNE_ADV = 0x04,/* 16 bit r/w Auto-Neg. Advertisement */
PHY_MARV_AUNE_LP = 0x05,/* 16 bit r/o Link Part Ability Reg */
PHY_MARV_AUNE_EXP = 0x06,/* 16 bit r/o Auto-Neg. Expansion Reg */
PHY_MARV_NEPG = 0x07,/* 16 bit r/w Next Page Register */
PHY_MARV_NEPG_LP = 0x08,/* 16 bit r/o Next Page Link Partner */ /* Marvel-specific registers */
PHY_MARV_1000T_CTRL = 0x09,/* 16 bit r/w 1000Base-T Control Reg */
PHY_MARV_1000T_STAT = 0x0a,/* 16 bit r/o 1000Base-T Status Reg */
PHY_MARV_EXT_STAT = 0x0f,/* 16 bit r/o Extended Status Reg */
PHY_MARV_PHY_CTRL = 0x10,/* 16 bit r/w PHY Specific Ctrl Reg */
PHY_MARV_PHY_STAT = 0x11,/* 16 bit r/o PHY Specific Stat Reg */
PHY_MARV_INT_MASK = 0x12,/* 16 bit r/w Interrupt Mask Reg */
PHY_MARV_INT_STAT = 0x13,/* 16 bit r/o Interrupt Status Reg */
PHY_MARV_EXT_CTRL = 0x14,/* 16 bit r/w Ext. PHY Specific Ctrl */
PHY_MARV_RXE_CNT = 0x15,/* 16 bit r/w Receive Error Counter */
PHY_MARV_EXT_ADR = 0x16,/* 16 bit r/w Ext. Ad. for Cable Diag. */
PHY_MARV_PORT_IRQ = 0x17,/* 16 bit r/o Port 0 IRQ (88E1111 only) */
PHY_MARV_LED_CTRL = 0x18,/* 16 bit r/w LED Control Reg */
PHY_MARV_LED_OVER = 0x19,/* 16 bit r/w Manual LED Override Reg */
PHY_MARV_EXT_CTRL_2 = 0x1a,/* 16 bit r/w Ext. PHY Specific Ctrl 2 */
PHY_MARV_EXT_P_STAT = 0x1b,/* 16 bit r/w Ext. PHY Spec. Stat Reg */
PHY_MARV_CABLE_DIAG = 0x1c,/* 16 bit r/o Cable Diagnostic Reg */
PHY_MARV_PAGE_ADDR = 0x1d,/* 16 bit r/w Extended Page Address Reg */
PHY_MARV_PAGE_DATA = 0x1e,/* 16 bit r/w Extended Page Data Reg */
/* for 10/100 Fast Ethernet PHY (88E3082 only) */
PHY_MARV_FE_LED_PAR = 0x16,/* 16 bit r/w LED Parallel Select Reg. */
PHY_MARV_FE_LED_SER = 0x17,/* 16 bit r/w LED Stream Select S. LED */
PHY_MARV_FE_VCT_TX = 0x1a,/* 16 bit r/w VCT Reg. for TXP/N Pins */
PHY_MARV_FE_VCT_RX = 0x1b,/* 16 bit r/o VCT Reg. for RXP/N Pins */
PHY_MARV_FE_SPEC_2 = 0x1c,/* 16 bit r/w Specific Control Reg. 2 */
};
enum {
PHY_CT_RESET = 1<<15, /* Bit 15: (sc) clear all PHY related regs */
PHY_CT_LOOP = 1<<14, /* Bit 14: enable Loopback over PHY */
PHY_CT_SPS_LSB = 1<<13, /* Bit 13: Speed select, lower bit */
PHY_CT_ANE = 1<<12, /* Bit 12: Auto-Negotiation Enabled */
PHY_CT_PDOWN = 1<<11, /* Bit 11: Power Down Mode */
PHY_CT_ISOL = 1<<10, /* Bit 10: Isolate Mode */
PHY_CT_RE_CFG = 1<<9, /* Bit 9: (sc) Restart Auto-Negotiation */
PHY_CT_DUP_MD = 1<<8, /* Bit 8: Duplex Mode */
PHY_CT_COL_TST = 1<<7, /* Bit 7: Collision Test enabled */
PHY_CT_SPS_MSB = 1<<6, /* Bit 6: Speed select, upper bit */
};
enum {
PHY_ST_EXT_ST = 1<<8, /* Bit 8: Extended Status Present */
PHY_ST_PRE_SUP = 1<<6, /* Bit 6: Preamble Suppression */
PHY_ST_AN_OVER = 1<<5, /* Bit 5: Auto-Negotiation Over */
PHY_ST_REM_FLT = 1<<4, /* Bit 4: Remote Fault Condition Occurred */
PHY_ST_AN_CAP = 1<<3, /* Bit 3: Auto-Negotiation Capability */
PHY_ST_LSYNC = 1<<2, /* Bit 2: Link Synchronized */
PHY_ST_JAB_DET = 1<<1, /* Bit 1: Jabber Detected */
PHY_ST_EXT_REG = 1<<0, /* Bit 0: Extended Register available */
};
enum {
PHY_I1_OUI_MSK = 0x3f<<10, /* Bit 15..10: Organization Unique ID */
PHY_I1_MOD_NUM = 0x3f<<4, /* Bit 9.. 4: Model Number */
PHY_I1_REV_MSK = 0xf, /* Bit 3.. 0: Revision Number */
};
/* Advertisement register bits */ enum {
PHY_AN_NXT_PG = 1<<15, /* Bit 15: Request Next Page */
PHY_AN_ACK = 1<<14, /* Bit 14: (ro) Acknowledge Received */
PHY_AN_RF = 1<<13, /* Bit 13: Remote Fault Bits */
PHY_AN_PAUSE_ASYM = 1<<11,/* Bit 11: Try for asymmetric */
PHY_AN_PAUSE_CAP = 1<<10, /* Bit 10: Try for pause */
PHY_AN_100BASE4 = 1<<9, /* Bit 9: Try for 100mbps 4k packets */
PHY_AN_100FULL = 1<<8, /* Bit 8: Try for 100mbps full-duplex */
PHY_AN_100HALF = 1<<7, /* Bit 7: Try for 100mbps half-duplex */
PHY_AN_10FULL = 1<<6, /* Bit 6: Try for 10mbps full-duplex */
PHY_AN_10HALF = 1<<5, /* Bit 5: Try for 10mbps half-duplex */
PHY_AN_CSMA = 1<<0, /* Bit 0: Only selector supported */
PHY_AN_SEL = 0x1f, /* Bit 4..0: Selector Field, 00001=Ethernet*/
PHY_AN_FULL = PHY_AN_100FULL | PHY_AN_10FULL | PHY_AN_CSMA,
PHY_AN_ALL = PHY_AN_10HALF | PHY_AN_10FULL |
PHY_AN_100HALF | PHY_AN_100FULL,
};
/* Xmac Specific */ enum {
PHY_X_AN_NXT_PG = 1<<15, /* Bit 15: Request Next Page */
PHY_X_AN_ACK = 1<<14, /* Bit 14: (ro) Acknowledge Received */
PHY_X_AN_RFB = 3<<12,/* Bit 13..12: Remote Fault Bits */
PHY_X_AN_PAUSE = 3<<7,/* Bit 8.. 7: Pause Bits */
PHY_X_AN_HD = 1<<6, /* Bit 6: Half Duplex */
PHY_X_AN_FD = 1<<5, /* Bit 5: Full Duplex */
};
/* Pause Bits (PHY_X_AN_PAUSE and PHY_X_RS_PAUSE) encoding */ enum {
PHY_X_P_NO_PAUSE= 0<<7,/* Bit 8..7: no Pause Mode */
PHY_X_P_SYM_MD = 1<<7, /* Bit 8..7: symmetric Pause Mode */
PHY_X_P_ASYM_MD = 2<<7,/* Bit 8..7: asymmetric Pause Mode */
PHY_X_P_BOTH_MD = 3<<7,/* Bit 8..7: both Pause Mode */
};
/***** PHY_XMAC_EXT_STAT 16 bit r/w Extended Status Register *****/ enum {
PHY_X_EX_FD = 1<<15, /* Bit 15: Device Supports Full Duplex */
PHY_X_EX_HD = 1<<14, /* Bit 14: Device Supports Half Duplex */
};
/***** PHY_XMAC_RES_ABI 16 bit r/o PHY Resolved Ability *****/ enum {
PHY_X_RS_PAUSE = 3<<7, /* Bit 8..7: selected Pause Mode */
PHY_X_RS_HD = 1<<6, /* Bit 6: Half Duplex Mode selected */
PHY_X_RS_FD = 1<<5, /* Bit 5: Full Duplex Mode selected */
PHY_X_RS_ABLMIS = 1<<4, /* Bit 4: duplex or pause cap mismatch */
PHY_X_RS_PAUMIS = 1<<3, /* Bit 3: pause capability mismatch */
};
/* Remote Fault Bits (PHY_X_AN_RFB) encoding */ enum {
X_RFB_OK = 0<<12,/* Bit 13..12 No errors, Link OK */
X_RFB_LF = 1<<12,/* Bit 13..12 Link Failure */
X_RFB_OFF = 2<<12,/* Bit 13..12 Offline */
X_RFB_AN_ERR = 3<<12,/* Bit 13..12 Auto-Negotiation Error */
};
/* Broadcom-Specific */ /***** PHY_BCOM_1000T_CTRL 16 bit r/w 1000Base-T Control Reg *****/ enum {
PHY_B_1000C_TEST = 7<<13,/* Bit 15..13: Test Modes */
PHY_B_1000C_MSE = 1<<12, /* Bit 12: Master/Slave Enable */
PHY_B_1000C_MSC = 1<<11, /* Bit 11: M/S Configuration */
PHY_B_1000C_RD = 1<<10, /* Bit 10: Repeater/DTE */
PHY_B_1000C_AFD = 1<<9, /* Bit 9: Advertise Full Duplex */
PHY_B_1000C_AHD = 1<<8, /* Bit 8: Advertise Half Duplex */
};
/***** PHY_BCOM_1000T_STAT 16 bit r/o 1000Base-T Status Reg *****/ /***** PHY_MARV_1000T_STAT 16 bit r/o 1000Base-T Status Reg *****/ enum {
PHY_B_1000S_MSF = 1<<15, /* Bit 15: Master/Slave Fault */
PHY_B_1000S_MSR = 1<<14, /* Bit 14: Master/Slave Result */
PHY_B_1000S_LRS = 1<<13, /* Bit 13: Local Receiver Status */
PHY_B_1000S_RRS = 1<<12, /* Bit 12: Remote Receiver Status */
PHY_B_1000S_LP_FD = 1<<11, /* Bit 11: Link Partner can FD */
PHY_B_1000S_LP_HD = 1<<10, /* Bit 10: Link Partner can HD */ /* Bit 9..8: reserved */
PHY_B_1000S_IEC = 0xff, /* Bit 7..0: Idle Error Count */
};
/***** PHY_BCOM_EXT_STAT 16 bit r/o Extended Status Register *****/ enum {
PHY_B_ES_X_FD_CAP = 1<<15, /* Bit 15: 1000Base-X FD capable */
PHY_B_ES_X_HD_CAP = 1<<14, /* Bit 14: 1000Base-X HD capable */
PHY_B_ES_T_FD_CAP = 1<<13, /* Bit 13: 1000Base-T FD capable */
PHY_B_ES_T_HD_CAP = 1<<12, /* Bit 12: 1000Base-T HD capable */
};
/***** PHY_BCOM_P_EXT_CTRL 16 bit r/w PHY Extended Control Reg *****/ enum {
PHY_B_PEC_MAC_PHY = 1<<15, /* Bit 15: 10BIT/GMI-Interface */
PHY_B_PEC_DIS_CROSS = 1<<14, /* Bit 14: Disable MDI Crossover */
PHY_B_PEC_TX_DIS = 1<<13, /* Bit 13: Tx output Disabled */
PHY_B_PEC_INT_DIS = 1<<12, /* Bit 12: Interrupts Disabled */
PHY_B_PEC_F_INT = 1<<11, /* Bit 11: Force Interrupt */
PHY_B_PEC_BY_45 = 1<<10, /* Bit 10: Bypass 4B5B-Decoder */
PHY_B_PEC_BY_SCR = 1<<9, /* Bit 9: Bypass Scrambler */
PHY_B_PEC_BY_MLT3 = 1<<8, /* Bit 8: Bypass MLT3 Encoder */
PHY_B_PEC_BY_RXA = 1<<7, /* Bit 7: Bypass Rx Alignm. */
PHY_B_PEC_RES_SCR = 1<<6, /* Bit 6: Reset Scrambler */
PHY_B_PEC_EN_LTR = 1<<5, /* Bit 5: Ena LED Traffic Mode */
PHY_B_PEC_LED_ON = 1<<4, /* Bit 4: Force LED's on */
PHY_B_PEC_LED_OFF = 1<<3, /* Bit 3: Force LED's off */
PHY_B_PEC_EX_IPG = 1<<2, /* Bit 2: Extend Tx IPG Mode */
PHY_B_PEC_3_LED = 1<<1, /* Bit 1: Three Link LED mode */
PHY_B_PEC_HIGH_LA = 1<<0, /* Bit 0: GMII FIFO Elasticy */
};
/***** PHY_BCOM_P_EXT_STAT 16 bit r/o PHY Extended Status Reg *****/ enum {
PHY_B_PES_CROSS_STAT = 1<<13, /* Bit 13: MDI Crossover Status */
PHY_B_PES_INT_STAT = 1<<12, /* Bit 12: Interrupt Status */
PHY_B_PES_RRS = 1<<11, /* Bit 11: Remote Receiver Stat. */
PHY_B_PES_LRS = 1<<10, /* Bit 10: Local Receiver Stat. */
PHY_B_PES_LOCKED = 1<<9, /* Bit 9: Locked */
PHY_B_PES_LS = 1<<8, /* Bit 8: Link Status */
PHY_B_PES_RF = 1<<7, /* Bit 7: Remote Fault */
PHY_B_PES_CE_ER = 1<<6, /* Bit 6: Carrier Ext Error */
PHY_B_PES_BAD_SSD = 1<<5, /* Bit 5: Bad SSD */
PHY_B_PES_BAD_ESD = 1<<4, /* Bit 4: Bad ESD */
PHY_B_PES_RX_ER = 1<<3, /* Bit 3: Receive Error */
PHY_B_PES_TX_ER = 1<<2, /* Bit 2: Transmit Error */
PHY_B_PES_LOCK_ER = 1<<1, /* Bit 1: Lock Error */
PHY_B_PES_MLT3_ER = 1<<0, /* Bit 0: MLT3 code Error */
};
/* PHY_BCOM_AUNE_ADV 16 bit r/w Auto-Negotiation Advertisement *****/ /* PHY_BCOM_AUNE_LP 16 bit r/o Link Partner Ability Reg *****/ enum {
PHY_B_AN_RF = 1<<13, /* Bit 13: Remote Fault */
PHY_B_AN_ASP = 1<<11, /* Bit 11: Asymmetric Pause */
PHY_B_AN_PC = 1<<10, /* Bit 10: Pause Capable */
};
/***** PHY_MARV_LED_CTRL 16 bit r/w LED Control Reg *****/ enum {
PHY_M_LEDC_DIS_LED = 1<<15, /* Disable LED */
PHY_M_LEDC_PULS_MSK = 7<<12,/* Bit 14..12: Pulse Stretch Mask */
PHY_M_LEDC_F_INT = 1<<11, /* Force Interrupt */
PHY_M_LEDC_BL_R_MSK = 7<<8,/* Bit 10.. 8: Blink Rate Mask */
PHY_M_LEDC_DP_C_LSB = 1<<7, /* Duplex Control (LSB, 88E1111 only) */
PHY_M_LEDC_TX_C_LSB = 1<<6, /* Tx Control (LSB, 88E1111 only) */
PHY_M_LEDC_LK_C_MSK = 7<<3,/* Bit 5.. 3: Link Control Mask */ /* (88E1111 only) */
}; #define PHY_M_LED_PULS_DUR(x) (((u16)(x)<<12) & PHY_M_LEDC_PULS_MSK) #define PHY_M_LED_BLINK_RT(x) (((u16)(x)<<8) & PHY_M_LEDC_BL_R_MSK)
enum {
PHY_M_LEDC_LINK_MSK = 3<<3, /* Bit 4.. 3: Link Control Mask */ /* (88E1011 only) */
PHY_M_LEDC_DP_CTRL = 1<<2, /* Duplex Control */
PHY_M_LEDC_DP_C_MSB = 1<<2, /* Duplex Control (MSB, 88E1111 only) */
PHY_M_LEDC_RX_CTRL = 1<<1, /* Rx Activity / Link */
PHY_M_LEDC_TX_CTRL = 1<<0, /* Tx Activity / Link */
PHY_M_LEDC_TX_C_MSB = 1<<0, /* Tx Control (MSB, 88E1111 only) */
};
enum {
PULS_NO_STR = 0, /* no pulse stretching */
PULS_21MS = 1, /* 21 ms to 42 ms */
PULS_42MS = 2, /* 42 ms to 84 ms */
PULS_84MS = 3, /* 84 ms to 170 ms */
PULS_170MS = 4, /* 170 ms to 340 ms */
PULS_340MS = 5, /* 340 ms to 670 ms */
PULS_670MS = 6, /* 670 ms to 1.3 s */
PULS_1300MS = 7, /* 1.3 s to 2.7 s */
};
enum {
BLINK_42MS = 0, /* 42 ms */
BLINK_84MS = 1, /* 84 ms */
BLINK_170MS = 2, /* 170 ms */
BLINK_340MS = 3, /* 340 ms */
BLINK_670MS = 4, /* 670 ms */
};
/***** PHY_MARV_LED_OVER 16 bit r/w Manual LED Override Reg *****/ #define PHY_M_LED_MO_SGMII(x) ((x)<<14) /* Bit 15..14: SGMII AN Timer */ /* Bit 13..12: reserved */ #define PHY_M_LED_MO_DUP(x) ((x)<<10) /* Bit 11..10: Duplex */ #define PHY_M_LED_MO_10(x) ((x)<<8) /* Bit 9.. 8: Link 10 */ #define PHY_M_LED_MO_100(x) ((x)<<6) /* Bit 7.. 6: Link 100 */ #define PHY_M_LED_MO_1000(x) ((x)<<4) /* Bit 5.. 4: Link 1000 */ #define PHY_M_LED_MO_RX(x) ((x)<<2) /* Bit 3.. 2: Rx */ #define PHY_M_LED_MO_TX(x) ((x)<<0) /* Bit 1.. 0: Tx */
/* GM_TX_CTRL 16 bit r/w Transmit Control Register */ enum {
GM_TXCR_FORCE_JAM = 1<<15, /* Bit 15: Force Jam / Flow-Control */
GM_TXCR_CRC_DIS = 1<<14, /* Bit 14: Disable insertion of CRC */
GM_TXCR_PAD_DIS = 1<<13, /* Bit 13: Disable padding of packets */
GM_TXCR_COL_THR_MSK = 7<<10, /* Bit 12..10: Collision Threshold */
};
#define TX_COL_THR(x) (((x)<<10) & GM_TXCR_COL_THR_MSK) #define TX_COL_DEF 0x04 /* late collision after 64 byte */
/* GM_RX_CTRL 16 bit r/w Receive Control Register */ enum {
GM_RXCR_UCF_ENA = 1<<15, /* Bit 15: Enable Unicast filtering */
GM_RXCR_MCF_ENA = 1<<14, /* Bit 14: Enable Multicast filtering */
GM_RXCR_CRC_DIS = 1<<13, /* Bit 13: Remove 4-byte CRC */
GM_RXCR_PASS_FC = 1<<12, /* Bit 12: Pass FC packets to FIFO */
};
/* GM_TX_PARAM 16 bit r/w Transmit Parameter Register */ enum {
GM_TXPA_JAMLEN_MSK = 0x03<<14, /* Bit 15..14: Jam Length */
GM_TXPA_JAMIPG_MSK = 0x1f<<9, /* Bit 13..9: Jam IPG */
GM_TXPA_JAMDAT_MSK = 0x1f<<4, /* Bit 8..4: IPG Jam to Data */
/* WOL_MATCH_CTL 8 bit WOL Match Control Reg */ #define WOL_CTL_PATT_ENA(x) (1 << (x))
/* XMAC II registers */ enum {
XM_MMU_CMD = 0x0000, /* 16 bit r/w MMU Command Register */
XM_POFF = 0x0008, /* 32 bit r/w Packet Offset Register */
XM_BURST = 0x000c, /* 32 bit r/w Burst Register for half duplex*/
XM_1L_VLAN_TAG = 0x0010, /* 16 bit r/w One Level VLAN Tag ID */
XM_2L_VLAN_TAG = 0x0014, /* 16 bit r/w Two Level VLAN Tag ID */
XM_TX_CMD = 0x0020, /* 16 bit r/w Transmit Command Register */
XM_TX_RT_LIM = 0x0024, /* 16 bit r/w Transmit Retry Limit Register */
XM_TX_STIME = 0x0028, /* 16 bit r/w Transmit Slottime Register */
XM_TX_IPG = 0x002c, /* 16 bit r/w Transmit Inter Packet Gap */
XM_RX_CMD = 0x0030, /* 16 bit r/w Receive Command Register */
XM_PHY_ADDR = 0x0034, /* 16 bit r/w PHY Address Register */
XM_PHY_DATA = 0x0038, /* 16 bit r/w PHY Data Register */
XM_GP_PORT = 0x0040, /* 32 bit r/w General Purpose Port Register */
XM_IMSK = 0x0044, /* 16 bit r/w Interrupt Mask Register */
XM_ISRC = 0x0048, /* 16 bit r/o Interrupt Status Register */
XM_HW_CFG = 0x004c, /* 16 bit r/w Hardware Config Register */
XM_TX_LO_WM = 0x0060, /* 16 bit r/w Tx FIFO Low Water Mark */
XM_TX_HI_WM = 0x0062, /* 16 bit r/w Tx FIFO High Water Mark */
XM_TX_THR = 0x0064, /* 16 bit r/w Tx Request Threshold */
XM_HT_THR = 0x0066, /* 16 bit r/w Host Request Threshold */
XM_PAUSE_DA = 0x0068, /* NA reg r/w Pause Destination Address */
XM_CTL_PARA = 0x0070, /* 32 bit r/w Control Parameter Register */
XM_MAC_OPCODE = 0x0074, /* 16 bit r/w Opcode for MAC control frames */
XM_MAC_PTIME = 0x0076, /* 16 bit r/w Pause time for MAC ctrl frames*/
XM_TX_STAT = 0x0078, /* 32 bit r/o Tx Status LIFO Register */
XM_EXM_START = 0x0080, /* r/w Start Address of the EXM Regs */ #define XM_EXM(reg) (XM_EXM_START + ((reg) << 3))
};
enum {
XM_SRC_CHK = 0x0100, /* NA reg r/w Source Check Address Register */
XM_SA = 0x0108, /* NA reg r/w Station Address Register */
XM_HSM = 0x0110, /* 64 bit r/w Hash Match Address Registers */
XM_RX_LO_WM = 0x0118, /* 16 bit r/w Receive Low Water Mark */
XM_RX_HI_WM = 0x011a, /* 16 bit r/w Receive High Water Mark */
XM_RX_THR = 0x011c, /* 32 bit r/w Receive Request Threshold */
XM_DEV_ID = 0x0120, /* 32 bit r/o Device ID Register */
XM_MODE = 0x0124, /* 32 bit r/w Mode Register */
XM_LSA = 0x0128, /* NA reg r/o Last Source Register */
XM_TS_READ = 0x0130, /* 32 bit r/o Time Stamp Read Register */
XM_TS_LOAD = 0x0134, /* 32 bit r/o Time Stamp Load Value */
XM_STAT_CMD = 0x0200, /* 16 bit r/w Statistics Command Register */
XM_RX_CNT_EV = 0x0204, /* 32 bit r/o Rx Counter Event Register */
XM_TX_CNT_EV = 0x0208, /* 32 bit r/o Tx Counter Event Register */
XM_RX_EV_MSK = 0x020c, /* 32 bit r/w Rx Counter Event Mask */
XM_TX_EV_MSK = 0x0210, /* 32 bit r/w Tx Counter Event Mask */
XM_TXF_OK = 0x0280, /* 32 bit r/o Frames Transmitted OK Conuter */
XM_TXO_OK_HI = 0x0284, /* 32 bit r/o Octets Transmitted OK High Cnt*/
XM_TXO_OK_LO = 0x0288, /* 32 bit r/o Octets Transmitted OK Low Cnt */
XM_TXF_BC_OK = 0x028c, /* 32 bit r/o Broadcast Frames Xmitted OK */
XM_TXF_MC_OK = 0x0290, /* 32 bit r/o Multicast Frames Xmitted OK */
XM_TXF_UC_OK = 0x0294, /* 32 bit r/o Unicast Frames Xmitted OK */
XM_TXF_LONG = 0x0298, /* 32 bit r/o Tx Long Frame Counter */
XM_TXE_BURST = 0x029c, /* 32 bit r/o Tx Burst Event Counter */
XM_TXF_MPAUSE = 0x02a0, /* 32 bit r/o Tx Pause MAC Ctrl Frame Cnt */
XM_TXF_MCTRL = 0x02a4, /* 32 bit r/o Tx MAC Ctrl Frame Counter */
XM_TXF_SNG_COL = 0x02a8, /* 32 bit r/o Tx Single Collision Counter */
XM_TXF_MUL_COL = 0x02ac, /* 32 bit r/o Tx Multiple Collision Counter */
XM_TXF_ABO_COL = 0x02b0, /* 32 bit r/o Tx aborted due to Exces. Col. */
XM_TXF_LAT_COL = 0x02b4, /* 32 bit r/o Tx Late Collision Counter */
XM_TXF_DEF = 0x02b8, /* 32 bit r/o Tx Deferred Frame Counter */
XM_TXF_EX_DEF = 0x02bc, /* 32 bit r/o Tx Excessive Deferall Counter */
XM_TXE_FIFO_UR = 0x02c0, /* 32 bit r/o Tx FIFO Underrun Event Cnt */
XM_TXE_CS_ERR = 0x02c4, /* 32 bit r/o Tx Carrier Sense Error Cnt */
XM_TXP_UTIL = 0x02c8, /* 32 bit r/o Tx Utilization in % */
XM_TXF_64B = 0x02d0, /* 32 bit r/o 64 Byte Tx Frame Counter */
XM_TXF_127B = 0x02d4, /* 32 bit r/o 65-127 Byte Tx Frame Counter */
XM_TXF_255B = 0x02d8, /* 32 bit r/o 128-255 Byte Tx Frame Counter */
XM_TXF_511B = 0x02dc, /* 32 bit r/o 256-511 Byte Tx Frame Counter */
XM_TXF_1023B = 0x02e0, /* 32 bit r/o 512-1023 Byte Tx Frame Counter*/
XM_TXF_MAX_SZ = 0x02e4, /* 32 bit r/o 1024-MaxSize Byte Tx Frame Cnt*/
XM_RXF_OK = 0x0300, /* 32 bit r/o Frames Received OK */
XM_RXO_OK_HI = 0x0304, /* 32 bit r/o Octets Received OK High Cnt */
XM_RXO_OK_LO = 0x0308, /* 32 bit r/o Octets Received OK Low Counter*/
XM_RXF_BC_OK = 0x030c, /* 32 bit r/o Broadcast Frames Received OK */
XM_RXF_MC_OK = 0x0310, /* 32 bit r/o Multicast Frames Received OK */
XM_RXF_UC_OK = 0x0314, /* 32 bit r/o Unicast Frames Received OK */
XM_RXF_MPAUSE = 0x0318, /* 32 bit r/o Rx Pause MAC Ctrl Frame Cnt */
XM_RXF_MCTRL = 0x031c, /* 32 bit r/o Rx MAC Ctrl Frame Counter */
XM_RXF_INV_MP = 0x0320, /* 32 bit r/o Rx invalid Pause Frame Cnt */
XM_RXF_INV_MOC = 0x0324, /* 32 bit r/o Rx Frames with inv. MAC Opcode*/
XM_RXE_BURST = 0x0328, /* 32 bit r/o Rx Burst Event Counter */
XM_RXE_FMISS = 0x032c, /* 32 bit r/o Rx Missed Frames Event Cnt */
XM_RXF_FRA_ERR = 0x0330, /* 32 bit r/o Rx Framing Error Counter */
XM_RXE_FIFO_OV = 0x0334, /* 32 bit r/o Rx FIFO overflow Event Cnt */
XM_RXF_JAB_PKT = 0x0338, /* 32 bit r/o Rx Jabber Packet Frame Cnt */
XM_RXE_CAR_ERR = 0x033c, /* 32 bit r/o Rx Carrier Event Error Cnt */
XM_RXF_LEN_ERR = 0x0340, /* 32 bit r/o Rx in Range Length Error */
XM_RXE_SYM_ERR = 0x0344, /* 32 bit r/o Rx Symbol Error Counter */
XM_RXE_SHT_ERR = 0x0348, /* 32 bit r/o Rx Short Event Error Cnt */
XM_RXE_RUNT = 0x034c, /* 32 bit r/o Rx Runt Event Counter */
XM_RXF_LNG_ERR = 0x0350, /* 32 bit r/o Rx Frame too Long Error Cnt */
XM_RXF_FCS_ERR = 0x0354, /* 32 bit r/o Rx Frame Check Seq. Error Cnt */
XM_RXF_CEX_ERR = 0x035c, /* 32 bit r/o Rx Carrier Ext Error Frame Cnt*/
XM_RXP_UTIL = 0x0360, /* 32 bit r/o Rx Utilization in % */
XM_RXF_64B = 0x0368, /* 32 bit r/o 64 Byte Rx Frame Counter */
XM_RXF_127B = 0x036c, /* 32 bit r/o 65-127 Byte Rx Frame Counter */
XM_RXF_255B = 0x0370, /* 32 bit r/o 128-255 Byte Rx Frame Counter */
XM_RXF_511B = 0x0374, /* 32 bit r/o 256-511 Byte Rx Frame Counter */
XM_RXF_1023B = 0x0378, /* 32 bit r/o 512-1023 Byte Rx Frame Counter*/
XM_RXF_MAX_SZ = 0x037c, /* 32 bit r/o 1024-MaxSize Byte Rx Frame Cnt*/
};
/* XM_MMU_CMD 16 bit r/w MMU Command Register */ enum {
XM_MMU_PHY_RDY = 1<<12, /* Bit 12: PHY Read Ready */
XM_MMU_PHY_BUSY = 1<<11, /* Bit 11: PHY Busy */
XM_MMU_IGN_PF = 1<<10, /* Bit 10: Ignore Pause Frame */
XM_MMU_MAC_LB = 1<<9, /* Bit 9: Enable MAC Loopback */
XM_MMU_FRC_COL = 1<<7, /* Bit 7: Force Collision */
XM_MMU_SIM_COL = 1<<6, /* Bit 6: Simulate Collision */
XM_MMU_NO_PRE = 1<<5, /* Bit 5: No MDIO Preamble */
XM_MMU_GMII_FD = 1<<4, /* Bit 4: GMII uses Full Duplex */
XM_MMU_RAT_CTRL = 1<<3, /* Bit 3: Enable Rate Control */
XM_MMU_GMII_LOOP= 1<<2, /* Bit 2: PHY is in Loopback Mode */
XM_MMU_ENA_RX = 1<<1, /* Bit 1: Enable Receiver */
XM_MMU_ENA_TX = 1<<0, /* Bit 0: Enable Transmitter */
};
/* XM_TX_CMD 16 bit r/w Transmit Command Register */ enum {
XM_TX_BK2BK = 1<<6, /* Bit 6: Ignor Carrier Sense (Tx Bk2Bk)*/
XM_TX_ENC_BYP = 1<<5, /* Bit 5: Set Encoder in Bypass Mode */
XM_TX_SAM_LINE = 1<<4, /* Bit 4: (sc) Start utilization calculation */
XM_TX_NO_GIG_MD = 1<<3, /* Bit 3: Disable Carrier Extension */
XM_TX_NO_PRE = 1<<2, /* Bit 2: Disable Preamble Generation */
XM_TX_NO_CRC = 1<<1, /* Bit 1: Disable CRC Generation */
XM_TX_AUTO_PAD = 1<<0, /* Bit 0: Enable Automatic Padding */
};
/* XM_TX_RT_LIM 16 bit r/w Transmit Retry Limit Register */ #define XM_RT_LIM_MSK 0x1f /* Bit 4..0: Tx Retry Limit */
/* XM_TX_STIME 16 bit r/w Transmit Slottime Register */ #define XM_STIME_MSK 0x7f /* Bit 6..0: Tx Slottime bits */
/* XM_TX_IPG 16 bit r/w Transmit Inter Packet Gap */ #define XM_IPG_MSK 0xff /* Bit 7..0: IPG value bits */
/* XM_RX_CMD 16 bit r/w Receive Command Register */ enum {
XM_RX_LENERR_OK = 1<<8, /* Bit 8 don't set Rx Err bit for */ /* inrange error packets */
XM_RX_BIG_PK_OK = 1<<7, /* Bit 7 don't set Rx Err bit for */ /* jumbo packets */
XM_RX_IPG_CAP = 1<<6, /* Bit 6 repl. type field with IPG */
XM_RX_TP_MD = 1<<5, /* Bit 5: Enable transparent Mode */
XM_RX_STRIP_FCS = 1<<4, /* Bit 4: Enable FCS Stripping */
XM_RX_SELF_RX = 1<<3, /* Bit 3: Enable Rx of own packets */
XM_RX_SAM_LINE = 1<<2, /* Bit 2: (sc) Start utilization calculation */
XM_RX_STRIP_PAD = 1<<1, /* Bit 1: Strip pad bytes of Rx frames */
XM_RX_DIS_CEXT = 1<<0, /* Bit 0: Disable carrier ext. check */
};
/* XM_GP_PORT 32 bit r/w General Purpose Port Register */ enum {
XM_GP_ANIP = 1<<6, /* Bit 6: (ro) Auto-Neg. in progress */
XM_GP_FRC_INT = 1<<5, /* Bit 5: (sc) Force Interrupt */
XM_GP_RES_MAC = 1<<3, /* Bit 3: (sc) Reset MAC and FIFOs */
XM_GP_RES_STAT = 1<<2, /* Bit 2: (sc) Reset the statistics module */
XM_GP_INP_ASS = 1<<0, /* Bit 0: (ro) GP Input Pin asserted */
};
/* XM_IMSK 16 bit r/w Interrupt Mask Register */ /* XM_ISRC 16 bit r/o Interrupt Status Register */ enum {
XM_IS_LNK_AE = 1<<14, /* Bit 14: Link Asynchronous Event */
XM_IS_TX_ABORT = 1<<13, /* Bit 13: Transmit Abort, late Col. etc */
XM_IS_FRC_INT = 1<<12, /* Bit 12: Force INT bit set in GP */
XM_IS_INP_ASS = 1<<11, /* Bit 11: Input Asserted, GP bit 0 set */
XM_IS_LIPA_RC = 1<<10, /* Bit 10: Link Partner requests config */
XM_IS_RX_PAGE = 1<<9, /* Bit 9: Page Received */
XM_IS_TX_PAGE = 1<<8, /* Bit 8: Next Page Loaded for Transmit */
XM_IS_AND = 1<<7, /* Bit 7: Auto-Negotiation Done */
XM_IS_TSC_OV = 1<<6, /* Bit 6: Time Stamp Counter Overflow */
XM_IS_RXC_OV = 1<<5, /* Bit 5: Rx Counter Event Overflow */
XM_IS_TXC_OV = 1<<4, /* Bit 4: Tx Counter Event Overflow */
XM_IS_RXF_OV = 1<<3, /* Bit 3: Receive FIFO Overflow */
XM_IS_TXF_UR = 1<<2, /* Bit 2: Transmit FIFO Underrun */
XM_IS_TX_COMP = 1<<1, /* Bit 1: Frame Tx Complete */
XM_IS_RX_COMP = 1<<0, /* Bit 0: Frame Rx Complete */
XM_IMSK_DISABLE = 0xffff,
};
/* XM_HW_CFG 16 bit r/w Hardware Config Register */ enum {
XM_HW_GEN_EOP = 1<<3, /* Bit 3: generate End of Packet pulse */
XM_HW_COM4SIG = 1<<2, /* Bit 2: use Comma Detect for Sig. Det.*/
XM_HW_GMII_MD = 1<<0, /* Bit 0: GMII Interface selected */
};
/* XM_TX_LO_WM 16 bit r/w Tx FIFO Low Water Mark */ /* XM_TX_HI_WM 16 bit r/w Tx FIFO High Water Mark */ #define XM_TX_WM_MSK 0x01ff /* Bit 9.. 0 Tx FIFO Watermark bits */
/* XM_TX_THR 16 bit r/w Tx Request Threshold */ /* XM_HT_THR 16 bit r/w Host Request Threshold */ /* XM_RX_THR 16 bit r/w Rx Request Threshold */ #define XM_THR_MSK 0x03ff /* Bit 10.. 0 Rx/Tx Request Threshold bits */
/* XM_TX_STAT 32 bit r/o Tx Status LIFO Register */ enum {
XM_ST_VALID = (1UL<<31), /* Bit 31: Status Valid */
XM_ST_BYTE_CNT = (0x3fffL<<17), /* Bit 30..17: Tx frame Length */
XM_ST_RETRY_CNT = (0x1fL<<12), /* Bit 16..12: Retry Count */
XM_ST_EX_COL = 1<<11, /* Bit 11: Excessive Collisions */
XM_ST_EX_DEF = 1<<10, /* Bit 10: Excessive Deferral */
XM_ST_BURST = 1<<9, /* Bit 9: p. xmitted in burst md*/
XM_ST_DEFER = 1<<8, /* Bit 8: packet was defered */
XM_ST_BC = 1<<7, /* Bit 7: Broadcast packet */
XM_ST_MC = 1<<6, /* Bit 6: Multicast packet */
XM_ST_UC = 1<<5, /* Bit 5: Unicast packet */
XM_ST_TX_UR = 1<<4, /* Bit 4: FIFO Underrun occurred */
XM_ST_CS_ERR = 1<<3, /* Bit 3: Carrier Sense Error */
XM_ST_LAT_COL = 1<<2, /* Bit 2: Late Collision Error */
XM_ST_MUL_COL = 1<<1, /* Bit 1: Multiple Collisions */
XM_ST_SGN_COL = 1<<0, /* Bit 0: Single Collision */
};
/* XM_RX_LO_WM 16 bit r/w Receive Low Water Mark */ /* XM_RX_HI_WM 16 bit r/w Receive High Water Mark */ #define XM_RX_WM_MSK 0x03ff /* Bit 11.. 0: Rx FIFO Watermark bits */
/* XM_DEV_ID 32 bit r/o Device ID Register */ #define XM_DEV_OUI (0x00ffffffUL<<8) /* Bit 31..8: Device OUI */ #define XM_DEV_REV (0x07L << 5) /* Bit 7..5: Chip Rev Num */
/* XM_MODE 32 bit r/w Mode Register */ enum {
XM_MD_ENA_REJ = 1<<26, /* Bit 26: Enable Frame Reject */
XM_MD_SPOE_E = 1<<25, /* Bit 25: Send Pause on Edge */ /* extern generated */
XM_MD_TX_REP = 1<<24, /* Bit 24: Transmit Repeater Mode */
XM_MD_SPOFF_I = 1<<23, /* Bit 23: Send Pause on FIFO full */ /* intern generated */
XM_MD_LE_STW = 1<<22, /* Bit 22: Rx Stat Word in Little Endian */
XM_MD_TX_CONT = 1<<21, /* Bit 21: Send Continuous */
XM_MD_TX_PAUSE = 1<<20, /* Bit 20: (sc) Send Pause Frame */
XM_MD_ATS = 1<<19, /* Bit 19: Append Time Stamp */
XM_MD_SPOL_I = 1<<18, /* Bit 18: Send Pause on Low */ /* intern generated */
XM_MD_SPOH_I = 1<<17, /* Bit 17: Send Pause on High */ /* intern generated */
XM_MD_CAP = 1<<16, /* Bit 16: Check Address Pair */
XM_MD_ENA_HASH = 1<<15, /* Bit 15: Enable Hashing */
XM_MD_CSA = 1<<14, /* Bit 14: Check Station Address */
XM_MD_CAA = 1<<13, /* Bit 13: Check Address Array */
XM_MD_RX_MCTRL = 1<<12, /* Bit 12: Rx MAC Control Frame */
XM_MD_RX_RUNT = 1<<11, /* Bit 11: Rx Runt Frames */
XM_MD_RX_IRLE = 1<<10, /* Bit 10: Rx in Range Len Err Frame */
XM_MD_RX_LONG = 1<<9, /* Bit 9: Rx Long Frame */
XM_MD_RX_CRCE = 1<<8, /* Bit 8: Rx CRC Error Frame */
XM_MD_RX_ERR = 1<<7, /* Bit 7: Rx Error Frame */
XM_MD_DIS_UC = 1<<6, /* Bit 6: Disable Rx Unicast */
XM_MD_DIS_MC = 1<<5, /* Bit 5: Disable Rx Multicast */
XM_MD_DIS_BC = 1<<4, /* Bit 4: Disable Rx Broadcast */
XM_MD_ENA_PROM = 1<<3, /* Bit 3: Enable Promiscuous */
XM_MD_ENA_BE = 1<<2, /* Bit 2: Enable Big Endian */
XM_MD_FTF = 1<<1, /* Bit 1: (sc) Flush Tx FIFO */
XM_MD_FRF = 1<<0, /* Bit 0: (sc) Flush Rx FIFO */
};
enum pause_control {
FLOW_MODE_NONE = 1, /* No Flow-Control */
FLOW_MODE_LOC_SEND = 2, /* Local station sends PAUSE */
FLOW_MODE_SYMMETRIC = 3, /* Both stations may send PAUSE */
FLOW_MODE_SYM_OR_REM = 4, /* Both stations may send PAUSE or * just the remote station may send PAUSE
*/
};
enum pause_status {
FLOW_STAT_INDETERMINATED=0, /* indeterminated */
FLOW_STAT_NONE, /* No Flow Control */
FLOW_STAT_REM_SEND, /* Remote Station sends PAUSE */
FLOW_STAT_LOC_SEND, /* Local station sends PAUSE */
FLOW_STAT_SYMMETRIC, /* Both station may send PAUSE */
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.