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