Home | History | Annotate | Line # | Download | only in sbus
qereg.h revision 1.2
      1  1.2  pk /*	$NetBSD: qereg.h,v 1.2 1999/04/20 20:24:39 pk Exp $	*/
      2  1.1  pk 
      3  1.1  pk /*-
      4  1.1  pk  * Copyright (c) 1999 The NetBSD Foundation, Inc.
      5  1.1  pk  * All rights reserved.
      6  1.1  pk  *
      7  1.1  pk  * This code is derived from software contributed to The NetBSD Foundation
      8  1.1  pk  * by Paul Kranenburg.
      9  1.1  pk  *
     10  1.1  pk  * Redistribution and use in source and binary forms, with or without
     11  1.1  pk  * modification, are permitted provided that the following conditions
     12  1.1  pk  * are met:
     13  1.1  pk  * 1. Redistributions of source code must retain the above copyright
     14  1.1  pk  *    notice, this list of conditions and the following disclaimer.
     15  1.1  pk  * 2. Redistributions in binary form must reproduce the above copyright
     16  1.1  pk  *    notice, this list of conditions and the following disclaimer in the
     17  1.1  pk  *    documentation and/or other materials provided with the distribution.
     18  1.1  pk  * 3. All advertising materials mentioning features or use of this software
     19  1.1  pk  *    must display the following acknowledgement:
     20  1.1  pk  *        This product includes software developed by the NetBSD
     21  1.1  pk  *        Foundation, Inc. and its contributors.
     22  1.1  pk  * 4. Neither the name of The NetBSD Foundation nor the names of its
     23  1.1  pk  *    contributors may be used to endorse or promote products derived
     24  1.1  pk  *    from this software without specific prior written permission.
     25  1.1  pk  *
     26  1.1  pk  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     27  1.1  pk  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     28  1.1  pk  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     29  1.1  pk  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     30  1.1  pk  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     31  1.1  pk  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     32  1.1  pk  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     33  1.1  pk  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     34  1.1  pk  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     35  1.1  pk  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     36  1.1  pk  * POSSIBILITY OF SUCH DAMAGE.
     37  1.1  pk  */
     38  1.1  pk 
     39  1.1  pk /*
     40  1.1  pk  * Copyright (c) 1998 Jason L. Wright.
     41  1.1  pk  * All rights reserved.
     42  1.1  pk  *
     43  1.1  pk  * Redistribution and use in source and binary forms, with or without
     44  1.1  pk  * modification, are permitted provided that the following conditions
     45  1.1  pk  * are met:
     46  1.1  pk  * 1. Redistributions of source code must retain the above copyright
     47  1.1  pk  *    notice, this list of conditions and the following disclaimer.
     48  1.1  pk  * 2. Redistributions in binary form must reproduce the above copyright
     49  1.1  pk  *    notice, this list of conditions and the following disclaimer in the
     50  1.1  pk  *    documentation and/or other materials provided with the distribution.
     51  1.1  pk  * 3. The name of the authors may not be used to endorse or promote products
     52  1.1  pk  *    derived from this software without specific prior written permission.
     53  1.1  pk  *
     54  1.1  pk  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
     55  1.1  pk  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     56  1.1  pk  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     57  1.1  pk  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
     58  1.1  pk  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     59  1.1  pk  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     60  1.1  pk  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     61  1.1  pk  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     62  1.1  pk  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     63  1.1  pk  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     64  1.1  pk  */
     65  1.1  pk 
     66  1.1  pk /*
     67  1.1  pk  * QE Channel registers
     68  1.1  pk  *-
     69  1.1  pk struct qe_cregs {
     70  1.1  pk 	u_int32_t ctrl;		// control
     71  1.1  pk 	u_int32_t stat;		// status
     72  1.1  pk 	u_int32_t rxds;		// rx descriptor ring ptr
     73  1.1  pk 	u_int32_t txds;		// tx descriptor ring ptr
     74  1.1  pk 	u_int32_t rimask;	// rx interrupt mask
     75  1.1  pk 	u_int32_t timask;	// tx interrupt mask
     76  1.1  pk 	u_int32_t qmask;	// qec error interrupt mask
     77  1.1  pk 	u_int32_t mmask;	// mace error interrupt mask
     78  1.1  pk 	u_int32_t rxwbufptr;	// local memory rx write ptr
     79  1.1  pk 	u_int32_t rxrbufptr;	// local memory rx read ptr
     80  1.1  pk 	u_int32_t txwbufptr;	// local memory tx write ptr
     81  1.1  pk 	u_int32_t txrbufptr;	// local memory tx read ptr
     82  1.1  pk 	u_int32_t ccnt;		// collision counter
     83  1.1  pk 	u_int32_t pipg;		// inter-frame gap
     84  1.1  pk };
     85  1.1  pk  * register indices: */
     86  1.1  pk #define QE_CRI_CTRL	(0*4)
     87  1.1  pk #define QE_CRI_STAT	(1*4)
     88  1.1  pk #define QE_CRI_RXDS	(2*4)
     89  1.1  pk #define QE_CRI_TXDS	(3*4)
     90  1.1  pk #define QE_CRI_RIMASK	(4*4)
     91  1.1  pk #define QE_CRI_TIMASK	(5*4)
     92  1.1  pk #define QE_CRI_QMASK	(6*4)
     93  1.1  pk #define QE_CRI_MMASK	(7*4)
     94  1.1  pk #define QE_CRI_RXWBUF	(8*4)
     95  1.1  pk #define QE_CRI_RXRBUF	(9*4)
     96  1.1  pk #define QE_CRI_TXWBUF	(10*4)
     97  1.1  pk #define QE_CRI_TXRBUF	(11*4)
     98  1.1  pk #define QE_CRI_CCNT	(12*4)
     99  1.1  pk #define QE_CRI_PIPG	(13*4)
    100  1.1  pk 
    101  1.1  pk /* qe_cregs.ctrl: control. */
    102  1.1  pk #define	QE_CR_CTRL_RXOFF	0x00000004	/* disable receiver */
    103  1.1  pk #define	QE_CR_CTRL_RESET	0x00000002	/* reset this channel */
    104  1.1  pk #define	QE_CR_CTRL_TWAKEUP	0x00000001	/* tx dma wakeup */
    105  1.1  pk 
    106  1.1  pk /* qe_cregs.stat: status. */
    107  1.1  pk #define	QE_CR_STAT_EDEFER	0x10000000	/* excessive defers */
    108  1.1  pk #define	QE_CR_STAT_CLOSS	0x08000000	/* loss of carrier */
    109  1.1  pk #define	QE_CR_STAT_ERETRIES	0x04000000	/* >16 retries */
    110  1.1  pk #define	QE_CR_STAT_LCOLL	0x02000000	/* late tx collision */
    111  1.1  pk #define	QE_CR_STAT_FUFLOW	0x01000000	/* fifo underflow */
    112  1.1  pk #define	QE_CR_STAT_JERROR	0x00800000	/* jabber error */
    113  1.1  pk #define	QE_CR_STAT_BERROR	0x00400000	/* babble error */
    114  1.1  pk #define	QE_CR_STAT_TXIRQ	0x00200000	/* tx interrupt */
    115  1.1  pk #define	QE_CR_STAT_TCCOFLOW	0x00100000	/* tx collision cntr expired */
    116  1.1  pk #define	QE_CR_STAT_TXDERROR	0x00080000	/* tx descriptor is bad */
    117  1.1  pk #define	QE_CR_STAT_TXLERR	0x00040000	/* tx late error */
    118  1.1  pk #define	QE_CR_STAT_TXPERR	0x00020000	/* tx parity error */
    119  1.1  pk #define	QE_CR_STAT_TXSERR	0x00010000	/* tx sbus error ack */
    120  1.1  pk #define	QE_CR_STAT_RCCOFLOW	0x00001000	/* rx collision cntr expired */
    121  1.1  pk #define	QE_CR_STAT_RUOFLOW	0x00000800	/* rx runt counter expired */
    122  1.1  pk #define	QE_CR_STAT_MCOFLOW	0x00000400	/* rx missed counter expired */
    123  1.1  pk #define	QE_CR_STAT_RXFOFLOW	0x00000200	/* rx fifo over flow */
    124  1.1  pk #define	QE_CR_STAT_RLCOLL	0x00000100	/* rx late collision */
    125  1.1  pk #define	QE_CR_STAT_FCOFLOW	0x00000080	/* rx frame counter expired */
    126  1.1  pk #define	QE_CR_STAT_CECOFLOW	0x00000040	/* rx crc error cntr expired */
    127  1.1  pk #define	QE_CR_STAT_RXIRQ	0x00000020	/* rx interrupt */
    128  1.1  pk #define	QE_CR_STAT_RXDROP	0x00000010	/* rx dropped packet */
    129  1.1  pk #define	QE_CR_STAT_RXSMALL	0x00000008	/* rx buffer too small */
    130  1.1  pk #define	QE_CR_STAT_RXLERR	0x00000004	/* rx late error */
    131  1.1  pk #define	QE_CR_STAT_RXPERR	0x00000002	/* rx parity error */
    132  1.1  pk #define	QE_CR_STAT_RXSERR	0x00000001	/* rx sbus error ack */
    133  1.1  pk #define QE_CR_STAT_BITS		"\177\020"				\
    134  1.1  pk 			"b\0RXSERR\0b\1RXPERR\0b\2RXLERR\0"		\
    135  1.1  pk 			"b\3RXSMALL\0b\4RXDROP\0b\5RXIRQ\0"		\
    136  1.1  pk 			"b\6CECOFLOW\0b\7FCOFLOW\0b\10RLCOLL\0"		\
    137  1.1  pk 			"b\11RXFOFLOW\0b\12MCOFLOW\0b\13RUOFLOW\0"	\
    138  1.2  pk 			"b\14RCCOFLOW\0b\20TXSERR\0b\21TXPERR\0"	\
    139  1.2  pk 			"b\22TXLERR\0b\23TXDERROR\0b\24TCCOFLOW\0"	\
    140  1.2  pk 			"b\25TXIRQ\0b\26BERROR\0b\27JERROR\0"		\
    141  1.2  pk 			"b\30FUFLOW\0b\31LCOLL\0b\32ERETRIES\0"		\
    142  1.2  pk 			"b\33CLOSS\0b\32EDEFER\0\0"
    143  1.1  pk 
    144  1.1  pk /*
    145  1.1  pk  * Errors: all status bits except for TX/RX IRQ
    146  1.1  pk  */
    147  1.1  pk #define	QE_CR_STAT_ALLERRORS	\
    148  1.1  pk 	( QE_CR_STAT_EDEFER   | QE_CR_STAT_CLOSS    | QE_CR_STAT_ERETRIES \
    149  1.1  pk 	| QE_CR_STAT_LCOLL    | QE_CR_STAT_FUFLOW   | QE_CR_STAT_JERROR \
    150  1.1  pk 	| QE_CR_STAT_BERROR   | QE_CR_STAT_TCCOFLOW | QE_CR_STAT_TXDERROR \
    151  1.1  pk 	| QE_CR_STAT_TXLERR   | QE_CR_STAT_TXPERR   | QE_CR_STAT_TXSERR \
    152  1.1  pk 	| QE_CR_STAT_RCCOFLOW | QE_CR_STAT_RUOFLOW  | QE_CR_STAT_MCOFLOW \
    153  1.1  pk 	| QE_CR_STAT_RXFOFLOW | QE_CR_STAT_RLCOLL   | QE_CR_STAT_FCOFLOW \
    154  1.1  pk 	| QE_CR_STAT_CECOFLOW | QE_CR_STAT_RXDROP   | QE_CR_STAT_RXSMALL \
    155  1.1  pk 	| QE_CR_STAT_RXLERR   | QE_CR_STAT_RXPERR   | QE_CR_STAT_RXSERR)
    156  1.1  pk 
    157  1.1  pk /* qe_cregs.qmask: qec error interrupt mask. */
    158  1.1  pk #define	QE_CR_QMASK_COFLOW	0x00100000	/* collision cntr overflow */
    159  1.1  pk #define	QE_CR_QMASK_TXDERROR	0x00080000	/* tx descriptor error */
    160  1.1  pk #define	QE_CR_QMASK_TXLERR	0x00040000	/* tx late error */
    161  1.1  pk #define	QE_CR_QMASK_TXPERR	0x00020000	/* tx parity error */
    162  1.1  pk #define	QE_CR_QMASK_TXSERR	0x00010000	/* tx sbus error ack */
    163  1.1  pk #define	QE_CR_QMASK_RXDROP	0x00000010	/* rx packet dropped */
    164  1.1  pk #define	QE_CR_QMASK_RXSMALL	0x00000008	/* rx buffer too small */
    165  1.1  pk #define	QE_CR_QMASK_RXLERR	0x00000004	/* rx late error */
    166  1.1  pk #define	QE_CR_QMASK_RXPERR	0x00000002	/* rx parity error */
    167  1.1  pk #define	QE_CR_QMASK_RXSERR	0x00000001	/* rx sbus error ack */
    168  1.1  pk 
    169  1.1  pk /* qe_cregs.mmask: MACE error interrupt mask. */
    170  1.1  pk #define	QE_CR_MMASK_EDEFER	0x10000000	/* excess defer */
    171  1.1  pk #define	QE_CR_MMASK_CLOSS	0x08000000	/* carrier loss */
    172  1.1  pk #define	QE_CR_MMASK_ERETRY	0x04000000	/* excess retry */
    173  1.1  pk #define	QE_CR_MMASK_LCOLL	0x02000000	/* late collision error */
    174  1.1  pk #define	QE_CR_MMASK_UFLOW	0x01000000	/* underflow */
    175  1.1  pk #define	QE_CR_MMASK_JABBER	0x00800000	/* jabber error */
    176  1.1  pk #define	QE_CR_MMASK_BABBLE	0x00400000	/* babble error */
    177  1.1  pk #define	QE_CR_MMASK_OFLOW	0x00000800	/* overflow */
    178  1.1  pk #define	QE_CR_MMASK_RXCOLL	0x00000400	/* rx coll-cntr overflow */
    179  1.1  pk #define	QE_CR_MMASK_RPKT	0x00000200	/* runt pkt overflow */
    180  1.1  pk #define	QE_CR_MMASK_MPKT	0x00000100	/* missed pkt overflow */
    181  1.1  pk 
    182  1.1  pk /* qe_cregs.pipg: inter-frame gap. */
    183  1.1  pk #define	QE_CR_PIPG_TENAB	0x00000020	/* enable throttle */
    184  1.1  pk #define	QE_CR_PIPG_MMODE	0x00000010	/* manual mode */
    185  1.1  pk #define	QE_CR_PIPG_WMASK	0x0000000f	/* sbus wait mask */
    186  1.1  pk 
    187  1.1  pk /*
    188  1.1  pk  * MACE registers
    189  1.1  pk  *-
    190  1.1  pk struct qe_mregs {
    191  1.1  pk 	u_int8_t rcvfifo;	[0]	// receive fifo
    192  1.1  pk 	u_int8_t xmtfifo;	[1]	// transmit fifo
    193  1.1  pk 	u_int8_t xmtfc;		[2]	// transmit frame control
    194  1.1  pk 	u_int8_t xmtfs;		[3]	// transmit frame status
    195  1.1  pk 	u_int8_t xmtrc;		[4]	// tx retry count
    196  1.1  pk 	u_int8_t rcvfc;		[5]	// receive frame control
    197  1.1  pk 	u_int8_t rcvfs;		[6]	// receive frame status
    198  1.1  pk 	u_int8_t fifofc;	[7]	// fifo frame count
    199  1.1  pk 	u_int8_t ir;		[8]	// interrupt register
    200  1.1  pk 	u_int8_t imr;		[9]	// interrupt mask register
    201  1.1  pk 	u_int8_t pr;		[10]	// poll register
    202  1.1  pk 	u_int8_t biucc;		[11]	// biu config control
    203  1.1  pk 	u_int8_t fifocc;	[12]	// fifo config control
    204  1.1  pk 	u_int8_t maccc;		[13]	// mac config control
    205  1.1  pk 	u_int8_t plscc;		[14]	// pls config control
    206  1.1  pk 	u_int8_t phycc;		[15]	// phy config control
    207  1.1  pk 	u_int8_t chipid1;	[16]	// chipid, low byte
    208  1.1  pk 	u_int8_t chipid2;	[17]	// chipid, high byte
    209  1.1  pk 	u_int8_t iac;		[18]	// internal address config
    210  1.1  pk 	u_int8_t _reserved0;	[19]	// reserved
    211  1.1  pk 	u_int8_t ladrf;		[20]	// logical address filter
    212  1.1  pk 	u_int8_t padr;		[21]	// physical address
    213  1.1  pk 	u_int8_t _reserved1;	[22]	// reserved
    214  1.1  pk 	u_int8_t _reserved2;	[23]	// reserved
    215  1.1  pk 	u_int8_t mpc;		[24]	// missed packet count
    216  1.1  pk 	u_int8_t _reserved3;	[25]	// reserved
    217  1.1  pk 	u_int8_t rntpc;		[26]	// runt packet count
    218  1.1  pk 	u_int8_t rcvcc;		[27]	// receive collision count
    219  1.1  pk 	u_int8_t _reserved4;	[28]	// reserved
    220  1.1  pk 	u_int8_t utr;		[29]	// user test register
    221  1.1  pk 	u_int8_t rtr1;		[30]	// reserved test register 1
    222  1.1  pk 	u_int8_t rtr2;		[31]	// reserved test register 2
    223  1.1  pk };
    224  1.1  pk  * register indices: */
    225  1.1  pk #define QE_MRI_RCVFIFO	0	// receive fifo
    226  1.1  pk #define QE_MRI_XMTFIFO	1	// transmit fifo
    227  1.1  pk #define QE_MRI_XMTFC	2	// transmit frame control
    228  1.1  pk #define QE_MRI_XMTFS	3	// transmit frame status
    229  1.1  pk #define QE_MRI_XMTRC	4	// tx retry count
    230  1.1  pk #define QE_MRI_RCVFC	5	// receive frame control
    231  1.1  pk #define QE_MRI_RCVFS	6	// receive frame status
    232  1.1  pk #define QE_MRI_FIFOFC	7	// fifo frame count
    233  1.1  pk #define QE_MRI_IR	8	// interrupt register
    234  1.1  pk #define QE_MRI_IMR	9	// interrupt mask register
    235  1.1  pk #define QE_MRI_PR	10	// poll register
    236  1.1  pk #define QE_MRI_BIUCC	11	// biu config control
    237  1.1  pk #define QE_MRI_FIFOCC	12	// fifo config control
    238  1.1  pk #define QE_MRI_MACCC	13	// mac config control
    239  1.1  pk #define QE_MRI_PLSCC	14	// pls config control
    240  1.1  pk #define QE_MRI_PHYCC	15	// phy config control
    241  1.1  pk #define QE_MRI_CHIPID1	16	// chipid, low byte
    242  1.1  pk #define QE_MRI_CHIPID2	17	// chipid, high byte
    243  1.1  pk #define QE_MRI_IAC	18	// internal address config
    244  1.1  pk #define QE_MRI_LADRF	20	// logical address filter
    245  1.1  pk #define QE_MRI_PADR	21	// physical address
    246  1.1  pk #define QE_MRI_MPC	24	// missed packet count
    247  1.1  pk #define QE_MRI_RNTPC	26	// runt packet count
    248  1.1  pk #define QE_MRI_RCVCC	27	// receive collision count
    249  1.1  pk #define QE_MRI_UTR	29	// user test register
    250  1.1  pk #define QE_MRI_RTR1	30	// reserved test register 1
    251  1.1  pk #define QE_MRI_RTR2	31	// reserved test register 2
    252  1.1  pk 
    253  1.1  pk /* qe_mregs.xmtfc: transmit frame control. */
    254  1.1  pk #define	QE_MR_XMTFC_DRETRY	0x80		/* disable retries */
    255  1.1  pk #define	QE_MR_XMTFC_DXMTFCS	0x08		/* disable tx fcs */
    256  1.1  pk #define	QE_MR_XMTFC_APADXMT	0x01		/* enable auto padding */
    257  1.1  pk 
    258  1.1  pk /* qe_mregs.xmtfs: transmit frame status. */
    259  1.1  pk #define	QE_MR_XMTFS_XMTSV	0x80		/* tx valid */
    260  1.1  pk #define	QE_MR_XMTFS_UFLO	0x40		/* tx underflow */
    261  1.1  pk #define	QE_MR_XMTFS_LCOL	0x20		/* tx late collision */
    262  1.1  pk #define	QE_MR_XMTFS_MORE	0x10		/* tx > 1 retries */
    263  1.1  pk #define	QE_MR_XMTFS_ONE		0x08		/* tx 1 retry */
    264  1.1  pk #define	QE_MR_XMTFS_DEFER	0x04		/* tx pkt deferred */
    265  1.1  pk #define	QE_MR_XMTFS_LCAR	0x02		/* tx carrier lost */
    266  1.1  pk #define	QE_MR_XMTFS_RTRY	0x01		/* tx retry error */
    267  1.1  pk 
    268  1.1  pk /* qe_mregs.xmtrc: transmit retry count. */
    269  1.1  pk #define	QE_MR_XMTRC_EXDEF	0x80		/* tx excess defers */
    270  1.1  pk #define	QE_MR_XMTRC_XMTRC	0x0f		/* tx retry count mask */
    271  1.1  pk 
    272  1.1  pk /* qe_mregs.rcvfc: receive frame control. */
    273  1.1  pk #define	QE_MR_RCVFC_LLRCV	0x08		/* rx low latency */
    274  1.1  pk #define	QE_MR_RCVFC_MR		0x04		/* rx addr match/reject */
    275  1.1  pk #define	QE_MR_RCVFC_ASTRPRCV	0x01		/* rx auto strip */
    276  1.1  pk 
    277  1.1  pk /* qe_mregs.rcvfs: receive frame status. */
    278  1.1  pk #define	QE_MR_RCVFS_OFLO	0x80		/* rx overflow */
    279  1.1  pk #define	QE_MR_RCVFS_CLSN	0x40		/* rx late collision */
    280  1.1  pk #define	QE_MR_RCVFS_FRAM	0x20		/* rx framing error */
    281  1.1  pk #define	QE_MR_RCVFS_FCS		0x10		/* rx fcs error */
    282  1.1  pk #define	QE_MR_RCVFS_RCVCNT	0x0f		/* rx msg byte count mask */
    283  1.1  pk 
    284  1.1  pk /* qe_mregs.fifofc: fifo frame count. */
    285  1.1  pk #define	QE_MR_FIFOFC_RCVFC	0xf0		/* rx fifo frame count */
    286  1.1  pk #define	QE_MR_FIFOFC_XMTFC	0x0f		/* tx fifo frame count */
    287  1.1  pk 
    288  1.1  pk /* qe_mregs.ir: interrupt register. */
    289  1.1  pk #define	QE_MR_IR_JAB		0x80		/* jabber error */
    290  1.1  pk #define	QE_MR_IR_BABL		0x40		/* babble error */
    291  1.1  pk #define	QE_MR_IR_CERR		0x20		/* collision error */
    292  1.1  pk #define	QE_MR_IR_RCVCCO		0x10		/* collision cnt overflow */
    293  1.1  pk #define	QE_MR_IR_RNTPCO		0x08		/* runt pkt cnt overflow */
    294  1.1  pk #define	QE_MR_IR_MPCO		0x04		/* miss pkt cnt overflow */
    295  1.1  pk #define	QE_MR_IR_RCVINT		0x02		/* packet received */
    296  1.1  pk #define	QE_MR_IR_XMTINT		0x01		/* packet transmitted */
    297  1.1  pk 
    298  1.1  pk /* qe_mregs.imr: interrupt mask register. */
    299  1.1  pk #define	QE_MR_IMR_JABM		0x80		/* jabber errors */
    300  1.1  pk #define	QE_MR_IMR_BABLM		0x40		/* babble errors */
    301  1.1  pk #define	QE_MR_IMR_CERRM		0x20		/* collision errors */
    302  1.1  pk #define	QE_MR_IMR_RCVCCOM	0x10		/* rx collision count oflow */
    303  1.1  pk #define	QE_MR_IMR_RNTPCOM	0x08		/* runt pkt cnt ovrflw */
    304  1.1  pk #define	QE_MR_IMR_MPCOM		0x04		/* miss pkt cnt ovrflw */
    305  1.1  pk #define	QE_MR_IMR_RCVINTM	0x02		/* rx interrupts */
    306  1.1  pk #define	QE_MR_IMR_XMTINTM	0x01		/* tx interrupts */
    307  1.1  pk 
    308  1.1  pk /* qe_mregs.pr: poll register. */
    309  1.1  pk #define	QE_MR_PR_XMTSV		0x80		/* tx status is valid */
    310  1.1  pk #define	QE_MR_PR_TDTREQ		0x40		/* tx data xfer request */
    311  1.1  pk #define	QE_MR_PR_RDTREQ		0x20		/* rx data xfer request */
    312  1.1  pk 
    313  1.1  pk /* qe_mregs.biucc: biu config control. */
    314  1.1  pk #define	QE_MR_BIUCC_BSWAP	0x40		/* byte swap */
    315  1.1  pk #define	QE_MR_BIUCC_4TS		0x00		/* 4byte xmit start point */
    316  1.1  pk #define	QE_MR_BIUCC_16TS	0x10		/* 16byte xmit start point */
    317  1.1  pk #define	QE_MR_BIUCC_64TS	0x20		/* 64byte xmit start point */
    318  1.1  pk #define	QE_MR_BIUCC_112TS	0x30		/* 112byte xmit start point */
    319  1.1  pk #define	QE_MR_BIUCC_SWRST	0x01		/* sw-reset mace */
    320  1.1  pk 
    321  1.1  pk /* qe_mregs.fifocc: fifo config control. */
    322  1.1  pk #define	QE_MR_FIFOCC_TXF8	0x00		/* tx fifo 8 write cycles */
    323  1.1  pk #define	QE_MR_FIFOCC_TXF32	0x80		/* tx fifo 32 write cycles */
    324  1.1  pk #define	QE_MR_FIFOCC_TXF16	0x40		/* tx fifo 16 write cycles */
    325  1.1  pk #define	QE_MR_FIFOCC_RXF64	0x20		/* rx fifo 64 write cycles */
    326  1.1  pk #define	QE_MR_FIFOCC_RXF32	0x10		/* rx fifo 32 write cycles */
    327  1.1  pk #define	QE_MR_FIFOCC_RXF16	0x00		/* rx fifo 16 write cycles */
    328  1.1  pk #define	QE_MR_FIFOCC_TFWU	0x08		/* tx fifo watermark update */
    329  1.1  pk #define	QE_MR_FIFOCC_RFWU	0x04		/* rx fifo watermark update */
    330  1.1  pk #define	QE_MR_FIFOCC_XMTBRST	0x02		/* tx burst enable */
    331  1.1  pk #define	QE_MR_FIFOCC_RCVBRST	0x01		/* rx burst enable */
    332  1.1  pk 
    333  1.1  pk /* qe_mregs.maccc: mac config control. */
    334  1.1  pk #define	QE_MR_MACCC_PROM	0x80		/* promiscuous mode enable */
    335  1.1  pk #define	QE_MR_MACCC_DXMT2PD	0x40		/* tx 2part deferral enable */
    336  1.1  pk #define	QE_MR_MACCC_EMBA	0x20		/* modified backoff enable */
    337  1.1  pk #define	QE_MR_MACCC_DRCVPA	0x08		/* rx physical addr disable */
    338  1.1  pk #define	QE_MR_MACCC_DRCVBC	0x04		/* rx broadcast disable */
    339  1.1  pk #define	QE_MR_MACCC_ENXMT	0x02		/* enable transmitter */
    340  1.1  pk #define	QE_MR_MACCC_ENRCV	0x01		/* enable receiver */
    341  1.1  pk 
    342  1.1  pk /* qe_mregs.plscc: pls config control. */
    343  1.1  pk #define	QE_MR_PLSCC_XMTSEL	0x08		/* tx mode select */
    344  1.1  pk #define QE_MR_PLSCC_PORTMASK	0x06		/* port selection bits */
    345  1.1  pk #define	 QE_MR_PLSCC_GPSI	0x06		/* use gpsi connector */
    346  1.1  pk #define	 QE_MR_PLSCC_DAI	0x04		/* use dai connector */
    347  1.1  pk #define	 QE_MR_PLSCC_TP		0x02		/* use twistedpair connector */
    348  1.1  pk #define	 QE_MR_PLSCC_AUI	0x00		/* use aui connector */
    349  1.1  pk #define	QE_MR_PLSCC_ENPLSIO	0x01		/* pls i/o enable */
    350  1.1  pk 
    351  1.1  pk /* qe_mregs.phycc: phy config control. */
    352  1.1  pk #define	QE_MR_PHYCC_LNKFL	0x80		/* link fail */
    353  1.1  pk #define	QE_MR_PHYCC_DLNKTST	0x40		/* disable link test logic */
    354  1.1  pk #define	QE_MR_PHYCC_REVPOL	0x20		/* rx polarity */
    355  1.1  pk #define	QE_MR_PHYCC_DAPC	0x10		/* autopolaritycorrect disab */
    356  1.1  pk #define	QE_MR_PHYCC_LRT		0x08		/* select low threshold */
    357  1.1  pk #define	QE_MR_PHYCC_ASEL	0x04		/* connector port auto-sel */
    358  1.1  pk #define	QE_MR_PHYCC_RWAKE	0x02		/* remote wakeup */
    359  1.1  pk #define	QE_MR_PHYCC_AWAKE	0x01		/* auto wakeup */
    360  1.1  pk 
    361  1.1  pk /* qe_mregs.iac: internal address config. */
    362  1.1  pk #define	QE_MR_IAC_ADDRCHG	0x80		/* start address change */
    363  1.1  pk #define	QE_MR_IAC_PHYADDR	0x04		/* physical address reset */
    364  1.1  pk #define	QE_MR_IAC_LOGADDR	0x02		/* logical address reset */
    365  1.1  pk 
    366  1.1  pk /* qe_mregs.utr: user test register. */
    367  1.1  pk #define	QE_MR_UTR_RTRE		0x80		/* enable resv test register */
    368  1.1  pk #define	QE_MR_UTR_RTRD		0x40		/* disab resv test register */
    369  1.1  pk #define	QE_MR_UTR_RPA		0x20		/* accept runt packets */
    370  1.1  pk #define	QE_MR_UTR_FCOLL		0x10		/* force collision status */
    371  1.1  pk #define	QE_MR_UTR_RCVSFCSE	0x08		/* enable fcs on rx */
    372  1.1  pk #define	QE_MR_UTR_INTLOOPM	0x06		/* Internal loopback w/mandec */
    373  1.1  pk #define	QE_MR_UTR_INTLOOP	0x04		/* Internal loopback */
    374  1.1  pk #define	QE_MR_UTR_EXTLOOP	0x02		/* external loopback */
    375  1.1  pk #define	QE_MR_UTR_NOLOOP	0x00		/* no loopback */
    376  1.1  pk 
    377  1.1  pk /* Buffer and Ring sizes: fixed ring size */
    378  1.1  pk #define	QE_TX_RING_MAXSIZE	256		/* maximum tx ring size */
    379  1.1  pk #define	QE_RX_RING_MAXSIZE	256		/* maximum rx ring size */
    380  1.1  pk #define	QE_TX_RING_SIZE		16
    381  1.1  pk #define	QE_RX_RING_SIZE		16
    382  1.1  pk #define	QE_PKT_BUF_SZ		2048
    383  1.1  pk 
    384  1.1  pk #define	MC_POLY_LE		0xedb88320	/* mcast crc, little endian */
    385