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

📄 sonic.h

📁 mips架构的bootloader,99左右的版本 但源代码现在没人更新了
💻 H
字号:
/************************************************************* * File: include/sonic.h * Purpose: Constant definitions for National Sonic Ethernet Chip * Author: Phil Bunce (pjb@carmel.com) * Revision History: *	960924	Added DW32 to support the SDP1000 board */#define SONIC_CR	(*(SONIC_BASE+0))#define SONIC_DCR	(*(SONIC_BASE+2))#define SONIC_RCR	(*(SONIC_BASE+4))#define SONIC_TCR	(*(SONIC_BASE+6))#define SONIC_IMR	(*(SONIC_BASE+8))#define SONIC_ISR	(*(SONIC_BASE+10))#define SONIC_UTDA	(*(SONIC_BASE+12))#define SONIC_CTDA	(*(SONIC_BASE+14))#define SONIC_TPS	(*(SONIC_BASE+16))#define SONIC_TFC	(*(SONIC_BASE+18))#define SONIC_TSA0	(*(SONIC_BASE+20))#define SONIC_TSA1	(*(SONIC_BASE+22))#define SONIC_TFS	(*(SONIC_BASE+24))#define SONIC_URDA	(*(SONIC_BASE+26))#define SONIC_CRDA	(*(SONIC_BASE+28))#define SONIC_CRBA0	(*(SONIC_BASE+30))#define SONIC_CRBA1	(*(SONIC_BASE+32))#define SONIC_RBWC0	(*(SONIC_BASE+34))#define SONIC_RBWC1	(*(SONIC_BASE+36))#define SONIC_EOBC	(*(SONIC_BASE+38))#define SONIC_URRA	(*(SONIC_BASE+40))#define SONIC_RSA	(*(SONIC_BASE+42))#define SONIC_REA	(*(SONIC_BASE+44))#define SONIC_RRP	(*(SONIC_BASE+46)) #define SONIC_RWP	(*(SONIC_BASE+48))#define SONIC_TRBA0	(*(SONIC_BASE+50))#define SONIC_TRBA1	(*(SONIC_BASE+52))#define SONIC_TBWC0	(*(SONIC_BASE+54))#define SONIC_TBWC1	(*(SONIC_BASE+56))#define SONIC_ADDR0	(*(SONIC_BASE+58))#define SONIC_ADDR1	(*(SONIC_BASE+60))#define SONIC_LLFA	(*(SONIC_BASE+62))#define SONIC_TTDA	(*(SONIC_BASE+64))#define SONIC_CEP	(*(SONIC_BASE+66))#define SONIC_CAP2	(*(SONIC_BASE+68))#define SONIC_CAP1	(*(SONIC_BASE+70))#define SONIC_CAP0	(*(SONIC_BASE+72))#define SONIC_CE	(*(SONIC_BASE+74))#define SONIC_CDP	(*(SONIC_BASE+76))#define SONIC_CDC	(*(SONIC_BASE+78))#define SONIC_SR	(*(SONIC_BASE+80))#define SONIC_WT0	(*(SONIC_BASE+82))#define SONIC_WT1	(*(SONIC_BASE+84))#define SONIC_RSC	(*(SONIC_BASE+86))#define SONIC_CRCT	(*(SONIC_BASE+88))#define SONIC_FAET	(*(SONIC_BASE+90))#define SONIC_MPT	(*(SONIC_BASE+92))#define SONIC_MDT	(*(SONIC_BASE+94))/* isr */#define ISR_BR		(1<<14)#define ISR_HBL		(1<<13)#define ISR_LCD		(1<<12)#define ISR_PINT	(1<<11)#define ISR_PKTRX	(1<<10)#define ISR_TXDN	(1<<9)#define ISR_TXER	(1<<8)#define ISR_TC		(1<<7)#define ISR_RDE		(1<<6)#define ISR_RBE		(1<<5)#define ISR_RBAE	(1<<4)#define ISR_CRC		(1<<3)#define ISR_FAE		(1<<2)#define ISR_MP		(1<<1)#define ISR_RFO		(1<<0)/* cr */#define CR_LCAM		(1<<9)#define CR_RRRA		(1<<8)#define CR_RST		(1<<7)#define CR_ST		(1<<5)#define CR_STP		(1<<4)#define CR_RXEN		(1<<3)#define CR_RXDIS	(1<<2)#define CR_TXP		(1<<1)#define CR_HTX		(1<<0)/* rcr */#define RCR_ERR		(1<<15)#define RCR_RNT		(1<<14)#define RCR_BRD		(1<<13)#define RCR_PRO		(1<<12)#define RCR_AMC		(1<<11)#define RCR_MAC		(1<<9)	/* MAC loopback */#define RCR_ENDEC	(2<<9)	/* ENDEC loopback */#define RCR_TXCVR	(3<<9)	/* Transceiver loopback */#define RCR_MC		(1<<8)#define RCR_BC		(1<<7)#define RCR_LPKT	(1<<6)#define RCR_CRS		(1<<5)#define RCR_COL		(1<<4)#define RCR_CRC		(1<<3)#define RCR_FAE		(1<<2)#define RCR_LBK		(1<<1)#define RCR_PRX		(1<<0)/* tcr */#define TCR_PTX		(1<<0)/* dcr */#define DCR_PO1		(1<<12)#define DCR_PO0		(1<<11)#define DCR_STERM	(1<<10)#define DCR_WAIT0	(0<<6)#define DCR_WAIT1	(1<<6)#define DCR_WAIT2	(2<<6)#define DCR_WAIT3	(3<<6)#define DCR_DW32	(1<<5)#define DCR_TFT1	(1<<1)#define DCR_TFT0	(1<<0)/* imr */#define IMR_BREN	(1<<14)#define IMR_HBLEN	(1<<13)#define IMR_LCDEN	(1<<12)#define IMR_PINTEN	(1<<11)#define IMR_PRXEN	(1<<10)#define IMR_PTXEN	(1<<9)#define IMR_TXEREN	(1<<8)#define IMR_TCEN	(1<<7)#define IMR_RDEEN	(1<<6)#define IMR_RBEEN	(1<<5)#define IMR_RBAEEN	(1<<4)#define IMR_CRCEN	(1<<3)#define IMR_FAEEN	(1<<2)#define IMR_MPEN	(1<<1)#define IMR_RFOEN	(1<<0)/*************** transmit descriptors **************************/#ifdef SONIC_DW32#ifdef MIPSEBtypedef struct TXrec {	Ushort d1;	Ushort status;	Ushort d2;	Ushort config;	Ushort d3;	Ushort pkt_size;	Ushort d4;	Ushort frag_count;	Ushort d5;	Ushort ptr0;	Ushort d6;	Ushort ptr1;	Ushort d7;	Ushort frag_size;	Ushort d8;	Ushort link;	} TXrec;#elsetypedef struct TXrec {	Ushort status;	Ushort d1;	Ushort config;	Ushort d2;	Ushort pkt_size;	Ushort d3;	Ushort frag_count;	Ushort d4;	Ushort ptr0;	Ushort d5;	Ushort ptr1;	Ushort d6;	Ushort frag_size;	Ushort d7;	Ushort link;	Ushort d8;	} TXrec;#endif#elsetypedef struct TXrec {	Ushort status;	Ushort config;	Ushort pkt_size;	Ushort frag_count;	Ushort ptr0;	Ushort ptr1;	Ushort frag_size;	Ushort link;	} TXrec;#endif#define k1TXrec(p)	((TXrec *)k02k1(p))#define getTXptr(p)	((char *)phy2k1(((k1TXrec(p)->ptr1<<16)| \			k1TXrec(p)->ptr0)))#define putTXptr(p,q)	(k1TXrec(p)->ptr1=gethi(log2phy(q)), \			 k1TXrec(p)->ptr0=getlo(log2phy(q)) )#define getTXlink(p)	((TXrec *)phy2k1(((SONIC_UTDA<<16)| \			(k1TXrec(p)->link&~1))))#define putTXlink(p,q,f) (k1TXrec(p)->link=(getlo(log2phy(q))|f))#define getCTDA()	((TXrec *)phy2k1((SONIC_UTDA<<16)|(SONIC_CTDA&~1)))#define putCTDA(p)	(SONIC_UTDA=gethi(log2phy(p)), \			 SONIC_CTDA=getlo(log2phy(p)))/*************** receive descriptors **************************/#ifdef SONIC_DW32#ifdef MIPSEBtypedef struct RXrec {			/* Receive descriptor */	Ushort d1;	Ushort status;	Ushort d2;	Ushort byte_count;	Ushort d3;	Ushort ptr0;	/* ls half off addr */	Ushort d4;	Ushort ptr1;	/* ms half off addr */	Ushort d5;	Ushort seq_no;	Ushort d6;	Ushort link;	/* lsb = 1 = End of List */	Ushort d7;	Ushort in_use;	/* 0=full 0xffff=empty */	} RXrec;#elsetypedef struct RXrec {			/* Receive descriptor */	Ushort status;	Ushort d1;	Ushort byte_count;	Ushort d2;	Ushort ptr0;	/* ls half off addr */	Ushort d3;	Ushort ptr1;	/* ms half off addr */	Ushort d4;	Ushort seq_no;	Ushort d5;	Ushort link;	/* lsb = 1 = End of List */	Ushort d6;	Ushort in_use;	/* 0=full 0xffff=empty */	Ushort d7;	} RXrec;#endif#elsetypedef struct RXrec {			/* Receive descriptor */	Ushort status;	Ushort byte_count;	Ushort ptr0;	/* ls half off addr */	Ushort ptr1;	/* ms half off addr */	Ushort seq_no;	Ushort link;	/* lsb = 1 = End of List */	Ushort in_use;	/* 0=full 0xffff=empty */	} RXrec;#endif#define k1RXrec(p)	((RXrec *)k02k1(p))#define EMPTY   0xffff 	/* in_use=empty, avail for use by SONIC */#define FULL 	0 	/* in_use=full, ready for processing */#define getRXptr(p)	((struct ether_header *) \				phy2k1(((k1RXrec(p)->ptr1<<16)| \				k1RXrec(p)->ptr0)))#define getRXlink(p)	((RXrec *)phy2k1(((SONIC_URDA<<16)|k1RXrec(p)->link)))#define putRXlink(p,q)	(k1RXrec(p)->link=getlo(log2phy(q)))#define EOL 		0x0001#define LPKT		(1<<6)	/* status bit */#define getCRDA()	((RXrec *)phy2k1((SONIC_URDA<<16)|(SONIC_CRDA)))#define putCRDA(p)	(SONIC_URDA=gethi(log2phy(p)), \			 SONIC_CRDA=getlo(log2phy(p)))#define getRXpseq(p)	((k1RXrec(p)->seq_no) & 0xff)#define getRXrseq(p)	((k1RXrec(p)->seq_no)>>8)/*************** receive resources **************************/#ifdef SONIC_DW32#ifdef MIPSEBtypedef struct RRrec {			/* Receive Resource */	Ushort d1;	Ushort ptr0;	Ushort d2;	Ushort ptr1;	Ushort d3;	Ushort wc0;	Ushort d4;	Ushort wc1;	} RRrec;#elsetypedef struct RRrec {			/* Receive Resource */	Ushort ptr0;	Ushort d1;	Ushort ptr1;	Ushort d2;	Ushort wc0;	Ushort d3;	Ushort wc1;	Ushort d4;	} RRrec;#endif#elsetypedef struct RRrec {			/* Receive Resource */	Ushort ptr0;	Ushort ptr1;	Ushort wc0;	Ushort wc1;	} RRrec;#endif#define k1RRrec(p)	((RRrec *)k02k1(p))#define putRRptr(p,q)	(k1RRrec(p)->ptr1 = gethi(log2phy(q)), \			 k1RRrec(p)->ptr0 = getlo(log2phy(q)) )#define getRRptr(p)	((char *)phy2k1(((k1RRrec(p)->ptr1<<16)|(p)->ptr0)))#define putRRwc(p,n)	(k1RRrec(p)->wc1 = (((Ulong)(n))>>17), \			 k1RRrec(p)->wc0 = ((((Ushort)(n))>>1) & 0xffff) )#define getRSA()	((RRrec *)phy2k1((SONIC_URRA<<16)|(SONIC_RSA)))#define getREA()	((RRrec *)phy2k1((SONIC_URRA<<16)|(SONIC_REA)))#define getRWP()	((RRrec *)phy2k1((SONIC_URRA<<16)|(SONIC_RWP)))#define getRRP()	((RRrec *)phy2k1((SONIC_URRA<<16)|(SONIC_RRP)))#define putRSA(p)	(SONIC_URRA=gethi(log2phy(p)), \			 SONIC_RSA=getlo(log2phy(p)))#define putREA(p)	(SONIC_URRA=gethi(log2phy(p)), \			 SONIC_REA=getlo(log2phy(p)))#define putRWP(p)	(SONIC_URRA=gethi(log2phy(p)), \			 SONIC_RWP=getlo(log2phy(p)))#define putRRP(p)	(SONIC_URRA=gethi(log2phy(p)), \			 SONIC_RRP=getlo(log2phy(p)))

⌨️ 快捷键说明

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