|  | /* mostly stolen from FreeBSD if_de.c, if_devar.h */ | 
|  |  | 
|  | #define TULIP_CSR_READ(csr)		(membase[csr*2]) | 
|  | #define CSR_READ(csr)			(membase[csr*2]) | 
|  | #define TULIP_CSR_WRITE(csr, val)	(membase[csr*2] = val) | 
|  | #define CSR_WRITE(csr, val)		(membase[csr*2] = val) | 
|  |  | 
|  | #define csr_0			0 | 
|  | #define csr_1			1 | 
|  | #define csr_2			2 | 
|  | #define csr_3			3 | 
|  | #define csr_4			4 | 
|  | #define csr_5			5 | 
|  | #define csr_6			6 | 
|  | #define csr_7			7 | 
|  | #define csr_8			8 | 
|  | #define csr_9			9 | 
|  | #define csr_10			10 | 
|  | #define csr_11			11 | 
|  | #define csr_12			12 | 
|  | #define csr_13			13 | 
|  | #define csr_14			14 | 
|  | #define csr_15			15 | 
|  |  | 
|  | #define csr_busmode		csr_0 | 
|  | #define csr_txpoll		csr_1 | 
|  | #define csr_rxpoll		csr_2 | 
|  | #define csr_rxlist		csr_3 | 
|  | #define csr_txlist		csr_4 | 
|  | #define csr_status		csr_5 | 
|  | #define csr_command		csr_6 | 
|  | #define csr_intr		csr_7 | 
|  | #define csr_missed_frames	csr_8 | 
|  | #define csr_enetrom		csr_9		/* 21040 */ | 
|  | #define csr_reserved		csr_10		/* 21040 */ | 
|  | #define csr_full_duplex		csr_11		/* 21040 */ | 
|  | #define csr_bootrom		csr_10		/* 21041/21140A/?? */ | 
|  | #define csr_gp			csr_12		/* 21140* */ | 
|  | #define csr_watchdog		csr_15		/* 21140* */ | 
|  | #define csr_gp_timer		csr_11		/* 21041/21140* */ | 
|  | #define csr_srom_mii		csr_9		/* 21041/21140* */ | 
|  | #define csr_sia_status		csr_12		/* 2104x */ | 
|  | #define csr_sia_connectivity	csr_13		/* 2104x */ | 
|  | #define csr_sia_tx_rx		csr_14		/* 2104x */ | 
|  | #define csr_sia_general		csr_15		/* 2104x */ | 
|  |  | 
|  | #define SROMSEL		0x0800 | 
|  | #define SROMCS		0x0001 | 
|  | #define SROMCLKON	0x0002 | 
|  | #define SROMCLKOFF	0x0002 | 
|  | #define SROMRD		0x4000 | 
|  | #define SROMWR		0x2000 | 
|  | #define SROM_BITWIDTH	6 | 
|  | #define SROMCMD_RD	6 | 
|  | #define SROMCSON	0x0001 | 
|  | #define SROMDOUT	0x0004 | 
|  | #define SROMDIN		0x0008 | 
|  |  | 
|  |  | 
|  | struct txdesc { | 
|  | unsigned long	status;		/* owner, status */ | 
|  | unsigned long	buf1sz:11,	/* size of buffer 1 */ | 
|  | buf2sz:11,	/* size of buffer 2 */ | 
|  | control:10;	/* control bits */ | 
|  | const unsigned char *buf1addr;	/* buffer 1 address */ | 
|  | const unsigned char *buf2addr;	/* buffer 2 address */ | 
|  | }; | 
|  |  | 
|  | struct rxdesc { | 
|  | unsigned long	status;		/* owner, status */ | 
|  | unsigned long	buf1sz:11,	/* size of buffer 1 */ | 
|  | buf2sz:11,	/* size of buffer 2 */ | 
|  | control:10;	/* control bits */ | 
|  | unsigned char	*buf1addr;	/* buffer 1 address */ | 
|  | unsigned char	*buf2addr;	/* buffer 2 address */ | 
|  | }; |