176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/**************************************************************************
276d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanETHERBOOT -  BOOTP/TFTP Bootstrap Program
376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
476d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanAuthor: Martin Renters
576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman  Date: Jun/94
676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**************************************************************************/
876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanFILE_LICENCE ( BSD2 );
1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define VENDOR_NONE	0
1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define VENDOR_WD	1
1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define VENDOR_NOVELL	2
1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define VENDOR_3COM	3
1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define FLAG_PIO	0x01
1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define FLAG_16BIT	0x02
1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define FLAG_790	0x04
1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define MEM_8192	32
2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define MEM_16384	64
2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define MEM_32768	128
2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	ISA_MAX_ADDR	0x400
2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/**************************************************************************
2776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanWestern Digital/SMC Board Definitions
2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**************************************************************************/
2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_LOW_BASE	0x200
3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_HIGH_BASE	0x3e0
3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef	WD_DEFAULT_MEM
3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_DEFAULT_MEM	0xD0000
3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif
3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_NIC_ADDR	0x10
3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/**************************************************************************
3776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanWestern Digital/SMC ASIC Addresses
3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**************************************************************************/
3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_MSR		0x00
4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_ICR		0x01
4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_IAR		0x02
4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_BIO		0x03
4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_IRR		0x04
4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_LAAR		0x05
4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_IJR		0x06
4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_GP2		0x07
4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_LAR		0x08
4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_BID		0x0E
4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_ICR_16BIT	0x01
5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_MSR_MENB	0x40
5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_LAAR_L16EN	0x40
5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_LAAR_M16EN	0x80
5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WD_SOFTCONFIG	0x20
5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/**************************************************************************
6076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanWestern Digital/SMC Board Types
6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**************************************************************************/
6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_WD8003S	0x02
6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_WD8003E	0x03
6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_WD8013EBT	0x05
6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_WD8003W	0x24
6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_WD8003EB	0x25
6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_WD8013W	0x26
6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_WD8013EP	0x27
6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_WD8013WC	0x28
7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_WD8013EPC	0x29
7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_SMC8216T	0x2a
7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_SMC8216C	0x2b
7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_SMC8416T	0x00	/* Bogus entries: the 8416 generates the */
7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_SMC8416C	0x00	/* the same codes as the 8216. */
7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define TYPE_SMC8013EBP	0x2c
7676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/**************************************************************************
7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman3com 3c503 definitions
7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**************************************************************************/
8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef	_3COM_BASE
8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_BASE 0x300
8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif
8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_TX_PAGE_OFFSET_8BIT     0x20
8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_TX_PAGE_OFFSET_16BIT    0x0
8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_RX_PAGE_OFFSET_16BIT    0x20
8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
8976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_ASIC_OFFSET 0x400
9076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_NIC_OFFSET 0x0
9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_PSTR            0
9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_PSPR            1
9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
9576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_BCFR            3
9676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_BCFR_2E0        0x01
9776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_BCFR_2A0        0x02
9876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_BCFR_280        0x04
9976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_BCFR_250        0x08
10076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_BCFR_350        0x10
10176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_BCFR_330        0x20
10276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_BCFR_310        0x40
10376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_BCFR_300        0x80
10476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_PCFR            4
10576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_PCFR_PIO        0
10676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_PCFR_C8000      0x10
10776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_PCFR_CC000      0x20
10876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_PCFR_D8000      0x40
10976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_PCFR_DC000      0x80
11076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_CR              6
11176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_CR_RST          0x01    /* Reset GA and NIC */
11276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_CR_XSEL         0x02    /* Transceiver select. BNC=1(def) AUI=0 */
11376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_CR_EALO         0x04    /* window EA PROM 0-15 to I/O base */
11476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_CR_EAHI         0x08    /* window EA PROM 16-31 to I/O base */
11576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_CR_SHARE        0x10    /* select interrupt sharing option */
11676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_CR_DBSEL        0x20    /* Double buffer select */
11776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_CR_DDIR         0x40    /* DMA direction select */
11876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_CR_START        0x80    /* Start DMA controller */
11976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_GACFR           5
12076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_GACFR_MBS0      0x01
12176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_GACFR_MBS1      0x02
12276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_GACFR_MBS2      0x04
12376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_GACFR_RSEL      0x08    /* enable shared memory */
12476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_GACFR_TEST      0x10    /* for GA testing */
12576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_GACFR_OWS       0x20    /* select 0WS access to GA */
12676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_GACFR_TCM       0x40    /* Mask DMA interrupts */
12776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_GACFR_NIM       0x80    /* Mask NIC interrupts */
12876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_STREG           7
12976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_STREG_REV       0x07    /* GA revision */
13076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_STREG_DIP       0x08    /* DMA in progress */
13176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_STREG_DTC       0x10    /* DMA terminal count */
13276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_STREG_OFLW      0x20    /* Overflow */
13376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_STREG_UFLW      0x40    /* Underflow */
13476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_STREG_DPRDY     0x80    /* Data port ready */
13576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IDCFR           8
13676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IDCFR_DRQ0      0x01    /* DMA request 1 select */
13776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IDCFR_DRQ1      0x02    /* DMA request 2 select */
13876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IDCFR_DRQ2      0x04    /* DMA request 3 select */
13976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IDCFR_UNUSED    0x08    /* not used */
14076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IDCFR_IRQ2      0x10    /* Interrupt request 2 select */
14176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IDCFR_IRQ3      0x20    /* Interrupt request 3 select */
14276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IDCFR_IRQ4      0x40    /* Interrupt request 4 select */
14376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IDCFR_IRQ5      0x80    /* Interrupt request 5 select */
14476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IRQ2      2
14576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IRQ3      3
14676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IRQ4      4
14776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_IRQ5      5
14876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_DAMSB           9
14976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_DALSB           0x0a
15076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_VPTR2           0x0b
15176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_VPTR1           0x0c
15276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_VPTR0           0x0d
15376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_RFMSB           0x0e
15476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _3COM_RFLSB           0x0f
15576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
15676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/**************************************************************************
15776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanNE1000/2000 definitions
15876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**************************************************************************/
15976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define NE_ASIC_OFFSET	0x10
16076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define NE_RESET	0x0F		/* Used to reset card */
16176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define NE_DATA		0x00		/* Used to read/write NIC mem */
16276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
16376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define COMPEX_RL2000_TRIES	200
16476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
16576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/**************************************************************************
16676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman8390 Register Definitions
16776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**************************************************************************/
16876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_COMMAND	0x00
16976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_PSTART		0x01
17076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_PSTOP		0x02
17176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_BOUND		0x03
17276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_TSR		0x04
17376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	D8390_P0_TPSR		0x04
17476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_TBCR0		0x05
17576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_TBCR1		0x06
17676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_ISR		0x07
17776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_RSAR0		0x08
17876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_RSAR1		0x09
17976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_RBCR0		0x0A
18076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_RBCR1		0x0B
18176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_RSR		0x0C
18276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_RCR		0x0C
18376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_TCR		0x0D
18476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_DCR		0x0E
18576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P0_IMR		0x0F
18676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P1_COMMAND	0x00
18776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P1_PAR0		0x01
18876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P1_PAR1		0x02
18976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P1_PAR2		0x03
19076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P1_PAR3		0x04
19176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P1_PAR4		0x05
19276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P1_PAR5		0x06
19376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P1_CURR		0x07
19476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_P1_MAR0		0x08
19576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
19676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_COMMAND_PS0	0x0		/* Page 0 select */
19776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_COMMAND_PS1	0x40		/* Page 1 select */
19876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_COMMAND_PS2	0x80		/* Page 2 select */
19976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	D8390_COMMAND_RD2	0x20		/* Remote DMA control */
20076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_COMMAND_RD1	0x10
20176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_COMMAND_RD0	0x08
20276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_COMMAND_TXP	0x04		/* transmit packet */
20376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_COMMAND_STA	0x02		/* start */
20476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_COMMAND_STP	0x01		/* stop */
20576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
20676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_RCR_MON		0x20		/* monitor mode */
20776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
20876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_DCR_FT1		0x40
20976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_DCR_LS		0x08		/* Loopback select */
21076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_DCR_WTS		0x01		/* Word transfer select */
21176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
21276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_ISR_PRX		0x01		/* successful recv */
21376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_ISR_PTX		0x02		/* successful xmit */
21476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_ISR_RXE		0x04		/* receive error */
21576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_ISR_TXE		0x08		/* transmit error */
21676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_ISR_OVW		0x10		/* Overflow */
21776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_ISR_CNT		0x20		/* Counter overflow */
21876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_ISR_RDC		0x40		/* Remote DMA complete */
21976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_ISR_RST		0x80		/* reset */
22076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
22176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_RSTAT_PRX		0x01		/* successful recv */
22276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_RSTAT_CRC		0x02		/* CRC error */
22376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_RSTAT_FAE		0x04		/* Frame alignment error */
22476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_RSTAT_OVER	0x08		/* FIFO overrun */
22576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
22676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_TXBUF_SIZE	6
22776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_RXBUF_END		32
22876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define D8390_PAGE_SIZE         256
22976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
23076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ringbuffer {
23176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	unsigned char status;
23276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	unsigned char next;
23376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	unsigned short len;
23476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman};
23576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*
23676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Local variables:
23776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *  c-basic-offset: 8
23876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * End:
23976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
24076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
241