upd985xx_eth.h
来自「开放源码实时操作系统源码.」· C头文件 代码 · 共 466 行 · 第 1/2 页
H
466 行
// Table 5-3. Statistics Counter Register Map
// <snip>
//
// Table 5-4. DMA and FIFO Management Registers Map
//
// ETH_TXCR 0x200 Transmit Configuration Register R/W 0000_0000H
#define ETH_TXCR_TXE (1<<31) // Transmit Enable:
#define ETH_TXCR_DTBS_SHIFT (16) // 18:16 DMA Transmit Burst Size:
#define ETH_TXCR_DTBS (0x70000) // 18:16 DMA Transmit Burst Size:
#define ETH_TXCR_DTBS_1 (0x00000) // 000: 1 Word (4 bytes)
#define ETH_TXCR_DTBS_2 (0x10000) // 001: 2 Word (8 bytes)
#define ETH_TXCR_DTBS_4 (0x20000) // 010: 4 Word (16 bytes)
#define ETH_TXCR_DTBS_8 (0x30000) // 011: 8 Word (32 bytes)
#define ETH_TXCR_DTBS_16 (0x40000) // 100: 16 Word (64 bytes)
#define ETH_TXCR_DTBS_32 (0x50000) // 101: 32 Word (128 bytes)
#define ETH_TXCR_DTBS_64 (0x60000) // 110: 64 Word (256 bytes)
#define ETH_TXCR_AFCE (1<< 0) // Auto Flow Control Enable:
// ETH_TXFCR 0x204 Transmit FIFO Control Register R/W FFFF_40C0H
#define ETH_TXFCR_TPTV_SHIFT (16) // 31:16 Transmit Pause Timer Value: FFFFH
#define ETH_TXFCR_TPTV (0xffff0000) // 31:16 Transmit Pause Timer Value: FFFFH
#define ETH_TXFCR_TX_DRTH_SHIFT (10) // 15:10 Transmit Drain Threshold Level: 10H
#define ETH_TXFCR_TX_DRTH (0x0000fc00) // 15:10 Transmit Drain Threshold Level: 10H
#define ETH_TXFCR_TX_FLTH_SHIFT (2) // 7:2 Transmit Fill Threshold Level: 03H
#define ETH_TXFCR_TX_FLTH (0x000000fc) // 7:2 Transmit Fill Threshold Level: 03H
#define ETH_TXFCR_TPTV_DEFAULT (0x10000000) // default 0x1000 slot time (1slot:512bit)
#define ETH_TXFCR_TX_DRTH_DEFAULT (0x00002000) // 001000b (8long, 32byte)
#define ETH_TXFCR_TX_FLTH_DEFAULT (0x000000c0) // default 110000b (48word, 192byte)
// ETH_TXDTR 0x208 Transmit Data Register W 0000_0000H
// ETH_TXSR 0x20C Transmit Status Register R 0000_0000H
#define ETH_TXSR_CSE (1<<31) // Carrier lost was detected during the transmission 0
#define ETH_TXSR_TBP (1<<30) // Back pressure occurred when the packet was received 0
#define ETH_TXSR_TPP (1<<29) // A packet request during the PAUSE operation was transmitted 0
#define ETH_TXSR_TPCF (1<<28) // A PAUSE control frame was transmitted 0
#define ETH_TXSR_TCFR (1<<27) // A control frame was transmitted 0
#define ETH_TXSR_TUDR (1<<26) // The TPUR pin was set high and aborted. Note 2 0
#define ETH_TXSR_TGNT (1<<25) // A huge packet was transmitted and aborted. 0
#define ETH_TXSR_LCOL (1<<24) // Collision occurred
#define ETH_TXSR_ECOL (1<<23) // Excess collisions
#define ETH_TXSR_TEDFR (1<<22) // Excess deferred
#define ETH_TXSR_TDFR (1<<21) // Transmission deferral occurred
#define ETH_TXSR_TBRO (1<<20) // A broadcast packet was transmitted. 0
#define ETH_TXSR_TMUL (1<<19) // A multicast packet was transmitted. 0
#define ETH_TXSR_TDONE (1<<18) // Transmission was completed. 0
#define ETH_TXSR_TFLOR (1<<17) // Value of the length field was huge
#define ETH_TXSR_TFLER (1<<16) // Value of the length field didn~t match the actual data count
#define ETH_TXSR_TCRCE (1<<15) // Attached CRC didn~t match the internal generated CRC
#define ETH_TXSR_TCBC_SHIFT (11) // 14:11 collisions for the previous transmission
#define ETH_TXSR_TCBC (0x7800) // 14:11 collisions for the previous transmission
#define ETH_TXSR_TBYT_SHIFT (0) // 10:0 transmitted bytes not including collided bytes
#define ETH_TXSR_TBYT (0x07FF) // 10:0 transmitted bytes not including collided bytes
// ETH_RXCR UPD985XX_SYSETH_REG( 0x218) // Receive Configuration Register R/W 0000_0000H
#define ETH_RXCR_RXE (1<<31) // Receive Enable:
#define ETH_RXCR_DRBS_SHIFT (16) // 18:16 DRBS DMA Transmit Burst Size: 0
#define ETH_RXCR_DRBS (0x70000) //
#define ETH_RXCR_DRBS_1 (0x00000) // 000: 1 Word (4 bytes)
#define ETH_RXCR_DRBS_2 (0x10000) // 001: 2 Word (8 bytes)
#define ETH_RXCR_DRBS_4 (0x20000) // 010: 4 Word (16 bytes)
#define ETH_RXCR_DRBS_8 (0x30000) // 011: 8 Word (32 bytes)
#define ETH_RXCR_DRBS_16 (0x40000) // 100: 16 Word (64 bytes)
#define ETH_RXCR_DRBS_32 (0x50000) // 101: 32 Word (128 bytes)
#define ETH_RXCR_DRBS_64 (0x60000) // 110: 64 Word (256 bytes)
// ETH_RXFCR 0x21C Receive FIFO Control Register R/W C040_0040H
#define ETH_RXFCR_UWM (0xfc000000) // 31:26 Upper Water Mark: 30H
#define ETH_RXFCR_UWM_SHIFT (26) // 31:26 Upper Water Mark: 30H
#define ETH_RXFCR_LWM (0x00fc0000) // 23:18 Lower Water Mark: 10H
#define ETH_RXFCR_LWM_SHIFT (18) // 23:18 Lower Water Mark: 10H
#define ETH_RXFCR_RX_DRTH (0x000000fc) // 7: 2 Receive Drain Threshold Level 10H
#define ETH_RXFCR_RX_DRTH_SHIFT (2) // 7: 2 Receive Drain Threshold Level 10H
#define ETH_RXFCR_UWM_DEFAULT (0xE0000000) // default 110000b ( 48word, 192byte )
#define ETH_RXFCR_LWM_DEFAULT (0x00400000) // default 010000b (16word, 64byte)
#define ETH_RXFCR_DRTH16W (0x00000040) // default 010000b (16word, 64byte)
// ETH_RXDTR 0x220 Receive Data Register R 0000_0000H
// ETH_RXSR 0x224 Receive Status Register R 0000_0000H
#define ETH_RXSR_RLENE (1<<31) // A toosmall or toolarge packet was received.
#define ETH_RXSR_VLAN (1<<30) // A VLAN was received.
#define ETH_RXSR_USOP (1<<29) // A control frame containing an unknown OP code was received.
#define ETH_RXSR_PRCF (1<<28) // A control frame containing the PAUSE OP code was received.
#define ETH_RXSR_RCFR (1<<27) // A control frame was received.
#define ETH_RXSR_DBNB (1<<26) // An alignment error occurred.
#define ETH_RXSR_RBRO (1<<25) // A broadcast packet was received. 0
#define ETH_RXSR_RMUL (1<<24) // A multicast packet was received. 0
#define ETH_RXSR_RXOK (1<<23) // A good packet was received.
#define ETH_RXSR_RLOR (1<<22) // The value of the length field was huge
#define ETH_RXSR_RLER (1<<21) // The value of the length field didn~t match
#define ETH_RXSR_RCRCE (1<<20) // A CRC error occurred. 0
#define ETH_RXSR_RCV (1<<19) // RXER was detected. 0
#define ETH_RXSR_CEPS (1<<18) // A False Carrier was detected. 0
#define ETH_RXSR_REPS (1<<17) // A packet which had a preamble and SFD only or one data nibble
#define ETH_RXSR_PAIG (1<<16) //
#define ETH_RXSR_RBYT (0xffff) // 15:0 The received byte count 0
#define ETH_RXSR_RBYT_SHIFT (0) // 15:0 The received byte count 0
// ETH_RXDPR 0x22C Receive Descriptor Register R/W 0000_0000H
// ETH_RXPDR 0x230 Receive Pool Descriptor Register R/W 0000_0000H
#define ETH_RXPDR_AL (0x70000000) // 30:28 AL[2:0] Alert Level 0H
#define ETH_RXPDR_AL_SHIFT (28)
#define ETH_RXPDR_RNOD (0xffff) // 15:0 Remaining Number of Descriptor 0H
#define ETH_RXPDR_RNOD_SHIFT (0)
//
// Table 5-5. Interrupt and Configuration Registers Map
//
// ETH_CCR 0x234 Configuration Register R/W 0000_0000H
#define ETH_CCR_SRT (1) // Software Reset (cleared automatically to '0')
// ETH_ISR 0x238 Interrupt Service Register R 0000_0000H
#define ETH_ISR_XMTDN (1<<15) // Transmit Done
#define ETH_ISR_TBDR (1<<14) // Transmit Buffer Descriptor Request at Null
#define ETH_ISR_TFLE (1<<13) // Transmit Frame Length Exceed
#define ETH_ISR_UR (1<<12) // Underrun
#define ETH_ISR_TABR (1<<11) // Transmit Aborted
#define ETH_ISR_TCFRI (1<<10) // Control Frame Transmit
#define ETH_ISR_RCVDN (1<<7 ) // Receive Done
#define ETH_ISR_RBDRS (1<<6 ) // Receive Buffer Descriptor Request at alert level
#define ETH_ISR_RBDRU (1<<5 ) // Receive Buffer Descriptor Request at zero
#define ETH_ISR_OF (1<<4 ) // Overflow
#define ETH_ISR_LFAL (1<<3 ) // Link Failed
#define ETH_ISR_CARRY (1<<0 ) // Carry Flag:
// ETH_MSR 0x23C Mask Serves Register R/W 0000_0000H
// As above
// --------------------------------------------------------------------------
// And the "buffer descriptor" control structures in RAM...
#define ETH_BUF_LAST (1<<31) // Last Descriptor
#define ETH_BUF_D_L (1<<30) // Data Buffer / Link Pointer
#define ETH_BUF_D_L_DATA (1<<30) // Data Buffer / Link Pointer
#define ETH_BUF_D_L_LINK (0<<30) // Data Buffer / Link Pointer
#define ETH_BUF_OWN (1<<29) // Owner 1:Ethernet Controller 0: VR4120A
#define ETH_BUF_OWN_ETH (1<<29)
#define ETH_BUF_OWN_CPU (0<<29)
#define ETH_BUF_DBRWE (1<<28) // Buffer Access Error
#define ETH_BUF_OK (1<<16) // Tx or Rx OK
#define ETH_BUF_SIZE (0xffff) // Byte Count
#define ETH_BUF_TX_TUDR (1<<27) // Transmit Underrun Error
#define ETH_BUF_TX_CSE (1<<26) // Carrier Sense Lost Error
#define ETH_BUF_TX_LCOL (1<<25) // Late Collision
#define ETH_BUF_TX_ECOL (1<<24) // Excessive Collision
#define ETH_BUF_TX_EDFR (1<<23) // Excessive Deferral
#define ETH_BUF_TX_TGNT (1<<18) // Transmit Giant Frame
#define ETH_BUF_TX_HBF (1<<17) // Heart Beat Fail for ENDEC mode
#define ETH_BUF_RX_OVRN (1<<24) // Overrun Error
#define ETH_BUF_RX_RUNT (1<<23) // Runt packet
#define ETH_BUF_RX_FRGE (1<<22) // Fragment Error
#define ETH_BUF_RX_RCV (1<<21) // Detects RXER
#define ETH_BUF_RX_FC (1<<20) // False Carrier
#define ETH_BUF_RX_CRCE (1<<19) // CRC Error
#define ETH_BUF_RX_FAE (1<<18) // Frame Alignment Error
#define ETH_BUF_RX_RFLE (1<<17) // Receive Frame Length Error
#define ETH_BUF_RX_FTYP (0x0e000000) // 27:25 Frame Type[2:0]
#define ETH_BUF_RX_FTYP_SHIFT (25) // 27:25 Frame Type[2:0]
// I don't think we need to know these...
// 000 Broadcast Frame
// 001 Multicast Frame
// 010 Unicast Frame
// 011 VLAN Frame
// 100 PAUSE control frame
// 101 Control Frame (except pause)
// 11x Reserved for future use
// --------------------------------------------------------------------------
// MII stuff for talking to the separate PHY
// Initially this was a SEEQ NQ80225 but now it is a LU3X31T-T64.
//#define SEEQ_DEVICE_PHYS_ADDRESS (1) // this from the board documentation
#define LU3X31T_DEVICE_PHYS_ADDRESS (2)
#define ETH_MADR_PHY_DEVICE_PHYS_ADDRESS \
(LU3X31T_DEVICE_PHYS_ADDRESS << ETH_MADR_PHY_ADDR_SHIFT)
// I don't know how much they have in common, but I think MII is pretty
// standard, and the "mandated" registers ought to be common.
#define PHY_CONTROL_REG (0)
#define PHY_STATUS_REG (1)
#define PHY_ID_ONE (2)
#define PHY_ID_TWO (3)
#define PHY_AUTONEG_ADVERT (4)
#define PHY_AUTONEG_REMOTE (5)
#define PHY_STATUS_DETECT_REG (18)
#define PHY_CONTROL_RESET (1<<15)
#define PHY_CONTROL_LOOPBACK (1<<14)
#define PHY_CONTROL_SPEED100 (1<<13)
#define PHY_CONTROL_AUTONEG_EN (1<<12)
#define PHY_CONTROL_POWERDOWN (1<<11)
#define PHY_CONTROL_MII_DIS (1<<10)
#define PHY_CONTROL_AUTONEG_RST (1<< 9)
#define PHY_CONTROL_DPLX_FULL (1<< 8)
#define PHY_CONTROL_COLLTEST (1<< 7)
#define PHY_STATUS_CAP_T4 (1<<15)
#define PHY_STATUS_CAP_100TXF (1<<14)
#define PHY_STATUS_CAP_100TXH (1<<13)
#define PHY_STATUS_CAP_10TF (1<<12)
#define PHY_STATUS_CAP_10TH (1<<11)
#define PHY_STATUS_CAP_SUPR (1<< 6)
#define PHY_STATUS_AUTONEG_ACK (1<< 5)
#define PHY_STATUS_REMOTEFAULT (1<< 4)
#define PHY_STATUS_CAP_AUTONEG (1<< 3)
#define PHY_STATUS_LINK_OK (1<< 2)
#define PHY_STATUS_JABBER (1<< 1)
#define PHY_STATUS_EXTREGS (1<< 0)
// These are the same for both AUTONEG registers
#define PHY_AUTONEG_NEXT (1<<15)
#define PHY_AUTONEG_ACK (1<<14)
#define PHY_AUTONEG_REMOTEFAULT (1<<13)
#define PHY_AUTONEG_100BASET4 (1<< 9)
#define PHY_AUTONEG_100BASETX_FDX (1<< 8)
#define PHY_AUTONEG_100BASETX_HDX (1<< 7)
#define PHY_AUTONEG_10BASET_FDX (1<< 6)
#define PHY_AUTONEG_10BASET_HDX (1<< 5)
#define PHY_AUTONEG_CSMA_802_3 (1<< 0)
#if 0
// Others are undocumented
#define PHY_STATUS_DETECT_SPEED100 (1<< 7)
#define PHY_STATUS_DETECT_DPLX_FULL (1<< 6)
#endif
// Phew!
// --------------------------------------------------------------------------
#endif // CYGONCE_HAL_UPD985XX_ETH_H
// End of upd985xx_eth.h
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?