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

VxWorks

开发平台:

C/C++

  1. /* if_fn.h - structures and defines for the Fujitsu mb86960 NICE device */
  2. /* Copyright 1992-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01e,09nov01,dat  Adding obsolescence warnings to outdated drivers
  7. 01d,22sep92,rrr  added support for c++
  8. 01c,16jun92,jwt  passed through the ansification filter
  9.   -changed copyright notice
  10. 01b,21feb92,rfs  modified for Fujitsu SPARClite EVIL board specific.
  11. 01a,03feb92,rfs  created
  12. */
  13. #ifndef __INCif_fnh
  14. #define __INCif_fnh
  15. #warning "if_fn is obsolete, please use mb86960End driver"
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  20.  * SECTION: Data Structures
  21.  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
  22. typedef struct rx_hdr                   /* received packet header */
  23.     {
  24.     unsigned short status;              /* only upper byte used */
  25.     unsigned short len;                 /* pkt length in little endian order */
  26.     } RX_HDR;
  27. #define RX_HDR_SIZ  sizeof(RX_HDR)
  28. /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  29.  * SECTION: Register Addresses
  30.  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
  31. /* NICE registers, defined as offsets from base addr */
  32.     /* The statically mapped registers.  This group of registers is
  33.      * always available to the CPU.
  34.      * This first group are the data link control registers 0-7.
  35.      */
  36. #define NICE_STATUS     0x02            /* DLC0,1: Tx and Rx status */
  37. #define NICE_INTRMASK   0x06            /* DLC2,3: Tx and Rx intr masks */
  38. #define NICE_MODE       0x0a            /* DLC4,5: Tx and Rx modes */
  39. #define NICE_CONFIG     0x0e            /* DLC6,7: configuration bits */
  40.     /* The selectable mapped registers.  These groups can be mapped in
  41.      * or out of the overall register set.  The selection of which group
  42.      * is currently mapped in is done via control register 2 (DLCR7) in
  43.      * the statically mapped register group above.
  44.      */
  45.     /* the secondary data link control regs */
  46. #define NICE_ADDR1      0x12            /* DLC8,9: node addr high word */
  47. #define NICE_ADDR2      0x16            /* DLC10,11: node addr mid word */
  48. #define NICE_ADDR3      0x1a            /* DLC12,13: node addr low word */
  49. #define NICE_TDR        0x1e            /* DLC14,15: time domain counter */
  50.     /* the hash table registers */
  51. #define NICE_HASH1      0x12
  52. #define NICE_HASH2      0x16
  53. #define NICE_HASH3      0x1a
  54. #define NICE_HASH4      0x1e
  55.     /* the buffer memory registers */
  56. #define NICE_PORT       0x12            /* BMR8: access port to buffer */
  57. #define NICE_TRANSMIT   0x16            /* BMR10,11: Tx cmd & coll ctrl */
  58. #define NICE_DMA        0x1a            /* BMR12,13: DMA control */
  59. #define NICE_STUFF      0x1e
  60. /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  61.  * SECTION: bit defines for the device registers and receive header status
  62.  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
  63. /* The status field of the receive header (RX_HDR above) */
  64. #define RX_HDR_STAT_BIT_7       0x8000      /* unused; should read as 0 */
  65. #define RX_HDR_STAT_BIT_6       0x4000      /* unused; should read as 0 */
  66. #define RX_HDR_STAT_GOOD        0x2000      /* packet is good */
  67. #define RX_HDR_STAT_RMT_RST     0x1000      /* packet type = 0x0900 */
  68. #define RX_HDR_STAT_SHRT_ERR    0x0800      /* short packet error */
  69. #define RX_HDR_STAT_ALGN_ERR    0x0400      /* alignment error */
  70. #define RX_HDR_STAT_CRC_ERR     0x0200      /* CRC error */
  71. #define RX_HDR_STAT_OVR_FLO     0x0100      /* overflow error */
  72.     /* Note that the short error bit has been observed to be set sporadically
  73.      * and is therefore not usable.  The overflow bit should never be set,
  74.      * since the receiver should not be giving us incomplete packets!  The
  75.      * lower byte of the status field is currently unused, but has been seen
  76.      * to have various bits set.  It is probably wise to simply mask this
  77.      * byte off to avoid any confusion.
  78.      */
  79. /* DLCR0,1 -- the receive and transmit status register */
  80. #define DLCR0_TX_DONE       0x8000      /* transmit OK */
  81. #define DLCR0_NET_BSY       0x4000      /* network is busy, carrier present */
  82. #define DLCR0_TX_RX         0x2000      /* transmit received good */
  83. #define DLCR0_CR_LOST       0x1000      /* short packet */
  84. #define DLCR0_BIT_3         0x0800      /* unused bit; write 0 */
  85. #define DLCR0_COL           0x0400      /* a collision occurred */
  86. #define DLCR0_16_COL        0x0200      /* 16 collisions occurred */
  87. #define DLCR0_BUS_WR_ERR    0x0100      /* buss write error */
  88. #define DLCR1_RX_PKT        0x0080      /* received packet ready */
  89. #define DLCR1_BUS_RD_ERR    0x0040      /* buss read error */
  90. #define DLCR1_DMA_EOP       0x0020      /* DMA end operation interrupt status */
  91. #define DLCR1_RMT_RST       0x0010      /* received a remote reset packet */
  92. #define DLCR1_SHRT_ERR      0x0008      /* short packet error */
  93. #define DLCR1_ALGN_ERR      0x0004      /* alignment error */
  94. #define DLCR1_CRC_ERR       0x0002      /* CRC error, CRC does not match FCS */
  95. #define DLCR1_OVR_FLO       0x0001      /* overflow, no space available */
  96. /* DLCR2,3 -- interrupt masks for receive and transmit status register */
  97. #define DLCR2_TX_DONE       0x8000      /* transmit OK intr mask */
  98. #define DLCR2_BIT_6         0x4000      /* unused; write 0 */
  99. #define DLCR2_TX_RX         0x2000      /* transmission received good mask */
  100. #define DLCR2_BIT_4         0x1000      /* unused; write 0 */
  101. #define DLCR2_BIT_3         0x0800      /* unused; write 0 */
  102. #define DLCR2_COL           0x0400      /* collision intr mask */
  103. #define DLCR2_16_COL        0x0200      /* 16 collisions intr mask */
  104. #define DLCR2_BUS_WR_ERR    0x0100      /* buss write error intr mask */
  105. #define DLCR3_RX_PKT        0x0080      /* received packet ready intr mask */
  106. #define DLCR3_BUS_RD_ERR    0x0040      /* buss read error intr mask */
  107. #define DLCR3_DMA_EOP       0x0020      /* DMA end operation intr mask */
  108. #define DLCR3_RMT_RST       0x0010      /* remote reset intr mask */
  109. #define DLCR3_SHRT_ERR      0x0008      /* short packet error intr mask */
  110. #define DLCR3_ALGN_ERR      0x0004      /* alignment error intr mask */
  111. #define DLCR3_CRC_ERR       0x0002      /* CRC error intr mask */
  112. #define DLCR3_OVR_FLO       0x0001      /* overflow error intr mask */
  113. /* DLCR4,5 -- receiver and transmitter modes register */
  114. #define DLCR4_COL_CTR       0xf000      /* collision counter, 4 bits */
  115. #define DLCR4_BIT_3         0x0800      /* unused; write 0 */
  116. #define DLCR4_CNTRL         0x0400      /* drives the CNTRL pin; pin 95 */
  117. #define DLCR4_LBC           0x0200      /* endec loopback; 0 selects */
  118. #define DLCR4_TX_NO_DEFER   0x0100      /* disable carrier detect on Tx */
  119. #define DLCR5_BIT_7         0x0080      /* unused; write 0 */
  120. #define DLCR5_BUF_EMPTY     0x0040      /* buffer empty */
  121. #define DLCR5_ACPT_BAD      0x0020      /* accept bad packets */
  122. #define DLCR5_SHRT_ADD      0x0010      /* use short address, 5 bytes */
  123. #define DLCR5_ENA_SHRT_PKT  0x0008      /* enable receipt of short packets */
  124. #define DLCR5_BIT_2         0x0004      /* unused; write 1 */
  125. #define DLCR5_AF1           0x0002      /* addr filter mode, bit 1 */
  126. #define DLCR5_AF0           0x0001      /* addr filter mode, bit 0 */
  127. /* DLCR6,7 -- configuration register */
  128. #define DLCR6_DISABLE_DLC   0x8000      /* disable data link controller */
  129. #define DLCR6_BIT_6         0x4000      /* unused; write 1 */
  130. #define DLCR6_SYS_BUS       0x2000      /* selects width of system bus */
  131. #define DLCR6_SYS_BUS_8     0x2000      /*   system bus is 8 bit */
  132. #define DLCR6_SYS_BUS_16    0x0000      /*   system bus is 16 bit */
  133. #define DLCR6_BUF_BUS       0x1000      /* selects width of buffer bus */
  134. #define DLCR6_BUF_BUS_8     0x1000      /*   buffer bus is 8 bits */
  135. #define DLCR6_BUF_BUS_16    0x0000      /*   buffer bus is 16 bits */
  136. #define DLCR6_TBS           0x0c00      /* selects Tx buffer size, 2 bits */
  137. #define DLCR6_TBS_2KB       0x0000      /*   Tx buffer size is 2 KB */
  138. #define DLCR6_TBS_4KB       0x0400      /*   Tx buffer size is 4 KB */
  139. #define DLCR6_TBS_8KB       0x0800      /*   Tx buffer size is 8 KB */
  140. #define DLCR6_TBS_16KB      0x0c00      /*   Tx buffer size is 16 KB */
  141. #define DLCR6_BS            0x0300      /* selects SRAM buffer size, 2 bits */
  142. #define DLCR6_BS_8KB        0x0000      /*   SRAM buffer size is 8 KB */
  143. #define DLCR6_BS_16KB       0x0100      /*   SRAM buffer size is 16 KB */
  144. #define DLCR6_BS_32KB       0x0200      /*   SRAM buffer size is 32 KB */
  145. #define DLCR6_BS_64KB       0x0300      /*   SRAM buffer size is 64 KB */
  146. #define DLCR7_CNF           0x00c0      /* selects chip config, 2 bits */
  147. #define DLCR7_CNF_NICE      0x0000      /*   normal NICE mode */
  148. #define DLCR7_CNF_MONITOR   0x0040      /*   add monitor function */
  149. #define DLCR7_CNF_BYPASS    0x0080      /*   bypass ENDEC */
  150. #define DLCR7_CNF_TEST      0x00c0      /*   test ENDEC */
  151. #define DLCR7_PWRDN         0x0020      /* selects standby power  mode */
  152. #define DLCR7_PWRDN_ON      0x0000      /*   standby mode on */
  153. #define DLCR7_PWRDN_OFF     0x0020      /*   standby mode off */
  154. #define DLCR7_BIT_4         0x0010      /* unused; write 1 */
  155. #define DLCR7_REG_BNK       0x000c      /* selects register bank, 2 bits */
  156. #define DLCR7_REG_BNK_DLC   0x0000      /*   DLC group 00 is mapped in */
  157. #define DLCR7_REG_BNK_HASH  0x0004      /*   HASH group 01 is mapped in */
  158. #define DLCR7_REG_BNK_BMR   0x000c      /*   BMR group 10 is mapped in */
  159. #define DLCR7_EOP_POL       0x0002      /* selects polarity of EOP pin */
  160. #define DLCR7_ENDIAN        0x0001      /* selects endian mode of system bus */
  161. #define DLCR7_ENDIAN_LITTLE 0x0000      /*   endian mode is little */
  162. #define DLCR7_ENDIAN_BIG    0x0001      /*   endian mode is big */
  163. /* DLCR8-DLCR13 are the node ID registers when register group 00 is mapped in.
  164.  * There are no bit defines for these registers.  Given an Ethernet address
  165.  * of 11:22:33:44:55:66, the following shows the relationship to these
  166.  * registers.
  167.  *   dlcr8  = 0x11;
  168.  *   dlcr9  = 0x22;
  169.  *       .....
  170.  *   dlcr13 = 0x66;
  171.  */
  172. /* DLCR14,DLCR15 are the time domain reflectometer registers when register
  173.  * group 00 is mapped in.  There are no bit defines for these registers.
  174.  * R14 holds the LSB, R15 the MSB, both are read only.
  175.  */
  176. /* BMR8 -- buffer memory port.  There are no bit defines for this register. */
  177. /* BMR10,11 -- transmit collision control and start command register */
  178. #define BMR10_TMST          0x8000      /* transmit start command */
  179. #define BMR10_PKTS          0x7f00      /* number of packets to transmit */
  180. #define BMR11_BIT7          0x0080      /* unused, write with 0 */
  181. #define BMR11_BIT6          0x0040      /* unused, write with 0 */
  182. #define BMR11_BIT5          0x0020      /* unused, write with 0 */
  183. #define BMR11_BIT4          0x0010      /* unused, write with 0 */
  184. #define BMR11_BIT3          0x0008      /* unused, write with 0 */
  185. #define BMR11_MASK16        0x0004      /* something to do with 16 colls */
  186. #define BMR11_RST_TX16      0x0002      /*    "  */
  187. #define BMR11_OPT_16_COLL   0x0001      /*    "  */
  188. /* BMR12,13 -- DMA control register */
  189. #define BMR12_BIT7          0x8000      /* unused, write with 0 */
  190. #define BMR12_BIT6          0x4000      /* unused, write with 0 */
  191. #define BMR12_BIT5          0x2000      /* unused, write with 0 */
  192. #define BMR12_BIT4          0x1000      /* unused, write with 0 */
  193. #define BMR12_BIT3          0x0800      /* unused, write with 0 */
  194. #define BMR12_BIT2          0x0400      /* unused, write with 0 */
  195. #define BMR12_DMA_RENA      0x0200      /* DMA read enable */
  196. #define BMR12_DMA_TENA      0x0100      /* DMA write enable */
  197. /* BMR14 -- to be done */
  198. /* BMR15 -- currently no function */
  199. #ifdef __cplusplus
  200. }
  201. #endif
  202. #endif /* __INCif_fnh */