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

📄 if_pn.h

📁 IXP425的BSP代码
💻 H
字号:
/* if_pn.h -  proNET-80 driver header file  *//* @(#)if_pn.h	2.2 8/20/86	(c) 1986 Proteon, Inc. *//*modification history--------------------01b,03sep88,gae  changed PNTIMEOUT from 10.01a,06nov87,rdc  written.*/#ifndef	INCpnh#define	INCpnhstruct pn_header {    /* the first two fields are required by the hardware */    u_char  vh_dhost;  /* destination address */    u_char  vh_shost;  /* source address */    /* the next three fields are the local network header */    u_char  vh_version;    /* header version */    u_char  vh_type;       /* packer type => protocol number */    u_short vh_info;       /* protocol-specific information */};#define RING_VERSION	2	/* current version of v2lni header *//* * Packet types (protocol numbers) in proNET protocol header * Other types are defined, but are proprietary. */#define	RING_IP		1#define	RING_IPTrailer	2	/* really, 3 = 512 bytes */				/*         4 = 1024 bytes */				/*         5 = 1536 bytes */				/* it's really very messed-up! */#define	RING_IPNTrailer	4	/* not a number, but a range */#define RING_ARP	3	/* the next three conflict with trailers */#define RING_HDLC	4#define RING_VAXDB	5#define RING_RINGWAY	6#define RING_RINGWAYM	8#define	RING_NOVELL	10#define RING_PUP	12#define RING_XNS	14#define	RING_DIAGNOSTICS 15	/* protocol type for testing */#define	RING_ECHO	16#define PN_BROADCAST	0xFF	/* hardware-defined broadcast address */#define PN_GRPOF(c)	((c >> 4) & 0xF)	/* extract group number */#define PN_MBROF(c)	(c & 0xF)		/* extract member number */#define PN_GRPCAST(c)	(!PN_MBROF(c))		/* is it a group broadcast */#define PN_REGOFF	0x4000	/* address offset into the registers */#define RCMD_CHAN	0#define RCV_CHAN	1#define XCMD_CHAN	2#define XMT_CHAN	3#define TBUFSIZE	0x400			/* in lwords */#define RBUFSIZE	0x4000			/* in bytes */#define RDMA	0x8000		/* DMA_INT bit 15 */#define TDMA	0x80		/* DMA_INT bit 7  */#define NXM	0x10		/* DMA_INT bit 4  */#define RSTRDMA	0x4000		/* DMA_INT bit 14 resets RDMA */#define RSTTDMA 0x40		/* DMA_INT bit 6 resets TDMA  */#define RSTNXM  0x10		/* DMA_INT bit 4 resets NXM   *//* the following structure is the 82258 register map * address offset for these registers is 0x4000 * sizeof(dmac_regs) should be 0x100 * therefore sizeof(struct dmac_regs) should be 0x40 */struct dmac_regs {		/* all dummy fields are place holders */    u_char  gcr;		/* general command register */    u_char  dummy0;    u_char  scr;		/* subchannel register */    u_char  dummy1;    u_short gsr;		/* general status register */    u_short dummy2;		/* missing in 82258 register map */    u_short gmr;		/* general mode register */    u_char  gbr;		/* general burst register */    u_char  dummy3;    u_char  gdr;		/* general delay register */    u_char  dummy4;    u_short dummy5;		/* missing in 82258 register map */    u_char  csr;		/* channel[0-3] status registers */    u_char  dummy6;    u_short dar;		/* channel[0-3] data assembly registers */    u_short maskr;		/* channel[0-3] mask registers */    u_short cmpr;		/* channel[0-3] compare registers */    u_char  mivr;		/* multiplexer interrupt vector register */    u_char  dummy7;    u_char  lvr;		/* last vector register */    u_char  dummy8;    u_short dummy9;		/* missing in 82258 register map */    u_short dummy10;		/* missing in 82258 register map */    u_short cprL;		/* channel[0-3] command pointer registers */    u_char  cprH;    u_char  dummy11;    u_short sprL;		/* channel[0-3] source pointer registers */    u_char  sprH;    u_char  dummy12;    u_short dprL;		/* channel[0-3] dest pointer registers */    u_char  dprH;    u_char  dummy13;    u_short ttprL;		/* channel[0-3] translate table pointer regs */    u_char  ttprH;    u_char  dummy14;    u_short lprL;		/* channel[0-3] list pointer registers */    u_char  lprH;    u_char  dummy15;    u_short dummy16;		/* missing in 82258 register map */    u_short dummy17;		/* missing in 82258 register map */    u_short bcrL;		/* channel[0-3] byte count registers */    u_char  bcrH;    u_char  dummy18;    u_short ccrL;		/* channel[0-3] command registers */    u_char  ccrH;    u_char  dummy19;};/* these registers only appear once in the dmac_regs array */#define GCR_OF(c)	((c)->pn_dmac[0].gcr)#define SCR_OF(c)	((c)->pn_dmac[0].scr)#define GSR_OF(c)	((c)->pn_dmac[0].gsr)#define GMR_OF(c)	((c)->pn_dmac[0].gmr)#define GBR_OF(c)	((c)->pn_dmac[0].gbr)#define GDR_OF(c)	((c)->pn_dmac[0].gdr)#define MIVR_OF(c)	((c)->pn_dmac[3].mivr)#define LVR_OF(c)	((c)->pn_dmac[3].lvr)/* the following are interrupt vector, dma page, and csr registers * address offset for this structure is 0x4000 + sizeof(dmac_regs) */struct ctl_regs {		/* all dummy fields are place holders */    u_short rdmaint;		/* rcv dma interrupt vector */    u_short dummy0;    u_short tdmaint_nxm;	/* xmt dma and nxm interrupt vector */    u_short dummy1;    u_short rcsrint;		/* rcv done interrupt vector */    u_short dummy2;    u_short tcsrint;		/* xmt done interrupt vector */    u_short dummy3;    u_short pronet_pg;		/* high 8 bits for pronet page addr in DMA */    u_short dummy4;    u_short cmd_pg;		/* high 8 bits for cmd page addr in DMA */    u_short dummy5;    u_short rcvdata_pg;		/* high 8 bits for rcv data page addr in DMA */    u_short dummy6;    u_short xmtdata_pg;		/* high 8 bits for xmt data page addr in DMA */    u_short dummy7;    u_short tcsr;		/* xmt csr */    u_short dummy8;    u_short dummy9;		/* tbufad can only be written to at 0x4126! */    u_short tbufad;		/* xmt buffer addr reg */    u_short tbufda;		/* xmt buffer data reg */    u_short rfsreg;		/* refuse reg */    u_short dma_int;		/* dma and interrupt control reg */    u_short dummy10;    u_short dummy11;		/* rcsr can only be written to at 0x4132! */    u_short rcsr;		/* rcv csr */    u_short rcntr;		/* rcv count reg (R) */    u_short rcounter;		/* rcv buffer input counter (W) */    u_short rstatr;		/* rcv status reg (R) */    u_short rstcntr;		/* reset rcntr reg (W) */    u_short rbufdmaptr;		/* rcv buffer DMA pointer */    u_short dummy12;};#define PN_ORI		01	/* originate/xmt/send pkt */#define PN_CEN		01	/* enable copy of rcv pkt into RBUFFER */#define PN_JNR		02	/* enable relay in wire center for join ring */#define PN_MEN		04	/* enable CTL modem */#define PN_INI		020	/* create token on current ORIGR if RNOK */#define PN_RST  	040	/* reset xmt/rcv to known state */#define PN_IEN		0100	/* IEN: ORIGC(CTL), OTIM(TCSR) or CNTR(RCSR) */#define PN_RDY		0200	/* xmt - TCSR or rcv - RCNTR & RSTATR ready */#define PN_REF		0400	/* last pkt sent wasn't accepted */#define PN_CSW		0400	/* valid count and status waiting to be xfer */#define PN_BDF		02000	/* last pkt sent had format error */#define PN_TMO		04000	/* timed out waiting for ORIGC(CTL) */#define PN_PER		04000	/* parity error detected */#define PN_JND		010000	/* CTL is acknowledging a JOINR(RCSR) cmd */#define PN_NOK		020000	/* NOTOKEN or NOFLAG timer has expired */#define PN_RTI		040000	/* reset xmt/rcv int */#define PN_IRQ		0100000	/* xmt/rcv csr int request */#define PN_TBITS \    "\10\20IRQ\17RTI\16NOK\15JND\14TMO\13BDF\11REF\10RDY\7IEN\6RST\5INI\1ORI"#define PN_RBITS \    "\10\20IRQ\17RTI\16NOK\15JND\14PER\11CSW\10RDY\7IEN\6RST\3MEN\2JNR\1CEN"#define PN_SBITS 	"\10\3PERR\2RBDF\1ROVR"#define PERR	04		/* parity error bit in RSTATR */#define RBDF	02		/* bad format error bit in RSTATR */#define ROVR	01		/* pkt length overflow error bit in RSTATR */struct pn_regs {    u_short pn_rbuffer[PN_REGOFF>>1];	/* rcv buffer */    struct dmac_regs pn_dmac[4];	/* 82258 reg map */    struct ctl_regs  pn_ctl;		/* int vec, dma pg, and csrs reg map */};#define PNTERR	(PN_TMO | PN_BDF | PN_REF)	/* any xmt error */#define PNRERR	(PERR | RBDF | ROVR)		/* any rcv error */#define PNRETRY		10	/* xmt retry limit */#define PNIDENTRETRY	10	/* identify retry limit */#define PNIDENTSUCC	 5	/* number of successful sends required */#define PNTIMEOUT	10	/* seconds before a xmt timeout *//* 82258 DMAC specific stuff */struct short_cmd {    u_short type1_cmd;    u_short sprL;    u_char  sprH;    u_char  dummy0;    u_short dprL;    u_char  dprH;    u_char  dummy1;    u_short bcrL;    u_char  bcrH;    u_char  dummy2;    u_short csr;};struct long_cmd {    struct short_cmd shcmd;    u_short ext_cmd;    u_short mask;    u_short cmpr;    u_short ttprL;    u_char  ttprH;    u_char  dummy0;};struct debug_cmd {    struct long_cmd cmdbl;    u_short updated_sprL;    u_char  updated_sprH;    u_char  dummy0;    u_short updated_dprL;    u_char  updated_dprH;    u_char  dummy1;    u_short updated_bcrL;    u_char  updated_bcrH;    u_char  dummy2;};#define gsr_of(chan,addr)	((addr)[0].gsr >> (chan))#endif	INCpnh

⌨️ 快捷键说明

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