1/*
2	Copyright 1999, Be Incorporated.   All Rights Reserved.
3	This file may be used under the terms of the Be Sample Code License.
4*/
5/*
6 * etherpci_private.h
7 * Copyright (c) 1998 Be, Inc.	All Rights Reserved
8 *
9 * Definitions private to ne2000 PCI ethernet driver
10 *
11 * Modification History (most recent first):
12 *
13 * 18 May 98	malyn	new today
14 */
15
16#ifndef _ETHERPCI_PRIVATE_H
17#define _ETHERPCI_PRIVATE_H
18
19#ifndef _KERNEL_EXPORT_H
20#include <KernelExport.h>
21#endif
22
23/*
24 * Wait this long before giving up on an ethernet transmit
25 */
26#define ETHER_TRANSMIT_TIMEOUT ((bigtime_t)1000000)	/* one second */
27
28#define NIRQS 128	//x hmm...
29
30#define MAX_MULTI 14
31
32#define ETHER_BUF_START_NE2000	0x4000
33#define ETHER_BUF_SIZE_NE2000	0x4000
34
35#define ETHER_BUF_SIZE_MAX		ETHER_BUF_SIZE_NE2000
36
37#define ETHER_MTU 1500
38#define ETHER_MIN_SIZE 60
39#define ETHER_MAX_SIZE 1514
40#define ETHER_IRQ2 0x10
41#define ETHER_IRQ3 0x20
42#define ETHER_IRQ4 0x40
43#define ETHER_IRQ5 0x80
44
45
46#define ECNTRL_RESET    0x01
47#define ECNTRL_ONBOARD	0x02
48#define ECNTRL_SAPROM   0x04
49
50#define EGACFR_NORM		0x49
51#define EGACFR_IRQOFF	0xc9
52
53#define EC_PAGE_SIZE 256
54#define EC_PAGE_SHIFT 8
55
56#define EN_CCMD	   0x0
57
58#define EN0_STARTPG	0x01
59#define EN0_STOPPG	0x02
60#define EN0_BOUNDARY 0x03
61#define EN0_TPSR	0x04
62#define EN0_TCNTLO	0x05
63#define EN0_TCNTHI	0x06
64#define EN0_ISR		0x07
65#define EN0_RADDRLO	0x08
66#define EN0_RADDRHI	0x09
67#define EN0_RCNTLO	0x0a
68#define EN0_RCNTHI	0x0b
69
70#define NE_DATA		0x10
71#define NE_RESET	0x1f
72
73#define ISR_RECEIVE 0x01
74#define ISR_TRANSMIT 0x02
75#define ISR_RECEIVE_ERROR 0x04
76#define ISR_TRANSMIT_ERROR 0x08
77#define ISR_OVERWRITE   0x10
78#define ISR_COUNTER	0x20
79#define ISR_DMADONE 0x40
80#define ISR_RESET   0x80
81
82#define EN0_RXCR	0xc
83#define EN0_TXCR	0xd
84#define EN0_DCFG	0xe
85#define EN0_IMR		0xf
86
87#define EN0_CNTR0	0x0d
88#define EN0_CNTR1	0x0e
89#define EN0_CNTR2	0x0f
90
91#define DCFG_BM8	0x48
92#define DCFG_BM16	0x49
93
94#define EN1_PHYS	0x1
95#define EN1_CURPAG	0x7
96#define EN1_MULT	0x8
97
98#define ENRXCR_MON	0x20
99#define ENRXCR_MCST	0x08
100#define ENRXCR_BCST	0x04
101
102#define TXCR_LOOPBACK	0x02
103
104#define ENC_PAGE0	0x00
105#define ENC_STOP	0x01
106#define ENC_START   0x02
107#define ENC_TRANS	0x04
108#define ENC_DMAREAD 0x08
109#define ENC_DMAWRITE 0x10
110#define ENC_NODMA	0x20
111#define ENC_PAGE1	0x40
112
113
114#define RSR_INTACT	0x01
115
116#define TSR_ABORTED		0x08
117#define TSR_UNDERRUN	0x20
118#define TSR_HEARTBEAT	0x40
119
120#define ETHER_ADDR_LEN 6
121
122/*
123 * Maximum iterations to poll before assuming error
124 */
125#define MAXWAIT 10000
126
127
128/*
129 * Swap the bytes in a short, but not on a little-endian machine
130 */
131static const union { long l; char b[4]; } ENDIAN_TEST = { 1 };
132#define LITTLE_ENDIAN ENDIAN_TEST.b[0]
133#define SWAPSHORT(x) (((x & 0xff) << 8) | ((x >> 8) & 0xff))
134#define swapshort(x) (LITTLE_ENDIAN ? (x) : SWAPSHORT(x))
135
136
137/*
138 * NS8390 ring header structure
139 */
140typedef struct ring_header	{
141	unsigned char status;
142	unsigned char next_packet;
143	unsigned short count;
144} ring_header;
145
146#endif
147