cs8900a.h
上传用户:ske666
上传日期:2022-03-30
资源大小:371k
文件大小:8k
源码类别:

VxWorks

开发平台:

Objective-C

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