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

VxWorks

开发平台:

C/C++

  1. /* if_cs.h - Crystal Semiconductor CS8900 network interface header */
  2. /*
  3.  * Copyright 1996 Crystal Semiconductor Corp.
  4.  * Copyright 1990-1996 Wind River Systems, Inc.
  5.  */
  6. /*
  7. modification history
  8. --------------------
  9. 01a,16dec96,hdn  adapted and cleaned up.
  10. */
  11. #ifndef __INCif_csh
  12. #define __INCif_csh
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /* Individual Address (Ethernet Address) */
  17. typedef struct cs_ia /* CS_IA */
  18.     {
  19.     USHORT word[3];
  20.     } CS_IA;
  21. /* Receive Frame Buffer */
  22. typedef struct cs_rxbuf /* CS_RXBUF */
  23.     {
  24.     struct cs_rxbuf *pNext;
  25.     UCHAR status;
  26.     UCHAR refCount;
  27.     USHORT length;
  28.     UCHAR data[SIZEOF_ETHERHEADER + ETHERMTU];
  29.     } CS_RXBUF;
  30. /* Instance global variables */
  31. typedef struct cs_softc /* CS_SOFTC */
  32.     {
  33.     struct arpcom arpCom;
  34.     USHORT ioAddr;
  35.     USHORT intLevel;
  36.     USHORT intVector;
  37.     USHORT *pPacketPage;
  38.     USHORT mediaType;
  39.     USHORT configFlags;
  40.     CS_RXBUF *pFreeRxBuff;
  41.     BOOL inMemoryMode;
  42.     BOOL txInProgress;
  43.     BOOL resetting;
  44.     USHORT rxDepth;
  45.     USHORT maxRxDepth;
  46.     USHORT maxTxDepth;
  47.     UINT loanCount;
  48.     } CS_SOFTC;
  49. /* Receive buffer status */
  50. #define CS_RXBUF_FREE          0x0000
  51. #define CS_RXBUF_ALLOCATED     0x0001
  52. #define CS_RXBUF_LOANED        0x0002
  53. /* Config Flags in cs_softc */
  54. #define CS_CFGFLG_MEM_MODE     0x0001
  55. #define CS_CFGFLG_USE_SA       0x0002
  56. #define CS_CFGFLG_IOCHRDY      0x0004
  57. #define CS_CFGFLG_DCDC_POL     0x0008
  58. #define CS_CFGFLG_FDX          0x0010
  59. #define CS_CFGFLG_NOT_EEPROM   0x8000
  60. /* Media Type in cs_softc */
  61. #define CS_MEDIA_AUI           0x0001
  62. #define CS_MEDIA_10BASE2       0x0002
  63. #define CS_MEDIA_10BASET       0x0003
  64. /* Chip Identification */
  65. #define CS_EISA_NUM_CRYSTAL    0x630E
  66. #define CS_PROD_ID_MASK        0xE000
  67. #define CS_PROD_ID_CS8900      0x0000
  68. #define CS_PROD_ID_CS8920      0x4000
  69. #define CS_PROD_ID_CS892X      0x6000
  70. #define CS_PROD_REV_MASK       0x1F00
  71. /* IO Port Offsets */
  72. #define CS_PORT_RXTX_DATA     0x0000
  73. #define CS_PORT_RXTX_DATA_1   0x0002
  74. #define CS_PORT_TX_CMD        0x0004
  75. #define CS_PORT_TX_LENGTH     0x0006
  76. #define CS_PORT_ISQ           0x0008
  77. #define CS_PORT_PKTPG_PTR     0x000A
  78. #define CS_PORT_PKTPG_DATA    0x000C
  79. #define CS_PORT_PKTPG_DATA_1  0x000E
  80. /* PacketPage Offsets */
  81. #define CS_PKTPG_EISA_NUM     0x0000
  82. #define CS_PKTPG_PRODUCT_ID   0x0002
  83. #define CS_PKTPG_IO_BASE      0x0020
  84. #define CS_PKTPG_INT_NUM      0x0022
  85. #define CS_PKTPG_MEM_BASE     0x002C
  86. #define CS_PKTPG_EEPROM_CMD   0x0040
  87. #define CS_PKTPG_EEPROM_DATA  0x0042
  88. #define CS_PKTPG_RX_CFG       0x0102
  89. #define CS_PKTPG_RX_CTL       0x0104
  90. #define CS_PKTPG_TX_CFG       0x0106
  91. #define CS_PKTPG_BUF_CFG      0x010A
  92. #define CS_PKTPG_LINE_CTL     0x0112
  93. #define CS_PKTPG_SELF_CTL     0x0114
  94. #define CS_PKTPG_BUS_CTL      0x0116
  95. #define CS_PKTPG_TEST_CTL     0x0118
  96. #define CS_PKTPG_ISQ          0x0120
  97. #define CS_PKTPG_RX_EVENT     0x0124
  98. #define CS_PKTPG_TX_EVENT     0x0128
  99. #define CS_PKTPG_BUF_EVENT    0x012C
  100. #define CS_PKTPG_RX_MISS      0x0130
  101. #define CS_PKTPG_TX_COL       0x0132
  102. #define CS_PKTPG_LINE_ST      0x0134
  103. #define CS_PKTPG_SELF_ST      0x0136
  104. #define CS_PKTPG_BUS_ST       0x0138
  105. #define CS_PKTPG_TX_CMD       0x0144
  106. #define CS_PKTPG_TX_LENGTH    0x0146
  107. #define CS_PKTPG_IND_ADDR     0x0158
  108. #define CS_PKTPG_RX_STATUS    0x0400
  109. #define CS_PKTPG_RX_LENGTH    0x0402
  110. #define CS_PKTPG_RX_FRAME     0x0404
  111. #define CS_PKTPG_TX_FRAME     0x0A00
  112. /* EEPROM Offsets */
  113. #define CS_EEPROM_IND_ADDR_H  0x001C
  114. #define CS_EEPROM_IND_ADDR_M  0x001D
  115. #define CS_EEPROM_IND_ADDR_L  0x001E
  116. #define CS_EEPROM_ISA_CFG     0x001F
  117. #define CS_EEPROM_MEM_BASE    0x0020
  118. #define CS_EEPROM_XMIT_CTL    0x0023
  119. #define CS_EEPROM_ADPTR_CFG   0x0024
  120. /* Register Numbers */
  121. #define CS_REG_NUM_MASK       0x003F
  122. #define CS_REG_NUM_RX_EVENT   0x0004
  123. #define CS_REG_NUM_TX_EVENT   0x0008
  124. #define CS_REG_NUM_BUF_EVENT  0x000C
  125. #define CS_REG_NUM_RX_MISS    0x0010
  126. #define CS_REG_NUM_TX_COL     0x0012
  127. /* Self Control Register */
  128. #define CS_SELF_CTL_RESET     0x0040
  129. #define CS_SELF_CTL_HC1E      0x2000
  130. #define CS_SELF_CTL_HCB1      0x8000
  131. /* Self Status Register */
  132. #define CS_SELF_ST_INIT_DONE  0x0080
  133. #define CS_SELF_ST_SI_BUSY    0x0100
  134. #define CS_SELF_ST_EEP_PRES   0x0200
  135. #define CS_SELF_ST_EEP_OK     0x0400
  136. #define CS_SELF_ST_EL_PRES    0x0800
  137. /* EEPROM Command Register */
  138. #define CS_EEPROM_CMD_READ    0x0200
  139. #define CS_EEPROM_CMD_ELSEL   0x0400
  140. /* Bus Control Register */
  141. #define CS_BUS_CTL_USE_SA     0x0200
  142. #define CS_BUS_CTL_MEM_MODE   0x0400
  143. #define CS_BUS_CTL_IOCHRDY    0x1000
  144. #define CS_BUS_CTL_INT_ENBL   0x8000
  145. /* Bus Status Register */
  146. #define CS_BUS_ST_TX_BID_ERR  0x0080
  147. #define CS_BUS_ST_RDY4TXNOW   0x0100
  148. /* Line Control Register */
  149. #define CS_LINE_CTL_RX_ON     0x0040
  150. #define CS_LINE_CTL_TX_ON     0x0080
  151. #define CS_LINE_CTL_AUI_ONLY  0x0100
  152. #define CS_LINE_CTL_10BASET   0x0000
  153. /* Test Control Register */
  154. #define CS_TEST_CTL_DIS_LT    0x0080
  155. #define CS_TEST_CTL_ENDEC_LP  0x0200
  156. #define CS_TEST_CTL_AUI_LOOP  0x0400
  157. #define CS_TEST_CTL_DIS_BKOFF 0x0800
  158. #define CS_TEST_CTL_FDX       0x4000
  159. /* Receiver Configuration Register */
  160. #define CS_RX_CFG_SKIP        0x0040
  161. #define CS_RX_CFG_RX_OK_IE    0x0100
  162. #define CS_RX_CFG_CRC_ERR_IE  0x1000
  163. #define CS_RX_CFG_RUNT_IE     0x2000
  164. #define CS_RX_CFG_X_DATA_IE   0x4000
  165. #define CS_RX_CFG_ALL_IE      0x7100
  166. /* Receiver Event Register */
  167. #define CS_RX_EVENT_DRIBBLE   0x0080
  168. #define CS_RX_EVENT_RX_OK     0x0100
  169. #define CS_RX_EVENT_IND_ADDR  0x0400
  170. #define CS_RX_EVENT_BCAST     0x0800
  171. #define CS_RX_EVENT_CRC_ERR   0x1000
  172. #define CS_RX_EVENT_RUNT      0x2000
  173. #define CS_RX_EVENT_X_DATA    0x4000
  174. /* Receiver Control Register */
  175. #define CS_RX_CTL_RX_OK_A     0x0100
  176. #define CS_RX_CTL_MCAST_A     0x0200
  177. #define CS_RX_CTL_IND_A       0x0400
  178. #define CS_RX_CTL_BCAST_A     0x0800
  179. #define CS_RX_CTL_CRC_ERR_A   0x1000
  180. #define CS_RX_CTL_RUNT_A      0x2000
  181. #define CS_RX_CTL_X_DATA_A    0x4000
  182. /* Transmit Configuration Register */
  183. #define CS_TX_CFG_LOSS_CRS_IE 0x0040
  184. #define CS_TX_CFG_SQE_ERR_IE  0x0080
  185. #define CS_TX_CFG_TX_OK_IE    0x0100
  186. #define CS_TX_CFG_OUT_WIN_IE  0x0200
  187. #define CS_TX_CFG_JABBER_IE   0x0400
  188. #define CS_TX_CFG_16_COLL_IE  0x8000
  189. #define CS_TX_CFG_ALL_IE      0x8FC0
  190. /* Transmit Event Register */
  191. #define CS_TX_EVENT_LOSS_CRS  0x0040
  192. #define CS_TX_EVENT_SQE_ERR   0x0080
  193. #define CS_TX_EVENT_TX_OK     0x0100
  194. #define CS_TX_EVENT_OUT_WIN   0x0200
  195. #define CS_TX_EVENT_JABBER    0x0400
  196. #define CS_TX_EVENT_COLL_MASK 0x7800
  197. #define CS_TX_EVENT_16_COLL   0x8000
  198. /* Transmit Command Register */
  199. #define CS_TX_CMD_START_5     0x0000
  200. #define CS_TX_CMD_START_381   0x0080
  201. #define CS_TX_CMD_START_1021  0x0040
  202. #define CS_TX_CMD_START_ALL   0x00C0
  203. #define CS_TX_CMD_FORCE       0x0100
  204. #define CS_TX_CMD_ONE_COLL    0x0200
  205. #define CS_TX_CMD_NO_CRC      0x1000
  206. #define CS_TX_CMD_NO_PAD      0x2000
  207. /* Buffer Configuration Register */
  208. #define CS_BUF_CFG_SW_INT     0x0040
  209. #define CS_BUF_CFG_RDY4TX_IE  0x0100
  210. #define CS_BUF_CFG_TX_UNDR_IE 0x0200
  211. #define CS_BUF_CFG_RX_MISS_IE 0x0400
  212. /* Buffer Event Register */
  213. #define CS_BUF_EVENT_SW_INT   0x0040
  214. #define CS_BUF_EVENT_RDY4TX   0x0100
  215. #define CS_BUF_EVENT_TX_UNDR  0x0200
  216. #define CS_BUF_EVENT_RX_MISS  0x0400
  217. /* ISA Configuration from EEPROM */
  218. #define CS_ISA_CFG_IRQ_MASK   0x000F
  219. #define CS_ISA_CFG_USE_SA     0x0080
  220. #define CS_ISA_CFG_IOCHRDY    0x0100
  221. #define CS_ISA_CFG_MEM_MODE   0x8000
  222. /* Memory Base from EEPROM */
  223. #define CS_MEM_BASE_MASK      0xFFF0
  224. /* Adpater Configuration from EEPROM */
  225. #define CS_ADPTR_CFG_MEDIA    0x0060
  226. #define CS_ADPTR_CFG_10BASET  0x0020
  227. #define CS_ADPTR_CFG_AUI      0x0040
  228. #define CS_ADPTR_CFG_10BASE2  0x0060
  229. #define CS_ADPTR_CFG_DCDC_POL 0x0080
  230. /* Transmission Control from EEPROM */
  231. #define CS_XMIT_CTL_FDX       0x8000
  232. /* Miscellaneous definitions */
  233. #define CS_MAXLOOP            0x8888
  234. #define CS_RXBUFCOUNT         16
  235. #define CS_MC_LOANED          5
  236. #ifdef __cplusplus
  237. }
  238. #endif
  239. #endif  /* __INCif_csh */