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
|