|
|
1.1 ! root 1: /* deqna.h */ ! 2: ! 3: /* Definitions Digital Equipment Corporation's DEQNA Ethernet interface */ ! 4: ! 5: /* Device register layout */ ! 6: ! 7: struct dqregs { /* deqna registers in I/O space */ ! 8: unsigned short d_addr; /* when read, low order byte of */ ! 9: unsigned short d_addr2; /* these and next 4 regs give */ ! 10: /* 6-byte Ethernet node address*/ ! 11: unsigned short d_rcmd; /* list of read cmds in memory */ ! 12: unsigned short d_rcmdh; /* high order bits of d_rcmd */ ! 13: unsigned short d_wcmd; /* list of write cmds in memory */ ! 14: unsigned short d_wcmdh; /* high order bits of d_wcmd */ ! 15: unsigned short d_vect; /* interrupt vector address */ ! 16: unsigned short d_csr; /* control and status register */ ! 17: }; ! 18: ! 19: /* Bits in the Control and Status Register */ ! 20: ! 21: #define DQ_ENBL 0000001 /* Receiver enable */ ! 22: #define DQ_REST 0000002 /* Software reset */ ! 23: #define DQ_NXMI 0000004 /* Nonexistent memory interrupt */ ! 24: #define DQ_BROM 0000010 /* Fetch boot/diagnostic ROM */ ! 25: #define DQ_XLI 0000020 /* Xmit list invalid */ ! 26: #define DQ_RLI 0000040 /* Receive list invalid */ ! 27: #define DQ_IEN 0000100 /* Interrupt Enable */ ! 28: #define DQ_XINT 0000200 /* Xmit interrupt */ ! 29: #define DQ_ILOP 0000400 /* Internal loopback mode */ ! 30: #define DQ_ELOP 0001000 /* External loopback mode */ ! 31: #define DQ_TIME 0002000 /* Sanity timer enable */ ! 32: #define DQ_RES1 0004000 /* Vendor reserved */ ! 33: #define DQ_FUSE 0010000 /* Fuse OK */ ! 34: #define DQ_CARR 0020000 /* Carrier present on ether */ ! 35: #define DQ_RES2 0040000 /* Vendor reserved */ ! 36: #define DQ_RINT 0100000 /* Receive interrupt */ ! 37: ! 38: /* Command to device as it appears on buffer descriptor list in memory */ ! 39: ! 40: struct dcmd { /* DEQNA command in memory */ ! 41: unsigned short dc_flag; /* flag word marked USED/UNUSED */ ! 42: unsigned short dc_bufh; /* desc.+ high buf. addr. bits */ ! 43: unsigned short dc_buf; /* buffer addr. (low order bits)*/ ! 44: unsigned short dc_len; /* buffer length (see manual) */ ! 45: unsigned short dc_st1; /* Status word 1 */ ! 46: unsigned short dc_st2; /* Status word 2 */ ! 47: }; ! 48: ! 49: /* Bits in the flag word of dcm */ ! 50: ! 51: #define DC_NUSED 0100000 /* This dcmd entry not in use */ ! 52: #define DC_USED 0140000 /* DEQNA using this dcmd entry */ ! 53: ! 54: /* Bits in the descriptor word of dcm (i.e. in dc_bufh) */ ! 55: ! 56: #define DC_VALID 0100000 /* This is a valid buffer addr. */ ! 57: #define DC_CADDR 0040000 /* This is a chain address */ ! 58: #define DC_ENDM 0020000 /* Xmit: end of message */ ! 59: #define DC_SETUP 0010000 /* Xmit: setup packet */ ! 60: #define DC_NORM 0000000 /* Xmit: non-setup packet */ ! 61: #define DC_ENDL 0000000 /* Last descriptor in list */ ! 62: #define DC_XRES 0007400 /* Vendor reserved */ ! 63: #define DC_LBIT 0000200 /* Buffer ends on odd address */ ! 64: #define DC_HBIT 0000100 /* Buffer starts on odd address */ ! 65: ! 66: /* Bits returned to first status word (dc_st1) */ ! 67: ! 68: #define DC_LUSE 0140000 /* LAST/USE bits (see manual) */ ! 69: #define DC_INIT 0100000 /* Initial value of status word */ ! 70: #define DC_ERRU 0040000 /* ERROR/USED bit (see manual) */ ! 71: #define DC_LOSS 0010000 /* Xmit: lost carrier */ ! 72: #define DC_NCAR 0004000 /* Xmit: no carrier */ ! 73: #define DC_ST16 0002000 /* Xmit: timer enabled */ ! 74: #define DC_ABRT 0001000 /* Xmit: abort */ ! 75: #define DC_FAIL 0000400 /* Xmit: heartbeat failure */ ! 76: #define DC_CCNT 0000360 /* Xmit: collision count */ ! 77: #define DC_ESET 0020000 /* Recv: setup packet */ ! 78: #define DC_DISC 0010000 /* Recv: discard packet */ ! 79: #define DC_RUNT 0004000 /* Recv: runt packet (too short)*/ ! 80: #define DC_HLEN 0003400 /* Recv: bits 10:8 of rec. len. */ ! 81: #define DC_LLEN 0000377 /* Recv: bits 7:0 of rec. len. */ ! 82: #define DC_XLEN 60 /* manual says add 60 to len... */ ! 83: #define DC_RRES 0000370 /* Recv: vendor reserved */ ! 84: #define DC_FRAM 0000004 /* Recv: frame alignment */ ! 85: #define DC_CERR 0000002 /* Recv: CRC error */ ! 86: #define DC_OVER 0000001 /* Recv: overflow error */ ! 87: ! 88: /* Definitions of device setup packet (see manual for details) */ ! 89: ! 90: #define DQ_ROWS 16 /* setup has 16 rows */ ! 91: #define DQ_COLS 8 /* setup has 8 columns */ ! 92: #define DQ_SETD 8 /* displacement of 2nd copy */ ! 93: #define DQ_BCST 0377 /* broadcast address bytes */ ! 94: ! 95: #define dqlen(x) (short) (-(((x)+1)>>1))/* buffer len: map byte length */ ! 96: /* to 2s compl. of word length */ ! 97: ! 98: #define DQ_RTO 300 /* maximum time to wait for read*/ ! 99: ! 100: struct dqsetup { /* deqna setup packet strructure*/ ! 101: char dq_set[DQ_ROWS][DQ_COLS];/* holds one setup packet */ ! 102: char dq_echo[DQ_ROWS][DQ_COLS];/* holds echo of packet */ ! 103: char dq_crc[4]; /* allow deqna extra 4 bytes */ ! 104: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.