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