[BACK]Return to if_snreg.h CVS log [TXT][DIR] Up to [local] / sys / arch / mac68k / dev

Annotation of sys/arch/mac68k/dev/if_snreg.h, Revision 1.1

1.1     ! nbrk        1: /*      $OpenBSD: if_snreg.h,v 1.4 2001/07/04 08:52:46 niklas Exp $    */
        !             2: /*      $NetBSD: if_snreg.h,v 1.3 1997/04/30 19:47:12 scottr Exp $    */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1991   Algorithmics Ltd (http://www.algor.co.uk)
        !             6:  * You may use, copy, and modify this program so long as you retain the
        !             7:  * copyright line.
        !             8:  */
        !             9:
        !            10: /*
        !            11:  * if_snreg.h -- National Semiconductor DP8393X (SONIC) register defs
        !            12:  */
        !            13:
        !            14: /*
        !            15:  * SONIC registers as seen by the processor
        !            16:  */
        !            17: #define        SNR_CR          0x00    /* Command */
        !            18: #define        SNR_DCR         0x01    /* Data Configuration */
        !            19: #define        SNR_RCR         0x02    /* Receive Control */
        !            20: #define        SNR_TCR         0x03    /* Transmit Control */
        !            21: #define        SNR_IMR         0x04    /* Interrupt Mask */
        !            22: #define        SNR_ISR         0x05    /* Interrupt Status */
        !            23: #define        SNR_UTDA        0x06    /* Upper Transmit Descriptor Address */
        !            24: #define        SNR_CTDA        0x07    /* Current Transmit Descriptor Address */
        !            25: #define        SNR_TPS         0x08    /* Transmit Packet Size */
        !            26: #define        SNR_TFC         0x09    /* Transmit Fragment Count */
        !            27: #define        SNR_TSA0        0x0a    /* Transmit Start Address 0 */
        !            28: #define        SNR_TSA1        0x0b    /* Transmit Start Address 1 */
        !            29: #define        SNR_TFS         0x0c    /* Transmit Fragment Size */
        !            30: #define        SNR_URDA        0x0d    /* Upper Receive Descriptor Address */
        !            31: #define        SNR_CRDA        0x0e    /* Current Receive Descriptor Address */
        !            32: #define        SNR_CRBA0       0x0f    /* Current Receive Buffer Address 0 */
        !            33: #define        SNR_CRBA1       0x10    /* Current Receive Buffer Address 1 */
        !            34: #define        SNR_RBWC0       0x11    /* Remaining Buffer Word Count 0 */
        !            35: #define        SNR_RBWC1       0x12    /* Remaining Buffer Word Count 1 */
        !            36: #define        SNR_EOBC        0x13    /* End Of Buffer Word Count */
        !            37: #define        SNR_URRA        0x14    /* Upper Receive Resource Address */
        !            38: #define        SNR_RSA         0x15    /* Resource Start Address */
        !            39: #define        SNR_REA         0x16    /* Resource End Address */
        !            40: #define        SNR_RRP         0x17    /* Resource Read Pointer */
        !            41: #define        SNR_RWP         0x18    /* Resource Write Pointer */
        !            42: #define        SNR_TRBA0       0x19    /* Temporary Receive Buffer Address 0 */
        !            43: #define        SNR_TRBA1       0x1a    /* Temporary Receive Buffer Address 1 */
        !            44: #define        SNR_TBWC0       0x1b    /* Temporary Buffer Word Count 0 */
        !            45: #define        SNR_TBWC1       0x1c    /* Temporary Buffer Word Count 1 */
        !            46: #define        SNR_ADDR0       0x1d    /* Address Generator 0 */
        !            47: #define        SNR_ADDR1       0x1e    /* Address Generator 1 */
        !            48: #define        SNR_LLFA        0x1f    /* Last Link Field Address */
        !            49: #define        SNR_TTDA        0x20    /* Temp Transmit Descriptor Address */
        !            50: #define        SNR_CEP         0x21    /* CAM Entry Pointer */
        !            51: #define        SNR_CAP2        0x22    /* CAM Address Port 2 */
        !            52: #define        SNR_CAP1        0x23    /* CAM Address Port 1 */
        !            53: #define        SNR_CAP0        0x24    /* CAM Address Port 0 */
        !            54: #define        SNR_CE          0x25    /* CAM Enable */
        !            55: #define        SNR_CDP         0x26    /* CAM Descriptor Pointer */
        !            56: #define        SNR_CDC         0x27    /* CAM Descriptor Count */
        !            57: #define        SNR_SR          0x28    /* Silicon Revision */
        !            58: #define        SNR_WT0         0x29    /* Watchdog Timer 0 */
        !            59: #define        SNR_WT1         0x2a    /* Watchdog Timer 1 */
        !            60: #define        SNR_RSC         0x2b    /* Receive Sequence Counter */
        !            61: #define        SNR_CRCT        0x2c    /* CRC Error Tally */
        !            62: #define        SNR_FAET        0x2d    /* FAE Tally */
        !            63: #define        SNR_MPT         0x2e    /* Missed Packet Tally */
        !            64: #define        SNR_MDT         0x2f    /* Maximum Deferral Timer */
        !            65: #define        SNR_RTC         0x30    /* Receive Test Control */
        !            66: #define        SNR_TTC         0x31    /* Transmit Test Control */
        !            67: #define        SNR_DTC         0x32    /* DMA Test Control */
        !            68: #define        SNR_CC0         0x33    /* CAM Comparison 0 */
        !            69: #define        SNR_CC1         0x34    /* CAM Comparison 1 */
        !            70: #define        SNR_CC2         0x35    /* CAM Comparison 2 */
        !            71: #define        SNR_CM          0x36    /* CAM Match */
        !            72: #define        SNR_RES1        0x37    /* reserved */
        !            73: #define        SNR_RES2        0x38    /* reserved */
        !            74: #define        SNR_RBC         0x39    /* Receiver Byte Count */
        !            75: #define        SNR_RES3        0x3a    /* reserved */
        !            76: #define        SNR_TBO         0x3b    /* Transmitter Backoff Counter */
        !            77: #define        SNR_TRC         0x3c    /* Transmitter Random Counter */
        !            78: #define        SNR_TBM         0x3d    /* Transmitter Backoff Mask */
        !            79: #define        SNR_RES4        0x3e    /* Reserved */
        !            80: #define        SNR_DCR2        0x3f    /* Data Configuration 2 (AVF) */
        !            81:
        !            82: #define        SN_NREGS        0x40
        !            83:
        !            84: /*
        !            85:  * Register Interpretations
        !            86:  */
        !            87:
        !            88: /*
        !            89:  * The command register is used for issuing commands to the SONIC.
        !            90:  * With the exception of CR_RST, the bit is reset when the operation
        !            91:  * completes.
        !            92:  */
        !            93: #define CR_LCAM         0x0200  /* load CAM with descriptor at s_cdp */
        !            94: #define CR_RRRA         0x0100  /* read next RRA descriptor at s_rrp */
        !            95: #define CR_RST          0x0080  /* software reset */
        !            96: #define CR_ST           0x0020  /* start timer */
        !            97: #define CR_STP          0x0010  /* stop timer */
        !            98: #define CR_RXEN         0x0008  /* receiver enable */
        !            99: #define CR_RXDIS        0x0004  /* receiver disable */
        !           100: #define CR_TXP          0x0002  /* transmit packets */
        !           101: #define CR_HTX          0x0001  /* halt transmission */
        !           102:
        !           103: /*
        !           104:  * The data configuration register establishes the SONIC's bus cycle
        !           105:  * operation.  This register can only be accessed when the SONIC is in
        !           106:  * reset mode (s_cr.CR_RST is set.)
        !           107:  */
        !           108: #define DCR_EXBUS       0x8000  /* extended bus mode (AVF) */
        !           109: #define DCR_LBR         0x2000  /* latched bus retry */
        !           110: #define DCR_PO1         0x1000  /* programmable output 1 */
        !           111: #define DCR_PO0         0x0800  /* programmable output 0 */
        !           112: #define DCR_STERM       0x0400  /* synchronous termination */
        !           113: #define DCR_USR1        0x0200  /* reflects USR1 input pin */
        !           114: #define DCR_USR0        0x0100  /* reflects USR0 input pin */
        !           115: #define DCR_WC1         0x0080  /* wait state control 1 */
        !           116: #define DCR_WC0         0x0040  /* wait state control 0 */
        !           117: #define DCR_DW          0x0020  /* data width select */
        !           118: #define DCR_BMS         0x0010  /* DMA block mode select */
        !           119: #define DCR_RFT1        0x0008  /* receive FIFO threshold control 1 */
        !           120: #define DCR_RFT0        0x0004  /* receive FIFO threshold control 0 */
        !           121: #define DCR_TFT1        0x0002  /* transmit FIFO threshold control 1 */
        !           122: #define DCR_TFT0        0x0001  /* transmit FIFO threshold control 0 */
        !           123:
        !           124: /* data configuration register aliases */
        !           125: #define DCR_SYNC        DCR_STERM /* synchronous (memory cycle 2 clocks) */
        !           126: #define DCR_ASYNC       0         /* asynchronous (memory cycle 3 clocks) */
        !           127:
        !           128: #define DCR_WAIT0       0                 /* 0 wait states added */
        !           129: #define DCR_WAIT1       DCR_WC0           /* 1 wait state added */
        !           130: #define DCR_WAIT2       DCR_WC1           /* 2 wait states added */
        !           131: #define DCR_WAIT3       (DCR_WC1|DCR_WC0) /* 3 wait states added */
        !           132:
        !           133: #define DCR_DW16        0       /* use 16-bit DMA accesses */
        !           134: #define DCR_DW32        DCR_DW  /* use 32-bit DMA accesses */
        !           135:
        !           136: #define DCR_DMAEF       0       /* DMA until TX/RX FIFO has emptied/filled */
        !           137: #define DCR_DMABLOCK    DCR_BMS /* DMA until RX/TX threshold crossed */
        !           138:
        !           139: #define DCR_RFT4        0               /* receive threshold 4 bytes */
        !           140: #define DCR_RFT8        DCR_RFT0        /* receive threshold 8 bytes */
        !           141: #define DCR_RFT16       DCR_RFT1        /* receive threshold 16 bytes */
        !           142: #define DCR_RFT24       (DCR_RFT1|DCR_RFT0) /* receive threshold 24 bytes */
        !           143:
        !           144: #define DCR_TFT8        0               /* transmit threshold 8 bytes */
        !           145: #define DCR_TFT16       DCR_TFT0        /* transmit threshold 16 bytes */
        !           146: #define DCR_TFT24       DCR_TFT1        /* transmit threshold 24 bytes */
        !           147: #define DCR_TFT28       (DCR_TFT1|DCR_TFT0) /* transmit threshold 28 bytes */
        !           148:
        !           149: /*
        !           150:  * The receive control register is used to filter incoming packets and
        !           151:  * provides status information on packets received.
        !           152:  * The contents of the register are copied into the RXpkt.status field
        !           153:  * when a packet is received. RCR_MC - RCR_PRX are then reset.
        !           154:  */
        !           155: #define RCR_ERR         0x8000  /* accept packets with CRC errors */
        !           156: #define RCR_RNT         0x4000  /* accept runt (length < 64) packets */
        !           157: #define RCR_BRD         0x2000  /* accept broadcast packets */
        !           158: #define RCR_PRO         0x1000  /* accept all physical address packets */
        !           159: #define RCR_AMC         0x0800  /* accept all multicast packets */
        !           160: #define RCR_LB1         0x0400  /* loopback control 1 */
        !           161: #define RCR_LB0         0x0200  /* loopback control 0 */
        !           162: #define RCR_MC          0x0100  /* multicast packet received */
        !           163: #define RCR_BC          0x0080  /* broadcast packet received */
        !           164: #define RCR_LPKT        0x0040  /* last packet in RBA (RBWC < EOBC) */
        !           165: #define RCR_CRS         0x0020  /* carrier sense activity */
        !           166: #define RCR_COL         0x0010  /* collision activity */
        !           167: #define RCR_CRC         0x0008  /* CRC error */
        !           168: #define RCR_FAE         0x0004  /* frame alignment error */
        !           169: #define RCR_LBK         0x0002  /* loopback packet received */
        !           170: #define RCR_PRX         0x0001  /* packet received without errors */
        !           171:
        !           172: /* receiver control register aliases */
        !           173: /* the loopback control bits provide the following options */
        !           174: #define RCR_LBNONE      0               /* no loopback - normal operation */
        !           175: #define RCR_LBMAC       RCR_LB0         /* MAC loopback */
        !           176: #define RCR_LBENDEC     RCR_LB1         /* ENDEC loopback */
        !           177: #define RCR_LBTRANS     (RCR_LB1|RCR_LB0) /* transceiver loopback */
        !           178:
        !           179: /*
        !           180:  * The transmit control register controls the SONIC's transmit operations.
        !           181:  * TCR_PINT - TCR_EXDIS are loaded from the TXpkt.config field at the
        !           182:  * start of transmission.  TCR_EXD-TCR_PTX are cleared at the beginning
        !           183:  * of transmission and updated when the transmission is completed.
        !           184:  */
        !           185: #define TCR_PINT        0x8000  /* interrupt when transmission starts */
        !           186: #define TCR_POWC        0x4000  /* program out of window collision timer */
        !           187: #define TCR_CRCI        0x2000  /* transmit packet without 4 byte FCS */
        !           188: #define TCR_EXDIS       0x1000  /* disable excessive deferral timer */
        !           189: #define TCR_EXD         0x0400  /* excessive deferrals occurred (>3.2ms) */
        !           190: #define TCR_DEF         0x0200  /* deferred transmissions occurred */
        !           191: #define TCR_NCRS        0x0100  /* carrier not present during transmission */
        !           192: #define TCR_CRSL        0x0080  /* carrier lost during transmission */
        !           193: #define TCR_EXC         0x0040  /* excessive collisions (>16) detected */
        !           194: #define TCR_OWC         0x0020  /* out of window (bad) collision occurred */
        !           195: #define TCR_PMB         0x0008  /* packet monitored bad - the tansmitted
        !           196:                                  * packet had a bad source address or CRC */
        !           197: #define TCR_FU          0x0004  /* FIFO underrun (memory access failed) */
        !           198: #define TCR_BCM         0x0002  /* byte count mismatch (TXpkt.pkt_size
        !           199:                                  * != sum(TXpkt.frag_size) */
        !           200: #define TCR_PTX         0x0001  /* packet transmitted without errors */
        !           201: #define        TCR_NC          0xf000  /* after transmission, # of colls */
        !           202:
        !           203: /* transmit control register aliases */
        !           204: #define TCR_OWCSFD      0        /* start after start of frame delimiter */
        !           205: #define TCR_OWCPRE      TCR_POWC /* start after first bit of preamble */
        !           206:
        !           207:
        !           208: /*
        !           209:  * The interrupt mask register masks the interrupts that
        !           210:  * are generated from the interrupt status register.
        !           211:  * All reserved bits should be written with 0.
        !           212:  */
        !           213: #define IMR_BREN        0x4000  /* bus retry occurred enable */
        !           214: #define IMR_HBLEN       0x2000  /* heartbeat lost enable */
        !           215: #define IMR_LCDEN       0x1000  /* load CAM done interrupt enable */
        !           216: #define IMR_PINTEN      0x0800  /* programmable interrupt enable */
        !           217: #define IMR_PRXEN       0x0400  /* packet received enable */
        !           218: #define IMR_PTXEN       0x0200  /* packet transmitted enable */
        !           219: #define IMR_TXEREN      0x0100  /* transmit error enable */
        !           220: #define IMR_TCEN        0x0080  /* timer complete enable */
        !           221: #define IMR_RDEEN       0x0040  /* receive descriptors exhausted enable */
        !           222: #define IMR_RBEEN       0x0020  /* receive buffers exhausted enable */
        !           223: #define IMR_RBAEEN      0x0010  /* receive buffer area exceeded enable */
        !           224: #define IMR_CRCEN       0x0008  /* CRC tally counter rollover enable */
        !           225: #define IMR_FAEEN       0x0004  /* FAE tally counter rollover enable */
        !           226: #define IMR_MPEN        0x0002  /* MP tally counter rollover enable */
        !           227: #define IMR_RFOEN       0x0001  /* receive FIFO overrun enable */
        !           228:
        !           229:
        !           230: /*
        !           231:  * The interrupt status register indicates the source of an interrupt when
        !           232:  * the INT pin goes active.  The interrupt is acknowledged by writing
        !           233:  * the appropriate bit(s) in this register.
        !           234:  */
        !           235: #define ISR_ALL         0x7fff  /* all interrupts */
        !           236: #define ISR_BR          0x4000  /* bus retry occurred */
        !           237: #define ISR_HBL         0x2000  /* CD heartbeat lost */
        !           238: #define ISR_LCD         0x1000  /* load CAM command has completed */
        !           239: #define ISR_PINT        0x0800  /* programmed interrupt from TXpkt.config */
        !           240: #define ISR_PKTRX       0x0400  /* packet received */
        !           241: #define ISR_TXDN        0x0200  /* no remaining packets to be transmitted */
        !           242: #define ISR_TXER        0x0100  /* packet transmission caused error */
        !           243: #define ISR_TC          0x0080  /* timer complete */
        !           244: #define ISR_RDE         0x0040  /* receive descriptors exhausted */
        !           245: #define ISR_RBE         0x0020  /* receive buffers exhausted */
        !           246: #define ISR_RBAE        0x0010  /* receive buffer area exceeded */
        !           247: #define ISR_CRC         0x0008  /* CRC tally counter rollover */
        !           248: #define ISR_FAE         0x0004  /* FAE tally counter rollover */
        !           249: #define ISR_MP          0x0002  /* MP tally counter rollover */
        !           250: #define ISR_RFO         0x0001  /* receive FIFO overrun */
        !           251:
        !           252: /*
        !           253:  * The second data configuration register allows additional user defined
        !           254:  * pins to be controlled.  These bits are only available if s_dcr.DCR_EXBUS
        !           255:  * is set.
        !           256:  */
        !           257: #define DCR2_EXPO3      0x8000  /* EXUSR3 output */
        !           258: #define DCR2_EXPO2      0x4000  /* EXUSR2 output */
        !           259: #define DCR2_EXPO1      0x2000  /* EXUSR1 output */
        !           260: #define DCR2_EXPO0      0x1000  /* EXUSR0 output */
        !           261: #define DCR2_PHL        0x0010  /* extend HOLD signal by 1/2 clock */
        !           262: #define DCR2_LRDY       0x0008  /* set latched ready mode */
        !           263: #define DCR2_PCM        0x0004  /* packet compress on match */
        !           264: #define DCR2_PCNM       0x0002  /* packet compress on mismatch */
        !           265: #define DCR2_RJM        0x0001  /* reject on match */

CVSweb