/* | |
* File: fec.h | |
* Purpose: Driver for the Fast Ethernet Controller (FEC) | |
* | |
* Notes: | |
*/ | |
#ifndef _FEC_H_ | |
#define _FEC_H_ | |
#include "eth.h" | |
#include "fecbd.h" | |
#include "mii.h" | |
#include "eth_phy.h" | |
/********************************************************************/ | |
/* External Interface Modes */ | |
#define FEC_MODE_7WIRE 0 /* Old 7-wire (AMD) mode */ | |
#define FEC_MODE_MII 1 /* Media Independent Interface */ | |
#define FEC_MODE_RMII 2 /* Reduced MII */ | |
#define FEC_MODE_LOOPBACK 3 /* Internal Loopback */ | |
#define INTC_LVL_FEC 3 | |
/* | |
* FEC Configuration Parameters | |
*/ | |
typedef struct | |
{ | |
uint8 ch; /* FEC channel */ | |
uint8 mode; /* Transceiver mode */ | |
MII_SPEED speed; /* Ethernet Speed */ | |
MII_DUPLEX duplex; /* Ethernet Duplex */ | |
uint8 prom; /* Promiscuous Mode? */ | |
uint8 mac[6]; /* Ethernet Address */ | |
uint8 phyaddr; /* PHY address */ | |
uint8 initphy; /* Init PHY? */ | |
int nrxbd; /* Number of RxBDs */ | |
int ntxbd; /* Number of TxBDs */ | |
} FEC_CONFIG; | |
#define YES 1 | |
#define NO 0 | |
/* | |
* FEC Event Log | |
*/ | |
typedef struct { | |
int errors; /* total count of errors */ | |
int hberr; /* heartbeat error */ | |
int babr; /* babbling receiver */ | |
int babt; /* babbling transmitter */ | |
int gra; /* graceful stop complete */ | |
int txf; /* transmit frame */ | |
int txb; /* transmit buffer */ | |
int rxf; /* receive frame */ | |
int rxb; /* received buffer */ | |
int mii; /* MII */ | |
int eberr; /* FEC/DMA fatal bus error */ | |
int lc; /* late collision */ | |
int rl; /* collision retry limit */ | |
int un; /* Tx FIFO underflow */ | |
int rfsw_inv; /* Invalid bit in RFSW */ | |
int rfsw_l; /* RFSW Last in Frame */ | |
int rfsw_m; /* RFSW Miss */ | |
int rfsw_bc; /* RFSW Broadcast */ | |
int rfsw_mc; /* RFSW Multicast */ | |
int rfsw_lg; /* RFSW Length Violation */ | |
int rfsw_no; /* RFSW Non-octet */ | |
int rfsw_cr; /* RFSW Bad CRC */ | |
int rfsw_ov; /* RFSW Overflow */ | |
int rfsw_tr; /* RFSW Truncated */ | |
} FEC_EVENT_LOG; | |
void vFECInit( void ); | |
unsigned short usFECGetRxedData( void ); | |
void vFECSendData( void ); | |
void vFECRxProcessingCompleted( void ); | |
/********************************************************************/ | |
#endif /* _FEC_H_ */ |