1*2408ed96Sjmc /* $OpenBSD: dp8390reg.h,v 1.9 2003/10/21 18:58:49 jmc Exp $ */ 2656479e6Sfgsch /* $NetBSD: dp8390reg.h,v 1.3 1997/04/29 04:32:08 scottr Exp $ */ 3df930be7Sderaadt 4df930be7Sderaadt /* 5df930be7Sderaadt * National Semiconductor DS8390 NIC register definitions. 6df930be7Sderaadt * 7df930be7Sderaadt * Copyright (C) 1993, David Greenman. This software may be used, modified, 8df930be7Sderaadt * copied, distributed, and sold, in both source and binary form provided that 9df930be7Sderaadt * the above copyright and these terms are retained. Under no circumstances is 10df930be7Sderaadt * the author responsible for the proper functioning of this software, nor does 11df930be7Sderaadt * the author assume any responsibility for damages incurred with its use. 12df930be7Sderaadt */ 13df930be7Sderaadt 14df930be7Sderaadt /* 15df930be7Sderaadt * Page 0 register offsets 16df930be7Sderaadt */ 17df930be7Sderaadt #define ED_P0_CR 0x00 /* Command Register */ 18df930be7Sderaadt 19df930be7Sderaadt #define ED_P0_CLDA0 0x01 /* Current Local DMA Addr low (read) */ 20df930be7Sderaadt #define ED_P0_PSTART 0x01 /* Page Start register (write) */ 21df930be7Sderaadt 22df930be7Sderaadt #define ED_P0_CLDA1 0x02 /* Current Local DMA Addr high (read) */ 23df930be7Sderaadt #define ED_P0_PSTOP 0x02 /* Page Stop register (write) */ 24df930be7Sderaadt 25df930be7Sderaadt #define ED_P0_BNRY 0x03 /* Boundary Pointer */ 26df930be7Sderaadt 27df930be7Sderaadt #define ED_P0_TSR 0x04 /* Transmit Status Register (read) */ 28df930be7Sderaadt #define ED_P0_TPSR 0x04 /* Transmit Page Start (write) */ 29df930be7Sderaadt 30df930be7Sderaadt #define ED_P0_NCR 0x05 /* Number of Collisions Reg (read) */ 31df930be7Sderaadt #define ED_P0_TBCR0 0x05 /* Transmit Byte count, low (write) */ 32df930be7Sderaadt 33df930be7Sderaadt #define ED_P0_FIFO 0x06 /* FIFO register (read) */ 34df930be7Sderaadt #define ED_P0_TBCR1 0x06 /* Transmit Byte count, high (write) */ 35df930be7Sderaadt 36df930be7Sderaadt #define ED_P0_ISR 0x07 /* Interrupt Status Register */ 37df930be7Sderaadt 38df930be7Sderaadt #define ED_P0_CRDA0 0x08 /* Current Remote DMA Addr low (read) */ 39df930be7Sderaadt #define ED_P0_RSAR0 0x08 /* Remote Start Address low (write) */ 40df930be7Sderaadt 41df930be7Sderaadt #define ED_P0_CRDA1 0x09 /* Current Remote DMA Addr high (read) */ 42df930be7Sderaadt #define ED_P0_RSAR1 0x09 /* Remote Start Address high (write) */ 43df930be7Sderaadt 44df930be7Sderaadt #define ED_P0_RBCR0 0x0a /* Remote Byte Count low (write) */ 45df930be7Sderaadt 46df930be7Sderaadt #define ED_P0_RBCR1 0x0b /* Remote Byte Count high (write) */ 47df930be7Sderaadt 48df930be7Sderaadt #define ED_P0_RSR 0x0c /* Receive Status (read) */ 49df930be7Sderaadt #define ED_P0_RCR 0x0c /* Receive Configuration Reg (write) */ 50df930be7Sderaadt 51df930be7Sderaadt #define ED_P0_CNTR0 0x0d /* frame alignment error counter (read) */ 52df930be7Sderaadt #define ED_P0_TCR 0x0d /* Transmit Configuration Reg (write) */ 53df930be7Sderaadt 54df930be7Sderaadt #define ED_P0_CNTR1 0x0e /* CRC error counter (read) */ 55df930be7Sderaadt #define ED_P0_DCR 0x0e /* Data Configuration Reg (write) */ 56df930be7Sderaadt 57df930be7Sderaadt #define ED_P0_CNTR2 0x0f /* missed packet counter (read) */ 58df930be7Sderaadt #define ED_P0_IMR 0x0f /* Interrupt Mask Register (write) */ 59df930be7Sderaadt 60df930be7Sderaadt /* 61df930be7Sderaadt * Page 1 register offsets 62df930be7Sderaadt */ 63df930be7Sderaadt #define ED_P1_CR 0x00 /* Command Register */ 64df930be7Sderaadt #define ED_P1_PAR0 0x01 /* Physical Address Register 0 */ 65df930be7Sderaadt #define ED_P1_PAR1 0x02 /* Physical Address Register 1 */ 66df930be7Sderaadt #define ED_P1_PAR2 0x03 /* Physical Address Register 2 */ 67df930be7Sderaadt #define ED_P1_PAR3 0x04 /* Physical Address Register 3 */ 68df930be7Sderaadt #define ED_P1_PAR4 0x05 /* Physical Address Register 4 */ 69df930be7Sderaadt #define ED_P1_PAR5 0x06 /* Physical Address Register 5 */ 70df930be7Sderaadt #define ED_P1_CURR 0x07 /* Current RX ring-buffer page */ 71df930be7Sderaadt #define ED_P1_MAR0 0x08 /* Multicast Address Register 0 */ 72df930be7Sderaadt #define ED_P1_MAR1 0x09 /* Multicast Address Register 1 */ 73df930be7Sderaadt #define ED_P1_MAR2 0x0a /* Multicast Address Register 2 */ 74df930be7Sderaadt #define ED_P1_MAR3 0x0b /* Multicast Address Register 3 */ 75df930be7Sderaadt #define ED_P1_MAR4 0x0c /* Multicast Address Register 4 */ 76df930be7Sderaadt #define ED_P1_MAR5 0x0d /* Multicast Address Register 5 */ 77df930be7Sderaadt #define ED_P1_MAR6 0x0e /* Multicast Address Register 6 */ 78df930be7Sderaadt #define ED_P1_MAR7 0x0f /* Multicast Address Register 7 */ 79df930be7Sderaadt 80df930be7Sderaadt /* 81df930be7Sderaadt * Page 2 register offsets 82df930be7Sderaadt */ 83df930be7Sderaadt #define ED_P2_CR 0x00 /* Command Register */ 84df930be7Sderaadt #define ED_P2_PSTART 0x01 /* Page Start (read) */ 85df930be7Sderaadt #define ED_P2_CLDA0 0x01 /* Current Local DMA Addr 0 (write) */ 86df930be7Sderaadt #define ED_P2_PSTOP 0x02 /* Page Stop (read) */ 87df930be7Sderaadt #define ED_P2_CLDA1 0x02 /* Current Local DMA Addr 1 (write) */ 88df930be7Sderaadt #define ED_P2_RNPP 0x03 /* Remote Next Packet Pointer */ 89df930be7Sderaadt #define ED_P2_TPSR 0x04 /* Transmit Page Start (read) */ 90df930be7Sderaadt #define ED_P2_LNPP 0x05 /* Local Next Packet Pointer */ 91df930be7Sderaadt #define ED_P2_ACU 0x06 /* Address Counter Upper */ 92df930be7Sderaadt #define ED_P2_ACL 0x07 /* Address Counter Lower */ 93df930be7Sderaadt #define ED_P2_RCR 0x0c /* Receive Configuration Register (read) */ 94df930be7Sderaadt #define ED_P2_TCR 0x0d /* Transmit Configuration Register (read) */ 95df930be7Sderaadt #define ED_P2_DCR 0x0e /* Data Configuration Register (read) */ 96df930be7Sderaadt #define ED_P2_IMR 0x0f /* Interrupt Mask Register (read) */ 97df930be7Sderaadt 98df930be7Sderaadt /* 99df930be7Sderaadt * Command Register (CR) definitions 100df930be7Sderaadt */ 101df930be7Sderaadt 102df930be7Sderaadt /* 103df930be7Sderaadt * STP: SToP. Software reset command. Takes the controller offline. No 104df930be7Sderaadt * packets will be received or transmitted. Any reception or transmission in 105df930be7Sderaadt * progress will continue to completion before entering reset state. To exit 106df930be7Sderaadt * this state, the STP bit must reset and the STA bit must be set. The 107df930be7Sderaadt * software reset has executed only when indicated by the RST bit in the ISR 108df930be7Sderaadt * being set. 109df930be7Sderaadt */ 110df930be7Sderaadt #define ED_CR_STP 0x01 111df930be7Sderaadt 112df930be7Sderaadt /* 113df930be7Sderaadt * STA: STArt. This bit is used to activate the NIC after either power-up, or 114df930be7Sderaadt * when the NIC has been put in reset mode by software command or error. 115df930be7Sderaadt */ 116df930be7Sderaadt #define ED_CR_STA 0x02 117df930be7Sderaadt 118df930be7Sderaadt /* 119df930be7Sderaadt * TXP: Transmit Packet. This bit must be set to indicate transmission of a 120df930be7Sderaadt * packet. TXP is internally reset either after the transmission is completed 121df930be7Sderaadt * or aborted. This bit should be set only after the Transmit Byte Count and 122df930be7Sderaadt * Transmit Page Start register have been programmed. 123df930be7Sderaadt */ 124df930be7Sderaadt #define ED_CR_TXP 0x04 125df930be7Sderaadt 126df930be7Sderaadt /* 127df930be7Sderaadt * RD0, RD1, RD2: Remote DMA Command. These three bits control the operation 128df930be7Sderaadt * of the remote DMA channel. RD2 can be set to abort any remote DMA command 129df930be7Sderaadt * in progress. The Remote Byte Count registers should be cleared when a 130df930be7Sderaadt * remote DMA has been aborted. The Remote Start Addresses are not restored 131df930be7Sderaadt * to the starting address if the remote DMA is aborted. 132df930be7Sderaadt * 133df930be7Sderaadt * RD2 RD1 RD0 function 134df930be7Sderaadt * 0 0 0 not allowed 135df930be7Sderaadt * 0 0 1 remote read 136df930be7Sderaadt * 0 1 0 remote write 137df930be7Sderaadt * 0 1 1 send packet 138df930be7Sderaadt * 1 X X abort 139df930be7Sderaadt */ 140df930be7Sderaadt #define ED_CR_RD0 0x08 141df930be7Sderaadt #define ED_CR_RD1 0x10 142df930be7Sderaadt #define ED_CR_RD2 0x20 143df930be7Sderaadt 144df930be7Sderaadt /* 145df930be7Sderaadt * PS0, PS1: Page Select. The two bits select which register set or 'page' to 146df930be7Sderaadt * access. 147df930be7Sderaadt * 148df930be7Sderaadt * PS1 PS0 page 149df930be7Sderaadt * 0 0 0 150df930be7Sderaadt * 0 1 1 151df930be7Sderaadt * 1 0 2 152e370c91bSfgsch * 1 1 3 (only on chips which have extensions to the dp8390) 153df930be7Sderaadt */ 154df930be7Sderaadt #define ED_CR_PS0 0x40 155df930be7Sderaadt #define ED_CR_PS1 0x80 156df930be7Sderaadt /* bit encoded aliases */ 157df930be7Sderaadt #define ED_CR_PAGE_0 0x00 /* (for consistency) */ 158e370c91bSfgsch #define ED_CR_PAGE_1 (ED_CR_PS0) 159e370c91bSfgsch #define ED_CR_PAGE_2 (ED_CR_PS1) 160e370c91bSfgsch #define ED_CR_PAGE_3 (ED_CR_PS1|ED_CR_PS0) 161df930be7Sderaadt 162df930be7Sderaadt /* 163df930be7Sderaadt * Interrupt Status Register (ISR) definitions 164df930be7Sderaadt */ 165df930be7Sderaadt 166df930be7Sderaadt /* 167df930be7Sderaadt * PRX: Packet Received. Indicates packet received with no errors. 168df930be7Sderaadt */ 169df930be7Sderaadt #define ED_ISR_PRX 0x01 170df930be7Sderaadt 171df930be7Sderaadt /* 172df930be7Sderaadt * PTX: Packet Transmitted. Indicates packet transmitted with no errors. 173df930be7Sderaadt */ 174df930be7Sderaadt #define ED_ISR_PTX 0x02 175df930be7Sderaadt 176df930be7Sderaadt /* 177df930be7Sderaadt * RXE: Receive Error. Indicates that a packet was received with one or more 178df930be7Sderaadt * the following errors: CRC error, frame alignment error, FIFO overrun, 179df930be7Sderaadt * missed packet. 180df930be7Sderaadt */ 181df930be7Sderaadt #define ED_ISR_RXE 0x04 182df930be7Sderaadt 183df930be7Sderaadt /* 184df930be7Sderaadt * TXE: Transmission Error. Indicates that an attempt to transmit a packet 185df930be7Sderaadt * resulted in one or more of the following errors: excessive collisions, FIFO 186df930be7Sderaadt * underrun. 187df930be7Sderaadt */ 188df930be7Sderaadt #define ED_ISR_TXE 0x08 189df930be7Sderaadt 190df930be7Sderaadt /* 191df930be7Sderaadt * OVW: OverWrite. Indicates a receive ring-buffer overrun. Incoming network 192df930be7Sderaadt * would exceed (has exceeded?) the boundary pointer, resulting in data that 193df930be7Sderaadt * was previously received and not yet read from the buffer to be overwritten. 194df930be7Sderaadt */ 195df930be7Sderaadt #define ED_ISR_OVW 0x10 196df930be7Sderaadt 197df930be7Sderaadt /* 198df930be7Sderaadt * CNT: Counter Overflow. Set when the MSB of one or more of the Network Tally 199df930be7Sderaadt * Counters has been set. 200df930be7Sderaadt */ 201df930be7Sderaadt #define ED_ISR_CNT 0x20 202df930be7Sderaadt 203df930be7Sderaadt /* 204df930be7Sderaadt * RDC: Remote Data Complete. Indicates that a Remote DMA operation has 205df930be7Sderaadt * completed. 206df930be7Sderaadt */ 207df930be7Sderaadt #define ED_ISR_RDC 0x40 208df930be7Sderaadt 209df930be7Sderaadt /* 210df930be7Sderaadt * RST: Reset status. Set when the NIC enters the reset state and cleared when 211df930be7Sderaadt * a Start Command is issued to the CR. This bit is also set when a receive 212df930be7Sderaadt * ring-buffer overrun (OverWrite) occurs and is cleared when one or more 213df930be7Sderaadt * packets have been removed from the ring. This is a read-only bit. 214df930be7Sderaadt */ 215df930be7Sderaadt #define ED_ISR_RST 0x80 216df930be7Sderaadt 217df930be7Sderaadt /* 218df930be7Sderaadt * Interrupt Mask Register (IMR) definitions 219df930be7Sderaadt */ 220df930be7Sderaadt 221df930be7Sderaadt /* 222df930be7Sderaadt * PRXE: Packet Received interrupt Enable. If set, a received packet will 223df930be7Sderaadt * cause an interrupt. 224df930be7Sderaadt */ 225df930be7Sderaadt #define ED_IMR_PRXE 0x01 226df930be7Sderaadt 227df930be7Sderaadt /* 228df930be7Sderaadt * PTXE: Packet Transmit interrupt Enable. If set, an interrupt is generated 229df930be7Sderaadt * when a packet transmission completes. 230df930be7Sderaadt */ 231df930be7Sderaadt #define ED_IMR_PTXE 0x02 232df930be7Sderaadt 233df930be7Sderaadt /* 234df930be7Sderaadt * RXEE: Receive Error interrupt Enable. If set, an interrupt will occur 235df930be7Sderaadt * whenever a packet is received with an error. 236df930be7Sderaadt */ 237df930be7Sderaadt #define ED_IMR_RXEE 0x04 238df930be7Sderaadt 239df930be7Sderaadt /* 240df930be7Sderaadt * TXEE: Transmit Error interrupt Enable. If set, an interrupt will occur 241df930be7Sderaadt * whenever a transmission results in an error. 242df930be7Sderaadt */ 243df930be7Sderaadt #define ED_IMR_TXEE 0x08 244df930be7Sderaadt 245df930be7Sderaadt /* 246df930be7Sderaadt * OVWE: OverWrite error interrupt Enable. If set, an interrupt is generated 247df930be7Sderaadt * whenever the receive ring-buffer is overrun. i.e. when the boundary pointer 248df930be7Sderaadt * is exceeded. 249df930be7Sderaadt */ 250df930be7Sderaadt #define ED_IMR_OVWE 0x10 251df930be7Sderaadt 252df930be7Sderaadt /* 253df930be7Sderaadt * CNTE: Counter overflow interrupt Enable. If set, an interrupt is generated 254df930be7Sderaadt * whenever the MSB of one or more of the Network Statistics counters has been 255df930be7Sderaadt * set. 256df930be7Sderaadt */ 257df930be7Sderaadt #define ED_IMR_CNTE 0x20 258df930be7Sderaadt 259df930be7Sderaadt /* 260df930be7Sderaadt * RDCE: Remote DMA Complete interrupt Enable. If set, an interrupt is 261df930be7Sderaadt * generated when a remote DMA transfer has completed. 262df930be7Sderaadt */ 263df930be7Sderaadt #define ED_IMR_RDCE 0x40 264df930be7Sderaadt 265df930be7Sderaadt /* 266df930be7Sderaadt * Bit 7 is unused/reserved. 267df930be7Sderaadt */ 268df930be7Sderaadt 269df930be7Sderaadt /* 270df930be7Sderaadt * Data Configuration Register (DCR) definitions 271df930be7Sderaadt */ 272df930be7Sderaadt 273df930be7Sderaadt /* 274df930be7Sderaadt * WTS: Word Transfer Select. WTS establishes byte or word transfers for both 275df930be7Sderaadt * remote and local DMA transfers 276df930be7Sderaadt */ 277df930be7Sderaadt #define ED_DCR_WTS 0x01 278df930be7Sderaadt 279df930be7Sderaadt /* 280df930be7Sderaadt * BOS: Byte Order Select. BOS sets the byte order for the host. Should be 0 281df930be7Sderaadt * for 80x86, and 1 for 68000 series processors 282df930be7Sderaadt */ 283df930be7Sderaadt #define ED_DCR_BOS 0x02 284df930be7Sderaadt 285df930be7Sderaadt /* 286df930be7Sderaadt * LAS: Long Address Select. When LAS is 1, the contents of the remote DMA 287df930be7Sderaadt * registers RSAR0 and RSAR1 are used to provide A16-A31. 288df930be7Sderaadt */ 289df930be7Sderaadt #define ED_DCR_LAS 0x04 290df930be7Sderaadt 291df930be7Sderaadt /* 292df930be7Sderaadt * LS: Loopback Select. When 0, loopback mode is selected. Bits D1 and D2 of 293df930be7Sderaadt * the TCR must also be programmed for loopback operation. When 1, normal 294df930be7Sderaadt * operation is selected. 295df930be7Sderaadt */ 296df930be7Sderaadt #define ED_DCR_LS 0x08 297df930be7Sderaadt 298df930be7Sderaadt /* 299df930be7Sderaadt * AR: Auto-initialize Remote. When 0, data must be removed from ring-buffer 300df930be7Sderaadt * under program control. When 1, remote DMA is automatically initiated and 301df930be7Sderaadt * the boundary pointer is automatically updated. 302df930be7Sderaadt */ 303df930be7Sderaadt #define ED_DCR_AR 0x10 304df930be7Sderaadt 305df930be7Sderaadt /* 306df930be7Sderaadt * FT0, FT1: Fifo Threshold select. 307df930be7Sderaadt * 308df930be7Sderaadt * FT1 FT0 Word-width Byte-width 309df930be7Sderaadt * 0 0 1 word 2 bytes 310df930be7Sderaadt * 0 1 2 words 4 bytes 311df930be7Sderaadt * 1 0 4 words 8 bytes 312df930be7Sderaadt * 1 1 8 words 12 bytes 313df930be7Sderaadt * 314df930be7Sderaadt * During transmission, the FIFO threshold indicates the number of bytes or 315df930be7Sderaadt * words that the FIFO has filled from the local DMA before BREQ is asserted. 316df930be7Sderaadt * The transmission threshold is 16 bytes minus the receiver threshold. 317df930be7Sderaadt */ 318df930be7Sderaadt #define ED_DCR_FT0 0x20 319df930be7Sderaadt #define ED_DCR_FT1 0x40 320df930be7Sderaadt 321df930be7Sderaadt /* 322656479e6Sfgsch * bit 7 (0x80) is unused/reserved 323df930be7Sderaadt */ 324df930be7Sderaadt 325df930be7Sderaadt /* 326df930be7Sderaadt * Transmit Configuration Register (TCR) definitions 327df930be7Sderaadt */ 328df930be7Sderaadt 329df930be7Sderaadt /* 330df930be7Sderaadt * CRC: Inhibit CRC. If 0, CRC will be appended by the transmitter, if 0, CRC 331df930be7Sderaadt * is not appended by the transmitter. 332df930be7Sderaadt */ 333df930be7Sderaadt #define ED_TCR_CRC 0x01 334df930be7Sderaadt 335df930be7Sderaadt /* 336df930be7Sderaadt * LB0, LB1: Loopback control. These two bits set the type of loopback that is 337df930be7Sderaadt * to be performed. 338df930be7Sderaadt * 339df930be7Sderaadt * LB1 LB0 mode 340df930be7Sderaadt * 0 0 0 - normal operation (DCR_LS = 0) 341df930be7Sderaadt * 0 1 1 - internal loopback (DCR_LS = 0) 342df930be7Sderaadt * 1 0 2 - external loopback (DCR_LS = 1) 343df930be7Sderaadt * 1 1 3 - external loopback (DCR_LS = 0) 344df930be7Sderaadt */ 345df930be7Sderaadt #define ED_TCR_LB0 0x02 346df930be7Sderaadt #define ED_TCR_LB1 0x04 347df930be7Sderaadt 348df930be7Sderaadt /* 349df930be7Sderaadt * ATD: Auto Transmit Disable. Clear for normal operation. When set, allows 350df930be7Sderaadt * another station to disable the NIC's transmitter by transmitting to a 351df930be7Sderaadt * multicast address hashing to bit 62. Reception of a multicast address 352df930be7Sderaadt * hashing to bit 63 enables the transmitter. 353df930be7Sderaadt */ 354df930be7Sderaadt #define ED_TCR_ATD 0x08 355df930be7Sderaadt 356df930be7Sderaadt /* 357df930be7Sderaadt * OFST: Collision Offset enable. This bit when set modifies the backoff 358df930be7Sderaadt * algorithm to allow prioritization of nodes. 359df930be7Sderaadt */ 360df930be7Sderaadt #define ED_TCR_OFST 0x10 361df930be7Sderaadt 362df930be7Sderaadt /* 363df930be7Sderaadt * bits 5, 6, and 7 are unused/reserved 364df930be7Sderaadt */ 365df930be7Sderaadt 366df930be7Sderaadt /* 367df930be7Sderaadt * Transmit Status Register (TSR) definitions 368df930be7Sderaadt */ 369df930be7Sderaadt 370df930be7Sderaadt /* 371df930be7Sderaadt * PTX: Packet Transmitted. Indicates successful transmission of packet. 372df930be7Sderaadt */ 373df930be7Sderaadt #define ED_TSR_PTX 0x01 374df930be7Sderaadt 375df930be7Sderaadt /* 376df930be7Sderaadt * bit 1 (0x02) is unused/reserved 377df930be7Sderaadt */ 378df930be7Sderaadt 379df930be7Sderaadt /* 380df930be7Sderaadt * COL: Transmit Collided. Indicates that the transmission collided at least 381df930be7Sderaadt * once with another station on the network. 382df930be7Sderaadt */ 383df930be7Sderaadt #define ED_TSR_COL 0x04 384df930be7Sderaadt 385df930be7Sderaadt /* 386df930be7Sderaadt * ABT: Transmit aborted. Indicates that the transmission was aborted due to 387df930be7Sderaadt * excessive collisions. 388df930be7Sderaadt */ 389df930be7Sderaadt #define ED_TSR_ABT 0x08 390df930be7Sderaadt 391df930be7Sderaadt /* 392df930be7Sderaadt * CRS: Carrier Sense Lost. Indicates that carrier was lost during the 393df930be7Sderaadt * transmission of the packet. (Transmission is not aborted because of a loss 394df930be7Sderaadt * of carrier). 395df930be7Sderaadt */ 396df930be7Sderaadt #define ED_TSR_CRS 0x10 397df930be7Sderaadt 398df930be7Sderaadt /* 399df930be7Sderaadt * FU: FIFO Underrun. Indicates that the NIC wasn't able to access bus/ 400df930be7Sderaadt * transmission memory before the FIFO emptied. Transmission of the packet was 401df930be7Sderaadt * aborted. 402df930be7Sderaadt */ 403df930be7Sderaadt #define ED_TSR_FU 0x20 404df930be7Sderaadt 405df930be7Sderaadt /* 406df930be7Sderaadt * CDH: CD Heartbeat. Indicates that the collision detection circuitry isn't 407df930be7Sderaadt * working correctly during a collision heartbeat test. 408df930be7Sderaadt */ 409df930be7Sderaadt #define ED_TSR_CDH 0x40 410df930be7Sderaadt 411df930be7Sderaadt /* 412df930be7Sderaadt * OWC: Out of Window Collision: Indicates that a collision occurred after a 413df930be7Sderaadt * slot time (51.2us). The transmission is rescheduled just as in normal 414df930be7Sderaadt * collisions. 415df930be7Sderaadt */ 416df930be7Sderaadt #define ED_TSR_OWC 0x80 417df930be7Sderaadt 418df930be7Sderaadt /* 419df930be7Sderaadt * Receiver Configuration Register (RCR) definitions 420df930be7Sderaadt */ 421df930be7Sderaadt 422df930be7Sderaadt /* 423df930be7Sderaadt * SEP: Save Errored Packets. If 0, error packets are discarded. If set to 1, 424df930be7Sderaadt * packets with CRC and frame errors are not discarded. 425df930be7Sderaadt */ 426df930be7Sderaadt #define ED_RCR_SEP 0x01 427df930be7Sderaadt 428df930be7Sderaadt /* 429df930be7Sderaadt * AR: Accept Runt packet. If 0, packet with less than 64 byte are discarded. 430df930be7Sderaadt * If set to 1, packets with less than 64 byte are not discarded. 431df930be7Sderaadt */ 432df930be7Sderaadt #define ED_RCR_AR 0x02 433df930be7Sderaadt 434df930be7Sderaadt /* 435df930be7Sderaadt * AB: Accept Broadcast. If set, packets sent to the broadcast address will be 436df930be7Sderaadt * accepted. 437df930be7Sderaadt */ 438df930be7Sderaadt #define ED_RCR_AB 0x04 439df930be7Sderaadt 440df930be7Sderaadt /* 441df930be7Sderaadt * AM: Accept Multicast. If set, packets sent to a multicast address are 442df930be7Sderaadt * checked for a match in the hashing array. If clear, multicast packets are 443df930be7Sderaadt * ignored. 444df930be7Sderaadt */ 445df930be7Sderaadt #define ED_RCR_AM 0x08 446df930be7Sderaadt 447df930be7Sderaadt /* 448df930be7Sderaadt * PRO: Promiscuous Physical. If set, all packets with a physical addresses 449df930be7Sderaadt * are accepted. If clear, a physical destination address must match this 450df930be7Sderaadt * station's address. Note: for full promiscuous mode, RCR_AB and RCR_AM must 451df930be7Sderaadt * also be set. In addition, the multicast hashing array must be set to all 452df930be7Sderaadt * 1's so that all multicast addresses are accepted. 453df930be7Sderaadt */ 454df930be7Sderaadt #define ED_RCR_PRO 0x10 455df930be7Sderaadt 456df930be7Sderaadt /* 457df930be7Sderaadt * MON: Monitor Mode. If set, packets will be checked for good CRC and 458df930be7Sderaadt * framing, but are not stored in the ring-buffer. If clear, packets are 459df930be7Sderaadt * stored (normal operation). 460df930be7Sderaadt */ 461df930be7Sderaadt #define ED_RCR_MON 0x20 462df930be7Sderaadt 463df930be7Sderaadt /* 464eeadfd90Sfgsch * INTT: Interrupt Trigger Mode. Must be set if AX88190. 465eeadfd90Sfgsch */ 466eeadfd90Sfgsch #define ED_RCR_INTT 0x40 467eeadfd90Sfgsch 468eeadfd90Sfgsch /* 469eeadfd90Sfgsch * Bit 7 is unused/reserved. 470df930be7Sderaadt */ 471df930be7Sderaadt 472df930be7Sderaadt /* 473df930be7Sderaadt * Receiver Status Register (RSR) definitions 474df930be7Sderaadt */ 475df930be7Sderaadt 476df930be7Sderaadt /* 477df930be7Sderaadt * PRX: Packet Received without error. 478df930be7Sderaadt */ 479df930be7Sderaadt #define ED_RSR_PRX 0x01 480df930be7Sderaadt 481df930be7Sderaadt /* 482df930be7Sderaadt * CRC: CRC error. Indicates that a packet has a CRC error. Also set for 483df930be7Sderaadt * frame alignment errors. 484df930be7Sderaadt */ 485df930be7Sderaadt #define ED_RSR_CRC 0x02 486df930be7Sderaadt 487df930be7Sderaadt /* 488df930be7Sderaadt * FAE: Frame Alignment Error. Indicates that the incoming packet did not end 489df930be7Sderaadt * on a byte boundary and the CRC did not match at the last byte boundary. 490df930be7Sderaadt */ 491df930be7Sderaadt #define ED_RSR_FAE 0x04 492df930be7Sderaadt 493df930be7Sderaadt /* 494df930be7Sderaadt * FO: FIFO Overrun. Indicates that the FIFO was not serviced (during local 495df930be7Sderaadt * DMA) causing it to overrun. Reception of the packet is aborted. 496df930be7Sderaadt */ 497df930be7Sderaadt #define ED_RSR_FO 0x08 498df930be7Sderaadt 499df930be7Sderaadt /* 500df930be7Sderaadt * MPA: Missed Packet. Indicates that the received packet couldn't be stored 501df930be7Sderaadt * in the ring-buffer because of insufficient buffer space (exceeding the 502df930be7Sderaadt * boundary pointer), or because the transfer to the ring-buffer was inhibited 503df930be7Sderaadt * by RCR_MON - monitor mode. 504df930be7Sderaadt */ 505df930be7Sderaadt #define ED_RSR_MPA 0x10 506df930be7Sderaadt 507df930be7Sderaadt /* 508df930be7Sderaadt * PHY: Physical address. If 0, the packet received was sent to a physical 509df930be7Sderaadt * address. If 1, the packet was accepted because of a multicast/broadcast 510df930be7Sderaadt * address match. 511df930be7Sderaadt */ 512df930be7Sderaadt #define ED_RSR_PHY 0x20 513df930be7Sderaadt 514df930be7Sderaadt /* 515*2408ed96Sjmc * DIS: Receiver Disabled. Set to indicate that the receiver has entered 516df930be7Sderaadt * monitor mode. Cleared when the receiver exits monitor mode. 517df930be7Sderaadt */ 518df930be7Sderaadt #define ED_RSR_DIS 0x40 519df930be7Sderaadt 520df930be7Sderaadt /* 521df930be7Sderaadt * DFR: Deferring. Set to indicate a 'jabber' condition. The CRS and COL 522df930be7Sderaadt * inputs are active, and the transceiver has set the CD line as a result of 523df930be7Sderaadt * the jabber. 524df930be7Sderaadt */ 525df930be7Sderaadt #define ED_RSR_DFR 0x80 526df930be7Sderaadt 527df930be7Sderaadt /* 528656479e6Sfgsch * receive ring descriptor 529df930be7Sderaadt * 530df930be7Sderaadt * The National Semiconductor DS8390 Network interface controller uses the 531df930be7Sderaadt * following receive ring headers. The way this works is that the memory on 532df930be7Sderaadt * the interface card is chopped up into 256 bytes blocks. A contiguous 533df930be7Sderaadt * portion of those blocks are marked for receive packets by setting start and 534df930be7Sderaadt * end block #'s in the NIC. For each packet that is put into the receive 535df930be7Sderaadt * ring, one of these headers (4 bytes each) is tacked onto the front. The 536df930be7Sderaadt * first byte is a copy of the receiver status register at the time the packet 537656479e6Sfgsch * was received. 538df930be7Sderaadt */ 539656479e6Sfgsch struct dp8390_ring { 540656479e6Sfgsch u_int8_t rsr; /* receiver status */ 541656479e6Sfgsch u_int8_t next_packet; /* pointer to next packet */ 542656479e6Sfgsch u_int16_t count; /* bytes in packet (length + 4) */ 543656479e6Sfgsch }; 544656479e6Sfgsch 5453b791a91Sniklas /* Some drivers prefer to use byte-constants to get at this structure. */ 5463b791a91Sniklas #define ED_RING_RSR 0 /* receiver status */ 5473b791a91Sniklas #define ED_RING_NEXT_PACKET 1 /* pointer to next packet */ 5483b791a91Sniklas #define ED_RING_COUNT 2 /* bytes in packet (length + 4) */ 5493b791a91Sniklas #define ED_RING_HDRSZ 4 /* Header size */ 550df930be7Sderaadt 551df930be7Sderaadt /* 552df930be7Sderaadt * Common constants 553df930be7Sderaadt */ 554df930be7Sderaadt #define ED_PAGE_SIZE 256 /* Size of RAM pages in bytes */ 555df930be7Sderaadt #define ED_PAGE_MASK 255 556df930be7Sderaadt #define ED_PAGE_SHIFT 8 557df930be7Sderaadt 558df930be7Sderaadt #define ED_TXBUF_SIZE 6 /* Size of TX buffer in pages */ 559