xref: /csrg-svn/sys/luna68k/dev/if_lereg.h (revision 55582)
154001Sfujita /*
2*55582Sfujita  * Copyright (c) 1982, 1990 The Regents of the University of California.
354001Sfujita  * All rights reserved.
454001Sfujita  *
554001Sfujita  * %sccs.include.redist.c%
654001Sfujita  *
7*55582Sfujita  * from: hp300/dev/if_lereg.h	7.4 (Berkeley) 7/6/92
8*55582Sfujita  *
9*55582Sfujita  *	@(#)if_lereg.h	7.2 (Berkeley) 07/23/92
1054001Sfujita  */
1154001Sfujita 
12*55582Sfujita #ifdef KERNEL
13*55582Sfujita #include "iotypes.h"	/* XXX */
14*55582Sfujita #else
15*55582Sfujita #include <luna68k/dev/iotypes.h>	/* XXX */
16*55582Sfujita #endif
17*55582Sfujita 
1854001Sfujita #define	LEID		21
1954001Sfujita 
2054001Sfujita #define	LEMTU		1518
2154001Sfujita #define	LEMINSIZE	60	/* should be 64 if mode DTCR is set */
2254001Sfujita #define	LERBUF		8
2354001Sfujita #define	LERBUFLOG2	3
2454001Sfujita #define	LE_RLEN		(LERBUFLOG2 << 13)
2554001Sfujita #define	LETBUF		2
2654001Sfujita #define	LETBUFLOG2	1
2754001Sfujita #define	LE_TLEN		(LETBUFLOG2 << 13)
2854001Sfujita 
2954001Sfujita /*
3054001Sfujita  * LANCE registers.
3154001Sfujita  */
3254001Sfujita struct lereg0 {
3354001Sfujita 	u_char	ler0_pad0;
3454001Sfujita 	vu_char	ler0_id;	/* ID */
3554001Sfujita 	u_char	ler0_pad1;
3654001Sfujita 	vu_char	ler0_status;	/* interrupt enable/status */
3754001Sfujita };
3854001Sfujita 
3954001Sfujita struct lereg1 {
4054001Sfujita 	u_short	ler1_rdp;	/* data port */
4154001Sfujita 	u_short	ler1_rap;	/* register select port */
4254001Sfujita };
4354001Sfujita 
4454001Sfujita /*
4554001Sfujita  * Overlayed on 16K dual-port RAM.
46*55582Sfujita  * Current size is 15,284 bytes with 8 x 1518 receive buffers and
47*55582Sfujita  * 2 x 1518 transmit buffers.
4854001Sfujita  */
4954001Sfujita struct lereg2 {
5054001Sfujita 	/* init block */
5154001Sfujita 	u_short	ler2_mode;		/* +0x0000 */
5254001Sfujita 	u_char	ler2_padr[6];		/* +0x0002 */
53*55582Sfujita 	u_long	ler2_ladrf[2];		/* +0x0008 */
5454001Sfujita 	u_short	ler2_rdra;		/* +0x0010 */
5554001Sfujita 	u_short	ler2_rlen;		/* +0x0012 */
5654001Sfujita 	u_short	ler2_tdra;		/* +0x0014 */
5754001Sfujita 	u_short	ler2_tlen;		/* +0x0016 */
5854001Sfujita 	/* receive message descriptors */
5954001Sfujita 	struct	lermd {			/* +0x0018 */
6054001Sfujita 		u_short	rmd0;
6154001Sfujita 		u_short	rmd1;
6254001Sfujita 		short	rmd2;
6354001Sfujita 		u_short	rmd3;
6454001Sfujita 	} ler2_rmd[LERBUF];
6554001Sfujita 	/* transmit message descriptors */
6654001Sfujita 	struct	letmd {			/* +0x0058 */
6754001Sfujita 		u_short	tmd0;
6854001Sfujita 		u_short	tmd1;
6954001Sfujita 		short	tmd2;
7054001Sfujita 		u_short	tmd3;
7154001Sfujita 	} ler2_tmd[LETBUF];
72*55582Sfujita 	char	ler2_rbuf[LERBUF][LEMTU]; /* +0x0068 */
73*55582Sfujita 	char	ler2_tbuf[LETBUF][LEMTU]; /* +0x2FD8 */
7454001Sfujita };
7554001Sfujita 
7654001Sfujita /*
7754001Sfujita  * Control and status bits -- lereg0
7854001Sfujita  */
7954001Sfujita #define	LE_IE		0x80		/* interrupt enable */
8054001Sfujita #define	LE_IR		0x40		/* interrupt requested */
8154001Sfujita #define	LE_LOCK		0x08		/* lock status register */
8254001Sfujita #define	LE_ACK		0x04		/* ack of lock */
8354001Sfujita #define	LE_JAB		0x02		/* loss of tx clock (???) */
8454001Sfujita 
8554001Sfujita /*
8654001Sfujita  * Control and status bits -- lereg1
8754001Sfujita  */
8854001Sfujita #define	LE_CSR0		0
8954001Sfujita #define	LE_CSR1		1
9054001Sfujita #define	LE_CSR2		2
9154001Sfujita #define	LE_CSR3		3
9254001Sfujita 
9354001Sfujita #define	LE_SERR		0x8000
9454001Sfujita #define	LE_BABL		0x4000
9554001Sfujita #define	LE_CERR		0x2000
9654001Sfujita #define	LE_MISS		0x1000
9754001Sfujita #define	LE_MERR		0x0800
9854001Sfujita #define	LE_RINT		0x0400
9954001Sfujita #define	LE_TINT		0x0200
10054001Sfujita #define	LE_IDON		0x0100
10154001Sfujita #define	LE_INTR		0x0080
10254001Sfujita #define	LE_INEA		0x0040
10354001Sfujita #define	LE_RXON		0x0020
10454001Sfujita #define	LE_TXON		0x0010
10554001Sfujita #define	LE_TDMD		0x0008
10654001Sfujita #define	LE_STOP		0x0004
10754001Sfujita #define	LE_STRT		0x0002
10854001Sfujita #define	LE_INIT		0x0001
10954001Sfujita 
11054001Sfujita #define	LE_BSWP		0x4
11154001Sfujita #define	LE_MODE		0x0
11254001Sfujita 
11354001Sfujita /*
11454001Sfujita  * Control and status bits -- lereg2
11554001Sfujita  */
11654001Sfujita #define	LE_OWN		0x8000
11754001Sfujita #define	LE_ERR		0x4000
11854001Sfujita #define	LE_STP		0x0200
11954001Sfujita #define	LE_ENP		0x0100
12054001Sfujita 
12154001Sfujita #define	LE_FRAM		0x2000
12254001Sfujita #define	LE_OFLO		0x1000
12354001Sfujita #define	LE_CRC		0x0800
12454001Sfujita #define	LE_RBUFF	0x0400
12554001Sfujita #define	LE_MORE		0x1000
12654001Sfujita #define	LE_ONE		0x0800
12754001Sfujita #define	LE_DEF		0x0400
12854001Sfujita #define	LE_TBUFF	0x8000
12954001Sfujita #define	LE_UFLO		0x4000
13054001Sfujita #define	LE_LCOL		0x1000
13154001Sfujita #define	LE_LCAR		0x0800
13254001Sfujita #define	LE_RTRY		0x0400
133