/* 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 */
};