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