⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 amd79c970.h

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 H
字号:
/* *  COPYRIGHT (c) 1998 by Radstone Technology * * * THIS FILE IS PROVIDED TO YOU, THE USER, "AS IS", WITHOUT WARRANTY OF ANY * KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK * AS TO THE QUALITY AND PERFORMANCE OF ALL CODE IN THIS FILE IS WITH YOU. * * You are hereby granted permission to use, copy, modify, and distribute * this file, provided that this notice, plus the above copyright notice * and disclaimer, appears in all copies. Radstone Technology will provide * no support for this code. * */#ifndef _PCNET_H#define _PCNET_H/* * IO space structure for the AMD79C970 device  */typedef volatile struct pc_net{	union	{		struct {			unsigned16	aprom[8];  /* 0x00 */			unsigned16	rdp;	   /* 0x10 */			unsigned16	rap;	   /* 0x14 */			unsigned16	reset;	   /* 0x18 */			unsigned16	bdp;	   /* 0x1C */		} wio;		struct {			unsigned32	aprom[4];  /* 0x00 */			unsigned32	rdp;	   /* 0x10 */			unsigned32	rap;	   /* 0x12 */			unsigned32	reset;	   /* 0x14 */			unsigned32	bdp;	   /* 0x16 */		} dwio;	} u;} pc_net_t;/* * The EEPROM is 2Kbit (128bytes) */#define EEPROM_SIZE 128#define EEPROM_HEAD_SIZE 36typedef struct pc_net_eeprom {	unsigned8	EthNumber[6];	unsigned16	Reserved1;	/* Must be 0x0000 */	unsigned16	Reserved2;	/* Must be 0x1000 */	unsigned16	User1;	unsigned16	checksum;	unsigned16	Reserved3;	/* Must be 0x5757 */	unsigned16	bcr16;	unsigned16	bcr17;	unsigned16	bcr18;	unsigned16	bcr2;	unsigned16	bcr21;	unsigned16	Reserved4;	/* Must be 0x0000 */	unsigned16	Reserved5;	/* Must be 0x0000 */	unsigned8	Reserved6;	/* Must be 0x00 */	unsigned8	checksumAdjust;	unsigned16	Reserved7;	/* Must be 0x0000 */	unsigned16	crc;		/* CCITT checksum from Serial[] onwards */	unsigned8	Serial[16];	/* Radstone Serial Number */} pc_net_eeprom_t;/* * PCnet-PCI Single Chip Ethernet Controller for PCI Local Bus  *//* * Register and bit definitions  */#define	CSR0	0#define	CSR1	1#define	CSR2	2#define	CSR3	3#define	CSR4	4#define	CSR5	5#define	CSR6	6#define	CSR7	7#define	CSR8	8#define	CSR9	9#define	CSR15	15#define	CSR47	47#define	CSR82	82	/* Bus Activity Timer */#define	CSR100	100	/* Memory Error Timeout register */#define	CSR114	114#define	CSR122	122	/* Receiver Packet Alignment Register */#define	BCR2	2	/* Misc. Configuration */#define	BCR18	18	/* Bus size and burst control */#define DEFAULT_BCR18 0x2162 /* default BCR18 value - was 0x21e2*/#define	BCR19	19#define	BCR20	20	/* Software Style */#define	BCR21	21#define	APROM0	0x00#define	APROM1	0x04#define	APROM2	0x08/* * CSR0: Bit definitions  */#define CSR0_ERR	0x8000	/* error summary */#define CSR0_BABL	0x4000	/* babble error */#define CSR0_CERR	0x2000	/* collision error */#define CSR0_MISS	0x1000	/* missed packet */#define CSR0_MERR	0x0800	/* memory error */#define CSR0_RINT	0x0400	/* receiver interrupt */#define CSR0_TINT	0x0200	/* transmitter interrupt */#define CSR0_IDON	0x0100	/* initialization done */#define CSR0_INTR	0x0080	/* interrupt flag */#define CSR0_IENA	0x0040	/* interrupt enable */#define CSR0_RXON	0x0020	/* receiver on */#define CSR0_TXON	0x0010	/* transmitter on */#define CSR0_TDMD	0x0008	/* transmit demand */#define CSR0_STOP	0x0004	/* stop the ilacc */#define CSR0_STRT	0x0002	/* start the ilacc */#define CSR0_INIT	0x0001	/* initialize the ilacc */#define CSR3_BABLM	0x4000	/* BABL Mask */#define CSR3_MISSM	0x1000	/* Missed packet Mask */#define CSR3_MERRM	0x0800	/* Memory error Mask */#define CSR3_RINTM	0x0400	/* Receive Interrupt Mask */#define CSR3_TINTM	0x0200	/* Transmit Interrupt Mask */#define CSR3_IDONM	0x0100	/* Initialization Done Mask */#define CSR3_DXSUFLO	0x0040	/* Disable tx stop on underrun */#define CSR3_LAPPEN	0x0020	/* lookahead packet proc enable */#define CSR3_DXMT2PD	0x0010	/* disable 2 part deferral */#define CSR3_EMBA	0x0008	/* enable modified backoff */#define CSR3_BSWP	0x0004	/* byte swap */#define CSR4_DMAPLUS	0x4000	/* DMA burst transfer until FIFO empty */#define CSR4_BACON_68K  0x0040	/* 32 bit 680x0 */#define	CSR4_TXSTRT	0x0008	/* Transmit STaRT status */#define CSR4_TXSTRTM	0x0004	/* Transmit STaRT interrupt Mask  */#define CSR4_ENTST	0x8000	/* enable test mode */#define CSR4_TIMER	0x2000	/* enable bus timer csr82 */#define CSR4_DPOLL	0x1000	/* disable tx polling */#define CSR4_APADXMIT	0x0800	/* auto pad tx to 64 */#define CSR4_ASTRPRCV	0x0400	/* auto strip rx pad and fcs */#define CSR4_MFCO	0x0200	/* missed frame counter oflo interrupt */#define CSR4_MFCOM	0x0100	/* mask to disable */#define CSR4_RCVCCO	0x0020	/* rx collision counter oflo interrupt */#define CSR4_RCVCCOM	0x0010	/* mask to disable */#define CSR4_JAB	0x0002	/* jabber error 10baseT interrupt */#define CSR4_JABM	0x0001	/* mask to disable */#define CSR5_SPND	0x0001	/* Suspend */#define CSR15_PROM	0x8000	/* Promiscuous */#define CSR15_DRCVBC	0x4000	/* Disable receiver broadcast */#define CSR15_DRCVPA	0x2000	/* Disable receiver phys. addr. */#define CSR15_DLNKTST	0x1000	/* Disable link status */#define CSR15_DAPC	0x0800	/* Disable auto polarity det. */#define CSR15_MENDECL	0x0400	/* MENDEC loopback mode */#define CSR15_LRT	0x0200	/* Low receiver threshold */#define CSR15_TSEL	0x0200	/* Transmit mode select */#define CSR15_INTL	0x0040	/* Internal loopback */#define CSR15_DRTY	0x0020	/* Disable retry */#define CSR15_FCOLL	0x0010	/* Force collision */#define CSR15_DXMTFCS	0x0008	/* Disable transmit CRC */#define CSR15_LOOP	0x0004	/* Loopback enable */#define CSR15_DTX	0x0002	/* Disable transmitter */#define CSR15_DRX	0x0001	/* Disable receiver */#define CSR58_PCISTYLE	0x0002	/* software style */#define CSR80_RCVFW16	(0<<12)	/* fifo level to trigger rx dma */#define CSR80_RCVFW32	(1<<12)#define CSR80_RCVFW64	(2<<12)#define CSR80_XMTSP4	(0<<10)	/* fifo level to trigger tx */#define CSR80_XMTSP16	(1<<10)#define CSR80_XMTSP64	(2<<10)#define CSR80_XMTSP112	(3<<10)#define CSR80_XMTFW16	(0<<8)	/* fifo level to stop dma */#define CSR80_XMTFW32	(1<<8)#define CSR80_XMTFW64	(2<<8)/* must also clear csr4 CSR4_DMAPLUS: */ #define CSR80_DMATC(x)	((x)&0xff)	/* max transfers per burst. deflt 16 *//* * must also set csr4 CSR4_TIMER:  */#define CSR82_DMABAT(x)	((x)&0xffff)	/* max burst time nanosecs*100 */#define BCR18_MUSTSET	0x0100	/* this bit must be written as 1 !! */#define BCR18_BREADE	0x0040	/* linear burst enable. yes ! on pci */#define BCR18_BWRITE	0x0020	/* in write direction */#define BCR18_LINBC4	0x0001	/* linear burst count 4 8 or 16 */#define BCR18_LINBC8	0x0002	/* NOTE LINBC must be <= fifo trigger*/#define BCR18_LINBC16	0x0004#define BCR19_PVALID	0x8000	/* aprom (eeprom) read checksum ok *//* * initial setting of csr0  */#define CSR0_IVALUE	(CSR0_IDON | CSR0_IENA | CSR0_STRT | CSR0_INIT)/* * our setting of csr3  */#define CSR3_VALUE	(CSR3_ACON | CSR3_BSWP)/* * Initialization Block. *	Chip initialization includes the reading of the init block to obtain *	the operating parameters. * * This essentially consists of 7, 32 bit LE words. In the following the * fields are ordered so that they map correctly in BE mode, however each * 16 and 32 byte field will require swapping. */typedef volatile struct initblk {	/* mode can be set in csr15 */	unsigned16	ib_mode;	/* Chip's operating parameters */	unsigned8	ib_rlen;	/* rx ring length (power of 2) */	unsigned8	ib_tlen;	/* tx ring length (power of 2) *//* * The bytes must be swapped within the word, so that, for example, * the address 8:0:20:1:25:5a is written in the order *             0 8 1 20 5a 25 * For PCI970 that is long word swapped: so no swapping needed, since  * the bus will swap. */	unsigned8	ib_padr[8];	/* physical address */	unsigned16	ib_ladrf[4];	/* logical address filter */	unsigned32	ib_rdra;	/* rcv ring desc addr */	unsigned32	ib_tdra;	/* xmit ring desc addr */} initblk_t;/* * bits in mode register: allows alteration of the chips operating parameters  */#define IBM_PROM	0x8000	/* promiscuous mode *//* * mode is also in cr15  */#define MODE_DRCVBC	0x4000	/* disable receive broadcast */#define MODE_DRCVPA	0x2000	/* disable receive physical address */#define MODE_DLNKTST	0x1000	/* disable link status monitoring 10T */#define MODE_DAPC	0x0800	/* disable auto polarity 10T */#define MODE_MENDECL	0x0400	/* mendec loopback */#define MODE_LRT	0x0200	/* low receive threshold/tx mode sel tmau */#define MODE_PORTSEL10T	0x0080	/* port select 10T ?? */#define MODE_PORTSELAUI	0x0000	/* port select aui ?? */#define IBM_INTL	0x0040	/* internal loopback */#define IBM_DRTY	0x0020	/* disable retry */#define IBM_COLL	0x0010	/* force collision */#define IBM_DTCR	0x0008	/* disable transmit crc */#define IBM_LOOP	0x0004	/* loopback */#define IBM_DTX		0x0002	/* disable transmitter */#define IBM_DRX		0x0001	/* disable receiver *//*  * Buffer Management is accomplished through message descriptors organized * in ring structures in main memory. There are two rings allocated for the * device: a receive ring and a transmit ring. The following defines the  * structure of the descriptor rings. *//* *                  Receive  List type definition                             * * This essentially consists of 4, 32 bit LE words. In the following the * fields are ordered so that they map correctly in BE mode, however each * 16 and 32 byte field will require swapping. */typedef volatile struct rmde {	unsigned32	rmde_addr;	/* buf addr */	unsigned16	rmde_bcnt; 	unsigned16	rmde_flags;	unsigned16	rmde_mcnt;	unsigned16	rmde_misc;	unsigned32	align;} rmde_t;/* * bits in the flags field  */#define RFLG_OWN	0x8000	/* ownership bit, 1==LANCE */#define RFLG_ERR	0x4000	/* error summary */#define RFLG_FRAM	0x2000	/* framing error */#define RFLG_OFLO	0x1000	/* overflow error */#define RFLG_CRC	0x0800	/* crc error */#define RFLG_BUFF	0x0400	/* buffer error */#define RFLG_STP	0x0200	/* start of packet */#define RFLG_ENP	0x0100	/* end of packet *//* * bits in the buffer byte count field  */#define RBCNT_ONES	0xf000	/* must be ones */#define RBCNT_BCNT	0x0fff	/* buf byte count, in 2's compl *//* * bits in the message byte count field  */#define RMCNT_RES	0xf000	/* reserved, read as zeros */#define RMCNT_BCNT	0x0fff	/* message byte count *//* *                  Transmit List type definition                             * * This essentially consists of 4, 32 bit LE words. In the following the * fields are ordered so that they map correctly in BE mode, however each * 16 and 32 byte field will require swapping. */typedef volatile struct tmde {    	unsigned32	tmde_addr;	/* buf addr */	unsigned16	tmde_bcnt; 	unsigned16	tmde_status;	/* misc error and status bits */	unsigned32	tmde_error;	unsigned32	align;} tmde_t;/* * bits in the status field  */#define TST_OWN		0x8000	/* ownership bit, 1==LANCE */#define TST_ERR		0x4000	/* error summary */#define TST_RES		0x2000	/* reserved bit */#define TST_MORE	0x1000	/* more than one retry was needed */#define TST_ONE		0x0800	/* one retry was needed */#define TST_DEF		0x0400	/* defer while trying to transmit */#define TST_STP		0x0200	/* start of packet */#define TST_ENP		0x0100	/* end of packet *//* * setting of status field when packet is to be transmitted  */#define TST_XMIT	(TST_STP | TST_ENP | TST_OWN)/* * bits in the buffer byte count field  */#define TBCNT_ONES	0xf000	/* must be ones */#define TBCNT_BCNT	0x0fff	/* buf byte count, in 2's compl *//* * bits in the error field  */#define TERR_BUFF	0x8000	/* buffer error */#define TERR_UFLO	0x4000	/* underflow error */#define TERR_EXDEF	0x2000	/* excessive deferral */#define TERR_LCOL	0x1000	/* late collision */#define TERR_LCAR	0x0800	/* loss of carrier */#define TERR_RTRY	0x0400	/* retry error */#define TERR_TDR	0x03ff	/* time domain reflectometry *//* * Defines pertaining to statistics gathering (diagnostic only) *//* * receive errors  */#define ERR_FRAM	0	/* framing error */#define ERR_OFLO	1	/* overflow error */#define ERR_CRC		2	/* crc error */#define ERR_RBUFF	3	/* receive buffer error *//* * transmit errors  */#define ERR_MORE	4	/* more than one retry */#define ERR_ONE		5	/* one retry */#define ERR_DEF		6	/* defer'd packet */#define ERR_TBUFF	7	/* transmit buffer error */#define ERR_UFLO	8	/* underflow error */#define ERR_LCOL	9	/* late collision */#define ERR_LCAR	10	/* loss of carrier */#define ERR_RTRY	11	/* retry error, >16 retries *//* * errors reported in csr0  */#define ERR_BABL	12	/* transmitter timeout error */#define ERR_MISS	13	/* missed packet */#define ERR_MEM		14	/* memory error */#define ERR_CERR	15	/* collision errors */#define XMIT_INT	16	/* transmit interrupts */#define RCV_INT		17	/* receive interrupts */#define NHARD_ERRORS	18	/* error types used in diagnostic *//* * other statistics  */#define ERR_TTOUT	18	/* transmit timeouts */#define ERR_ITOUT	19	/* init timeouts */#define ERR_INITS	20	/* reinitializations */#define ERR_RSILO	21	/* silo ptrs misaligned on recv */#define ERR_TSILO	22	/* silo ptrs misaligned on xmit */#define ERR_SINTR	23	/* spurious interrupts */#define NUM_ERRORS	24	/* number of errors types *//* * Bit definitions for BCR19  */#define	prom_EDI	(unsigned16)0x0001#define	prom_EDO	(unsigned16)0x0001#define	prom_ESK	(unsigned16)0x0002#define	prom_ECS	(unsigned16)0x0004#define	prom_EEN	(unsigned16)0x0010#define	prom_EEDET	(unsigned16)0x2000#define	prom_PVALID	(unsigned16)0x8000#define	prom_PREAD	(unsigned16)0x4000#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -