sn83932End.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:16k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* if_sn.h - structures and defines for the DP83932B SONIC device */
  2. /* Copyright 1991-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01k,20sep97,pul  added # defines for  new MBLK buffering scheme
  7. 01j,15Apr97,sal  Addop for End Driver
  8. 01h,18oct93,cd   added extra field to TX_DESC to hold associated mbuf,
  9.  defined EXBUS, added timer support.
  10. 01g,22sep92,rrr  added support for c++
  11. 01f,04jun92,ajm  defined appropriate regs volatile
  12. 01e,26may92,rrr  the tree shuffle
  13. 01d,03feb92,rfs  minor changes to TX_DESC, moved tunables out to driver
  14. 01c,08nov91,rfs  adapted from Ironics stuff
  15. 01b,29jul91,kjl  cleanup in preparation for release
  16. 01a,25mar91,kjl  adapted from if_ln.h 01j,05oct90,shl
  17. */
  18. #ifndef __INCif_snh
  19. #define __INCif_snh
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  24. #pragma align 1                 /* tell gcc960 not to optimize alignments */
  25. #endif  /* CPU_FAMILY==I960 */
  26. /* Total number of cluster pools */
  27. #define NUM_CLUSTER_POOLS 2
  28. /* Configurable number of clusters of each type */
  29. #define NUM_OPTIMAL_CLUSTER 32
  30. #define NUM_MTU_CLUSTER 16
  31. /* Configurable number of cluster blks and mblks */
  32. #define NUM_CL_BLK 32
  33. #define NUM_MBLK 32
  34. /* Tunable Parameters */
  35. #define NUM_RRA_DESC  (4)             /* number of RRA descriptors */
  36. #define NUM_RX_DESC   (512)           /* number of Rx descriptors */
  37. #define NUM_TX_DESC   (64)            /* num of Tx desc, must be power of 2 */
  38. #define MAX_TX_FRAGS  (32)            /* max transmit frags to support */
  39. /* The following values denote the maximum # of RX/TX events to process
  40.  * in one pass (ie. Process up to x received packets before processing up
  41.  * to y transmitted packets.
  42.  */
  43. #define RX_PROCESS_FLOW     16  
  44. #define TX_PROCESS_FLOW     8
  45. /* DATA STRUCTURES */
  46. typedef struct rra_desc                    /* Receive Resource Descriptor */
  47.     {
  48.     unsigned long buff_ptr0;     /* these two point to the starting location */
  49.     unsigned long buff_ptr1;     /* of the receive buffer arear (RBA) */
  50.     unsigned long buff_wc0;      /* these two define the number of 16 bit */
  51.     unsigned long buff_wc1;      /* words that the RBA occupies */
  52.     } RRA_DESC;
  53. #define RRA_DESC_SIZ  sizeof(RRA_DESC)
  54. #define RRA_SIZE    (NUM_RRA_DESC * RRA_DESC_SIZ)      /* size of area */
  55. typedef struct Rx_desc                           /* Receive Descriptor */
  56.     {
  57.     unsigned long status;    /* indicates the status of the received packet */
  58.     unsigned long byte_count;/* length of the complete packet */ 
  59.     unsigned long pkt_ptr0;  /* these two pointers locate the */
  60.     unsigned long pkt_ptr1;  /* packet in the RBA */
  61.     unsigned long seq_no;    /* displays the sequence the RBAs used and the */
  62.      /* packets buffered */
  63.     struct Rx_desc *link;    /* location of the next receive descriptor */
  64.     unsigned long in_use;    /* ownership of the descriptor */
  65.      /* zero value: driver (system) is the owner */
  66.              /* non -zero value: SONIC (device) is the owner */
  67.     } RX_DESC;
  68. #define RX_DESC_SIZ  sizeof(RX_DESC)
  69. #define RDA_SIZE    (NUM_RX_DESC * RX_DESC_SIZ)             /* Total Bytes */
  70. /* values for in_use field */
  71. #define IN_USE      (1) /*SL*  In use by the device */
  72. #define NOT_IN_USE  (0) /*SL*  Free to manipulate */
  73. /* end-of-list marker for link field */
  74. #define RX_EOL      (RX_DESC *)(1)
  75. #define CAM_COUNT   (16)
  76. typedef struct Cam_desc
  77.     {
  78.     unsigned long cep;
  79.     unsigned long cap0;
  80.     unsigned long cap1;
  81.     unsigned long cap2;
  82.     } CAM_DESC;
  83. #define CAM_DESC_SIZE  sizeof (CAM_DESC)
  84. /* Define size of CAM descriptor area plus a word for the CAM enable */
  85. #define CAM_SIZE (CAM_COUNT * CAM_DESC_SIZE) + 4
  86. typedef struct frag_desc
  87.     {
  88.     unsigned long frag_ptr0;        /* 0,1 pointer to the fragment in */
  89.     unsigned long frag_ptr1;        /* the  transmit buffer area */
  90.     unsigned long frag_size;        /* byte count of the fragment */
  91.     } FRAG_DESC;          /* Fragment descriptors */
  92. typedef struct Tx_desc                  /* Transmit Descriptor */
  93.     {
  94.     unsigned long status;               /* status of the transmission */ 
  95. /* written into transmit control */
  96. /* register (TCR) */          
  97.     unsigned long config;               /* programming SONIC to various */
  98. /* transmiting modes */
  99.     unsigned long pkt_size;             /* byte count of the packet */
  100.     unsigned long frag_count;           /* number of fragments of the packet */
  101.     FRAG_DESC frag[MAX_TX_FRAGS];  /*  max Fragment descriptors */
  102.     struct Tx_desc *pLink; /* OUR real link ptr */
  103.     unsigned long flag; /* IN USE flag */
  104.     unsigned long number; /* Descriptor number */
  105.     } TX_DESC;
  106.     
  107. #define TX_DESC_SIZ  sizeof(TX_DESC)
  108. #define TDA_SIZE    (NUM_TX_DESC * TX_DESC_SIZ)
  109. /* end-of-list marker for link field */
  110. #define TX_EOL      (1)
  111. /* State Definitions */
  112. #define SN_POLLING        0x01          /* Poll Mode */
  113. #define SN_PROMISC        0x02          /* Promicuous Mode */
  114. #define SN_ALLMULTI       0x04          /* Allow all multicasts */
  115. #define SN_RECLAIMING     0x80          /* Performing a Reclaim of TXDs */
  116. /* SONIC registers, defined as data structure */
  117. typedef struct sonic
  118.     {
  119.     volatile unsigned long cr;
  120.     volatile unsigned long dcr;
  121.     volatile unsigned long rcr;
  122.     volatile unsigned long tcr;
  123.     volatile unsigned long imr;
  124.     volatile unsigned long isr;
  125.     volatile unsigned long utda;
  126.     volatile unsigned long ctda;
  127.     volatile unsigned long fill_20;
  128.     volatile unsigned long fill_24;
  129.     volatile unsigned long fill_28;
  130.     volatile unsigned long fill_2c;
  131.     volatile unsigned long fill_30;
  132.     volatile unsigned long urda;
  133.     volatile unsigned long crda;
  134.     volatile unsigned long fill_3c;
  135.     volatile unsigned long fill_40;
  136.     volatile unsigned long fill_44;
  137.     volatile unsigned long fill_48;
  138.     volatile unsigned long eobc;
  139.     volatile unsigned long urra;
  140.     volatile unsigned long rsa;
  141.     volatile unsigned long rea;
  142.     volatile unsigned long rrp;
  143.     volatile unsigned long rwp;
  144.     volatile unsigned long fill_64;
  145.     volatile unsigned long fill_68;
  146.     volatile unsigned long fill_6c;
  147.     volatile unsigned long fill_70;
  148.     volatile unsigned long fill_74;
  149.     volatile unsigned long fill_78;
  150.     volatile unsigned long fill_7c;
  151.     volatile unsigned long fill_80;
  152.     volatile unsigned long cep;
  153.     volatile unsigned long cap2;
  154.     volatile unsigned long cap1;
  155.     volatile unsigned long cap0;
  156.     volatile unsigned long ce;
  157.     volatile unsigned long cdp;
  158.     volatile unsigned long cdc;
  159.     volatile unsigned long sr;
  160.     volatile unsigned long wt0;
  161.     volatile unsigned long wt1;
  162.     volatile unsigned long rsc;
  163.     volatile unsigned long fill_b0;
  164.     volatile unsigned long fill_b4;
  165.     volatile unsigned long fill_b8;
  166.     volatile unsigned long fill_bc;
  167.     volatile unsigned long fill_c0;
  168.     volatile unsigned long fill_c4;
  169.     volatile unsigned long fill_c8;
  170.     volatile unsigned long fill_cc;
  171.     volatile unsigned long fill_d0;
  172.     volatile unsigned long fill_d4;
  173.     volatile unsigned long fill_d8;
  174.     volatile unsigned long fill_dc;
  175.     volatile unsigned long fill_e0;
  176.     volatile unsigned long fill_e4;
  177.     volatile unsigned long fill_e8;
  178.     volatile unsigned long fill_ec;
  179.     volatile unsigned long fill_f0;
  180.     volatile unsigned long fill_f4;
  181.     volatile unsigned long fill_f8;
  182.     volatile unsigned long dcr2;
  183.     } SONIC;
  184. #define SONIC_SIZ  sizeof(SONIC)
  185. /* SONIC registers, defined as direct ptrs.  The constant SONIC_BASE_ADDR
  186.  * should be defined elsewhere; in board specific header file.
  187.  * These defines are NOT used in the VxWorks SONIC driver, but are left
  188.  * here for reference.
  189.  */
  190. #if 0
  191. #define SONIC_CR   (volatile unsigned long *) (SONIC_BASE_ADDR + 0x00)
  192. #define SONIC_DCR  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x04)
  193. #define SONIC_RCR  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x08)
  194. #define SONIC_TCR  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x0c)
  195. #define SONIC_IMR  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x10)
  196. #define SONIC_ISR  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x14)
  197. #define SONIC_UTDA (volatile unsigned long *) (SONIC_BASE_ADDR + 0x18)
  198. #define SONIC_CTDA (volatile unsigned long *) (SONIC_BASE_ADDR + 0x1c)
  199. #define SONIC_URDA (volatile unsigned long *) (SONIC_BASE_ADDR + 0x34)
  200. #define SONIC_CRDA (volatile unsigned long *) (SONIC_BASE_ADDR + 0x38)
  201. #define SONIC_EOBC (volatile unsigned long *) (SONIC_BASE_ADDR + 0x4c)
  202. #define SONIC_URRA (volatile unsigned long *) (SONIC_BASE_ADDR + 0x50)
  203. #define SONIC_RSA  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x54)
  204. #define SONIC_REA  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x58)
  205. #define SONIC_RRP  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x5c)
  206. #define SONIC_RWP  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x60)
  207. #define SONIC_CEP  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x84)
  208. #define SONIC_CAP2 (volatile unsigned long *) (SONIC_BASE_ADDR + 0x88)
  209. #define SONIC_CAP1 (volatile unsigned long *) (SONIC_BASE_ADDR + 0x8c)
  210. #define SONIC_CAP0 (volatile unsigned long *) (SONIC_BASE_ADDR + 0x90)
  211. #define SONIC_CE   (volatile unsigned long *) (SONIC_BASE_ADDR + 0x94)
  212. #define SONIC_CDP  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x98)
  213. #define SONIC_CDC  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x9c)
  214. #define SONIC_SR   (volatile unsigned long *) (SONIC_BASE_ADDR + 0xa0)
  215. #define SONIC_WT0  (volatile unsigned long *) (SONIC_BASE_ADDR + 0xa4)
  216. #define SONIC_WT1  (volatile unsigned long *) (SONIC_BASE_ADDR + 0xa8)
  217. #define SONIC_RSC  (volatile unsigned long *) (SONIC_BASE_ADDR + 0xac)
  218. #define SONIC_CRCT (volatile unsigned long *) (SONIC_BASE_ADDR + 0xb0)
  219. #define SONIC_FAET (volatile unsigned long *) (SONIC_BASE_ADDR + 0xb4)
  220. #define SONIC_MPT  (volatile unsigned long *) (SONIC_BASE_ADDR + 0xb8)
  221. #define SONIC_CRBA0  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x3c)
  222. #define SONIC_CRBA1  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x40)
  223. #define SONIC_RBWC0  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x44)
  224. #define SONIC_RBWC1  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x48)
  225. #define SONIC_TPS  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x20)
  226. #define SONIC_TFC  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x24)
  227. #define SONIC_TSA0 (volatile unsigned long *) (SONIC_BASE_ADDR + 0x28)
  228. #define SONIC_TSA1 (volatile unsigned long *) (SONIC_BASE_ADDR + 0x2c)
  229. #define SONIC_TFS  (volatile unsigned long *) (SONIC_BASE_ADDR + 0x30)
  230. #define SONIC_TTDA (volatile unsigned long *) (SONIC_BASE_ADDR + 0x80)
  231. #endif
  232. /* miscellaneous stuff */
  233. #define LMASK  (0xffff0000)
  234. #define UMASK  (0x0000ffff)
  235. /* Command Register Commands */
  236. #define LCAM    (0x0200)      /* Load CAM */
  237. #define RRRA    (0x0100)      /* Read RRA */
  238. #define RST     (0x0080)      /* Software Reset */
  239. #define RST_OFF (0x0000)      /* Software Reset Off */
  240. #define ST      (0x0020)      /* Start Timer */
  241. #define STP     (0x0010)      /* Stop Timer */
  242. #define RXEN    (0x0008)      /* Receiver Enable */
  243. #define RXDIS   (0x0004)      /* Receiver Disable */
  244. #define TXP     (0x0002)      /* Transmit Packet */
  245. #define HTX     (0x0001)      /* Halt Transmission */
  246. /* Data Configuration Register */
  247. #define EXBUS (0x8000)      /* Extended Bus Mode (BVF) */
  248. #define LBR     (0x2000)      /* Latched Mode */
  249. #define PO1     (0x1000)      /* Programmable Output 1 */
  250. #define PO0     (0x0800)      /* Programmable Output 0 */
  251. #define STERM   (0x0400)      /* Synchronous Transmission */
  252. #define USR1    (0x0200)      /* User Definable Pin 1 */
  253. #define USR0    (0x0100)      /* User Definable Pin 0 */
  254. #define WC1     (0x0080)      /* Wait State Control 1 */
  255. #define WC0     (0x0040)      /* Wait State Control 0 */
  256. #define WAIT0   (0)           /* 0 Wait state */
  257. #define WAIT1   (WC0)         /* 1 Wait state */
  258. #define WAIT2   (WC1)         /* 2 Wait state */
  259. #define WAIT3   (WC1 | WC0)   /* 3 Wait state */
  260. #define DW      (0x0020)      /* Data Width Control */
  261. #define DW_32   (0x0020)      /* Data Width 32 bits */
  262. #define DW_16   (0x0000)      /* Data Width 16 bits */
  263. #define BMS     (0x0010)      /* Block Mode Select for DMA */
  264. #define RFT1    (0x0008)      /* Receive FIFO threshold 1 */
  265. #define RFT0    (0x0004)      /* Receive FIFO threshold 0 */
  266. #define TFT1    (0x0002)      /* Transmit FIFO Threshold 1 */
  267. #define TFT0    (0x0001)      /* Transmit FIFO Threshold 0 */
  268. /* Receive Control Register */
  269. #define ERR      (0x8000)     /* Accept packets with errors */
  270. #define RNT      (0x4000)     /* Accept Runt packets */
  271. #define BRD      (0x2000)     /* Accept broadcast packets */
  272. #define PRO      (0x1000)     /* Physical Promiscuous packets */
  273. #define AMC      (0x0800)     /* Accept all multicast packets */
  274. #define LB1      (0x0400)     /* Loopback bit 1 */
  275. #define LB0      (0x0200)     /* Loopback bit 0 */
  276. #define NO_LB    (0x0000)     /* No Loopback */
  277. #define MAC_LB   (0x0200)     /* MAC loopback */
  278. #define ENDEC_LB (0x0400)     /* ENDEC loopback */
  279. #define XCVR_LB  (0x0600)     /* Transceiver loopback */
  280. #define MC       (0x0100)     /* Multicast packet received */
  281. #define BC       (0x0080)     /* Broadcast packet received */
  282. #define LPKT     (0x0040)     /* Last packet in RBA */
  283. #define CRS      (0x0020)     /* Carrier Sense Activity */
  284. #define COL      (0x0010)     /* Collision activity */
  285. #define CRCR     (0x0008)     /* CRC Error */
  286. #define FAER     (0x0004)     /* Frame alignment error */
  287. #define LBK      (0x0002)     /* Loopback packet received */
  288. #define PRX      (0x0001)     /* Packet received OK */
  289. /* Transmit Control Register */
  290. #define PINT  (0x8000)        /* Programmable Interrupt */
  291. #define POWC  (0x4000)        /* Programmed out of window collision timer */
  292. #define CRCI  (0x2000)        /* CRC Inhibit */
  293. #define EXDIS (0x1000)        /* Disable Excessive Deferral Timer */
  294. #define EXD   (0x0400)        /* Excessive Deferral */
  295. #define DEF   (0x0200)        /* Deferred transmission */
  296. #define NCRS  (0x0100)        /* No CRS */
  297. #define CRSL  (0x0080)        /* CRS Lost */
  298. #define EXC   (0x0040)        /* Excessive Collisions */
  299. #define OWC   (0x0020)        /* Out of window collision */
  300. #define PMB   (0x0008)        /* Packet monitored bad */
  301. #define FU    (0x0004)        /* FIFO underrun */
  302. #define BCM   (0x0002)        /* Byte count mismatch */
  303. #define PTX   (0x0001)        /* Packet transmitted OK */
  304. /* Interrupt Mask Register */
  305. #define BREN   (0x4000)       /* Bus Retry Occured Enable */
  306. #define HBLEN  (0x2000)       /* Heartbeat lost Enable */
  307. #define LCDEN  (0x1000)       /* Load Cam Done Interrupt Enable */
  308. #define PINTEN (0x0800)       /* Programmable Interrupt Enable */
  309. #define PRXEN  (0x0400)       /* Packet Received Enable */
  310. #define PTXEN  (0x0200)       /* Packet Transmitted OK Enable */
  311. #define TXEREN (0x0100)       /* Transmit Error Enable */
  312. #define TCEN   (0x0080)       /* Timer Complete Enable */
  313. #define RDEEN  (0x0040)       /* Receive Descriptors Enable */
  314. #define RBEEN  (0x0020)       /* Receive Buffers Exhausted Enable */
  315. #define RBAEEN (0x0010)       /* Receive Buffer Area Exceeded Enable */
  316. #define CRCEN  (0x0008)       /* CRC Tally counter warning Enable */
  317. #define FAEEN  (0x0004)       /* FAE Tally counter warning Enable */
  318. #define MPEN   (0x0002)       /* MP Tally counter warning Enable */
  319. #define RFOEN  (0x0001)       /* Receive FIFO Overrun Enable */
  320. /* Interrupt Status Register */
  321. #define CLEAR_ISR (0xffff)    /* Clear all status */
  322. #define BR        (0x4000)    /* Bus Retry Occured  */
  323. #define HBL       (0x2000)    /* Heartbeat lost  */
  324. #define LCD       (0x1000)    /* Load Cam Done Interrupt  */
  325. #define PINTS     (0x0800)    /* Programmable Interrupt Status  */
  326. #define PKTRX     (0x0400)    /* Packet Received  */
  327. #define TXDN      (0x0200)    /* Transmission Done */
  328. #define TXER      (0x0100)    /* Transmit Error  */
  329. #define TC        (0x0080)    /* Timer Complete  */
  330. #define RDE       (0x0040)    /* Receive Descriptors  */
  331. #define RBE       (0x0020)    /* Receive Buffers Exhausted  */
  332. #define RBAE      (0x0010)    /* Receive Buffer Area Exceeded  */
  333. #define CRC       (0x0008)    /* CRC Tally counter warning  */
  334. #define FAE       (0x0004)    /* FAE Tally counter warning  */
  335. #define MP        (0x0002)    /* MP Tally counter warning  */
  336. #define RFO       (0x0001)    /* Receive FIFO Overrun  */
  337. /* End of Buffer Count Register */
  338. #define MAX_PACKET_SIZE (0x02f8)  /* 760 words */
  339. #if CPU_FAMILY==I960
  340. #pragma align 0                 /* turn off alignment requirement */
  341. #endif  /* CPU_FAMILY==I960 */
  342. #ifdef __cplusplus
  343. }
  344. #endif
  345. #endif /* __INCif_snh */