|
|
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;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.