gold: Fix hardcoded library search path
[dragonfly.git] / sys / dev / netif / wl / if_wl_i82586.h
CommitLineData
984263bc
MD
1/*
2 * Mach Operating System
3 * Copyright (c) 1991,1990,1989 Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation is hereby granted, provided that both the copyright
8 * notice and this permission notice appear in all copies of the
9 * software, derivative works or modified versions, and any portions
10 * thereof, and that both notices appear in supporting documentation.
11 *
12 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15 *
16 * Carnegie Mellon requests users of this software to return to
17 *
18 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
19 * School of Computer Science
20 * Carnegie Mellon University
21 * Pittsburgh PA 15213-3890
22 *
23 * any improvements or extensions that they make and grant Carnegie Mellon
24 * the rights to redistribute these changes.
25 *
26 * $FreeBSD: src/sys/i386/isa/ic/if_wl_i82586.h,v 1.1.10.1 2000/08/03 01:01:25 peter Exp $
1de703da 27 * $DragonFly: src/sys/dev/netif/wl/if_wl_i82586.h,v 1.2 2003/06/17 04:28:37 dillon Exp $
984263bc
MD
28 */
29/*
30 Copyright 1988, 1989 by Olivetti Advanced Technology Center, Inc.,
31Cupertino, California.
32
33 All Rights Reserved
34
35 Permission to use, copy, modify, and distribute this software and
36its documentation for any purpose and without fee is hereby
37granted, provided that the above copyright notice appears in all
38copies and that both the copyright notice and this permission notice
39appear in supporting documentation, and that the name of Olivetti
40not be used in advertising or publicity pertaining to distribution
41of the software without specific, written prior permission.
42
43 OLIVETTI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
44INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
45IN NO EVENT SHALL OLIVETTI BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
46CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
47LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
48NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUR OF OR IN CONNECTION
49WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
50*/
51
52/*
53 * Defines for managing the status word of the 82586 cpu. For details see
54 * the Intel LAN Component User's Manual starting at p. 2-14.
55 *
56 */
57
58#define SCB_SW_INT 0xf000
59#define SCB_SW_CX 0x8000 /* CU finished w/ int. bit set */
60#define SCB_SW_FR 0x4000 /* RU finished receiving a frame */
61#define SCB_SW_CNA 0x2000 /* CU left active state */
62#define SCB_SW_RNR 0x1000 /* RU left ready state */
63
64/*
65 * Defines for managing the Command Unit Status portion of the 82586
66 * System Control Block.
67 *
68 */
69
70#define SCB_CUS_IDLE 0x0000
71#define SCB_CUS_SUSPND 0x0100
72#define SCB_CUS_ACTV 0x0200
73
74/*
75 * Defines for managing the Receive Unit Status portion of the System
76 * Control Block.
77 *
78 */
79
80#define SCB_RUS_IDLE 0x0000
81#define SCB_RUS_SUSPND 0x0010
82#define SCB_RUS_NORESRC 0x0020
83#define SCB_RUS_READY 0x0040
84
85/*
86 * Defines that manage portions of the Command Word in the System Control
87 * Block of the 82586. Below are the Interrupt Acknowledge Bits and their
88 * appropriate masks.
89 *
90 */
91
92#define SCB_ACK_CX 0x8000
93#define SCB_ACK_FR 0x4000
94#define SCB_ACK_CNA 0x2000
95#define SCB_ACK_RNR 0x1000
96
97/*
98 * Defines for managing the Command Unit Control word, and the Receive
99 * Unit Control word. The software RESET bit is also defined.
100 *
101 */
102
103#define SCB_CU_STRT 0x0100
104#define SCB_CU_RSUM 0x0200
105#define SCB_CU_SUSPND 0x0300
106#define SCB_CU_ABRT 0x0400
107
108#define SCB_RESET 0x0080
109
110#define SCB_RU_STRT 0x0010
111#define SCB_RU_RSUM 0x0020
112#define SCB_RU_SUSPND 0x0030
113#define SCB_RU_ABRT 0x0040
114
115
116/*
117 * The following define Action Commands for the 82586 chip.
118 *
119 */
120
121#define AC_NOP 0x00
122#define AC_IASETUP 0x01
123#define AC_CONFIGURE 0x02
124#define AC_MCSETUP 0x03
125#define AC_TRANSMIT 0x04
126#define AC_TDR 0x05
127#define AC_DUMP 0x06
128#define AC_DIAGNOSE 0x07
129
130
131/*
132 * Defines for General Format for Action Commands, both Status Words, and
133 * Command Words.
134 *
135 */
136
137#define AC_SW_C 0x8000
138#define AC_SW_B 0x4000
139#define AC_SW_OK 0x2000
140#define AC_SW_A 0x1000
141#define TC_CARRIER 0x0400
142#define TC_CLS 0x0200
143#define TC_DMA 0x0100
144#define TC_DEFER 0x0080
145#define TC_SQE 0x0040
146#define TC_COLLISION 0x0020
147#define AC_CW_EL 0x8000
148#define AC_CW_S 0x4000
149#define AC_CW_I 0x2000
150
151/*
152 * Specific defines for the transmit action command.
153 *
154 */
155
156#define TBD_SW_EOF 0x8000
157#define TBD_SW_COUNT 0x3fff
158
159/*
160 * Specific defines for the receive frame actions.
161 *
162 */
163
164#define RBD_SW_EOF 0x8000
165#define RBD_SW_COUNT 0x3fff
166
167#define RFD_DONE 0x8000
168#define RFD_BUSY 0x4000
169#define RFD_OK 0x2000
170#define RFD_CRC 0x0800
171#define RFD_ALN 0x0400
172#define RFD_RSC 0x0200
173#define RFD_DMA 0x0100
174#define RFD_SHORT 0x0080
175#define RFD_EOF 0x0040
176#define RFD_EL 0x8000
177#define RFD_SUSP 0x4000
178/*
179 * 82586 chip specific structure definitions. For details, see the Intel
180 * LAN Components manual.
181 *
182 */
183
184
185typedef struct {
186 u_short scp_sysbus;
187 u_short scp_unused[2];
188 u_short scp_iscp;
189 u_short scp_iscp_base;
190} scp_t;
191
192
193typedef struct {
194 u_short iscp_busy;
195 u_short iscp_scb_offset;
196 u_short iscp_scb;
197 u_short iscp_scb_base;
198} iscp_t;
199
200
201typedef struct {
202 u_short scb_status;
203 u_short scb_command;
204 u_short scb_cbl_offset;
205 u_short scb_rfa_offset;
206 u_short scb_crcerrs;
207 u_short scb_alnerrs;
208 u_short scb_rscerrs;
209 u_short scb_ovrnerrs;
210} scb_t;
211
212
213typedef struct {
214 u_short tbd_offset;
215 u_char dest_addr[6];
216 u_short length;
217} transmit_t;
218
219
220typedef struct {
221 u_short fifolim_bytecnt;
222 u_short addrlen_mode;
223 u_short linprio_interframe;
224 u_short slot_time;
225 u_short hardware;
226 u_short min_frame_len;
227} configure_t;
228
229
230typedef struct {
231 u_short ac_status;
232 u_short ac_command;
233 u_short ac_link_offset;
234 union {
235 transmit_t transmit;
236 configure_t configure;
237 u_char iasetup[6];
238 } cmd;
239} ac_t;
240
241
242typedef struct {
243 u_short act_count;
244 u_short next_tbd_offset;
245 u_short buffer_addr;
246 u_short buffer_base;
247} tbd_t;
248
249
250typedef struct {
251 u_short status;
252 u_short command;
253 u_short link_offset;
254 u_short rbd_offset;
255 u_char destination[6];
256 u_char source[6];
257 u_short length;
258} fd_t;
259
260
261typedef struct {
262 u_short status;
263 u_short next_rbd_offset;
264 u_short buffer_addr;
265 u_short buffer_base;
266 u_short size;
267} rbd_t;