if_bmreg.h revision 226995
1163953Srrs/*
2169382Srrs * Copyright 1991-1998 by Open Software Foundation, Inc.
3163953Srrs *              All Rights Reserved
4163953Srrs *
5163953Srrs * Permission to use, copy, modify, and distribute this software and
6163953Srrs * its documentation for any purpose and without fee is hereby granted,
7163953Srrs * provided that the above copyright notice appears in all copies and
8163953Srrs * that both the copyright notice and this permission notice appear in
9163953Srrs * supporting documentation.
10163953Srrs *
11163953Srrs * OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
12163953Srrs * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
13163953Srrs * FOR A PARTICULAR PURPOSE.
14163953Srrs *
15163953Srrs * IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
16163953Srrs * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
17163953Srrs * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
18163953Srrs * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
19163953Srrs * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20163953Srrs */
21163953Srrs/*
22163953Srrs * Copyright 2003 by Peter Grehan. All rights reserved.
23163953Srrs *
24163953Srrs * Redistribution and use in source and binary forms, with or without
25163953Srrs * modification, are permitted provided that the following conditions
26163953Srrs * are met:
27163953Srrs * 1. Redistributions of source code must retain the above copyright
28163953Srrs *    notice, this list of conditions and the following disclaimer.
29163953Srrs * 2. Redistributions in binary form must reproduce the above copyright
30163953Srrs *    notice, this list of conditions and the following disclaimer in the
31163953Srrs *    documentation and/or other materials provided with the distribution.
32163953Srrs * 3. The name of the author may not be used to endorse or promote products
33163953Srrs *    derived from this software without specific prior written permission.
34163953Srrs *
35163953Srrs * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
36163953Srrs * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37163953Srrs * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
38167598Srrs * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
39163953Srrs * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
40163953Srrs * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
41163953Srrs * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
42163953Srrs * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
43163953Srrs * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
44163953Srrs * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
45163953Srrs * SUCH DAMAGE.
46163953Srrs *
47170091Srrs * $FreeBSD: head/sys/dev/bm/if_bmreg.h 226995 2011-11-01 16:13:59Z marius $
48163953Srrs */
49163953Srrs
50163953Srrs/*
51163953Srrs * BMAC resource indices
52163953Srrs */
53163953Srrs
54163953Srrs#define BM_MAIN_REGISTERS	0
55163953Srrs#define	BM_TXDMA_REGISTERS	1
56165220Srrs#define	BM_RXDMA_REGISTERS	2
57165220Srrs
58165220Srrs#define BM_MAIN_INTERRUPT	0
59165220Srrs#define BM_TXDMA_INTERRUPT	1
60165220Srrs#define BM_RXDMA_INTERRUPT	2
61163953Srrs
62163953Srrs/*
63165220Srrs * BMAC/BMAC+ register offsets
64163953Srrs */
65163953Srrs
66163953Srrs#define BM_TX_IFC	0x0000		/* interface control */
67165220Srrs#define BM_TXFIFO_CSR	0x0100		/* TX FIFO control/status */
68165220Srrs#define BM_TX_THRESH   	0x0110		/* TX threshold */
69165220Srrs#define BM_RXFIFO_CSR	0x0120		/* receive FIFO control/status */
70165220Srrs#define BM_MEMADD	0x0130		/* unused */
71165220Srrs#define BM_MEMDATA_HI	0x0140		/* unused */
72165220Srrs#define BM_MEMDATA_LO	0x0150		/* unused */
73163953Srrs#define BM_XCVR		0x0160		/* transceiver control register */
74163953Srrs#define BM_CHIPID	0x0170		/* chip ID */
75163953Srrs#define BM_MII_CSR	0x0180		/* MII control register */
76163953Srrs#define BM_SROM_CSR	0x0190		/* unused, OFW provides enet addr */
77163953Srrs#define BM_TX_PTR	0x01A0		/* unused */
78163953Srrs#define BM_RX_PTR	0x01B0		/* unused */
79163953Srrs#define BM_STATUS	0x01C0		/* status register */
80163953Srrs#define BM_INTR_DISABLE	0x0200		/* interrupt control register */
81170181Srrs#define BM_TX_RESET	0x0420		/* TX reset */
82163953Srrs#define BM_TX_CONFIG	0x0430		/* TX config */
83163953Srrs#define BM_IPG1		0x0440		/* inter-packet gap hi */
84163953Srrs#define BM_IPG2		0x0450		/* inter-packet gap lo */
85163953Srrs#define BM_TX_ALIMIT	0x0460		/* TX attempt limit */
86163953Srrs#define BM_TX_STIME	0x0470		/* TX slot time */
87169420Srrs#define BM_TX_PASIZE	0x0480		/* TX preamble size */
88169420Srrs#define BM_TX_PAPAT	0x0490		/* TX preamble pattern */
89163953Srrs#define BM_TX_SFD	0x04A0		/* TX start-frame delimiter */
90163953Srrs#define BM_JAMSIZE	0x04B0		/* collision jam size */
91163953Srrs#define BM_TX_MAXLEN	0x04C0		/* max TX packet length */
92163953Srrs#define BM_TX_MINLEN	0x04D0		/* min TX packet length */
93169420Srrs#define BM_TX_PEAKCNT	0x04E0		/* TX peak attempts count */
94169420Srrs#define BM_TX_DCNT	0x04F0		/* TX defer timer */
95169420Srrs#define BM_TX_NCCNT	0x0500		/* TX normal collision cnt */
96163953Srrs#define BM_TX_FCCNT	0x0510		/* TX first collision cnt */
97163953Srrs#define BM_TX_EXCNT	0x0520		/* TX excess collision cnt */
98163953Srrs#define BM_TX_LTCNT	0x0530		/* TX late collision cnt */
99163953Srrs#define BM_TX_RANDSEED	0x0540		/* TX random seed */
100169352Srrs#define BM_TXSM		0x0550		/* TX state machine */
101170181Srrs#define BM_RX_RESET	0x0620		/* RX reset */
102168299Srrs#define BM_RX_CONFIG	0x0630		/* RX config */
103168299Srrs#define BM_RX_MAXLEN	0x0640		/* max RX packet length */
104163953Srrs#define BM_RX_MINLEN	0x0650		/* min RX packet length */
105163953Srrs#define BM_MACADDR2	0x0660		/* MAC address */
106163953Srrs#define BM_MACADDR1	0x0670
107163953Srrs#define BM_MACADDR0	0x0680
108163953Srrs#define BM_RX_FRCNT	0x0690		/* RX frame count */
109169352Srrs#define BM_RX_LECNT	0x06A0		/* RX too-long frame count */
110170181Srrs#define BM_RX_AECNT	0x06B0		/* RX misaligned frame count */
111168299Srrs#define BM_RX_FECNT	0x06C0		/* RX CRC error count */
112168299Srrs#define BM_RXSM		0x06D0		/* RX state machine */
113163953Srrs#define BM_RXCV		0x06E0		/* RX code violations */
114163953Srrs#define BM_HASHTAB3	0x0700		/* Address hash table */
115163953Srrs#define BM_HASHTAB2	0x0710
116163953Srrs#define BM_HASHTAB1	0x0720
117163953Srrs#define BM_HASHTAB0	0x0730
118163953Srrs#define BM_AFILTER2	0x0740		/* Address filter */
119169352Srrs#define BM_AFILTER1	0x0750
120170181Srrs#define BM_AFILTER0	0x0760
121168299Srrs#define BM_AFILTER_MASK 0x0770
122168299Srrs
123163953Srrs/*
124163953Srrs * MII control register bits
125163953Srrs */
126163953Srrs#define BM_MII_CLK	0x0001		/* MDIO clock */
127163953Srrs#define BM_MII_DATAOUT	0x0002		/* MDIO data out */
128169352Srrs#define BM_MII_OENABLE	0x0004		/* MDIO output enable */
129170181Srrs#define BM_MII_DATAIN	0x0008		/* MDIO data in */
130163953Srrs
131163953Srrs/*
132163953Srrs * Various flags
133163953Srrs */
134163953Srrs
135169352Srrs#define BM_ENABLE		0x0001
136170181Srrs
137168299Srrs#define BM_CRC_ENABLE		0x0100
138168299Srrs#define BM_HASH_FILTER_ENABLE 	0x0200
139163953Srrs#define BM_REJECT_OWN_PKTS 	0x0800
140163953Srrs#define	BM_PROMISC		0x0040
141163953Srrs
142163953Srrs#define BM_TX_FULLDPX		0x0200
143163953Srrs#define BM_TX_IGNORECOLL	0x0040
144169352Srrs
145170181Srrs#define BM_INTR_PKT_RX		0x0001
146168299Srrs#define BM_INTR_PKT_TX		0x0100
147168299Srrs#define BM_INTR_TX_UNDERRUN	0x0200
148163953Srrs
149163953Srrs#define BM_INTR_NORMAL		~(BM_INTR_PKT_TX | BM_INTR_TX_UNDERRUN)
150163953Srrs#define BM_INTR_NONE		0xffff
151163953Srrs
152163953Srrs/*
153163953Srrs * register space access macros
154170181Srrs */
155168299Srrs#define	CSR_WRITE_4(sc, reg, val)	\
156168299Srrs	bus_write_4(sc->sc_memr, reg, val)
157163953Srrs#define	CSR_WRITE_2(sc, reg, val)	\
158163953Srrs	bus_write_2(sc->sc_memr, reg, val)
159163953Srrs#define CSR_WRITE_1(sc, reg, val)	\
160169420Srrs	bus_write_1(sc->sc_memr, reg, val)
161170181Srrs
162163953Srrs#define CSR_READ_4(sc, reg)		\
163163953Srrs	bus_read_4(sc->sc_memr, reg)
164163953Srrs#define CSR_READ_2(sc, reg)		\
165163953Srrs	bus_read_2(sc->sc_memr, reg)
166163953Srrs#define	CSR_READ_1(sc, reg)		\
167171158Srrs	bus_read_1(sc->sc_memr, reg)
168171158Srrs
169171158Srrs#define CSR_BARRIER(sc, reg, length, flags)				\
170171158Srrs	bus_barrier(sc->sc_memr, reg, length, flags)
171171158Srrs