1/*	$NetBSD: lance.h,v 1.1.1.1 1997/03/14 02:40:33 perry Exp $	*/
2
3/*
4 * source in this file came from
5 * the Mach ethernet boot written by Leendert van Doorn.
6 */
7
8/* RAP functions as a select for RDP */
9#define RDP_CSR0	0
10#define RDP_CSR1	1
11#define RDP_CSR2	2
12#define RDP_CSR3	3
13
14/* contents of csr0 */
15#define CSR_ERR		0x8000
16#define CSR_BABL	0x4000
17#define CSR_CERR	0x2000
18#define CSR_MISS	0x1000
19#define CSR_MERR	0x0800
20#define CSR_RINT	0x0400
21#define CSR_TINT	0x0200
22#define CSR_IDON	0x0100
23#define CSR_INTR	0x0080
24#define CSR_INEA	0x0040
25#define CSR_RXON	0x0020
26#define CSR_TXON	0x0010
27#define CSR_TDMD	0x0008
28#define CSR_STOP	0x0004
29#define CSR_STRT	0x0002
30#define CSR_INIT	0x0001
31
32/* csr1 contains low 16 bits of address of Initialization Block */
33
34/* csr2 contains in low byte high 8 bits of address of InitBlock */
35
36/* contents of csr3 */
37#define CSR3_BSWP	0x04	/* byte swap (for big endian) */
38#define CSR3_ACON	0x02	/* ALE control */
39#define CSR3_BCON	0x01	/* byte control */
40
41/*
42 * The initialization block
43 */
44typedef struct {
45	u_short	ib_mode;	/* modebits, see below */
46	char	ib_padr[6];	/* physical 48bit Ether-address */
47	u_short	ib_ladrf[4];	/* 64bit hashtable for "logical" addresses */
48	u_short	ib_rdralow;	/* low 16 bits of Receiver Descr. Ring addr */
49	u_char	ib_rdrahigh;	/* high 8 bits of Receiver Descr. Ring addr */
50	u_char	ib_rlen;	/* upper 3 bits are 2log Rec. Ring Length */
51	u_short	ib_tdralow;	/* low 16 bits of Transm. Descr. Ring addr */
52	u_char	ib_tdrahigh;	/* high 8 bits of Transm. Descr. Ring addr */
53	u_char	ib_tlen;	/* upper 3 bits are 2log Transm. Ring Length */
54} initblock_t;
55
56/* bits in mode */
57#define IB_PROM		0x8000
58#define IB_INTL		0x0040
59#define IB_DRTY		0x0020
60#define IB_COLL		0x0010
61#define IB_DTCR		0x0008
62#define IB_LOOP		0x0004
63#define IB_DTX		0x0002
64#define IB_DRX		0x0001
65
66/*
67 * A receive message descriptor entry
68 */
69typedef struct {
70	u_short	rmd_ladr;	/* low 16 bits of bufaddr */
71	char	rmd_hadr;	/* high 8 bits of bufaddr */
72	char	rmd_flags; 	/* see below */
73	short	rmd_bcnt;	/* two's complement of buffer byte count */
74	u_short	rmd_mcnt;	/* message byte count */
75} rmde_t;
76
77/* bits in flags */
78#define RMD_OWN		0x80
79#define RMD_ERR		0x40
80#define RMD_FRAM	0x20
81#define RMD_OFLO	0x10
82#define RMD_CRC		0x08
83#define RMD_BUFF	0x04
84#define RMD_STP		0x02
85#define RMD_ENP		0x01
86
87/*
88 * A transmit message descriptor entry
89 */
90typedef struct {
91	u_short	tmd_ladr;	/* low 16 bits of bufaddr */
92	u_char	tmd_hadr;	/* high 8 bits of bufaddr */
93	u_char	tmd_flags;	/* see below */
94	short	tmd_bcnt;	/* two's complement of buffer byte count */
95	u_short	tmd_err;	/* more error bits + TDR */
96} tmde_t;
97
98/* bits in flags */
99#define TMD_OWN		0x80
100#define TMD_ERR		0x40
101#define TMD_MORE	0x10
102#define TMD_ONE		0x08
103#define TMD_DEF		0x04
104#define TMD_STP		0x02
105#define TMD_ENP		0x01
106
107/* bits in tmd_err */
108#define TMDE_BUFF	0x8000
109#define TMDE_UFLO	0x4000
110#define TMDE_LCOL	0x1000
111#define TMDE_LCAR	0x0800
112#define TMDE_RTRY	0x0400
113#define TMDE_TDR	0x003F	/* mask for TDR */
114