📄 smc91111.h
字号:
/* * $Id: smc91111.h,v 1.1.2.1 2005/10/05 19:29:23 joel Exp $ */#ifndef _SMC91111_H_#define _SMC91111_H_#include <libchip/smc91111exp.h>#define LAN91CXX_TCR 0x00#define LAN91CXX_EPH_STATUS 0x01#define LAN91CXX_RCR 0x02#define LAN91CXX_COUNTER 0x03#define LAN91CXX_MIR 0x04#define LAN91CXX_MCR 0x05 /* Other than 91C111*/#define LAN91CXX_RPCR 0x05 /* 91C111 only*/#define LAN91CXX_RESERVED_0 0x06#define LAN91CXX_BS 0x07#define LAN91CXX_CONFIG 0x08#define LAN91CXX_BASE_REG 0x09#define LAN91CXX_IA01 0x0a#define LAN91CXX_IA23 0x0b#define LAN91CXX_IA45 0x0c#define LAN91CXX_GENERAL 0x0d /* 91C96 - was "RESERVED_1" for others*/#define LAN91CXX_CONTROL 0x0e#define LAN91CXX_BS2 0x0f#define LAN91CXX_MMU_COMMAND 0x10#define LAN91CXX_PNR 0x11#define LAN91CXX_FIFO_PORTS 0x12#define LAN91CXX_POINTER 0x13#define LAN91CXX_DATA_HIGH 0x14#define LAN91CXX_DATA 0x15#define LAN91CXX_INTERRUPT 0x16#define LAN91CXX_BS3 0x17#define LAN91CXX_MT01 0x18#define LAN91CXX_MT23 0x19#define LAN91CXX_MT45 0x1a#define LAN91CXX_MT67 0x1b#define LAN91CXX_MGMT 0x1c#define LAN91CXX_REVISION 0x1d#define LAN91CXX_ERCV 0x1e#define LAN91CXX_BS4 0x1f#define LAN91CXX_RCR_SOFT_RST 0x8000 /* soft reset*/#define LAN91CXX_RCR_FILT_CAR 0x4000 /* filter carrier*/#define LAN91CXX_RCR_ABORT_ENB 0x2000 /* abort on collision*/#define LAN91CXX_RCR_STRIP_CRC 0x0200 /* strip CRC*/#define LAN91CXX_RCR_RXEN 0x0100 /* enable RX*/#define LAN91CXX_RCR_ALMUL 0x0004 /* receive all muticasts*/#define LAN91CXX_RCR_PRMS 0x0002 /* promiscuous*/#define LAN91CXX_RCR_RX_ABORT 0x0001 /* set when abort due to long frame*/#define LAN91CXX_TCR_SWFDUP 0x8000 /* Switched Full Duplex mode*/#define LAN91CXX_TCR_ETEN_TYPE 0x4000 /* ETEN type (91C96) 0 <=> like a 91C94*/#define LAN91CXX_TCR_EPH_LOOP 0x2000 /* loopback mode*/#define LAN91CXX_TCR_STP_SQET 0x1000 /* Stop transmission on SQET error*/#define LAN91CXX_TCR_FDUPLX 0x0800 /* full duplex*/#define LAN91CXX_TCR_MON_CSN 0x0400 /* monitor carrier during tx (91C96)*/#define LAN91CXX_TCR_NOCRC 0x0100 /* does not append CRC to frames*/#define LAN91CXX_TCR_PAD_EN 0x0080 /* pads frames with 00 to min length*/#define LAN91CXX_TCR_FORCOL 0x0004 /* force collision*/#define LAN91CXX_TCR_LLOOP 0x0002 /* local loopback (91C96)*/#define LAN91CXX_TCR_TXENA 0x0001 /* enable*/#define LAN91CXX_POINTER_RCV 0x8000#define LAN91CXX_POINTER_AUTO_INCR 0x4000#define LAN91CXX_POINTER_READ 0x2000#define LAN91CXX_POINTER_ETEN 0x1000#define LAN91CXX_POINTER_NOT_EMPTY 0x0800#define LAN91CXX_INTERRUPT_TX_IDLE_M 0x8000 /* (91C96)*/#define LAN91CXX_INTERRUPT_ERCV_INT_M 0x4000#define LAN91CXX_INTERRUPT_EPH_INT_M 0x2000#define LAN91CXX_INTERRUPT_RX_OVRN_INT_M 0x1000#define LAN91CXX_INTERRUPT_ALLOC_INT_M 0x0800#define LAN91CXX_INTERRUPT_TX_EMPTY_INT_M 0x0400#define LAN91CXX_INTERRUPT_TX_INT_M 0x0200#define LAN91CXX_INTERRUPT_RCV_INT_M 0x0100#define LAN91CXX_INTERRUPT_TX_IDLE 0x0080 /* (91C96)*/#define LAN91CXX_INTERRUPT_ERCV_INT 0x0040 /* also ack*/#define LAN91CXX_INTERRUPT_EPH_INT 0x0020#define LAN91CXX_INTERRUPT_RX_OVRN_INT 0x0010 /* also ack*/#define LAN91CXX_INTERRUPT_ALLOC_INT 0x0008#define LAN91CXX_INTERRUPT_TX_EMPTY_INT 0x0004 /* also ack*/#define LAN91CXX_INTERRUPT_TX_INT 0x0002 /* also ack*/#define LAN91CXX_INTERRUPT_RCV_INT 0x0001#define LAN91CXX_INTERRUPT_TX_SET 0x0006 /* TX_EMPTY + TX*/#define LAN91CXX_INTERRUPT_TX_SET_ACK 0x0004 /* TX_EMPTY and not plain TX*/#define LAN91CXX_INTERRUPT_TX_FIFO_ACK 0x0002 /* TX alone*/#define LAN91CXX_INTERRUPT_TX_SET_M 0x0600 /* TX_EMPTY + TX*/#define LAN91CXX_CONTROL_RCV_BAD 0x4000#define LAN91CXX_CONTROL_AUTO_RELEASE 0x0800#define LAN91CXX_CONTROL_LE_ENABLE 0x0080#define LAN91CXX_CONTROL_CR_ENABLE 0x0040#define LAN91CXX_CONTROL_TE_ENABLE 0x0020/* These are for setting the MAC address in the 91C96 serial EEPROM*/#define LAN91CXX_CONTROL_EEPROM_SELECT 0x0004#define LAN91CXX_CONTROL_RELOAD 0x0002#define LAN91CXX_CONTROL_STORE 0x0001#define LAN91CXX_CONTROL_EEPROM_BUSY 0x0003#define LAN91CXX_ESA_EEPROM_OFFSET 0x0020#define LAN91CXX_STATUS_TX_UNRN 0x8000#define LAN91CXX_STATUS_LINK_OK 0x4000#define LAN91CXX_STATUS_CTR_ROL 0x1000#define LAN91CXX_STATUS_EXC_DEF 0x0800#define LAN91CXX_STATUS_LOST_CARR 0x0400#define LAN91CXX_STATUS_LATCOL 0x0200#define LAN91CXX_STATUS_WAKEUP 0x0100#define LAN91CXX_STATUS_TX_DEFR 0x0080#define LAN91CXX_STATUS_LTX_BRD 0x0040#define LAN91CXX_STATUS_SQET 0x0020#define LAN91CXX_STATUS_16COL 0x0010#define LAN91CXX_STATUS_LTX_MULT 0x0008#define LAN91CXX_STATUS_MUL_COL 0x0004#define LAN91CXX_STATUS_SNGL_COL 0x0002#define LAN91CXX_STATUS_TX_SUC 0x0001#define LAN91CXX_MMU_COMMAND_BUSY 0x0001#define LAN91CXX_MMU_noop 0x0000#define LAN91CXX_MMU_alloc_for_tx 0x0020#define LAN91CXX_MMU_reset_mmu 0x0040#define LAN91CXX_MMU_rem_rx_frame 0x0060#define LAN91CXX_MMU_rem_tx_frame 0x0070 /* (91C96) only when TX stopped*/#define LAN91CXX_MMU_remrel_rx_frame 0x0080#define LAN91CXX_MMU_rel_packet 0x00a0#define LAN91CXX_MMU_enq_packet 0x00c0#define LAN91CXX_MMU_reset_tx_fifo 0x00e0#define LAN91CXX_CONTROLBYTE_CRC 0x1000#define LAN91CXX_CONTROLBYTE_ODD 0x2000#define LAN91CXX_CONTROLBYTE_RX 0x4000#define LAN91CXX_RX_STATUS_ALIGNERR 0x8000#define LAN91CXX_RX_STATUS_BCAST 0x4000#define LAN91CXX_RX_STATUS_BADCRC 0x2000#define LAN91CXX_RX_STATUS_ODDFRM 0x1000#define LAN91CXX_RX_STATUS_TOOLONG 0x0800#define LAN91CXX_RX_STATUS_TOOSHORT 0x0400#define LAN91CXX_RX_STATUS_HASHVALMASK 0x007e /* MASK*/#define LAN91CXX_RX_STATUS_MCAST 0x0001#define LAN91CXX_RX_STATUS_BAD \ (LAN91CXX_RX_STATUS_ALIGNERR | \ LAN91CXX_RX_STATUS_BADCRC | \ LAN91CXX_RX_STATUS_TOOLONG | \ LAN91CXX_RX_STATUS_TOOSHORT)#define LAN91CXX_RX_STATUS_IS_ODD(__cpd,__stat) ((__stat) & LAN91CXX_RX_STATUS_ODDFRM)#define LAN91CXX_CONTROLBYTE_IS_ODD(__cpd,__val) ((__val) & LAN91CXX_CONTROLBYTE_ODD)/* Attribute memory registers in PCMCIA mode*/#define LAN91CXX_ECOR 0x8000#define LAN91CXX_ECOR_RESET (1<<7)#define LAN91CXX_ECOR_LEVIRQ (1<<6)#define LAN91CXX_ECOR_ATTWR (1<<2)#define LAN91CXX_ECOR_ENABLE (1<<0)#define LAN91CXX_ECSR 0x8002#define LAN91CXX_ECSR_IOIS8 (1<<5)#define LAN91CXX_ECSR_PWRDWN (1<<2)#define LAN91CXX_ECSR_INTR (1<<1)/* These are for manipulating the MII interface*/#define LAN91CXX_MGMT_MDO 0x0001#define LAN91CXX_MGMT_MDI 0x0002#define LAN91CXX_MGMT_MCLK 0x0004#define LAN91CXX_MGMT_MDOE 0x0008/* Internal PHY registers (91c111)*/#define LAN91CXX_PHY_CTRL 0#define LAN91CXX_PHY_STAT 1#define LAN91CXX_PHY_ID1 2#define LAN91CXX_PHY_ID2 3#define LAN91CXX_PHY_AUTO_AD 4#define LAN91CXX_PHY_AUTO_CAP 5#define LAN91CXX_PHY_CONFIG1 16#define LAN91CXX_PHY_CONFIG2 17#define LAN91CXX_PHY_STATUS_OUT 18#define LAN91CXX_PHY_MASK 19/* PHY control bits*/#define LAN91CXX_PHY_CTRL_COLTST (1 << 7)#define LAN91CXX_PHY_CTRL_DPLX (1 << 8)#define LAN91CXX_PHY_CTRL_ANEG_RST (1 << 9)#define LAN91CXX_PHY_CTRL_MII_DIS (1 << 10)#define LAN91CXX_PHY_CTRL_PDN (1 << 11)#define LAN91CXX_PHY_CTRL_ANEG_EN (1 << 12)#define LAN91CXX_PHY_CTRL_SPEED (1 << 13)#define LAN91CXX_PHY_CTRL_LPBK (1 << 14)#define LAN91CXX_PHY_CTRL_RST (1 << 15)// PHY Configuration Register 1#define PHY_CFG1_LNKDIS 0x8000 // 1=Rx Link Detect Function disabled#define PHY_CFG1_XMTDIS 0x4000 // 1=TP Transmitter Disabled#define PHY_CFG1_XMTPDN 0x2000 // 1=TP Transmitter Powered Down#define PHY_CFG1_BYPSCR 0x0400 // 1=Bypass scrambler/descrambler#define PHY_CFG1_UNSCDS 0x0200 // 1=Unscramble Idle Reception Disable#define PHY_CFG1_EQLZR 0x0100 // 1=Rx Equalizer Disabled#define PHY_CFG1_CABLE 0x0080 // 1=STP(150ohm), 0=UTP(100ohm)#define PHY_CFG1_RLVL0 0x0040 // 1=Rx Squelch level reduced by 4.5db#define PHY_CFG1_TLVL_SHIFT 2 // Transmit Output Level Adjust#define PHY_CFG1_TLVL_MASK 0x003C#define PHY_CFG1_TRF_MASK 0x0003 // Transmitter Rise/Fall time// PHY Configuration Register 2#define PHY_CFG2_REG 0x11#define PHY_CFG2_APOLDIS 0x0020 // 1=Auto Polarity Correction disabled#define PHY_CFG2_JABDIS 0x0010 // 1=Jabber disabled#define PHY_CFG2_MREG 0x0008 // 1=Multiple register access (MII mgt)#define PHY_CFG2_INTMDIO 0x0004 // 1=Interrupt signaled with MDIO pulseo// PHY Status Output (and Interrupt status) Register#define PHY_INT_REG 0x12 // Status Output (Interrupt Status)#define PHY_INT_INT 0x8000 // 1=bits have changed since last read#define PHY_INT_LNKFAIL 0x4000 // 1=Link Not detected#define PHY_INT_LOSSSYNC 0x2000 // 1=Descrambler has lost sync#define PHY_INT_CWRD 0x1000 // 1=Invalid 4B5B code detected on rx#define PHY_INT_SSD 0x0800 // 1=No Start Of Stream detected on rx#define PHY_INT_ESD 0x0400 // 1=No End Of Stream detected on rx#define PHY_INT_RPOL 0x0200 // 1=Reverse Polarity detected#define PHY_INT_JAB 0x0100 // 1=Jabber detected#define PHY_INT_SPDDET 0x0080 // 1=100Base-TX mode, 0=10Base-T mode#define PHY_INT_DPLXDET 0x0040 // 1=Device in Full Duplex// PHY Interrupt/Status Mask Register#define PHY_MASK_REG 0x13 // Interrupt Mask#define LAN91CXX_RPCR_LEDA_LINK (0 << 2)#define LAN91CXX_RPCR_LEDA_TXRX (4 << 2)#define LAN91CXX_RPCR_LEDA_RX (6 << 2)#define LAN91CXX_RPCR_LEDA_TX (7 << 2)#define LAN91CXX_RPCR_LEDB_LINK (0 << 5)#define LAN91CXX_RPCR_LEDB_TXRX (4 << 5)#define LAN91CXX_RPCR_LEDB_RX (6 << 5)#define LAN91CXX_RPCR_LEDB_TX (7 << 5)#define LAN91CXX_RPCR_ANEG (1 << 11)#define LAN91CXX_RPCR_DPLX (1 << 12)#define LAN91CXX_RPCR_SPEED (1 << 13)// PHY Control Register#define PHY_CNTL_REG 0x00#define PHY_CNTL_RST 0x8000 // 1=PHY Reset#define PHY_CNTL_LPBK 0x4000 // 1=PHY Loopback#define PHY_CNTL_SPEED 0x2000 // 1=100Mbps, 0=10Mpbs#define PHY_CNTL_ANEG_EN 0x1000 // 1=Enable Auto negotiation#define PHY_CNTL_PDN 0x0800 // 1=PHY Power Down mode#define PHY_CNTL_MII_DIS 0x0400 // 1=MII 4 bit interface disabled#define PHY_CNTL_ANEG_RST 0x0200 // 1=Reset Auto negotiate#define PHY_CNTL_DPLX 0x0100 // 1=Full Duplex, 0=Half Duplex#define PHY_CNTL_COLTST 0x0080 // 1= MII Colision Test// PHY Status Register#define PHY_STAT_REG 0x01#define PHY_STAT_CAP_T4 0x8000 // 1=100Base-T4 capable#define PHY_STAT_CAP_TXF 0x4000 // 1=100Base-X full duplex capable#define PHY_STAT_CAP_TXH 0x2000 // 1=100Base-X half duplex capable#define PHY_STAT_CAP_TF 0x1000 // 1=10Mbps full duplex capable#define PHY_STAT_CAP_TH 0x0800 // 1=10Mbps half duplex capable#define PHY_STAT_CAP_SUPR 0x0040 // 1=recv mgmt frames with not preamble#define PHY_STAT_ANEG_ACK 0x0020 // 1=ANEG has completed#define PHY_STAT_REM_FLT 0x0010 // 1=Remote Fault detected#define PHY_STAT_CAP_ANEG 0x0008 // 1=Auto negotiate capable#define PHY_STAT_LINK 0x0004 // 1=valid link#define PHY_STAT_JAB 0x0002 // 1=10Mbps jabber condition#define PHY_STAT_EXREG 0x0001 // 1=extended registers implemented#define PHY_STAT_RESERVED 0x0780 // Reserved bits mask.// PHY Identifier Registers#define PHY_ID1_REG 0x02 // PHY Identifier 1#define PHY_ID2_REG 0x03 // PHY Identifier 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -