3 * Purpose: Driver for the Fast Ethernet Controller (FEC)
\r
14 #include "eth_phy.h"
\r
16 /********************************************************************/
\r
18 /* External Interface Modes */
\r
19 #define FEC_MODE_7WIRE 0 /* Old 7-wire (AMD) mode */
\r
20 #define FEC_MODE_MII 1 /* Media Independent Interface */
\r
21 #define FEC_MODE_RMII 2 /* Reduced MII */
\r
22 #define FEC_MODE_LOOPBACK 3 /* Internal Loopback */
\r
24 #define INTC_LVL_FEC 3
\r
26 * FEC Configuration Parameters
\r
30 uint8 ch; /* FEC channel */
\r
31 uint8 mode; /* Transceiver mode */
\r
32 MII_SPEED speed; /* Ethernet Speed */
\r
33 MII_DUPLEX duplex; /* Ethernet Duplex */
\r
34 uint8 prom; /* Promiscuous Mode? */
\r
35 uint8 mac[6]; /* Ethernet Address */
\r
36 uint8 phyaddr; /* PHY address */
\r
37 uint8 initphy; /* Init PHY? */
\r
38 int nrxbd; /* Number of RxBDs */
\r
39 int ntxbd; /* Number of TxBDs */
\r
47 int errors; /* total count of errors */
\r
48 int hberr; /* heartbeat error */
\r
49 int babr; /* babbling receiver */
\r
50 int babt; /* babbling transmitter */
\r
51 int gra; /* graceful stop complete */
\r
52 int txf; /* transmit frame */
\r
53 int txb; /* transmit buffer */
\r
54 int rxf; /* receive frame */
\r
55 int rxb; /* received buffer */
\r
57 int eberr; /* FEC/DMA fatal bus error */
\r
58 int lc; /* late collision */
\r
59 int rl; /* collision retry limit */
\r
60 int un; /* Tx FIFO underflow */
\r
61 int rfsw_inv; /* Invalid bit in RFSW */
\r
62 int rfsw_l; /* RFSW Last in Frame */
\r
63 int rfsw_m; /* RFSW Miss */
\r
64 int rfsw_bc; /* RFSW Broadcast */
\r
65 int rfsw_mc; /* RFSW Multicast */
\r
66 int rfsw_lg; /* RFSW Length Violation */
\r
67 int rfsw_no; /* RFSW Non-octet */
\r
68 int rfsw_cr; /* RFSW Bad CRC */
\r
69 int rfsw_ov; /* RFSW Overflow */
\r
70 int rfsw_tr; /* RFSW Truncated */
\r
76 fec_mii_write( int, int, int);
\r
79 fec_mii_read(int, int, uint16*);
\r
82 fec_mii_init(int, int);
\r
100 fec_duplex (int, MII_DUPLEX);
\r
103 fec_rmii_speed (int, MII_SPEED);
\r
106 fec_hash_address(const uint8*);
\r
109 fec_set_address (const uint8*);
\r
112 fec_reset ( void );
\r
115 fec_init (int, const uint8*);
\r
118 fec_rx_start(int, uint8*, int);
\r
121 fec_rx_continue( void );
\r
124 fec_rx_handler(void);
\r
127 fec0_rx_handler(void);
\r
130 fec1_rx_handler(void);
\r
133 fec_tx_continue( void );
\r
139 fec_tx_handler(NIF*, int);
\r
142 fec_send (uint8*, uint8*, uint16 , NBUF*);
\r
145 fec0_send(uint8*, uint8*, uint16 , NBUF*);
\r
148 fec1_send(uint8*, uint8*, uint16 , NBUF*);
\r
151 fec_irq_enable( void );
\r
154 fec_irq_disable(int);
\r
157 fec_eth_start(FEC_CONFIG*, int);
\r
164 /********************************************************************/
\r
166 #endif /* _FEC_H_ */
\r