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

VxWorks

开发平台:

C/C++

  1. /* if_mbc.h - Motorola Module Bus Ethernet interface header */
  2. /* Copyright 2002 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01b,19apr02,rcs  added obsolescence warning SPR# 76010
  7. 01a,09may96,dzb  written.
  8. */
  9. /*
  10. This file contains I/O addresses and related constants for the Motorola
  11. Module Bus Ethernet controller used in the M68EN360 communications
  12. controller.
  13. */
  14. #ifndef __INCif_mbch
  15. #define __INCif_mbch
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. #warning "if_mbc driver is obsolete, please use mbcEnd driver"
  20. /* defines */
  21. /* MBC - Module Bus Ethernet controller */
  22. #define MBC_IFNAME "mbc" /* device interface name */
  23.  
  24. /* Module Bus Ethernet Controller registers */
  25. #define MBC_ECNTL 0x000 /* ethernet control register */
  26. #define MBC_EDMA 0x002 /* DMA configuration register */
  27. #define MBC_EMRBLR 0x004 /* max receive buffer length */
  28. #define MBC_IVEC 0x006 /* interrupt vector register */
  29. #define MBC_IEVNT 0x008 /* interrupt event */
  30. #define MBC_IMASK 0x00a /* interrupt mask register */
  31. #define MBC_ECFG 0x00c /* configurartion register */
  32. #define MBC_TEST 0x00e /* test register */
  33. #define MBC_AR 0x010 /* address recognition control */
  34. #define MBC_ARTAB 0x200 /* address recognition table */
  35. #define MBC_EBD 0x400 /* buffer descriptors table */
  36. /* Ethernet Control register definitions */
  37. #define MBC_ECNTL_RES 0x0000 /* ethernet reset */
  38. #define MBC_ECNTL_RES_OFF 0x0001 /* ethernet reset off */
  39. #define MBC_ECNTL_ENBL 0x0002 /* ethernet enable */
  40. #define MBC_ECNTL_GTS 0x0004 /* graceful tx stop */
  41. /* Ethernet DMA config/status register definitions */
  42.  
  43. #define MBC_EDMA_BLIM_MSK 0x0007 /* burst limit mask */
  44. #define MBC_EDMA_BLIM_1 0x0000 /* burst limit, 1 */
  45. #define MBC_EDMA_BLIM_2 0x0001 /* burst limit, 2 */
  46. #define MBC_EDMA_BLIM_4 0x0002 /* burst limit, 4 */
  47. #define MBC_EDMA_BLIM_8 0x0003 /* burst limit, 8 */
  48. #define MBC_EDMA_BLIM_16 0x0004 /* burst limit, 16 */
  49. #define MBC_EDMA_BLIM_32 0x0005 /* burst limit, 32 */
  50. #define MBC_EDMA_BLIM_64 0x0006 /* burst limit, 64 */
  51. #define MBC_EDMA_BLIM_UNL 0x0007 /* burst limit, unlimited */
  52. #define MBC_EDMA_WMRK_MSK 0x0018 /* fifo watermark mask */
  53. #define MBC_EDMA_WMRK_8 0x0000 /* fifo watermark 8 bytes */
  54. #define MBC_EDMA_WMRK_16 0x0008 /* fifo watermark 16 bytes */
  55. #define MBC_EDMA_WMRK_24 0x0010 /* fifo watermark 24 bytes */
  56. #define MBC_EDMA_WMRK_32 0x0018 /* fifo watermark 32 bytes */
  57. #define MBC_EDMA_TSRLY 0x0020 /* transmit start early */
  58. #define MBC_EDMA_BDS_MSK 0x00c0 /* bdsize mask */
  59. #define MBC_EDMA_BDS_SHFT 0x0006 /* shift cnt for bd size */
  60. #define MBC_EDMA_BDS_8 0x0000 /* bdsize 8tx/120rx */
  61. #define MBC_EDMA_BDS_16 0x0001 /* bdsize 16tx/112rx */
  62. #define MBC_EDMA_BDS_32 0x0002 /* bdsize 32tx/96rx */
  63. #define MBC_EDMA_BDS_64 0x0003 /* bdsize 64tx/64rx */
  64. #define MBC_EDMA_BDE_MSK 0xfe00 /* bd error # */
  65. #define MBC_EDMA_BDE_SHFT 0x0009 /* shift cnt for bd error # */
  66. #define MBC_BD_MAX 128 /* total number of buffer descriptors */
  67. /* Interrupt Vector register definitions */
  68.  
  69. #define MBC_IVEC_MSK 0x00ff /* interrupt vector mask */
  70. #define MBC_IVEC_RX 0x0000 /* receive interrupt */
  71. #define MBC_IVEC_TX 0x0001 /* transmit interrupt */
  72. #define MBC_IVEC_NTC 0x0002 /* non time critical interrupt */
  73. #define MBC_IVEC_TC 0x0003 /* time critical interrupt */
  74. #define MBC_IVEC_VG 0x0100 /* vector granularity */
  75. /* Interrupt Event register definitions */
  76. #define MBC_IEVNT_RXB 0x0001 /* receive buffer interrupt */
  77. #define MBC_IEVNT_TXB 0x0002 /* transmit buffer interrupt */
  78. #define MBC_IEVNT_BSY 0x0004 /* busy interrupt */
  79. #define MBC_IEVNT_RXF 0x0008 /* receive frame interrupt */
  80. #define MBC_IEVNT_TXF 0x0010 /* transmit frame interrupt */
  81. #define MBC_IEVNT_EBE 0x0020 /* ethernet bus error */
  82. #define MBC_IEVNT_BOD 0x0040 /* backoff done */
  83. #define MBC_IEVNT_GRA 0x0080 /* graceful stop complete */
  84. #define MBC_IEVNT_BTE 0x0100 /* babbling transmitter error */
  85. #define MBC_IEVNT_BRE 0x0200 /* babbling receiver error */
  86. #define MBC_IEVNT_HBE 0x0400 /* heartbeat error */
  87. /* Interrupt Mask register */
  88. #define MBC_IMASK_RXB 0x0001 /* receive buffer interrupt */
  89. #define MBC_IMASK_TXB 0x0002 /* transmit buffer interrupt */
  90. #define MBC_IMASK_BSY 0x0004 /* busy interrupt */
  91. #define MBC_IMASK_RXF 0x0008 /* receive frame interrupt */
  92. #define MBC_IMASK_TXF 0x0010 /* transmit frame interrupt */
  93. #define MBC_IMASK_EBE 0x0020 /* ethernet bus error */
  94. #define MBC_IMASK_BOD 0x0040 /* backoff done */
  95. #define MBC_IMASK_GRA 0x0080 /* graceful stop complete */
  96. #define MBC_IMASK_BTE 0x0100 /* babbling transmitter error */
  97. #define MBC_IMASK_BRE 0x0200 /* babbling receiver error */
  98. #define MBC_IMASK_HBE 0x0400 /* heartbeat error */
  99. /* Ethernet Configuration register definitions */
  100.  
  101. #define MBC_ECFG_LOOP 0x0001 /* internal loopback */
  102. #define MBC_ECFG_FDEN 0x0002 /* full duplex enable */
  103. #define MBC_ECFG_HBC 0x0004 /* heartbeat control */
  104. /* Address Recognition register definitions */
  105. /* written only when ethernet controller is disabled */
  106.  
  107. #define MBC_AR_PROM 0x0400 /* promiscuous */
  108. #define MBC_AR_PAREJ 0x0800 /* phys address reject  */
  109. #define MBC_AR_INDEX 0x4000 /* index enable */
  110. #define MBC_AR_MULTI_00 0x0000 /* multicast and broadcast */
  111. #define MBC_AR_MULTI_01 0x1000 /* multicast, but no broadcast */
  112. #define MBC_AR_MULTI_10 0x2000 /* all multicast and broadcast */
  113. #define MBC_AR_MULTI_11 0x3000 /* no multicast or broadcast */
  114. #define MBC_AR_HASH 0x8000 /* hash mode enable */
  115. #define MBC_ARTAB_SIZE 64 /* number of entries in the AR table */
  116. /* SCC Ethernet Protocol Specific Mode Register definitions */
  117. /* Receive/Transmit Buffer Descriptor */
  118. #ifndef _ASMLANGUAGE
  119. typedef struct   /* MBC_BD */
  120.     {
  121.     UINT16 statusMode; /* status and control */
  122.     UINT16 dataLength; /* length of data buffer in bytes */
  123.     UCHAR * dataPointer; /* points to data buffer */
  124.     } MBC_BD;
  125. #endif /* _ASMLANGUAGE*/
  126. /* Receive Buffer Descriptor statusMode field definitions */
  127.  
  128. #define MBC_RXBD_CL 0x0001 /* collision condition */
  129. #define MBC_RXBD_OV 0x0002 /* overrun condition */
  130. #define MBC_RXBD_CR 0x0004 /* Rx CRC error */
  131. #define MBC_RXBD_SH 0x0008 /* short frame received */
  132. #define MBC_RXBD_NO 0x0010 /* Rx nonoctet aligned frame */
  133. #define MBC_RXBD_LG 0x0020 /* Rx frame length violation */
  134. #define MBC_RXBD_M 0x0100 /* miss bit for prom mode */
  135. #define MBC_RXBD_F 0x0400 /* buffer is first in frame */
  136. #define MBC_RXBD_L 0x0800 /* buffer is last in frame */
  137. #define MBC_RXBD_I 0x1000 /* interrupt on receive */
  138. #define MBC_RXBD_W 0x2000 /* last BD in ring */
  139. #define MBC_RXBD_E 0x8000 /* buffer is empty */
  140.  
  141. /* Transmit Buffer Descriptor statusMode field definitions */
  142.  
  143. #define MBC_TXBD_CSL 0x0001 /* carrier sense lost */
  144. #define MBC_TXBD_UN 0x0002 /* underrun */
  145. #define MBC_TXBD_RC 0x003c /* retry count */
  146. #define MBC_TXBD_RC_SHFT 0x0002 /* shift cnt for RC */
  147. #define MBC_TXBD_RL 0x0040 /* retransmission limit */
  148. #define MBC_TXBD_LC 0x0080 /* late collision */
  149. #define MBC_TXBD_HB 0x0100 /* heartbeat */
  150. #define MBC_TXBD_DEF 0x0200 /* defer indication */
  151. #define MBC_TXBD_TC 0x0400 /* auto transmit CRC */
  152. #define MBC_TXBD_L 0x0800 /* buffer is last in frame */
  153. #define MBC_TXBD_I 0x1000 /* interrupt on transmit */
  154. #define MBC_TXBD_W 0x2000 /* last BD in ring */
  155. #define MBC_TXBD_PAD 0x4000 /* auto pad short frames */
  156. #define MBC_TXBD_R 0x8000 /* buffer is ready */
  157. #define MBC_TXBD_ERRS (MBC_TXBD_DEF | MBC_TXBD_HB | 
  158.                                  MBC_TXBD_LC  | MBC_TXBD_RL | 
  159.                                  MBC_TXBD_UN  | MBC_TXBD_CSL)
  160. /* typedefs */
  161.  
  162. #ifndef _ASMLANGUAGE
  163. typedef struct   /* MBC_DEV */
  164.     {
  165.     int mbcNum; /* number of MBC device */
  166.     UINT8 bdSize; /* buffer descriptor size */
  167.     UINT8 txBdNum; /* number of tx buf descriptors */
  168.     UINT8 rxBdNum; /* number of rx buf descriptors */
  169.     MBC_BD * txBdBase; /* transmit BD array address */
  170.     MBC_BD * rxBdBase; /* receive BD array address */
  171.     u_char * txBufBase; /* transmit buffer pool base address */
  172.     u_char * rxBufBase; /* receive buffer pool base address */
  173.     UINT8 txBdNext; /* next transmit BD to fill */
  174.     UINT8 rxBdNext; /* next receive BD to read */
  175.     volatile char * pDevBase; /* ethenet module base address */
  176.     } MBC_DEV;
  177. #endif /* _ASMLANGUAGE */
  178. #ifdef __cplusplus
  179. }
  180. #endif
  181. #endif /* __INCif_mbch */