Home | History | Annotate | Line # | Download | only in dev
      1  1.1  simonb /* $NetBSD: if_aumacreg.h,v 1.1 2002/07/29 15:39:14 simonb Exp $ */
      2  1.1  simonb 
      3  1.1  simonb /*
      4  1.1  simonb  * Copyright (c) 2001 Wasabi Systems, Inc.
      5  1.1  simonb  * All rights reserved.
      6  1.1  simonb  *
      7  1.1  simonb  * Written by Jason R. Thorpe for Wasabi Systems, Inc.
      8  1.1  simonb  *
      9  1.1  simonb  * Redistribution and use in source and binary forms, with or without
     10  1.1  simonb  * modification, are permitted provided that the following conditions
     11  1.1  simonb  * are met:
     12  1.1  simonb  * 1. Redistributions of source code must retain the above copyright
     13  1.1  simonb  *    notice, this list of conditions and the following disclaimer.
     14  1.1  simonb  * 2. Redistributions in binary form must reproduce the above copyright
     15  1.1  simonb  *    notice, this list of conditions and the following disclaimer in the
     16  1.1  simonb  *    documentation and/or other materials provided with the distribution.
     17  1.1  simonb  * 3. All advertising materials mentioning features or use of this software
     18  1.1  simonb  *    must display the following acknowledgement:
     19  1.1  simonb  *	This product includes software developed for the NetBSD Project by
     20  1.1  simonb  *	Wasabi Systems, Inc.
     21  1.1  simonb  * 4. The name of Wasabi Systems, Inc. may not be used to endorse
     22  1.1  simonb  *    or promote products derived from this software without specific prior
     23  1.1  simonb  *    written permission.
     24  1.1  simonb  *
     25  1.1  simonb  * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
     26  1.1  simonb  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     27  1.1  simonb  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     28  1.1  simonb  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
     29  1.1  simonb  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     30  1.1  simonb  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     31  1.1  simonb  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     32  1.1  simonb  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     33  1.1  simonb  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     34  1.1  simonb  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     35  1.1  simonb  * POSSIBILITY OF SUCH DAMAGE.
     36  1.1  simonb  */
     37  1.1  simonb 
     38  1.1  simonb #ifndef _MIPS_ALCHEMY_DEV_AUMACREG_H_
     39  1.1  simonb #define	_MIPS_ALCHEMY_DEV_AUMACREG_H_
     40  1.1  simonb 
     41  1.1  simonb /*
     42  1.1  simonb  * Register description for the Alchemy Semiconductor Au1X00
     43  1.1  simonb  * Ethernet Media Access Controllers.
     44  1.1  simonb  */
     45  1.1  simonb 
     46  1.1  simonb #define	MAC_BUFLEN	 0x0800
     47  1.1  simonb #define	MAC_BUFLEN_JUMBO 0x2800
     48  1.1  simonb 
     49  1.1  simonb /*
     50  1.1  simonb  * MAC registers.
     51  1.1  simonb  */
     52  1.1  simonb 
     53  1.1  simonb #define	MAC_CONTROL	0x0000	/* MAC control */
     54  1.1  simonb #define	CONTROL_RA	(1U << 31)	/* receive all */
     55  1.1  simonb #define	CONTROL_EM	(1U << 30)	/* 1 = big endian */
     56  1.1  simonb #define	CONTROL_DO	(1U << 23)	/* disable receive own */
     57  1.1  simonb #define	CONTROL_LM(x)	((x) << 21)	/* loopback mode */
     58  1.1  simonb 					/* 0 = normal */
     59  1.1  simonb 					/* 1 = internal loopback */
     60  1.1  simonb 					/* 2 = external loopback */
     61  1.1  simonb 					/* 3 = reserved */
     62  1.1  simonb #define	CONTROL_F	(1U << 20)	/* full-duplex mode */
     63  1.1  simonb #define	CONTROL_PM	(1U << 19)	/* pass all multicast */
     64  1.1  simonb #define	CONTROL_PR	(1U << 18)	/* promiscuous mode */
     65  1.1  simonb #define	CONTROL_IF	(1U << 17)	/* inverse filtering */
     66  1.1  simonb #define	CONTROL_PB	(1U << 16)	/* pass bad frames */
     67  1.1  simonb #define	CONTROL_HO	(1U << 15)	/* hash-only filtering */
     68  1.1  simonb #define	CONTROL_HP	(1U << 13)	/* hash-perfect filtering */
     69  1.1  simonb #define	CONTROL_LC	(1U << 12)	/* re-tx on late collision */
     70  1.1  simonb #define	CONTROL_DB	(1U << 11)	/* disable broadcast frames */
     71  1.1  simonb #define	CONTROL_DR	(1U << 10)	/* disable retry */
     72  1.1  simonb #define	CONTROL_AP	(1U << 8)	/* automatic pad stripping */
     73  1.1  simonb #define	CONTROL_BL(x)	((x) << 6)	/* backoff limit */
     74  1.1  simonb #define	CONTROL_DC	(1U << 5)	/* deferral check */
     75  1.1  simonb #define	CONTROL_TE	(1U << 3)	/* transmitter enable */
     76  1.1  simonb #define	CONTROL_RE	(1U << 2)	/* receiver enable */
     77  1.1  simonb 
     78  1.1  simonb #define	MAC_ADDRHIGH	0x0004	/* high 16 bits of station address */
     79  1.1  simonb 
     80  1.1  simonb #define	MAC_ADDRLOW	0x0008	/* low 32 bits of station address */
     81  1.1  simonb 
     82  1.1  simonb #define	MAC_HASHHIGH	0x000c	/* high 32 bits of multicast hash */
     83  1.1  simonb 
     84  1.1  simonb #define	MAC_HASHLOW	0x0010	/* low 32 bits of multicast hash */
     85  1.1  simonb 
     86  1.1  simonb #define	MAC_MIICTRL	0x0014	/* MII PHY control */
     87  1.1  simonb #define	MIICTRL_PHYADDR(x) ((x) << 11)	/* PHY address */
     88  1.1  simonb #define	MIICTRL_MIIREG(x)  ((x) << 6)	/* MII register */
     89  1.1  simonb #define	MIICTRL_MW	   (1U << 1)	/* MII write */
     90  1.1  simonb #define	MIICTRL_MB	   (1U << 0)	/* MII busy */
     91  1.1  simonb 
     92  1.1  simonb #define	MAC_MIIDATA	0x0018	/* MII PHY data */
     93  1.1  simonb #define	MIIDATA_MASK	0xffff		/* MII data bits */
     94  1.1  simonb 
     95  1.1  simonb #define	MAC_FLOWCTRL	0x001c	/* control frame generation control */
     96  1.1  simonb #define	FLOWCTRL_PT(x)	((x) << 16)	/* pause time */
     97  1.1  simonb #define	FLOWCTRL_PC	(1U << 2)	/* pass control frame */
     98  1.1  simonb #define	FLOWCTRL_FE	(1U << 1)	/* flow control enable */
     99  1.1  simonb #define	FLOWCTRL_FB	(1U << 0)	/* flow control busy */
    100  1.1  simonb 
    101  1.1  simonb #define	MAC_VLAN1	0x0020	/* VLAN1 tag */
    102  1.1  simonb 
    103  1.1  simonb #define	MAC_VLAN2	0x0024	/* VLAN2 tag */
    104  1.1  simonb 
    105  1.1  simonb /*
    106  1.1  simonb  * MAC Enable registers.
    107  1.1  simonb  */
    108  1.1  simonb 
    109  1.1  simonb #define	MACEN_JP	(1U << 6)	/* jumbo packet enable */
    110  1.1  simonb #define	MACEN_E2	(1U << 5)	/* enable2 */
    111  1.1  simonb #define	MACEN_E1	(1U << 4)	/* enable1 */
    112  1.1  simonb #define	MACEN_C		(1U << 3)	/* 0 == coherent */
    113  1.1  simonb #define	MACEN_TS	(1U << 2)	/* disable toss */
    114  1.1  simonb #define	MACEN_E0	(1U << 1)	/* enable0 */
    115  1.1  simonb #define	MACEN_CE	(1U << 0)	/* clock enable */
    116  1.1  simonb 
    117  1.1  simonb /*
    118  1.1  simonb  * MAC DMA registers.
    119  1.1  simonb  */
    120  1.1  simonb 
    121  1.1  simonb #define	MACDMA_TX_ENTRY(x)	((x) << 4)
    122  1.1  simonb #define	MACDMA_RX_ENTRY(x)	(((x) << 4) + 0x100)
    123  1.1  simonb 
    124  1.1  simonb #define	MACDMA_TX_STAT(x)	(MACDMA_TX_ENTRY(x) + 0x00)
    125  1.1  simonb #define	MACDMA_TX_ADDR(x)	(MACDMA_TX_ENTRY(x) + 0x04)
    126  1.1  simonb #define	MACDMA_TX_LEN(x)	(MACDMA_TX_ENTRY(x) + 0x08)
    127  1.1  simonb 
    128  1.1  simonb #define	MACDMA_RX_STAT(x)	(MACDMA_RX_ENTRY(x) + 0x00)
    129  1.1  simonb #define	MACDMA_RX_ADDR(x)	(MACDMA_RX_ENTRY(x) + 0x04)
    130  1.1  simonb 
    131  1.1  simonb #define	RX_STAT_MI	(1U << 31)	/* missed frame */
    132  1.1  simonb #define	RX_STAT_PF	(1U << 30)	/* packet filter pass */
    133  1.1  simonb #define	RX_STAT_FF	(1U << 29)	/* filtering fail */
    134  1.1  simonb #define	RX_STAT_BF	(1U << 28)	/* broadcast frame */
    135  1.1  simonb #define	RX_STAT_MF	(1U << 27)	/* multicast frame */
    136  1.1  simonb #define	RX_STAT_UC	(1U << 26)	/* unsupported control frame */
    137  1.1  simonb #define	RX_STAT_CF	(1U << 25)	/* control frame */
    138  1.1  simonb #define	RX_STAT_LE	(1U << 24)	/* length error */
    139  1.1  simonb #define	RX_STAT_V2	(1U << 23)	/* VLAN2 match */
    140  1.1  simonb #define	RX_STAT_V1	(1U << 22)	/* VLAN1 match */
    141  1.1  simonb #define	RX_STAT_CR	(1U << 21)	/* CRC error */
    142  1.1  simonb #define	RX_STAT_DB	(1U << 20)	/* dribbling bit */
    143  1.1  simonb #define	RX_STAT_ME	(1U << 19)	/* MII error */
    144  1.1  simonb #define	RX_STAT_FT	(1U << 18)	/* 0 = 802.3, 1 = Ethernet */
    145  1.1  simonb #define	RX_STAT_CS	(1U << 17)	/* collision seen */
    146  1.1  simonb #define	RX_STAT_FL	(1U << 16)	/* frame too long */
    147  1.1  simonb #define	RX_STAT_RF	(1U << 15)	/* runt frame */
    148  1.1  simonb #define	RX_STAT_WT	(1U << 14)	/* watchdog timeout */
    149  1.1  simonb #define	RX_STAT_L(x)	((x) & 0x3fff)	/* frame length */
    150  1.1  simonb 
    151  1.1  simonb #define	RX_STAT_ERRS	(RX_STAT_MI | RX_STAT_UC | RX_STAT_LE | RX_STAT_CR | \
    152  1.1  simonb 			 RX_STAT_DB | RX_STAT_ME | RX_STAT_CS | RX_STAT_FL | \
    153  1.1  simonb 			 RX_STAT_RF | RX_STAT_WT)
    154  1.1  simonb 
    155  1.1  simonb #define	RX_ADDR_CB(x)	(((x) >> 2) & 3)/* current buffer */
    156  1.1  simonb #define	RX_ADDR_DN	(1U << 1)	/* transaction done */
    157  1.1  simonb #define	RX_ADDR_EN	(1U << 0)	/* enable this buffer */
    158  1.1  simonb 
    159  1.1  simonb #define	TX_STAT_PR	(1U << 31)	/* packet retry */
    160  1.1  simonb #define	TX_STAT_CC(x)	(((x) >> 10) & 0xf) /* collision count */
    161  1.1  simonb #define	TX_STAT_LO	(1U << 9)	/* late collision observed */
    162  1.1  simonb #define	TX_STAT_DF	(1U << 8)	/* deferred transmission */
    163  1.1  simonb #define	TX_STAT_UR	(1U << 7)	/* data underrun */
    164  1.1  simonb #define	TX_STAT_EC	(1U << 6)	/* excessive collisions */
    165  1.1  simonb #define	TX_STAT_LC	(1U << 5)	/* late collision */
    166  1.1  simonb #define	TX_STAT_ED	(1U << 4)	/* excessive deferral */
    167  1.1  simonb #define	TX_STAT_LS	(1U << 3)	/* loss of carrier */
    168  1.1  simonb #define	TX_STAT_NC	(1U << 2)	/* no carrier */
    169  1.1  simonb #define	TX_STAT_JT	(1U << 1)	/* jabber timeout */
    170  1.1  simonb #define	TX_STAT_FA	(1U << 0)	/* frame aborted */
    171  1.1  simonb 
    172  1.1  simonb #define	TX_ADDR_CB(x)	(((x) >> 2) & 3)/* current buffer */
    173  1.1  simonb #define	TX_ADDR_DN	(1U << 1)	/* transaction done */
    174  1.1  simonb #define	TX_ADDR_EN	(1U << 0)	/* enable this buffer */
    175  1.1  simonb 
    176  1.1  simonb #endif /* _MIPS_ALCHEMY_DEV_AUMACREG_H_ */
    177