/*------------------------------------------------------------------------------------------*\ \*------------------------------------------------------------------------------------------*/ #ifndef _EMAC_H_ #define _EMAC_H_ #define EMAC_MDIO_CLOCK_FREQ 2200000 /* 2.2 MHz */ #define EMACA_BASE EMAC_BASE #define EWRAP_R (*(volatile unsigned *)(EMAC_BASE + CTL_MODUL_OFF)) #define FIFO_CTL_OFF 0x16C #define MAC_CONFIG_OFF 0x170 #define SOFTRESET_OFF 0x174 #define TXINTSTATRAW_OFF 0x180 #define TXINTSTATMASK_OFF 0x184 #define TXINTMASKSET_OFF 0x188 #define TXINTMASKCLEAR_OFF 0x18C #define MACINVECTOR_OFF 0x190 #define RXINTSTATRAW_OFF 0x1A0 #define RXINTSTATMASK_OFF 0x1A4 #define RXINTMASKSET_OFF 0x1A8 #define RXINTMASKCLEAR_OFF 0x1AC #define MACINTSTATRAW_OFF 0x1B0 #define MACINTSTATMASK_OFF 0x1B4 #define MACINTMASKSET_OFF 0x1B8 #define MACINTMASKCLEAR_OFF 0x1BC #define MAC_SRC_ADDR_LOW_OFF 0x1D0 #define MAC_SRC_ADDR_HIGH_OFF 0x1D4 #define MAC_ADDR_LOW_OFF 0x500 #define MAC_ADDR_HIGH_OFF 0x504 #define MAC_INDEX_OFF 0x508 /*------------------------------------------------------------------------------------------*\ * moeglicherweise liegen die Interruptregister an falschen Adressen! * der struct ist aus u-boot uebernommen und weicht von dem Datenblatt ab! * union _cpmac_Rx_MBP_Enable RX_MBP_ENABLE liegt wieder an der richtigen Adresse \*------------------------------------------------------------------------------------------*/ /* Ethernet MAC Register Overlay Structure */ struct cpmac_regs { volatile unsigned int TX_ID_VER; union _cpmac_RTx_Ctrl TX_CONTROL; volatile unsigned int TX_TEARDOWN; volatile unsigned int reserved[1]; volatile unsigned int RX_ID_VER; union _cpmac_RTx_Ctrl RX_CONTROL; volatile unsigned int RX_TEARDOWN; volatile unsigned int reserved1[25]; volatile unsigned int TX_INT_STATRAW; /*--- 0x01C80080 ---*/ volatile unsigned int TX_INT_STATMASKED; volatile unsigned int TX_INT_MASKSET; volatile unsigned int TX_INT_MASKCLEAR; volatile unsigned int MAC_IN_VECTOR; volatile unsigned int reserved2[3]; volatile unsigned int RX_INT_STATRAW; volatile unsigned int RX_INT_STATMASKED; volatile unsigned int RX_INT_MASKSET; volatile unsigned int RX_INT_MASKCLEAR; volatile unsigned int MAC_INT_STATRAW; volatile unsigned int MAC_INT_STATMASKED; volatile unsigned int MAC_INT_MASKSET; volatile unsigned int MAC_INT_MASKCLEAR; volatile unsigned int reserved3[16]; union _cpmac_Rx_MBP_Enable RX_MBP_ENABLE; /*--- 0x01C80100 ---*/ union _cpmac_Rx_UNI RX_UNICAST_SET; union _cpmac_Rx_UNI RX_UNICAST_CLEAR; union _cpmac_Rx_MaxLen RX_MAX_LEN; union _cpmac_Rx_Boffset RX_BUFFER_OFFSET; volatile unsigned int RX_FILTER_LOWTHRESH; volatile unsigned int reserved4[2]; volatile unsigned int RX_FLOW_THRESH[CHANNEL_MAX]; volatile unsigned int RX_FREE_BUFFER[CHANNEL_MAX]; union _cpmac_MAC_Stat MAC_CONTROL; volatile unsigned int MAC_STATUS; volatile unsigned int EMC_ONTROL; volatile unsigned int FIFO_CONTROL; volatile unsigned int MAC_CONFIG; volatile unsigned int SOFTRESET; volatile unsigned int reserved5[22]; volatile unsigned int MAC_SRCADDR_LOW; /*--- 0x01C801D0 ---*/ volatile unsigned int MAC_SRCADDR_HIGH; volatile unsigned int MAC_HASH1; volatile unsigned int MAC_HASH2; union _cpmac_Bofftest BOFF_TEST; volatile unsigned int TPACE_TEST; volatile unsigned int RX_PAUSE; volatile unsigned int TX_PAUSE; volatile unsigned int reserved6[4]; struct _cpmac_statistic_ STATISTIC; /*--- 0x01C80200 ---*/ volatile unsigned int reserved7[156]; volatile unsigned int MAC_ADDR_LOW; /*--- 0x01C80500 ---*/ volatile unsigned int MAC_ADDR_HIGH; volatile unsigned int MAC_INDEX; volatile unsigned int reserved8[61]; volatile unsigned int TX_DMA_HDP[CHANNEL_MAX]; /*--- 0x01C80600 ---*/ volatile unsigned int RX_DMA_HDP[CHANNEL_MAX]; volatile unsigned int TX_INT_ACK[CHANNEL_MAX]; volatile unsigned int RX_INT_ACK[CHANNEL_MAX]; }; /* EMAC Wrapper Register Overlay */ struct ewrap_regs { volatile unsigned int reserved[1025]; volatile unsigned int EWCTL; volatile unsigned int EWINTTCNT; }; #endif /*--- #ifndef _EMAC_H_ ---*/