Annotation of Net2/arch/i386/netboot/dp8390.h, revision 1.1.1.1

1.1       root        1: /* netboot
                      2:  *
                      3:  * dp8390.h,v
                      4:  * Revision 1.1  1993/07/08  16:03:56  brezak
                      5:  * Diskless boot prom code from Jim McKim ([email protected])
                      6:  *
                      7:  * Revision 1.1.1.1  1993/05/28  11:41:07  mckim
                      8:  * Initial version.
                      9:  *
                     10:  *
                     11:  * source in this file came from
                     12:  * the Mach ethernet boot written by Leendert van Doorn.
                     13:  *
                     14:  * National Semiconductor DP8390 Network Interface Controller
                     15:  */
                     16: 
                     17: /* page 0: for reading */
                     18: #define DP_CR          0x00    /* read side of command register */
                     19: #define DP_CLDA0       0x01    /* current local DMA address 0 */
                     20: #define DP_CLDA1       0x02    /* current local DMA address 1 */
                     21: #define DP_BNRY                0x03    /* boundary pointer */
                     22: #define DP_TSR         0x04    /* transmit status register */
                     23: #define DP_NCR         0x05    /* number of collisions register */
                     24: #define DP_FIFO                0x06    /* FIFO */
                     25: #define DP_ISR         0x07    /* interrupt status register */
                     26: #define DP_CRDA0       0x08    /* current remote DMA address 0 */
                     27: #define DP_CRDA1       0x09    /* current remote DMA address 1 */
                     28: #define DP_RSR         0x0C    /* receive status register */
                     29: #define DP_CNTR0       0x0D    /* tally counter 0 */
                     30: #define DP_CNTR1       0x0E    /* tally counter 1 */
                     31: #define DP_CNTR2       0x0F    /* tally counter 2 */
                     32: 
                     33: /* page 0: for writing */
                     34: #define DP_CR          0x00    /* write side of command register */
                     35: #define DP_PSTART      0x01    /* page start register */
                     36: #define DP_PSTOP       0x02    /* page stop register */
                     37: #define DP_BNRY                0x03    /* boundary pointer */
                     38: #define DP_TPSR                0x04    /* transmit page start register */
                     39: #define DP_TBCR0       0x05    /* transmit byte count register 0 */
                     40: #define DP_TBCR1       0x06    /* transmit byte count register 1 */
                     41: #define DP_ISR         0x07    /* interrupt status register */
                     42: #define DP_RSAR0       0x08    /* remote start address register 0 */
                     43: #define DP_RSAR1       0x09    /* remote start address register 1 */
                     44: #define DP_RBCR0       0x0A    /* remote byte count register 0 */
                     45: #define DP_RBCR1       0x0B    /* remote byte count register 1 */
                     46: #define DP_RCR         0x0C    /* receive configuration register */
                     47: #define DP_TCR         0x0D    /* transmit configuration register */
                     48: #define DP_DCR         0x0E    /* data configuration register */
                     49: #define DP_IMR         0x0F    /* interrupt mask register */
                     50: 
                     51: /* page 1: read/write */
                     52: #define DP_CR          0x00    /* command register */
                     53: #define DP_PAR0                0x01    /* physical address register 0 */
                     54: #define DP_PAR1                0x02    /* physical address register 1 */
                     55: #define DP_PAR2                0x03    /* physical address register 2 */
                     56: #define DP_PAR3                0x04    /* physical address register 3 */
                     57: #define DP_PAR4                0x05    /* physical address register 4 */
                     58: #define DP_PAR5                0x06    /* physical address register 5 */
                     59: #define DP_CURR                0x07    /* current page register */
                     60: #define DP_MAR0                0x08    /* multicast address register 0 */
                     61: #define DP_MAR1                0x09    /* multicast address register 1 */
                     62: #define DP_MAR2                0x0A    /* multicast address register 2 */
                     63: #define DP_MAR3                0x0B    /* multicast address register 3 */
                     64: #define DP_MAR4                0x0C    /* multicast address register 4 */
                     65: #define DP_MAR5                0x0D    /* multicast address register 5 */
                     66: #define DP_MAR6                0x0E    /* multicast address register 6 */
                     67: #define DP_MAR7                0x0F    /* multicast address register 7 */
                     68: 
                     69: /* bits in command register */
                     70: #define CR_STP         0x01            /* stop: software reset */
                     71: #define CR_STA         0x02            /* start: activate NIC */
                     72: #define CR_TXP         0x04            /* transmit packet */
                     73: #define CR_DMA         0x38            /* mask for DMA control */
                     74: #   define CR_DM_NOP       0x00        /* DMA: no operation */
                     75: #   define CR_DM_RR        0x08        /* DMA: remote read */
                     76: #   define CR_DM_RW        0x10        /* DMA: remote write */
                     77: #   define CR_DM_SP        0x18        /* DMA: send packet */
                     78: #   define CR_DM_ABORT     0x20        /* DMA: abort remote DMA operation */
                     79: #define CR_PS          0xC0            /* mask for page select */
                     80: #   define CR_PS_P0        0x00        /* register page 0 */
                     81: #   define CR_PS_P1        0x40        /* register page 1 */
                     82: #   define CR_PS_T0        0x80        /* test mode register map */
                     83: #   define CR_SP_T1        0xC0        /* test mode register map */
                     84: 
                     85: /* bits in interrupt status register */
                     86: #define ISR_PRX                0x01            /* packet received with no errors */
                     87: #define ISR_PTX                0x02            /* packet transmitted with no errors */
                     88: #define ISR_RXE                0x04            /* receive error */
                     89: #define ISR_TXE                0x08            /* transmit error */
                     90: #define ISR_OVW                0x10            /* overwrite warning */
                     91: #define ISR_CNT                0x20            /* counter overflow */
                     92: #define ISR_RDC                0x40            /* remote DMA complete */
                     93: #define ISR_RST                0x80            /* reset status */
                     94: 
                     95: /* bits in interrupt mask register */
                     96: #define IMR_PRXE       0x01            /* packet received ienable */
                     97: #define IMR_PTXE       0x02            /* packet transmitted ienable */
                     98: #define IMR_RXEE       0x04            /* receive error ienable */
                     99: #define IMR_TXEE       0x08            /* transmit error ienable */
                    100: #define IMR_OVWE       0x10            /* overwrite warning ienable */
                    101: #define IMR_CNTE       0x20            /* counter overflow ienable */
                    102: #define IMR_RDCE       0x40            /* DMA complete ienable */
                    103: 
                    104: /* bits in data control register */
                    105: #define DCR_WTS                0x01            /* word transfer select */
                    106: #   define DCR_BYTEWIDE        0x00            /* WTS: byte wide transfers */
                    107: #   define DCR_WORDWIDE        0x01            /* WTS: word wide transfers */
                    108: #define DCR_BOS                0x02            /* byte order select */
                    109: #   define DCR_LTLENDIAN     0x00      /* BOS: little endian */
                    110: #   define DCR_BIGENDIAN     0x02      /* BOS: big endian */
                    111: #define DCR_LAS                0x04            /* long address select */
                    112: #define DCR_BMS                0x08            /* burst mode select */
                    113: #define DCR_AR         0x10            /* autoinitialize remote */
                    114: #define DCR_FTS                0x60            /* FIFO threshold select */
                    115: #   define DCR_2BYTES      0x00        /* 2 bytes */
                    116: #   define DCR_4BYTES      0x40        /* 4 bytes */
                    117: #   define DCR_8BYTES      0x20        /* 8 bytes */
                    118: #   define DCR_12BYTES     0x60        /* 12 bytes */
                    119: 
                    120: /* bits in transmit configuration register */
                    121: #define TCR_CRC                0x01            /* inhibit CRC */
                    122: #define TCR_ELC                0x06            /* encoded loopback control */
                    123: #   define TCR_NORMAL      0x00        /* ELC: normal operation */
                    124: #   define TCR_INTERNAL            0x02        /* ELC: internal loopback */
                    125: #   define TCR_0EXTERNAL    0x04       /* ELC: external loopback LPBK=0 */
                    126: #   define TCR_1EXTERNAL    0x06       /* ELC: external loopback LPBK=1 */
                    127: #define TCR_ATD                0x08            /* auto transmit */
                    128: #define TCR_OFST       0x10            /* collision offset enable (be nice) */
                    129: 
                    130: /* bits in transmit status register */
                    131: #define TSR_PTX                0x01            /* packet transmitted (without error)*/
                    132: #define TSR_DFR                0x02            /* transmit deferred */
                    133: #define TSR_COL                0x04            /* transmit collided */
                    134: #define TSR_ABT                0x08            /* transmit aborted */
                    135: #define TSR_CRS                0x10            /* carrier sense lost */
                    136: #define TSR_FU         0x20            /* fifo underrun */
                    137: #define TSR_CDH                0x40            /* CD heartbeat */
                    138: #define TSR_OWC                0x80            /* out of window collision */
                    139: 
                    140: /* bits in receive configuration register */
                    141: #define RCR_SEP                0x01            /* save errored packets */
                    142: #define RCR_AR         0x02            /* accept runt packets */
                    143: #define RCR_AB         0x04            /* accept broadcast */
                    144: #define RCR_AM         0x08            /* accept multicast */
                    145: #define RCR_PRO                0x10            /* physical promiscuous */
                    146: #define RCR_MON                0x20            /* monitor mode */
                    147: 
                    148: /* bits in receive status register */
                    149: #define RSR_PRX                0x01            /* packet received intact */
                    150: #define RSR_CRC                0x02            /* CRC error */
                    151: #define RSR_FAE                0x04            /* frame alignment error */
                    152: #define RSR_FO         0x08            /* FIFO overrun */
                    153: #define RSR_MPA                0x10            /* missed packet */
                    154: #define RSR_PHY                0x20            /* multicast address match !! */
                    155: #define RSR_DIS                0x40            /* receiver disabled */
                    156: 
                    157: /* dp8390 configuration information */
                    158: typedef struct {
                    159:     u_short    dc_reg;                 /* dp8390 base address */
                    160:     u_long     dc_mem;                 /* base memory */
                    161:     u_char     dc_tpsr;                /* transmit start page */
                    162:     u_char     dc_pstart;              /* receive start page */
                    163:     u_char     dc_pstop;               /* receive end page */
                    164: } dpconf_t;
                    165: 
                    166: 
                    167: /* dp8390 receive header */
                    168: typedef struct {
                    169:     u_char     dh_status;              /* copy of rsr */
                    170:     u_char     dh_next;                /* pointer to next packet */
                    171:     u_char     dh_rbcl;                /* receive byte count low */
                    172:     u_char     dh_rbch;                /* receive byte count high */
                    173: } dphdr_t;

unix.superglobalmegacorp.com

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