//am7990.h //Local area controller for ethernet (LANCE) //19940122/wjvg //the ports: #define RDP 0 //register data port #define RAP 1 //register address port //registers to be chooesen in RAP: #define RAP_CSR0 0 //control and status register 0 #define RAP_CSR1 1 //control and status register 1 #define RAP_CSR2 2 //control and status register 2 #define RAP_CSR3 3 //control and status register 3 //initialization block struct am7990_init { unsigned short mode; unsigned char Apaddr[6]; //physical (net)address, bits 0.<48 unsigned long Aladdrf[2]; //logical (net)addressfilter, bits 0.<32 en 32.<64 unsigned long rdra; //rec descr ring pointer, bits 0.<24, rx length unsigned long tdra; //tra descr ring pointer, bits 0.<24, tx length }; //receive descriptor struct am7990_rd { unsigned long base; //base of buffer unsigned short neglength; //negative length of buffer unsigned short reclength; //length of message }; //transmit descriptor struct am7990_td { unsigned long base; //base of buffer unsigned short neglength; //negative length of buffer unsigned short misc; //miscellaneous }; //control and status register 0 #define CSR0_INIT (1<< 0) //init #define CSR0_STRT (1<< 1) //start #define CSR0_STOP (1<< 2) //stop #define CSR0_TDMD (1<< 3) //transmit demand #define CSR0_TXON (1<< 4) //transmitter on #define CSR0_RXON (1<< 5) //receiver on #define CSR0_INEA (1<< 6) //interrupt enable #define CSR0_INTR (1<< 7) //interrupt flag #define CSR0_IDON (1<< 8) //initialization done #define CSR0_TINT (1<< 9) //transmitter interrupt #define CSR0_RINT (1<<10) //receiver interrupt #define CSR0_MERR (1<<11) //memory error #define CSR0_MISS (1<<12) //missed packet #define CSR0_CERR (1<<13) //collision error #define CSR0_BABL (1<<14) //babble, transmitter timeout error #define CSR0_ERR (1<<15) //error summary //control and status register 3 #define CSR3_BCON (1<< 0) //byte control: p16=busako/bm, //p15=byte/bm0, p17=busrq/hold #define CSR3_ACON (1<< 1) //ALE control: ALE asserted H/L #define CSR3_BSWP (1<< 2) //byte swap: big/little endian, big=68000 etc. //initialization mode #define MODE_DRX (1<< 0) //disable the receiver #define MODE_DTX (1<< 1) //disable the transmitter #define MODE_LOOP (1<< 2) //loopback, for test purposes #define MODE_DTCR (1<< 3) //disable transmit CRC #define MODE_COLL (1<< 4) //force collision #define MODE_DRTY (1<< 5) //disable retry #define MODE_INTL (1<< 6) //internal loopback #define MODE_PROM (1<<15) //promiscuous mode: accept all incoming packets //receive descriptor ring address #define RDRA_RLEN (1<<29) //receive ring length, (log2 of) //transmit descriptor ring address #define TDRA_TLEN (1<<29) //transmit ring length, (log2 of) //receive message descriptor 1 #define RMD1_ENP (1<< 8+16) //end of packet #define RMD1_STP (1<< 9+16) //start of packet #define RMD1_BUFF (1<<10+16) //buffer error #define RMD1_CRC (1<<11+16) //CRC-error #define RMD1_OFLO (1<<12+16) //overflow error #define RMD1_FRAM (1<<13+16) //framing error #define RMD1_ERR (1<<14+16) //error summary, is FRAM|OFLO|CRC|BUFF #define RMD1_OWN (1<<15+16) //owned by am7990/cpu //transmit message descriptor 1 #define TMD1_ENP (1<< 8+16) //end of packet #define TMD1_STP (1<< 9+16) //start of packet #define TMD1_DEF (1<<10+16) //buffer error #define TMD1_ONE (1<<11+16) //CRC-error #define TMD1_MORE (1<<12+16) //overflow error #define TMD1_RES (1<<13+16) //framing error #define TMD1_ERR (1<<14+16) //error summary, is FRAM|OFLO|CRC|BUFF #define TMD1_OWN (1<<15+16) //owned by am7990/cpu //transmit message descriptor 3 #define TMD3_TDR (1<< 0) //time domain reflectometry #define TMD3_RTRY (1<<10) //retry error #define TMD3_LCAR (1<<11) //loss of carrier #define TMD3_LCOL (1<<12) //late collision #define TMD3_RES (1<<13) //reserved #define TMD3_UFLO (1<<14) //underflow error #define TMD3_BUFF (1<<15) //buffer error //end