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

VxWorks

开发平台:

C/C++

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