Annotation of Net2/arch/i386/isa/if_edreg.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * National Semiconductor DS8390 NIC register definitions 
        !             3:  *
        !             4:  * if_edreg.h,v
        !             5:  * Revision 1.1.2.1  1993/07/21  13:50:04  cgd
        !             6:  * from davidg:
        !             7:  *    Added config file override for memory size and added flags to force
        !             8:  * 8bit or 16bit operation, and a flag to disable transmitter double buffering.
        !             9:  *    See the updated "ed.relnotes" file for information about how to set
        !            10:  * the flags.
        !            11:  *    This should be considered the first "production"  release. It still
        !            12:  * needs a manual page, though.
        !            13:  *
        !            14:  * Revision 1.1  1993/07/03  12:21:07  cgd
        !            15:  * add support for David Greenman "ed" driver
        !            16:  *
        !            17:  * Revision 1.2  93/06/23  03:03:05  davidg
        !            18:  * added some additional definitions for the 83C584 bus interface
        !            19:  * chip (SMC/WD boards)
        !            20:  * 
        !            21:  * Revision 1.1  93/06/23  03:01:07  davidg
        !            22:  * Initial revision
        !            23:  * 
        !            24:  */
        !            25: 
        !            26: /*
        !            27:  * Page 0 register offsets
        !            28:  */
        !            29: #define ED_P0_CR       0x00    /* Command Register */
        !            30: 
        !            31: #define ED_P0_CLDA0    0x01    /* Current Local DMA Addr low (read) */
        !            32: #define ED_P0_PSTART   0x01    /* Page Start register (write) */
        !            33: 
        !            34: #define ED_P0_CLDA1    0x02    /* Current Local DMA Addr high (read) */
        !            35: #define ED_P0_PSTOP    0x02    /* Page Stop register (write) */
        !            36: 
        !            37: #define ED_P0_BNRY     0x03    /* Boundary Pointer */
        !            38: 
        !            39: #define ED_P0_TSR      0x04    /* Transmit Status Register (read) */
        !            40: #define ED_P0_TPSR     0x04    /* Transmit Page Start (write) */
        !            41: 
        !            42: #define ED_P0_NCR      0x05    /* Number of Collisions Reg (read) */
        !            43: #define ED_P0_TBCR0    0x05    /* Transmit Byte count, low (write) */
        !            44: 
        !            45: #define ED_P0_FIFO     0x06    /* FIFO register (read) */
        !            46: #define ED_P0_TBCR1    0x06    /* Transmit Byte count, high (write) */
        !            47: 
        !            48: #define ED_P0_ISR      0x07    /* Interrupt Status Register */
        !            49: 
        !            50: #define ED_P0_CRDA0    0x08    /* Current Remote DMA Addr low (read) */
        !            51: #define ED_P0_RSAR0    0x08    /* Remote Start Address low (write) */
        !            52: 
        !            53: #define ED_P0_CRDA1    0x09    /* Current Remote DMA Addr high (read) */
        !            54: #define ED_P0_RSAR1    0x09    /* Remote Start Address high (write) */
        !            55: 
        !            56: #define ED_P0_RBCR0    0x0a    /* Remote Byte Count low (write) */
        !            57: 
        !            58: #define ED_P0_RBCR1    0x0b    /* Remote Byte Count high (write) */
        !            59: 
        !            60: #define ED_P0_RSR      0x0c    /* Receive Status (read) */
        !            61: #define ED_P0_RCR      0x0c    /* Receive Configuration Reg (write) */
        !            62: 
        !            63: #define ED_P0_CNTR0    0x0d    /* frame alignment error counter (read) */
        !            64: #define ED_P0_TCR      0x0d    /* Transmit Configuration Reg (write) */
        !            65: 
        !            66: #define ED_P0_CNTR1    0x0e    /* CRC error counter (read) */
        !            67: #define ED_P0_DCR      0x0e    /* Data Configuration Reg (write) */
        !            68: 
        !            69: #define ED_P0_CNTR2    0x0f    /* missed packet counter (read) */
        !            70: #define ED_P0_IMR      0x0f    /* Interrupt Mask Register (write) */
        !            71: 
        !            72: /*
        !            73:  * Page 1 register offsets
        !            74:  */
        !            75: #define ED_P1_CR       0x00    /* Command Register */
        !            76: #define ED_P1_PAR0     0x01    /* Physical Address Register 0 */
        !            77: #define ED_P1_PAR1     0x02    /* Physical Address Register 1 */
        !            78: #define ED_P1_PAR2     0x03    /* Physical Address Register 2 */
        !            79: #define ED_P1_PAR3     0x04    /* Physical Address Register 3 */
        !            80: #define ED_P1_PAR4     0x05    /* Physical Address Register 4 */
        !            81: #define ED_P1_PAR5     0x06    /* Physical Address Register 5 */
        !            82: #define ED_P1_CURR     0x07    /* Current RX ring-buffer page */
        !            83: #define ED_P1_MAR0     0x08    /* Multicast Address Register 0 */
        !            84: #define ED_P1_MAR1     0x09    /* Multicast Address Register 1 */
        !            85: #define ED_P1_MAR2     0x0a    /* Multicast Address Register 2 */
        !            86: #define ED_P1_MAR3     0x0b    /* Multicast Address Register 3 */
        !            87: #define ED_P1_MAR4     0x0c    /* Multicast Address Register 4 */
        !            88: #define ED_P1_MAR5     0x0d    /* Multicast Address Register 5 */
        !            89: #define ED_P1_MAR6     0x0e    /* Multicast Address Register 6 */
        !            90: #define ED_P1_MAR7     0x0f    /* Multicast Address Register 7 */
        !            91: 
        !            92: /*
        !            93:  * Page 2 register offsets
        !            94:  */
        !            95: #define ED_P2_CR       0x00    /* Command Register */
        !            96: #define ED_P2_PSTART   0x01    /* Page Start (read) */
        !            97: #define ED_P2_CLDA0    0x01    /* Current Local DMA Addr 0 (write) */
        !            98: #define ED_P2_PSTOP    0x02    /* Page Stop (read) */
        !            99: #define ED_P2_CLDA1    0x02    /* Current Local DMA Addr 1 (write) */
        !           100: #define ED_P2_RNPP     0x03    /* Remote Next Packet Pointer */
        !           101: #define ED_P2_TPSR     0x04    /* Transmit Page Start (read) */
        !           102: #define ED_P2_LNPP     0x05    /* Local Next Packet Pointer */
        !           103: #define ED_P2_ACU      0x06    /* Address Counter Upper */
        !           104: #define ED_P2_ACL      0x07    /* Address Counter Lower */
        !           105: #define ED_P2_RCR      0x0c    /* Receive Configuration Register (read) */
        !           106: #define ED_P2_TCR      0x0d    /* Transmit Configuration Register (read) */
        !           107: #define ED_P2_DCR      0x0e    /* Data Configuration Register (read) */
        !           108: #define ED_P2_IMR      0x0f    /* Interrupt Mask Register (read) */
        !           109: 
        !           110: /*
        !           111:  *             Command Register (CR) definitions
        !           112:  */
        !           113: 
        !           114: /*
        !           115:  * STP: SToP. Software reset command. Takes the controller offline. No
        !           116:  *     packets will be received or transmitted. Any reception or
        !           117:  *     transmission in progress will continue to completion before
        !           118:  *     entering reset state. To exit this state, the STP bit must
        !           119:  *     reset and the STA bit must be set. The software reset has
        !           120:  *     executed only when indicated by the RST bit in the ISR being
        !           121:  *     set.
        !           122:  */
        !           123: #define ED_CR_STP      0x01
        !           124: 
        !           125: /*
        !           126:  * STA: STArt. This bit is used to activate the NIC after either power-up,
        !           127:  *     or when the NIC has been put in reset mode by software command
        !           128:  *     or error.
        !           129:  */
        !           130: #define ED_CR_STA      0x02
        !           131: 
        !           132: /*
        !           133:  * TXP: Transmit Packet. This bit must be set to indicate transmission of
        !           134:  *     a packet. TXP is internally reset either after the transmission is
        !           135:  *     completed or aborted. This bit should be set only after the Transmit
        !           136:  *     Byte Count and Transmit Page Start register have been programmed.
        !           137:  */
        !           138: #define ED_CR_TXP      0x04
        !           139: 
        !           140: /*
        !           141:  * RD0, RD1, RD2: Remote DMA Command. These three bits control the operation
        !           142:  *     of the remote DMA channel. RD2 can be set to abort any remote DMA
        !           143:  *     command in progress. The Remote Byte Count registers should be cleared
        !           144:  *     when a remote DMA has been aborted. The Remote Start Addresses are not
        !           145:  *     restored to the starting address if the remote DMA is aborted.
        !           146:  *
        !           147:  *     RD2 RD1 RD0     function
        !           148:  *      0   0   0      not allowed
        !           149:  *      0   0   1      remote read
        !           150:  *      0   1   0      remote write
        !           151:  *      0   1   1      send packet
        !           152:  *      1   X   X      abort
        !           153:  */
        !           154: #define ED_CR_RD0      0x08
        !           155: #define ED_CR_RD1      0x10
        !           156: #define ED_CR_RD2      0x20
        !           157: 
        !           158: /*
        !           159:  * PS0, PS1: Page Select. The two bits select which register set or 'page' to
        !           160:  *     access.
        !           161:  *
        !           162:  *     PS1 PS0         page
        !           163:  *      0   0          0
        !           164:  *      0   1          1
        !           165:  *      1   0          2
        !           166:  *      1   1          reserved
        !           167:  */
        !           168: #define ED_CR_PS0      0x40
        !           169: #define ED_CR_PS1      0x80
        !           170: /* bit encoded aliases */
        !           171: #define ED_CR_PAGE_0   0x00 /* (for consistency) */
        !           172: #define ED_CR_PAGE_1   0x40
        !           173: #define ED_CR_PAGE_2   0x80
        !           174: 
        !           175: /*
        !           176:  *             Interrupt Status Register (ISR) definitions
        !           177:  */
        !           178: 
        !           179: /*
        !           180:  * PRX: Packet Received. Indicates packet received with no errors.
        !           181:  */
        !           182: #define ED_ISR_PRX     0x01
        !           183: 
        !           184: /*
        !           185:  * PTX: Packet Transmitted. Indicates packet transmitted with no errors.
        !           186:  */
        !           187: #define ED_ISR_PTX     0x02
        !           188: 
        !           189: /*
        !           190:  * RXE: Receive Error. Indicates that a packet was received with one or more
        !           191:  *     the following errors: CRC error, frame alignment error, FIFO overrun,
        !           192:  *     missed packet.
        !           193:  */
        !           194: #define ED_ISR_RXE     0x04
        !           195: 
        !           196: /*
        !           197:  * TXE: Transmission Error. Indicates that an attempt to transmit a packet
        !           198:  *     resulted in one or more of the following errors: excessive
        !           199:  *     collisions, FIFO underrun.
        !           200:  */
        !           201: #define ED_ISR_TXE     0x08
        !           202: 
        !           203: /*
        !           204:  * OVW: OverWrite. Indicates a receive ring-buffer overrun. Incoming network
        !           205:  *     would exceed (has exceeded?) the boundry pointer, resulting in data
        !           206:  *     that was previously received and not yet read from the buffer to be
        !           207:  *     overwritten.
        !           208:  */
        !           209: #define ED_ISR_OVW     0x10
        !           210: 
        !           211: /*
        !           212:  * CNT: Counter Overflow. Set when the MSB of one or more of the Network Talley
        !           213:  *     Counters has been set.
        !           214:  */
        !           215: #define ED_ISR_CNT     0x20
        !           216: 
        !           217: /*
        !           218:  * RDC: Remote Data Complete. Indicates that a Remote DMA operation has completed.
        !           219:  */
        !           220: #define ED_ISR_RDC     0x40
        !           221: 
        !           222: /*
        !           223:  * RST: Reset status. Set when the NIC enters the reset state and cleared when a
        !           224:  *     Start Command is issued to the CR. This bit is also set when a receive
        !           225:  *     ring-buffer overrun (OverWrite) occurs and is cleared when one or more
        !           226:  *     packets have been removed from the ring. This is a read-only bit.
        !           227:  */
        !           228: #define ED_ISR_RST     0x80
        !           229: 
        !           230: /*
        !           231:  *             Interrupt Mask Register (IMR) definitions
        !           232:  */
        !           233: 
        !           234: /*
        !           235:  * PRXE: Packet Received interrupt Enable. If set, a received packet will cause
        !           236:  *     an interrupt.
        !           237:  */
        !           238: #define ED_IMR_PRXE    0x01
        !           239: 
        !           240: /*
        !           241:  * PTXE: Packet Transmit interrupt Enable. If set, an interrupt is generated when
        !           242:  *     a packet transmission completes.
        !           243:  */
        !           244: #define ED_IMR_PTXE    0x02
        !           245: 
        !           246: /*
        !           247:  * RXEE: Receive Error interrupt Enable. If set, an interrupt will occur whenever a
        !           248:  *     packet is received with an error.
        !           249:  */
        !           250: #define ED_IMR_RXEE    0x04
        !           251: 
        !           252: /*
        !           253:  * TXEE: Transmit Error interrupt Enable. If set, an interrupt will occur whenever
        !           254:  *     a transmission results in an error.
        !           255:  */
        !           256: #define ED_IMR_TXEE    0x08
        !           257: 
        !           258: /*
        !           259:  * OVWE: OverWrite error interrupt Enable. If set, an interrupt is generated whenever
        !           260:  *     the receive ring-buffer is overrun. i.e. when the boundry pointer is exceeded.
        !           261:  */
        !           262: #define ED_IMR_OVWE    0x10
        !           263: 
        !           264: /*
        !           265:  * CNTE: Counter overflow interrupt Enable. If set, an interrupt is generated whenever
        !           266:  *     the MSB of one or more of the Network Statistics counters has been set.
        !           267:  */
        !           268: #define ED_IMR_CNTE    0x20
        !           269: 
        !           270: /*
        !           271:  * RDCE: Remote DMA Complete interrupt Enable. If set, an interrupt is generated
        !           272:  *     when a remote DMA transfer has completed.
        !           273:  */
        !           274: #define ED_IMR_RDCE    0x40
        !           275: 
        !           276: /*
        !           277:  * bit 7 is unused/reserved
        !           278:  */
        !           279: 
        !           280: /*
        !           281:  *             Data Configuration Register (DCR) definitions
        !           282:  */
        !           283: 
        !           284: /*
        !           285:  * WTS: Word Transfer Select. WTS establishes byte or word transfers for
        !           286:  *     both remote and local DMA transfers
        !           287:  */
        !           288: #define ED_DCR_WTS     0x01
        !           289: 
        !           290: /*
        !           291:  * BOS: Byte Order Select. BOS sets the byte order for the host.
        !           292:  *     Should be 0 for 80x86, and 1 for 68000 series processors
        !           293:  */
        !           294: #define ED_DCR_BOS     0x02
        !           295: 
        !           296: /*
        !           297:  * LAS: Long Address Select. When LAS is 1, the contents of the remote
        !           298:  *     DMA registers RSAR0 and RSAR1 are used to provide A16-A31
        !           299:  */
        !           300: #define ED_DCR_LAS     0x04
        !           301: 
        !           302: /*
        !           303:  * LS: Loopback Select. When 0, loopback mode is selected. Bits D1 and D2
        !           304:  *     of the TCR must also be programmed for loopback operation.
        !           305:  *     When 1, normal operation is selected.
        !           306:  */
        !           307: #define ED_DCR_LS      0x08
        !           308: 
        !           309: /*
        !           310:  * AR: Auto-initialize Remote. When 0, data must be removed from ring-buffer
        !           311:  *     under program control. When 1, remote DMA is automatically initiated
        !           312:  *     and the boundry pointer is automatically updated
        !           313:  */
        !           314: #define ED_DCR_AR      0x10
        !           315: 
        !           316: /*
        !           317:  * FT0, FT1: Fifo Threshold select.
        !           318:  *             FT1     FT0     Word-width      Byte-width
        !           319:  *              0       0      1 word          2 bytes
        !           320:  *              0       1      2 words         4 bytes
        !           321:  *              1       0      4 words         8 bytes
        !           322:  *              1       1      8 words         12 bytes
        !           323:  *
        !           324:  *     During transmission, the FIFO threshold indicates the number of bytes
        !           325:  *     or words that the FIFO has filled from the local DMA before BREQ is
        !           326:  *     asserted. The transmission threshold is 16 bytes minus the receiver
        !           327:  *     threshold.
        !           328:  */
        !           329: #define ED_DCR_FT0     0x20
        !           330: #define ED_DCR_FT1     0x40
        !           331: 
        !           332: /*
        !           333:  * bit 7 (0x80) is unused/reserved
        !           334:  */
        !           335: 
        !           336: /*
        !           337:  *             Transmit Configuration Register (TCR) definitions
        !           338:  */
        !           339: 
        !           340: /*
        !           341:  * CRC: Inhibit CRC. If 0, CRC will be appended by the transmitter, if 0, CRC
        !           342:  *     is not appended by the transmitter.
        !           343:  */
        !           344: #define ED_TCR_CRC     0x01
        !           345: 
        !           346: /*
        !           347:  * LB0, LB1: Loopback control. These two bits set the type of loopback that is
        !           348:  *     to be performed.
        !           349:  *
        !           350:  *     LB1 LB0         mode
        !           351:  *      0   0          0 - normal operation (DCR_LS = 0)
        !           352:  *      0   1          1 - internal loopback (DCR_LS = 0)
        !           353:  *      1   0          2 - external loopback (DCR_LS = 1)
        !           354:  *      1   1          3 - external loopback (DCR_LS = 0)
        !           355:  */
        !           356: #define ED_TCR_LB0     0x02
        !           357: #define ED_TCR_LB1     0x04
        !           358: 
        !           359: /*
        !           360:  * ATD: Auto Transmit Disable. Clear for normal operation. When set, allows
        !           361:  *     another station to disable the NIC's transmitter by transmitting to
        !           362:  *     a multicast address hashing to bit 62. Reception of a multicast address
        !           363:  *     hashing to bit 63 enables the transmitter.
        !           364:  */
        !           365: #define ED_TCR_ATD     0x08
        !           366: 
        !           367: /*
        !           368:  * OFST: Collision Offset enable. This bit when set modifies the backoff
        !           369:  *     algorithm to allow prioritization of nodes.
        !           370:  */
        !           371: #define ED_TCR_OFST    0x10
        !           372:  
        !           373: /*
        !           374:  * bits 5, 6, and 7 are unused/reserved
        !           375:  */
        !           376: 
        !           377: /*
        !           378:  *             Transmit Status Register (TSR) definitions
        !           379:  */
        !           380: 
        !           381: /*
        !           382:  * PTX: Packet Transmitted. Indicates successful transmission of packet.
        !           383:  */
        !           384: #define ED_TSR_PTX     0x01
        !           385: 
        !           386: /*
        !           387:  * bit 1 (0x02) is unused/reserved
        !           388:  */
        !           389: 
        !           390: /*
        !           391:  * COL: Transmit Collided. Indicates that the transmission collided at least
        !           392:  *     once with another station on the network.
        !           393:  */
        !           394: #define ED_TSR_COL     0x04
        !           395: 
        !           396: /*
        !           397:  * ABT: Transmit aborted. Indicates that the transmission was aborted due to
        !           398:  *     excessive collisions.
        !           399:  */
        !           400: #define ED_TSR_ABT     0x08
        !           401: 
        !           402: /*
        !           403:  * CRS: Carrier Sense Lost. Indicates that carrier was lost during the
        !           404:  *     transmission of the packet. (Transmission is not aborted because
        !           405:  *     of a loss of carrier)
        !           406:  */
        !           407: #define ED_TSR_CRS     0x10
        !           408: 
        !           409: /*
        !           410:  * FU: FIFO Underrun. Indicates that the NIC wasn't able to access bus/
        !           411:  *     transmission memory before the FIFO emptied. Transmission of the
        !           412:  *     packet was aborted.
        !           413:  */
        !           414: #define ED_TSR_FU      0x20
        !           415: 
        !           416: /*
        !           417:  * CDH: CD Heartbeat. Indicates that the collision detection circuitry
        !           418:  *     isn't working correctly during a collision heartbeat test.
        !           419:  */
        !           420: #define ED_TSR_CDH     0x40
        !           421: 
        !           422: /*
        !           423:  * OWC: Out of Window Collision: Indicates that a collision occurred after
        !           424:  *     a slot time (51.2us). The transmission is rescheduled just as in
        !           425:  *     normal collisions.
        !           426:  */
        !           427: #define ED_TSR_OWC     0x80
        !           428: 
        !           429: /*
        !           430:  *             Receiver Configuration Register (RCR) definitions
        !           431:  */
        !           432: 
        !           433: /*
        !           434:  * SEP: Save Errored Packets. If 0, error packets are discarded. If set to 1,
        !           435:  *     packets with CRC and frame errors are not discarded.
        !           436:  */
        !           437: #define ED_RCR_SEP     0x01
        !           438: 
        !           439: /*
        !           440:  * AR: Accept Runt packet. If 0, packet with less than 64 byte are discarded.
        !           441:  *     If set to 1, packets with less than 64 byte are not discarded.
        !           442:  */
        !           443: #define ED_RCR_AR      0x02
        !           444: 
        !           445: /*
        !           446:  * AB: Accept Broadcast. If set, packets sent to the broadcast address will be
        !           447:  *     accepted.
        !           448:  */
        !           449: #define ED_RCR_AB      0x04
        !           450: 
        !           451: /*
        !           452:  * AM: Accept Multicast. If set, packets sent to a multicast address are checked
        !           453:  *     for a match in the hashing array. If clear, multicast packets are ignored.
        !           454:  */
        !           455: #define ED_RCR_AM      0x08
        !           456: 
        !           457: /*
        !           458:  * PRO: Promiscuous Physical. If set, all packets with a physical addresses are
        !           459:  *     accepted. If clear, a physical destination address must match this
        !           460:  *     station's address. Note: for full promiscuous mode, RCR_AB and RCR_AM
        !           461:  *     must also be set. In addition, the multicast hashing array must be set
        !           462:  *     to all 1's so that all multicast addresses are accepted.
        !           463:  */
        !           464: #define ED_RCR_PRO     0x10
        !           465: 
        !           466: /*
        !           467:  * MON: Monitor Mode. If set, packets will be checked for good CRC and framing,
        !           468:  *     but are not stored in the ring-buffer. If clear, packets are stored (normal
        !           469:  *     operation).
        !           470:  */
        !           471: #define ED_RCR_MON     0x20
        !           472: 
        !           473: /*
        !           474:  * bits 6 and 7 are unused/reserved.
        !           475:  */
        !           476: 
        !           477: /*
        !           478:  *             Receiver Status Register (RSR) definitions
        !           479:  */
        !           480: 
        !           481: /*
        !           482:  * PRX: Packet Received without error.
        !           483:  */
        !           484: #define ED_RSR_PRX     0x01
        !           485: 
        !           486: /*
        !           487:  * CRC: CRC error. Indicates that a packet has a CRC error. Also set for frame
        !           488:  *     alignment errors.
        !           489:  */
        !           490: #define ED_RSR_CRC     0x02
        !           491: 
        !           492: /*
        !           493:  * FAE: Frame Alignment Error. Indicates that the incoming packet did not end on
        !           494:  *     a byte boundry and the CRC did not match at the last byte boundry.
        !           495:  */
        !           496: #define ED_RSR_FAE     0x04
        !           497: 
        !           498: /*
        !           499:  * FO: FIFO Overrun. Indicates that the FIFO was not serviced (during local DMA)
        !           500:  *     causing it to overrun. Reception of the packet is aborted.
        !           501:  */
        !           502: #define ED_RSR_FO      0x08
        !           503: 
        !           504: /*
        !           505:  * MPA: Missed Packet. Indicates that the received packet couldn't be stored in
        !           506:  *     the ring-buffer because of insufficient buffer space (exceeding the
        !           507:  *     boundry pointer), or because the transfer to the ring-buffer was inhibited
        !           508:  *     by RCR_MON - monitor mode.
        !           509:  */
        !           510: #define ED_RSR_MPA     0x10
        !           511: 
        !           512: /*
        !           513:  * PHY: Physical address. If 0, the packet received was sent to a physical address.
        !           514:  *     If 1, the packet was accepted because of a multicast/broadcast address
        !           515:  *     match.
        !           516:  */
        !           517: #define ED_RSR_PHY     0x20
        !           518: 
        !           519: /*
        !           520:  * DIS: Receiver Disabled. Set to indicate that the receiver has enetered monitor
        !           521:  *     mode. Cleared when the receiver exits monitor mode.
        !           522:  */
        !           523: #define ED_RSR_DIS     0x40
        !           524: 
        !           525: /*
        !           526:  * DFR: Deferring. Set to indicate a 'jabber' condition. The CRS and COL inputs
        !           527:  *     are active, and the transceiver has set the CD line as a result of the
        !           528:  *     jabber.
        !           529:  */
        !           530: #define ED_RSR_DFR     0x80
        !           531: 
        !           532: /*
        !           533:  * receive ring discriptor
        !           534:  *
        !           535:  * The National Semiconductor DS8390 Network interface controller uses
        !           536:  * the following receive ring headers.  The way this works is that the
        !           537:  * memory on the interface card is chopped up into 256 bytes blocks.
        !           538:  * A contiguous portion of those blocks are marked for receive packets
        !           539:  * by setting start and end block #'s in the NIC.  For each packet that
        !           540:  * is put into the receive ring, one of these headers (4 bytes each) is
        !           541:  * tacked onto the front.
        !           542:  */
        !           543: struct ed_ring {
        !           544:        struct edr_status {             /* received packet status       */
        !           545:            u_char rs_prx:1,            /* packet received intack       */
        !           546:                   rs_crc:1,            /* crc error            */
        !           547:                   rs_fae:1,            /* frame alignment error        */
        !           548:                   rs_fo:1,             /* fifo overrun         */
        !           549:                   rs_mpa:1,            /* packet received intack       */
        !           550:                   rs_phy:1,            /* packet received intack       */
        !           551:                   rs_dis:1,            /* packet received intack       */
        !           552:                   rs_dfr:1;            /* packet received intack       */
        !           553:        } ed_rcv_status;                /* received packet status       */
        !           554:        u_char  next_packet;            /* pointer to next packet       */
        !           555:        u_short count;                  /* bytes in packet (length + 4) */
        !           556: };
        !           557: 
        !           558: /*
        !           559:  *                             Common constants
        !           560:  */
        !           561: #define ED_PAGE_SIZE           256             /* Size of RAM pages in bytes */
        !           562: #define ED_TXBUF_SIZE          6               /* Size of TX buffer in pages */
        !           563: 
        !           564: /*
        !           565:  * Vendor types
        !           566:  */
        !           567: #define ED_VENDOR_WD_SMC       0x00            /* Western Digital/SMC */
        !           568: #define ED_VENDOR_3COM         0x01            /* 3Com */
        !           569: 
        !           570: /*
        !           571:  * Compile-time config flags
        !           572:  */
        !           573: /*
        !           574:  * this sets the default for enabling/disablng the tranceiver
        !           575:  */
        !           576: #define ED_FLAGS_DISABLE_TRANCEIVER    0x01
        !           577: 
        !           578: /*
        !           579:  * This forces the board to be used in 8/16bit mode even if it
        !           580:  *     autoconfigs differently
        !           581:  */
        !           582: #define ED_FLAGS_FORCE_8BIT_MODE       0x02
        !           583: #define ED_FLAGS_FORCE_16BIT_MODE      0x04
        !           584: 
        !           585: /*
        !           586:  * This disables the use of double transmit buffers.
        !           587:  */
        !           588: #define ED_FLAGS_NO_DOUBLE_BUFFERING   0x08
        !           589: 
        !           590: /*
        !           591:  *             Definitions for Western digital/SMC WD80x3 series ASIC
        !           592:  */
        !           593: /*
        !           594:  * Memory Select Register (MSR)
        !           595:  */
        !           596: #define ED_WD_MSR      0
        !           597: 
        !           598: #define ED_WD_MSR_ADDR 0x3f    /* Memory decode bits 18-13 */
        !           599: #define ED_WD_MSR_MENB 0x40    /* Memory enable */
        !           600: #define ED_WD_MSR_RST  0x80    /* Reset board */
        !           601: 
        !           602: /*
        !           603:  * Interface Configuration Register (ICR)
        !           604:  */
        !           605: #define ED_WD_ICR      1
        !           606: 
        !           607: #define ED_WD_ICR_16BIT        0x01    /* 16-bit interface */
        !           608: #define ED_WD_ICR_OAR  0x02    /* select register. 0=BIO 1=EAR */
        !           609: #define ED_WD_ICR_IR2  0x04    /* high order bit of encoded IRQ */
        !           610: #define ED_WD_ICR_MSZ  0x08    /* memory size (0=8k 1=32k) */
        !           611: #define ED_WD_ICR_RLA  0x10    /* recall LAN address */
        !           612: #define ED_WD_ICR_RX7  0x20    /* recall all but i/o and LAN address */
        !           613: #define        ED_WD_ICR_RIO   0x40    /* recall i/o address */
        !           614: #define ED_WD_ICR_STO  0x80    /* store to non-volatile memory */
        !           615: 
        !           616: /*
        !           617:  * IO Address Register (IAR)
        !           618:  */
        !           619: #define ED_WD_IAR      2
        !           620: 
        !           621: /*
        !           622:  * EEROM Address Register
        !           623:  */
        !           624: #define ED_WD_EAR      3
        !           625: 
        !           626: /*
        !           627:  * Interrupt Request Register (IRR)
        !           628:  */
        !           629: #define ED_WD_IRR      4
        !           630: 
        !           631: #define        ED_WD_IRR_0WS   0x01    /* use 0 wait-states on 8 bit bus */
        !           632: #define ED_WD_IRR_OUT1 0x02    /* WD83C584 pin 1 output */
        !           633: #define ED_WD_IRR_OUT2 0x04    /* WD83C584 pin 2 output */
        !           634: #define ED_WD_IRR_OUT3 0x08    /* WD83C584 pin 3 output */
        !           635: #define ED_WD_IRR_FLASH        0x10    /* Flash RAM is in the ROM socket */
        !           636: 
        !           637: /*
        !           638:  * The three bit of the encoded IRQ are decoded as follows:
        !           639:  *
        !           640:  *     IR2 IR1 IR0     IRQ
        !           641:  *      0   0   0       2/9
        !           642:  *      0   0   1       3
        !           643:  *      0   1   0       5
        !           644:  *      0   1   1       7
        !           645:  *      1   0   0       10
        !           646:  *      1   0   1       11
        !           647:  *      1   1   0       15
        !           648:  *      1   1   1       4
        !           649:  */
        !           650: #define ED_WD_IRR_IR0  0x20    /* bit 0 of encoded IRQ */
        !           651: #define ED_WD_IRR_IR1  0x40    /* bit 1 of encoded IRQ */
        !           652: #define ED_WD_IRR_IEN  0x80    /* Interrupt enable */
        !           653: 
        !           654: /*
        !           655:  * LA Address Register (LAAR)
        !           656:  */
        !           657: #define ED_WD_LAAR     5
        !           658: 
        !           659: #define ED_WD_LAAR_ADDRHI      0x1f    /* bits 23-19 of RAM address */
        !           660: #define ED_WD_LAAR_0WS16       0x20    /* enable 0 wait-states on 16 bit bus */
        !           661: #define ED_WD_LAAR_L16EN       0x40    /* enable 16-bit operation */
        !           662: #define ED_WD_LAAR_M16EN       0x80    /* enable 16-bit memory access */
        !           663: 
        !           664: /* i/o base offset to station address/card-ID PROM */
        !           665: #define ED_WD_PROM     8
        !           666: 
        !           667: /* i/o base offset to CARD ID */
        !           668: #define ED_WD_CARD_ID  ED_WD_PROM+6
        !           669: 
        !           670: #define ED_TYPE_WD8003S                0x02
        !           671: #define ED_TYPE_WD8003E                0x03
        !           672: #define ED_TYPE_WD8013EBT      0x05
        !           673: #define ED_TYPE_WD8013EB       0x27
        !           674: #define ED_TYPE_WD8013EBP      0x2c
        !           675: #define ED_TYPE_WD8013EPC      0x29
        !           676: 
        !           677: /* Bit definitions in card ID */
        !           678: #define        ED_WD_REV_MASK          0x1f            /* Revision mask */
        !           679: #define        ED_WD_SOFTCONFIG        0x20            /* Soft config */
        !           680: #define        ED_WD_LARGERAM          0x40            /* Large RAM */
        !           681: #define        ED_MICROCHANEL          0x80            /* Microchannel bus (vs. isa) */
        !           682: 
        !           683: /*
        !           684:  * Checksum total. All 8 bytes in station address PROM will add up to this
        !           685:  */
        !           686: #define ED_WD_ROM_CHECKSUM_TOTAL       0xFF
        !           687: 
        !           688: #define ED_WD_NIC_OFFSET       0x10            /* I/O base offset to NIC */
        !           689: #define ED_WD_ASIC_OFFSET      0               /* I/O base offset to ASIC */
        !           690: #define ED_WD_IO_PORTS         32              /* # of i/o addresses used */
        !           691: 
        !           692: #define ED_WD_PAGE_OFFSET      0       /* page offset for NIC access to mem */
        !           693: 
        !           694: /*
        !           695:  *                     Definitions for 3Com 3c503
        !           696:  */
        !           697: #define ED_3COM_NIC_OFFSET     0
        !           698: #define ED_3COM_ASIC_OFFSET    0x400           /* offset to nic i/o regs */
        !           699: 
        !           700: /*
        !           701:  * XXX - The I/O address range is fragmented in the 3c503; this is the
        !           702:  *     number of regs at iobase.
        !           703:  */
        !           704: #define ED_3COM_IO_PORTS       16              /* # of i/o addresses used */
        !           705: 
        !           706: #define ED_3COM_PAGE_OFFSET    0x20            /* memory starts in second bank */
        !           707: 
        !           708: /*
        !           709:  *     Page Start Register. Must match PSTART in NIC
        !           710:  */
        !           711: #define ED_3COM_PSTR           0
        !           712: 
        !           713: /*
        !           714:  *     Page Stop Register. Must match PSTOP in NIC
        !           715:  */
        !           716: #define ED_3COM_PSPR           1
        !           717: 
        !           718: /*
        !           719:  *     Drq Timer Register. Determines number of bytes to be transfered during
        !           720:  *             a DMA burst.
        !           721:  */
        !           722: #define ED_3COM_DQTR           2
        !           723: 
        !           724: /*
        !           725:  *     Base Configuration Register. Read-only register which contains the
        !           726:  *             board-configured I/O base address of the adapter. Bit encoded.
        !           727:  */
        !           728: #define ED_3COM_BCFR           3
        !           729: 
        !           730: #define ED_3COM_BCFR_2E0       0x01
        !           731: #define ED_3COM_BCFR_2A0       0x02
        !           732: #define ED_3COM_BCFR_280       0x04
        !           733: #define ED_3COM_BCFR_250       0x08
        !           734: #define ED_3COM_BCFR_350       0x10
        !           735: #define ED_3COM_BCFR_330       0x20
        !           736: #define ED_3COM_BCFR_310       0x40
        !           737: #define ED_3COM_BCFR_300       0x80
        !           738: 
        !           739: /*
        !           740:  *     EPROM Configuration Register. Read-only register which contains the
        !           741:  *             board-configured memory base address. Bit encoded.
        !           742:  */
        !           743: #define ED_3COM_PCFR           4
        !           744: 
        !           745: #define ED_3COM_PCFR_C8000     0x10
        !           746: #define ED_3COM_PCFR_CC000     0x20
        !           747: #define ED_3COM_PCFR_D8000     0x40
        !           748: #define ED_3COM_PCFR_DC000     0x80
        !           749: 
        !           750: /*
        !           751:  *     GA Configuration Register. Gate-Array Configuration Register.
        !           752:  */
        !           753: #define ED_3COM_GACFR          5
        !           754: 
        !           755: /*
        !           756:  * mbs2  mbs1  mbs0            start address
        !           757:  *  0     0     0              0x0000
        !           758:  *  0     0     1              0x2000
        !           759:  *  0     1     0              0x4000
        !           760:  *  0     1     1              0x6000
        !           761:  *
        !           762:  *     Note that with adapters with only 8K, the setting for 0x2000 must
        !           763:  *             always be used.
        !           764:  */
        !           765: #define ED_3COM_GACFR_MBS0     0x01
        !           766: #define ED_3COM_GACFR_MBS1     0x02
        !           767: #define ED_3COM_GACFR_MBS2     0x04
        !           768: 
        !           769: #define ED_3COM_GACFR_RSEL     0x08    /* enable shared memory */
        !           770: #define ED_3COM_GACFR_TEST     0x10    /* for GA testing */
        !           771: #define ED_3COM_GACFR_OWS      0x20    /* select 0WS access to GA */
        !           772: #define ED_3COM_GACFR_TCM      0x40    /* Mask DMA interrupts */
        !           773: #define ED_3COM_GACFR_NIM      0x80    /* Mask NIC interrupts */
        !           774: 
        !           775: /*
        !           776:  *     Control Register. Miscellaneous control functions.
        !           777:  */
        !           778: #define ED_3COM_CR             6
        !           779: 
        !           780: #define ED_3COM_CR_RST         0x01    /* Reset GA and NIC */
        !           781: #define ED_3COM_CR_XSEL                0x02    /* Transceiver select. BNC=1(def) AUI=0 */
        !           782: #define ED_3COM_CR_EALO                0x04    /* window EA PROM 0-15 to I/O base */
        !           783: #define ED_3COM_CR_EAHI                0x08    /* window EA PROM 16-31 to I/O base */
        !           784: #define ED_3COM_CR_SHARE       0x10    /* select interrupt sharing option */
        !           785: #define ED_3COM_CR_DBSEL       0x20    /* Double buffer select */
        !           786: #define ED_3COM_CR_DDIR                0x40    /* DMA direction select */
        !           787: #define ED_3COM_CR_START       0x80    /* Start DMA controller */
        !           788: 
        !           789: /*
        !           790:  *     Status Register. Miscellaneous status information.
        !           791:  */
        !           792: #define ED_3COM_STREG          7
        !           793: 
        !           794: #define ED_3COM_STREG_REV      0x07    /* GA revision */
        !           795: #define ED_3COM_STREG_DIP      0x08    /* DMA in progress */
        !           796: #define ED_3COM_STREG_DTC      0x10    /* DMA terminal count */
        !           797: #define ED_3COM_STREG_OFLW     0x20    /* Overflow */
        !           798: #define ED_3COM_STREG_UFLW     0x40    /* Underflow */
        !           799: #define ED_3COM_STREG_DPRDY    0x80    /* Data port ready */
        !           800: 
        !           801: /*
        !           802:  *     Interrupt/DMA Configuration Register
        !           803:  */
        !           804: #define ED_3COM_IDCFR          8
        !           805: 
        !           806: #define ED_3COM_IDCFR_DRQ0     0x01    /* DMA request 1 select */
        !           807: #define ED_3COM_IDCFR_DRQ1     0x02    /* DMA request 2 select */
        !           808: #define ED_3COM_IDCFR_DRQ2     0x04    /* DMA request 3 select */
        !           809: #define ED_3COM_IDCFR_UNUSED   0x08    /* not used */
        !           810: #define ED_3COM_IDCFR_IRQ2     0x10    /* Interrupt request 2 select */
        !           811: #define ED_3COM_IDCFR_IRQ3     0x20    /* Interrupt request 3 select */
        !           812: #define ED_3COM_IDCFR_IRQ4     0x40    /* Interrupt request 4 select */
        !           813: #define ED_3COM_IDCFR_IRQ5     0x80    /* Interrupt request 5 select */
        !           814: 
        !           815: /*
        !           816:  *     DMA Address Register MSB
        !           817:  */
        !           818: #define ED_3COM_DAMSB          9
        !           819: 
        !           820: /*
        !           821:  *     DMA Address Register LSB
        !           822:  */
        !           823: #define ED_3COM_DALSB          0x0a
        !           824: 
        !           825: /*
        !           826:  *     Vector Pointer Register 2
        !           827:  */
        !           828: #define ED_3COM_VPTR2          0x0b
        !           829: 
        !           830: /*
        !           831:  *     Vector Pointer Register 1
        !           832:  */
        !           833: #define ED_3COM_VPTR1          0x0c
        !           834: 
        !           835: /*
        !           836:  *     Vector Pointer Register 0
        !           837:  */
        !           838: #define ED_3COM_VPTR0          0x0d
        !           839: 
        !           840: /*
        !           841:  *     Register File Access MSB
        !           842:  */
        !           843: #define ED_3COM_RFMSB          0x0e
        !           844: 
        !           845: /*
        !           846:  *     Register File Access LSB
        !           847:  */
        !           848: #define ED_3COM_RFLSB          0x0f

unix.superglobalmegacorp.com

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