Annotation of xinu/h/deqna.h, revision 1.1.1.1

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: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.