1 1.1 hpeyerl /* Copyright (c) 1994, Matthew E. Kimmel. Permission is hereby granted 2 1.1 hpeyerl * to use, copy, modify and distribute this software provided that both 3 1.1 hpeyerl * the copyright notice and this permission notice appear in all copies 4 1.1 hpeyerl * of the software, derivative works or modified versions, and any 5 1.1 hpeyerl * portions thereof. 6 1.1 hpeyerl */ 7 1.1 hpeyerl /* 3COM Etherlink 3C501 Register Definitions */ 8 1.1 hpeyerl 9 1.1 hpeyerl /* I/O Ports */ 10 1.1 hpeyerl #define EL_RXS 0x6 /* Receive status register */ 11 1.1 hpeyerl #define EL_RXC 0x6 /* Receive command register */ 12 1.1 hpeyerl #define EL_TXS 0x7 /* Transmit status register */ 13 1.1 hpeyerl #define EL_TXC 0x7 /* Transmit command register */ 14 1.1 hpeyerl #define EL_GPBL 0x8 /* GP buffer ptr low byte */ 15 1.1 hpeyerl #define EL_GPBH 0x9 /* GP buffer ptr high byte */ 16 1.1 hpeyerl #define EL_RBL 0xa /* Receive buffer ptr low byte */ 17 1.1 hpeyerl #define EL_RBC 0xa /* Receive buffer clear */ 18 1.1 hpeyerl #define EL_RBH 0xb /* Receive buffer ptr high byte */ 19 1.1 hpeyerl #define EL_EAW 0xc /* Ethernet address window */ 20 1.1 hpeyerl #define EL_AS 0xe /* Auxillary status register */ 21 1.1 hpeyerl #define EL_AC 0xe /* Auxillary command register */ 22 1.1 hpeyerl #define EL_BUF 0xf /* Data buffer */ 23 1.1 hpeyerl 24 1.1 hpeyerl /* Receive status register bits */ 25 1.1 hpeyerl #define EL_RXS_OFLOW 0x01 /* Overflow error */ 26 1.1 hpeyerl #define EL_RXS_FCS 0x02 /* FCS error */ 27 1.1 hpeyerl #define EL_RXS_DRIB 0x04 /* Dribble error */ 28 1.1 hpeyerl #define EL_RXS_SHORT 0x08 /* Short frame */ 29 1.1 hpeyerl #define EL_RXS_NOFLOW 0x10 /* No overflow */ 30 1.1 hpeyerl #define EL_RXS_GOOD 0x20 /* Received good frame */ 31 1.1 hpeyerl #define EL_RXS_STALE 0x80 /* Stale receive status */ 32 1.1 hpeyerl 33 1.1 hpeyerl /* Receive command register bits */ 34 1.1 hpeyerl #define EL_RXC_DISABLE 0x00 /* Receiver disabled */ 35 1.1 hpeyerl #define EL_RXC_DOFLOW 0x01 /* Detect overflow */ 36 1.1 hpeyerl #define EL_RXC_DFCS 0x02 /* Detect FCS errs */ 37 1.1 hpeyerl #define EL_RXC_DDRIB 0x04 /* Detect dribble errors */ 38 1.1 hpeyerl #define EL_RXC_DSHORT 0x08 /* Detect short frames */ 39 1.1 hpeyerl #define EL_RXC_DNOFLOW 0x10 /* Detect frames w/o overflow ??? */ 40 1.1 hpeyerl #define EL_RXC_AGF 0x20 /* Accept Good Frames */ 41 1.1 hpeyerl #define EL_RXC_PROMISC 0x40 /* Promiscuous mode */ 42 1.1 hpeyerl #define EL_RXC_ABROAD 0x80 /* Accept address, broadcast */ 43 1.1 hpeyerl #define EL_RXC_AMULTI 0xc0 /* Accept address, multicast */ 44 1.1 hpeyerl 45 1.1 hpeyerl /* Transmit status register bits */ 46 1.1 hpeyerl #define EL_TXS_UFLOW 0x01 /* Underflow */ 47 1.1 hpeyerl #define EL_TXS_COLL 0x02 /* Collision */ 48 1.1 hpeyerl #define EL_TXS_COLL16 0x04 /* Collision 16 */ 49 1.1 hpeyerl #define EL_TXS_READY 0x08 /* Ready for new frame */ 50 1.1 hpeyerl 51 1.1 hpeyerl /* Transmit command register bits */ 52 1.1 hpeyerl #define EL_TXC_DUFLOW 0x01 /* Detect underflow */ 53 1.1 hpeyerl #define EL_TXC_DCOLL 0x02 /* Detect collisions */ 54 1.1 hpeyerl #define EL_TXC_DCOLL16 0x04 /* Detect collision 16 */ 55 1.1 hpeyerl #define EL_TXC_DSUCCESS 0x08 /* Detect success */ 56 1.1 hpeyerl 57 1.1 hpeyerl /* Auxillary status register bits */ 58 1.1 hpeyerl #define EL_AS_RXBUSY 0x01 /* Receive busy */ 59 1.1 hpeyerl #define EL_AS_DMADONE 0x10 /* DMA finished */ 60 1.1 hpeyerl #define EL_AS_TXBUSY 0x80 /* Transmit busy */ 61 1.1 hpeyerl 62 1.1 hpeyerl /* Auxillary command register bits */ 63 1.1 hpeyerl #define EL_AC_HOST 0x00 /* System bus can access buffer */ 64 1.1 hpeyerl #define EL_AC_IRQE 0x01 /* IRQ enable */ 65 1.1 hpeyerl #define EL_AC_TXBAD 0x02 /* Transmit frames with bad FCS */ 66 1.1 hpeyerl #define EL_AC_TXFRX 0x04 /* Transmit followed by receive */ 67 1.1 hpeyerl #define EL_AC_RX 0x08 /* Receive */ 68 1.1 hpeyerl #define EL_AC_LB 0x0c /* Loopback */ 69 1.1 hpeyerl #define EL_AC_DRQ 0x20 /* DMA request */ 70 1.1 hpeyerl #define EL_AC_RIDE 0x40 /* DRQ and IRQ enabled */ 71 1.1 hpeyerl #define EL_AC_RESET 0x80 /* Reset */ 72 1.1 hpeyerl 73 1.1 hpeyerl /* Packet buffer size */ 74 1.1 hpeyerl #define EL_BUFSIZ 2048 75 1.1 hpeyerl 76 1.1 hpeyerl #define ETHER_ADDR_LEN 6 77