summaryrefslogtreecommitdiff
path: root/sys/dev/ic/mb86950reg.h
blob: 8c8bb64e39ba83255f2b11b353ffd267cf7186d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*	$NetBSD: mb86950reg.h,v 1.3 2005/12/11 12:21:27 christos Exp $	*/

/*
 * Copyright (c) 1995 Mika Kortelainen
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *      This product includes software developed by  Mika Kortelainen
 * 4. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/*
 * Adapted from if_qnreg.h for the amiga port of NetBSD by Dave J. Barnes, 2004.
 */

/*
 * The Fujitsu mb86950, "EtherStar", is the predecessor to the mb8696x
 * NICE supported by the ate driver.  While similar in function and
 * programming to the mb8696x, the register offset differences and
 * quirks make it nearly impossible to have one driver for both the
 * EtherStar and NICE chips.
 *
 *  Definitions from Fujitsu documentation.
 */

#define ESTAR_DLCR0		0 /* Transmit status */
#define DLCR_TX_STAT	ESTAR_DLCR0

#define ESTAR_DLCR1		1 /* Transmit masks  */
#define DLCR_TX_INT_EN	ESTAR_DLCR1

/* DLCR0/1 - Transmit Status & Masks */
#define TX_DONE			0x80 /* Transmit okay         */
/* bit 6 - Net Busy, carrier sense ? */
/* bit 5 - Transmit packet received ? */
#define TX_CR_LOST		0x10 /* Carrier lost while attempting to transmit */
#define TX_UNDERFLO		0x08 /* fifo underflow */
#define TX_COL			0x04 /* Collision             */
#define TX_16COL		0x02 /* 16 collision          */
#define TX_BUS_WR_ERR	0x01 /* Bus write error, fifo overflo */
#define CLEAR_TX_ERR	(TX_UNDERFLO | TX_COL | TX_16COL | TX_BUS_WR_ERR) /* Clear transmit errors */
#define TX_MASK         (TX_DONE | TX_16COL)

#define ESTAR_DLCR2		2 /* Receive status  */
#define DLCR_RX_STAT	ESTAR_DLCR2

#define ESTAR_DLCR3		3 /* Receive masks   */
#define DLCR_RX_INT_EN	ESTAR_DLCR3

/* DLCR2/3 - Receive Status & Masks */
#define RX_PKT			0x80 /* Packet ready          */
#define RX_BUS_RD_ERR   0x40 /* fifo underflow, harmless, normally masked off */
/* bit 5 - DMA end of process ? */
/* bit 4 - remote control packet rx ? */
#define RX_SHORT_ERR	0x08 /* Short packet          */
#define RX_ALIGN_ERR	0x04 /* Alignment error       */
#define RX_CRC_ERR		0x02 /* CRC error             */
#define RX_OVERFLO		0x01 /* Receive buf overflow  */
#define CLEAR_RX_ERR	RX_MASK /* Clear receive and errors  */
#define	RX_MASK			(RX_PKT | RX_SHORT_ERR | RX_ALIGN_ERR | RX_CRC_ERR | RX_OVERFLO | RX_BUS_RD_ERR)
#define RX_ERR_MASK  	(RX_SHORT_ERR | RX_ALIGN_ERR | RX_CRC_ERR | RX_OVERFLO | RX_BUS_RD_ERR)

#define ESTAR_DLCR4		4 /* Transmit mode   */
#define DLCR_TX_MODE	ESTAR_DLCR4

/* DLCR4 - Transmit Mode */
/* bits 7, 6, 5, 4 - collision count ? */
#define COL_MASK		0xf0
/* bit 3 - nc */
/* bit 2 - gen output ? */
#define LBC				0x02 /* Loopback control      */
/* bit 0 - defer ?, normally 0 */

#define ESTAR_DLCR5		5 /* Receive mode    */
#define DLCR_RX_MODE	ESTAR_DLCR5

/* DLCR5 - Receive Mode */
/* Normal mode: accept physical address, broadcast address.
 */
/* bit 7 - Disable CRC test mode */
#define RX_BUF_EMTY		0x40 /* Buffer empty          */
/* bit 5 - accept packet with errors or nc ?, normally set to 0 */
/* bit 4 - 40 bit address ?, normally set to 0 */
/* bit 3 - accept runts ?, normally set to 0 */
/* bit 2 - remote reset ? normally set to 0 */
/* bit 1 & 0 - address filter mode */

/*  00 = reject */
/*  01 = normal mode */
#define NORMAL_MODE		0x01
/*  10 = ? */
/*  11 = promiscuous mode */
#define PROMISCUOUS_MODE	0x03 /* Accept all packets    */

#define ESTAR_DLCR6		6 /* Software reset  */
#define DLCR_CONFIG		ESTAR_DLCR6

/* DLCR6 - Enable Data Link Controller */
#define DISABLE_DLC		0x80 /* Disable data link controller */
#define ENABLE_DLC		0x00 /* Enable data link controller  */

#define ESTAR_DLCR7		7 /* TDR (LSB)       */

#define ESTAR_DLCR8		8 /* Node ID0        */
#define DLCR_NODE_ID	ESTAR_DLCR8

#define ESTAR_DLCR9		9 /* Node ID1        */
#define ESTAR_DLCR10	10 /* Node ID2        */
#define ESTAR_DLCR11	11 /* Node ID3        */
#define ESTAR_DLCR12	12 /* Node ID4        */
#define ESTAR_DLCR13	13 /* Node ID5        */

#define ESTAR_DLCR15	15 /* TDR (MSB)       */

/* The next three are usually accessed as words */
#define ESTAR_BMPR0		16 /* Buffer memory port (FIFO) */
#define BMPR_FIFO		ESTAR_BMPR0

#define ESTAR_BMPR2		18 /* Packet length   */
#define BMPR_TX_LENGTH	ESTAR_BMPR2
/* BMPR2:BMPR3 - Packet Length Registers (Write-only) */
#define TRANSMIT_START	0x8000

#define ESTAR_BMPR4		20 /* DMA enable      */
#define BMPR_DMA		ESTAR_BMPR4