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

VxWorks

开发平台:

C/C++

  1. /* dec21x4xEnd.h - DEC Ethernet LAN Controller 21x4x interface header */
  2. /* Copyright 1984-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01q,28oct01,dat  Adding warnings about obsolete drivers
  7. 01p,01feb99,dat  (from kla) added decl for dec21x4xLoad. SPR 24794
  8. 01o,13oct98,cn   Added macro DEC_USR_FD [SPR# 21683].
  9. 01n,24sep98,dat  SPR 20942, DEC_FRAME_LEN_MSK was incorrect.
  10. 01m,13mar98,jgn  add extra CSR6 register values (SPR #20166)
  11. 01l,29jan98,rlp  renamed macro names containing lower case characters.
  12. 01k,08dec97,tam  added _func_dec2114xIntAck
  13. 01j,27sep97,rlp  added support for dec21143
  14. 01i,24sep97,vin  changed MBLK_CONFIG to M_CL_CONFIG
  15. 01h,31aug97,vin  added a txBlocked variable to the drvCtrl structure.
  16. 01g,22aug97,gnn  changes due to new buffering scheme.
  17. 01f,21aug97,vin  modified free_buf type def added map's fixes
  18. 01e,10jun97,map  renamed funcDec21x40MediaSelect to _func_dec21x40MediaSelect.
  19. 01d,02jun97,map  added DEC Serial ROM support, and driver control definitions.
  20. 01c,24apr97,map  added PCISWAP_SHORT
  21. 01b,18apr97,map  added support for dec 21140
  22. 01a,10jan97,map  written from ../netif/if_dc.h
  23. */
  24. #ifndef __INCif_dec21x4xEndh
  25. #define __INCif_dec21x4xEndh
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif
  29. /* dec21x4xEnd is being obsoleted, use dec21x40End instead */
  30. #warning "dec21x4xEnd is being obsoleted, please use dec21x40End instead"
  31. #include "end.h"
  32. #include "netBufLib.h"
  33. #define DECPCI_REG_OFFSET 0x08 /* quad word aligned */
  34. #if (_BYTE_ORDER == _BIG_ENDIAN)
  35. #define PCISWAP(x) LONGSWAP(x)
  36. #define PCISWAP_SHORT(x) (MSB(x) | LSB(x) << 8)
  37. #define SROM_SHORT(pX) (*(UINT8*)(pX) << 8 | *((UINT8*)(pX)+1))
  38. #else
  39. #define PCISWAP(x) (x)
  40. #define PCISWAP_SHORT(x) (x)
  41. #define SROM_SHORT(pX) (*(UINT8*)(pX) | *((UINT8*)(pX)+1) << 8)
  42. #endif /* _BYTE_ORDER == _BIG_ENDIAN */
  43. /*
  44.  * Receive Message Descriptor Entry.
  45.  * Four words per entry.  Number of entries must be a power of two.
  46.  */
  47. typedef struct rDesc
  48.     {
  49.     ULONG rDesc0; /* status and ownership */
  50.     ULONG rDesc1; /* control & buffer count */
  51.     ULONG rDesc2; /* buffer address 1 */
  52.     ULONG rDesc3; /* buffer address 2 */
  53.     } DEC_RD;
  54. /*
  55.  * Transmit Message Descriptor Entry.
  56.  * Four words per entry.  Number of entries must be a power of two.
  57.  */
  58. typedef struct tDesc
  59.     {
  60.     ULONG tDesc0; /* status and ownership */
  61.     ULONG tDesc1; /* control & buffer count */
  62.     ULONG tDesc2; /* buffer address 1 */
  63.     ULONG tDesc3; /* buffer address 2 */
  64.     } DEC_TD;
  65. #define DEC_MAX_UNITS 4 /* max number of dec units */
  66. #define MIN_RDS 5 /* 5 buffers reasonable minimum */
  67. #define MIN_TDS 5 /* 5 buffers reasonable minimum */
  68. #define NUM_RDS_DEF 32 /* default number of Recv descriptors */
  69. #define NUM_TDS_DEF 64 /* default number of Xmit descriptors */
  70. #define NUM_LOAN 16      /* number of loaner buffers */
  71. /* define CSRs and descriptors */
  72. #define CSR0 0 /* csr 0 */
  73. #define CSR1 1 /* csr 1 */
  74. #define CSR2 2 /* csr 2 */
  75. #define CSR3 3 /* csr 3 */
  76. #define CSR4 4 /* csr 4 */
  77. #define CSR5 5 /* csr 5 */
  78. #define CSR6 6 /* csr 6 */
  79. #define CSR7 7 /* csr 7 */
  80. #define CSR8 8 /* csr 8 */
  81. #define CSR9 9 /* csr 9 */
  82. #define CSR10 10 /* csr 10 */
  83. #define CSR11 11 /* csr 11 */
  84. #define CSR12 12 /* csr 12 */
  85. #define CSR13 13 /* csr 13 */
  86. #define CSR14 14 /* csr 14 */
  87. #define CSR15 15 /* csr 15 */
  88. #define RDESC0 0 /* recv desc 0 */
  89. #define RDESC1 1 /* recv desc 1 */
  90. #define RDESC2 2 /* recv desc 2 */
  91. #define RDESC3 3 /* recv desc 3 */
  92. #define TDESC0 0 /* xmit desc 0 */
  93. #define TDESC1 1 /* xmit desc 1 */
  94. #define TDESC2 2 /* xmit desc 2 */
  95. #define TDESC3 3 /* xmit desc 3 */
  96. /* command status register read write */
  97. #define CSR(base,x) ((ULONG)(base) + ((DECPCI_REG_OFFSET) * (x)))
  98. #define READ_CSR(base,x) (PCISWAP(*((ULONG *)CSR((base),(x)))))
  99. #define WRITE_CSR(base,x,val) (*((ULONG *)CSR((base),(x))) = PCISWAP((val)))
  100. /* recv xmit descriptor read write */
  101. #define DESC(base,x) ((ULONG)(base) + (4 * (x)))
  102. #define READ_DESC(base,x) (PCISWAP(*((ULONG *)(DESC((base),(x))))))
  103. #define WRITE_DESC(base,x,val) (*((ULONG *)(DESC((base),(x)))) = PCISWAP((val)))
  104. /* Definitions for fields and bits in the DEC_DEVICE */
  105. /* CSR0 Bus Mode Register */
  106. #define CSR0_21143_WIE 0x01000000      /* write & invalidate enable 21143 */
  107. #define CSR0_21143_RLE 0x00800000      /* read line enable 21143 */
  108. #define CSR0_2114X_RML 0x00200000 /* pci read multiple - 2114X */
  109. #define CSR0_2114X_DBO 0x00100000      /* descriptor byte ordering - 2114X */
  110. #define CSR0_TAP_NO 0x00000000 /* no xmit auto polling */
  111. #define CSR0_TAP_200 0x00020000 /* xmit poll every 200 usecs */
  112. #define CSR0_TAP_800 0x00040000 /* xmit poll every 800 usecs */
  113. #define CSR0_TAP_1600 0x00060000 /* xmit poll every 1.6 millsecs */
  114. #define CSR0_TAP_12 0x00080000 /* xmit poll every 12.8 usecs - 2114X */
  115. #define CSR0_TAP_25 0x000A0000 /* xmit poll every 25.6 usecs - 2114X */
  116. #define CSR0_TAP_51 0x000C0000 /* xmit poll every 51.2 usecs - 2114X */
  117. #define CSR0_TAP_102 0x000E0000 /* xmit poll every 102.4 usecs- 2114X */
  118. #define CSR0_DAS 0x00010000 /* Diagnostic Address Space */
  119. #define CSR0_CAL_NO 0x00000000 /* cache address alignment not used */
  120. #define CSR0_CAL_08 0x00004000 /* 08 longword boundary aligned */
  121. #define CSR0_CAL_16 0x00008000 /* 16 longword boundary aligned */
  122. #define CSR0_CAL_32 0x0000c000 /* 32 longword boundary aligned */
  123. #define CSR0_PBL_UL 0x00000000 /* dma burst len - unlimited */
  124. #define CSR0_PBL_01 0x00000100 /* dma burst len -  1 lword */
  125. #define CSR0_PBL_02 0x00000200 /* dma burst len -  2 lwords */
  126. #define CSR0_PBL_04 0x00000400 /* dma burst len -  4 lwords */
  127. #define CSR0_PBL_08 0x00000800 /* dma burst len -  8 lwords */
  128. #define CSR0_PBL_16 0x00001000 /* dma burst len - 16 lwords */
  129. #define CSR0_PBL_32 0x00002000 /* dma burst len - 32 lwords */
  130. #define CSR0_BLE 0x00000080 /* Big/little endian */
  131. #define CSR0_BAR 0x00000002 /* Bus arbitration */
  132. #define CSR0_SWR 0x00000001 /* software reset */
  133. #define CSR0_PBL_MSK 0x00003F00 /* Dma burst length mask */
  134. #define CSR0_PBL_VAL(x) (((x) << 8) & CSR0_PBL_MSK)
  135. #define CSR0_DSL_MSK 0x0000007C /* Descriptor skip length */
  136. #define CSR0_DSL_VAL(x) (((x) << 2) & CSR0_DSL_MSK)
  137. #define CSR0_TAP_MSK 0x00060000
  138. #define CSR0_BLE_MSK 0x00000080
  139. #define CSR0_CAL_MSK 0x0000c000
  140. /* CSR1 Transmit Poll Demand Register */
  141. #define CSR1_TPD 0x00000001 /* Transmit poll demand */
  142. /* CSR2 Recieve Poll Demand Register */
  143. #define CSR2_RPD 0x00000001 /* Transmit poll demand */
  144. /* CSR3 Receive List Base address Register */
  145. #define CSR3_RDBA_MSK 0xFFFFFFFC /* long word aligned */
  146. #define CSR3_RDBA_VAL(x) ((x) & CSR3_RDBA_MSK)
  147. /* CSR4 Transmit List Base address Register */
  148. #define CSR4_TDBA_MSK 0xFFFFFFFC /* long word aligned */
  149. #define CSR4_TDBA_VAL(x) ((x) & CSR4_TDBA_MSK)
  150. /* CSR5 Status register */
  151. #define CSR5_21143_LC 0x08000000      /* link changed - 21143 */
  152. #define CSR5_21143_GPI 0x04000000      /* GP port interrupt  -21143 */
  153. #define CSR5_ERR_PE 0x00000000 /* parity error */
  154. #define CSR5_ERR_MA 0x00800000 /* Master abort */
  155. #define CSR5_ERR_TA 0x01000000 /* target abort */
  156. #define CSR5_TPS_ST 0x00000000 /* Stopped */
  157. #define CSR5_TPS_RFTD 0x00100000 /* Running Fetch xmit descriptor */
  158. #define CSR5_TPS_RWET 0x00200000 /* Running Wait for end of Xmission */
  159. #define CSR5_TPS_RRBM 0x00300000 /* Running Read buff from memory */
  160. #define CSR5_TPS_RSP 0x00500000 /* Running Set up packet */
  161. #define CSR5_TPS_STFU 0x00600000 /* Suspended xmit FIFO underflow */
  162. #define CSR5_TPS_RCTD 0x00700000 /* Running Close xmit descriptor */
  163. #define CSR5_RPS_ST 0x00000000 /* stopped reset or stop rcv command */
  164. #define CSR5_RPS_RFRD 0x00020000 /* Running Fetch rcv descriptor */
  165. #define CSR5_RPS_RCEP 0x00040000 /* Running Check end of rcv packet */
  166. #define CSR5_RPS_RWRP 0x00060000 /* Running Wait for rcv packet */
  167. #define CSR5_RPS_SURB 0x00080000 /* Suspended - unavailable rcv buff */
  168. #define CSR5_RPS_RCRD 0x000A0000 /* Running close rcv descriptor */
  169. #define CSR5_RPS_RFFF 0x000C0000 /* flush frame from rcv FIFO */
  170. #define CSR5_RPS_RQRF 0x000E0000 /* queue the rcv frame into rcv buff */
  171. #define CSR5_NIS 0x00010000 /* normal interrupt summary */
  172. #define CSR5_AIS 0x00008000 /* abnormal interrupt summary */
  173. #define CSR5_21143_ERI  0x00004000      /* early receive interrupt - 21143 */
  174. #define CSR5_SE 0x00002000 /* system error */
  175. #define CSR5_21X4X_LNF 0x00001000 /* link fail - 21X4X */
  176. #define CSR5_21040_FD 0x00000800 /* Full duplex short frm rxd - 21040 */
  177. #define CSR5_2114X_TMR 0x00000800 /* GP timer expired - 2114X */
  178. #define CSR5_21040_AT 0x00000400 /* AUI / 10BaseT Pin - 21040 */
  179. #define CSR5_2114X_ETI 0x00000400 /* Early Tx intrrupt - 2114X */
  180. #define CSR5_RWT 0x00000200 /* rcv watchdog time-out */
  181. #define CSR5_RPS 0x00000100 /* rcv process stopped */
  182. #define CSR5_RU 0x00000080 /* rcv buffer unavailable */
  183. #define CSR5_RI 0x00000040 /* rcv interrupt */
  184. #define CSR5_UNF 0x00000020 /* xmit underflow */
  185. #define CSR5_21143_LNP 0x00000010      /* link pass - 21143 */
  186. #define CSR5_TJT 0x00000008 /* xmit jabber time-out */
  187. #define CSR5_TU 0x00000004 /* xmit buffer unavailable */
  188. #define CSR5_TPS 0x00000002 /* Xmit Process stopped */
  189. #define CSR5_TI 0x00000001 /* xmit interrupt */
  190. #define CSR5_RPS_MSK 0x000E0000 /* Rcv process state mask */
  191. #define CSR5_TPS_MSK 0x00700000 /* Xmit process state mask */
  192. #define CSR5_ERR_MSK 0x03800000 /* error mask */
  193. /* CSR6 Operation Mode Register */
  194. #define CSR6_2114X_SC 0x80000000 /* special capture effect enable */
  195. #define CSR6_2114X_RA 0x40000000 /* receive all */
  196. #define CSR6_2114X_MB1 0x02000000 /* must be 1 */
  197. #define CSR6_2114X_SCR 0x01000000 /* scrambler mode */
  198. #define CSR6_2114X_PCS 0x00800000 /* PCS function */
  199. #define CSR6_2114X_TTM 0x00400000 /* tx threshold mode */
  200. #define CSR6_2114X_SF 0x00200000 /* store and forward */
  201. #define CSR6_2114X_HBD 0x00080000 /* heartbeat disable */
  202. #define CSR6_2114X_PS 0x00040000 /* port select */
  203. #define CSR6_CAE 0x00020000 /* capture effect enable */
  204. #define CSR6_21040_BP 0x00010000 /* back pressure - 21040 */
  205. #define CSR6_THR_072 0x00000000 /* threshold bytes 72 */
  206. #define CSR6_THR_096 0x00004000 /* threshold bytes 96 */
  207. #define CSR6_THR_128 0x00008000 /* threshold bytes 128 */
  208. #define CSR6_THR_160 0x0000C000 /* threshold bytes 160 */
  209. #define CSR6_ST 0x00002000 /* start/stop Xmit command */
  210. #define CSR6_FC 0x00001000 /* Force collision mode */
  211. #define CSR6_OM_EXT     0x00000800      /* external loopback mode */
  212. #define CSR6_OM_INT 0x00000400 /* internal loopback mode */
  213. #define CSR6_OM_NOR 0x00000000 /* normal mode */
  214. #define CSR6_FD 0x00000200 /* Full Duplex mode */
  215. #define CSR6_21040_FKD 0x00000100 /* Flaky oscillator disable - 21040 */
  216. #define CSR6_PM 0x00000080 /* Pass all multicast */
  217. #define CSR6_PR 0x00000040 /* promiscuous mode */
  218. #define CSR6_SB 0x00000020 /* Start/Stop Back off counter */
  219. #define CSR6_IF 0x00000010 /* inverse filtering [RO] */
  220. #define CSR6_PB 0x00000008 /* pass bad frames */
  221. #define CSR6_HO 0x00000004 /* hash only filter mode [RO] */
  222. #define CSR6_SR 0x00000002 /* start/stop receive command */
  223. #define CSR6_HP 0x00000001 /* hash/perfect filter mode [RO] */
  224. /* CSR7 Interrupt Mask register */
  225. #define CSR7_21143_LCM 0x08000000      /* link changed mask - 21143 */
  226. #define CSR7_21143_GPM 0x04000000      /* general purpose port mask - 21143 */
  227. #define CSR7_NIM 0x00010000 /* normal interrupt mask */
  228. #define CSR7_AIM 0x00008000 /* abnormal interrupt mask */
  229. #define CSR7_21143_ERM 0x00004000      /* early receive mask - 21143 */
  230. #define CSR7_SEM 0x00002000 /* system error mask */
  231. #define CSR7_21X4X_LFM 0x00001000 /* link fail mask */
  232. #define CSR7_21040_FDM 0x00000800 /* full duplex mask - 21040 */
  233. #define CSR7_2114X_TMR 0x00000800 /* gp timer mask */
  234. #define CSR7_21040_ATM 0x00000400 /* aui/tp switch mask - 21040 */
  235. #define CSR7_2114X_ETM 0x00000400 /* early trasmit mask */
  236. #define CSR7_RWM 0x00000200 /* rcv watchdog time-out mask */
  237. #define CSR7_RSM 0x00000100 /* rcv stopped mask */
  238. #define CSR7_RUM 0x00000080 /* rcv buff unavailable mask */
  239. #define CSR7_RIM 0x00000040 /* rcv  interrupt mask */
  240. #define CSR7_UNM 0x00000020 /* underflow interrupt mask */ 
  241. #define CSR7_21143_LPE 0x00000010      /* link pass - 21143 */
  242. #define CSR7_TJM 0x00000008 /* xmit jabber timer out mask */ 
  243. #define CSR7_TUM 0x00000004 /* xmit buff unavailable mask */
  244. #define CSR7_TSM 0x00000002 /* xmission stopped mask */
  245. #define CSR7_TIM 0x00000001 /* xmit interrupt mask */
  246. /* CSR8 Missing Frame Counter */
  247. #define CSR8_2114X_OFO 0x10000000   /* overflow counter overflow */
  248. #define CSR8_2114X_OFC_MSK 0x0FFE0000   /* overflow counter */
  249. #define CSR8_MFO 0x00010000   /* missed frame overflow */
  250. #define CSR8_MFC_MSK 0x0000FFFF   /* Missed frame counter mask */
  251. /* CSR9 Ethernet Address ROM Register */
  252. #define CSR9_2114X_MDI 0x00080000 /* MII mgmt data in */
  253. #define CSR9_2114X_MII 0x00040000 /* MII mgmt op mode */
  254. #define CSR9_2114X_MDO 0x00020000 /* MII mgmt write data */
  255. #define CSR9_2114X_MDC 0x00010000 /* MII mgmt clock */
  256. #define CSR9_2114X_RD 0x00004000 /* Serial ROM Read */
  257. #define CSR9_2114X_WR 0x00002000 /* Serial ROM Write */
  258. #define CSR9_2114X_BR 0x00001000 /* boot rom select */
  259. #define CSR9_2114X_SR 0x00000800 /* serial rom select */
  260. #define CSR9_2114X_REG 0x00000400 /* external register select */
  261. #define CSR9_21040_DNV 0x80000000 /* Data not valid */
  262. #define CSR9_DAT_MSK 0x000000FF /* data mask */
  263. #define ENET_ROM_SIZE 8 /* ethernet rom register size */
  264. /* CSR10 Reserved */
  265. /* CSR11 Full Duplex Register */
  266. #define CSR11_FDACV_MSK 0x0000FFFF /* full duplex auto config mask */
  267. /* CSR12 SIA status Register - 21040 */
  268. #define CSR12_21040_DA0 0x00000080 /* Diagnostic bit all One */
  269. #define CSR12_21040_DAZ 0x00000040 /* Diagnostic bit all zero */
  270. #define CSR12_21040_DSP 0x00000020 /* Diagnostic BIST status indicator */
  271. #define CSR12_21040_DSD 0x00000010 /* Diagnostic Self test done */
  272. #define CSR12_21040_APS 0x00000008 /* Auto polarity state */
  273. #define CSR12_21040_LKF 0x00000004 /* link fail status */
  274. #define CSR12_21040_NCR 0x00000002 /* network connection error */
  275. #define CSR12_21040_PAUI 0x00000001 /* pin AUI_TP indication */
  276. /* CSR12 General Purpose Register - 21140 */
  277. #define CSR12_21140_GPC 0x00000100      /* General purpose control */
  278. #define CSR12_21140_MD 0x000000ff /* General purpose mode/data */
  279. /* CSR12 SIA status Register  */
  280.  
  281. #define CSR12_21143_LPN 0x00008000      /* link partern negotiable */
  282. #define CSR12_21143_LCK 0x00006000      /* link check */
  283. #define CSR12_21143_FLP 0x00005000      /* FLP link good */
  284. #define CSR12_21143_CAK 0x00004000      /* complete acknowledge */
  285. #define CSR12_21143_AKD 0x00003000      /* acknowledge detect */
  286. #define CSR12_21143_ADT 0x00002000      /* ability detect */
  287. #define CSR12_21143_TRD 0x00001000      /* Transmit disable */
  288. #define CSR12_21143_DIS 0x00000000      /* autonegotiation disable */
  289. #define CSR12_21143_TRF 0x00000800      /* transmit remote fault */
  290. #define CSR12_21143_NSN 0x00000400      /* non stable NLPs detected */
  291. #define CSR12_21143_TRA 0x00000200      /* 10Base-T receive port activity */
  292. #define CSR12_21143_ARA 0x00000100      /* AUI receive port activity */
  293. #define CSR12_21143_APS 0x00000008      /* Auto polarity state */
  294. #define CSR12_21143_10 0x00000004      /* 10 Mb/s link status */
  295. #define CSR12_21143_100 0x00000002      /* 100 Mb/s link status */
  296. #define CSR12_21143_MRA 0x00000001      /* MII receive port activity */
  297. /* CSR13 SIA connectivity Register */
  298. #define CSR13_OE57 0x00008000 /* Output enable 5 6 7 */
  299. #define CSR13_OE24 0x00004000 /* output enable 2 4 */
  300. #define CSR13_OE13 0x00002000 /* output enable 1 3 */
  301. #define CSR13_IE 0x00001000 /* input enable */
  302. #define CSR13_SEL_LED 0x00000f00 /* select LED and external driver */
  303. #define CSR13_ASE_APLL 0x00000080 /* ase apll start enable */
  304. #define CSR13_SIM 0x00000040 /* serial iface input multiplexer */
  305. #define CSR13_ENI 0x00000020 /* encoder Input multiplexer */
  306. #define CSR13_EDP_SIA 0x00000010 /* pll external input enable */
  307. #define CSR13_AUI_TP 0x00000008 /* AUI - 10BASE-T or AUI */
  308. #define CSR13_CAC_CSR 0x00000004 /* auto config register */
  309. #define CSR13_PS 0x00000002 /* pin AUI_TP select */
  310. #define CSR13_SRL_SIA 0x00000001 /* srl sia Reset */
  311. /* CSR14 SIA xmit rcv Register */
  312. #define CSR14_21143_T4 0x00040000      /* 1000Base-T4 -21143 */
  313. #define CSR14_21143_TXF 0x00020000      /* 100Base-TX full duplex -21143 */
  314. #define CSR14_21143_TXH 0x00010000      /* 100Base-TX half duplex -21143 */
  315. #define CSR14_21143_TAS 0x00008000      /* 10Base-T/AUI autosensing -21143  */
  316. #define CSR14_SPP 0x00004000 /* set polarity plus */
  317. #define CSR14_APE 0x00002000 /* auto polarity enable */
  318. #define CSR14_LTE 0x00001000 /* link test enable */
  319. #define CSR14_SQE 0x00000800 /* signal quality generate enable */
  320. #define CSR14_CLD 0x00000400 /* collision detect enable */
  321. #define CSR14_CSQ 0x00000200 /* collision squelch enable */
  322. #define CSR14_RSQ 0x00000100 /* receive squelch enable */
  323. #define CSR14_21143_ANE 0x00000080      /* autonegotiation enable */
  324. #define CSR14_21143_TH  0x00000040      /* 10Base-T half duplex enable */
  325. #define CSR14_CPEN_NC 0x00000030 /* no compensation */
  326. #define CSR14_CPEN_HP 0x00000020 /* high power mode */
  327. #define CSR14_CPEN_DM 0x00000010 /* disable mode */
  328. #define CSR14_LSE 0x00000008 /* link pulse send enable */
  329. #define CSR14_DREN 0x00000004 /* driver enable */
  330. #define CSR14_LBK 0x00000002 /* loopback enable */
  331. #define CSR14_ECEN 0x00000001 /* encoder enable */
  332. /* CSR15 SIA general register */
  333. #define CSR15_21143_RMI 0x40000000      /* receive match interrupt */
  334. #define CSR15_21143_GI1 0x20000000      /* general port interrupt 1 */
  335. #define CSR15_21143_GI0 0x10000000      /* general port interrupt 0 */
  336. #define CSR15_21143_CWE 0x08000000      /* control write enable */
  337. #define CSR15_21143_RME 0x04000000      /* receive match enable */
  338. #define CSR15_21143_GE1 0x02000000      /* GEP interrupt enable on  port 1 */
  339. #define CSR15_21143_GE0 0x01000000      /* GEP interrupt enable on  port 0 */
  340. #define CSR15_21143_LG3 0x00800000      /* LED/GEP3 select */
  341. #define CSR15_21143_LG2 0x00400000      /* LED/GEP2 select */
  342. #define CSR15_21143_LG1 0x00200000      /* LED/GEP1 select */
  343. #define CSR15_21143_LG0 0x00100000      /* LED/GEP0 select */
  344. #define CSR15_21143_RWR 0x00000020      /* receive watchdog release */
  345. #define CSR15_21143_RWD 0x00000010      /* receive watchdog disable */
  346. #define CSR15_21143_ABM 0x00000008      /* AUI/BNC mode */
  347. #define CSR15_JCK 0x00000004 /* jabber clock */
  348. #define CSR15_HUJ 0x00000002 /* host unjab */
  349. #define CSR15_JBD 0x00000001 /* jabber disable */
  350. #define CSR15_MD_MSK    0x000F0000      /* general purpose mode mask */
  351. #define CSR15_MODE_10 0x00050000
  352.  
  353. #define CSR15_MD_VAL(x) (((x) << 16) & CSR15_MD_MSK)
  354.  
  355. /* receive descriptor */
  356. /* receive descriptor 0 */
  357. #define RDESC0_OWN 0x80000000 /* Own */
  358. #define RDESC0_FF               0x40000000      /* filtering fail */
  359. #define RDESC0_ES 0x00008000 /* Error summary */
  360. #define RDESC0_LE 0x00004000
  361. #define RDESC0_DT_SRF 0x00000000 /* serial rcvd frame */
  362. #define RDESC0_DT_ILF 0x00001000 /* internal loop back frame */
  363. #define RDESC0_DT_ELF 0x00002000 /* external loop back frame */
  364. #define RDESC0_RF 0x00000800 /* runt frame */
  365. #define RDESC0_MF 0x00000400 /* multicast frame */
  366. #define RDESC0_FD 0x00000200 /* first descriptor */
  367. #define RDESC0_LS 0x00000100 /* last descriptor */
  368. #define RDESC0_TL 0x00000080 /* frame too long */
  369. #define RDESC0_CS 0x00000040 /* collision seen */
  370. #define RDESC0_FT 0x00000020 /* frame type */
  371. #define RDESC0_RJ 0x00000010 /* receive watch dog */
  372. #define RDESC0_RE               0x00000008      /* report on MII error */
  373. #define RDESC0_DB 0x00000004 /* dribbling bit */
  374. #define RDESC0_CE 0x00000002 /* crc error */
  375. #define RDESC0_OF 0x00000001 /* Over flow */
  376. #define DEC_FRAME_LEN_MSK 0x3FFF0000 /* Frame length mask */
  377. #define DEC_FRAME_LEN_GET(x) (((x) & DEC_FRAME_LEN_MSK) >> 16)
  378. #define DEC_FRAME_LEN_SET(x) (((x) << 16) & DEC_FRAME_LEN_MSK)
  379. /* receive descriptor 1 */
  380. #define RDESC1_RER 0x02000000 /* recv end of ring */
  381. #define RDESC1_RCH 0x01000000 /* second address chained */
  382. #define RDESC1_RBS2_MSK 0x003FF800 /* RBS2 buffer 2 size */
  383. #define RDESC1_RBS1_MSK 0x000007FF /* RBS1 buffer 1 size */
  384. #define RDESC1_RBS1_VAL(x) ((x) & RDESC1_RBS1_MSK) /* multiple of 4 */
  385. #define RDESC1_RBS2_VAL(x) (((x) << 11) & RDESC1_RBS2_MSK)
  386. /* transmit descriptor */
  387. /* xmit descriptor 0 */
  388. #define TDESC0_OWN 0x80000000 /* own */
  389. #define TDESC0_ES 0x00008000 /* error summary */
  390. #define TDESC0_TO 0x00004000 /* xmit jabber time out */
  391. #define TDESC0_LO 0x00000800 /* loss of carrier */
  392. #define TDESC0_NC 0x00000400 /* NC No carrier */
  393. #define TDESC0_LC 0x00000200 /* late collision */
  394. #define TDESC0_EC 0x00000100 /* excessive collision */
  395. #define TDESC0_HF 0x00000080 /* heart beat fail */
  396. #define TDESC0_LF 0x00000004 /* link fail */
  397. #define TDESC0_UF 0x00000002 /* underflow error */
  398. #define TDESC0_DE         0x00000001 /* deffered */
  399. #define TDESC0_CC_MSK 0x00000078
  400. #define TDESC0_CC_VAL(X) (((X) & TDESC0_CC_MSK) >> 3)    
  401. /* xmit descriptor 1 */
  402. #define TDESC1_IC 0x80000000 /* interrupt on completion */
  403. #define TDESC1_LS 0x40000000 /* last segment */
  404. #define TDESC1_FS 0x20000000 /* first segment */
  405. #define TDESC1_FT1 0x10000000 /* filtering type */
  406. #define TDESC1_SET 0x08000000 /* setup packet */
  407. #define TDESC1_AC 0x04000000 /* add crc disable */
  408. #define TDESC1_TER 0x02000000 /* xmit end of ring */
  409. #define TDESC1_TCH 0x01000000 /* second address chained */
  410. #define TDESC1_DPD 0x00800000 /* disabled padding */
  411. #define TDESC1_FT0 0x00400000 /* filtering type */
  412. #define TDESC1_TBS2_MSK 0x003FF800 /* TBS2 buffer 2 size */
  413. #define TDESC1_TBS1_MSK 0x000007FF /* TBS2 buffer 1 size */
  414. #define TDESC1_TBS1_PUT(x) ((x) & TDESC1_TBS1_MSK) /* multiple of 4 */
  415. #define TDESC1_TBS2_PUT(x) (((x) << 11) & TDESC1_TBS2_MSK)
  416. #define FLTR_FRM_SIZE 0xC0 /* filter frm size 192 bytes */
  417. #define FLTR_FRM_SIZE_ULONGS (FLTR_FRM_SIZE / sizeof (ULONG))
  418. #define FLTR_FRM_ADRS_NUM 0x10 /* filter frm holds 16 addrs */
  419. #define FLTR_FRM_ADRS_SIZE 0x06 /* size of each phys addrs */
  420. #define FLTR_FRM_DEF_ADRS 0xFFFFFFFF /* enet broad cast address */
  421. #define FLTR_FRM_PHY_ADRS_OFF 156             /* word - 39 */
  422. #define DEC_CRC_POLY 0x04c11db6   /* for CRC computation */
  423. #define DEC_FLT_INDEX(I) ((((I) & ~0x1) * 2) + ((I) & 0x1))
  424. /* MII Defines */
  425. #define MII_MGMT_WR_OFF 17
  426. #define MII_MGMT_WR ((ULONG) 0x00020000)
  427. #define MII_WRITE ((ULONG) 0x00002000)
  428. #define MII_READ ((ULONG) 0x00044000)
  429. #define MII_MGMT_CLOCK ((ULONG) 0x00010000)
  430. #define MII_READ_FRM ((ULONG) 0x60000000)
  431. #define MII_PHY_CTRL_RES ((USHORT) 0x007F)
  432. #define MII_PHY_STAT_RES ((USHORT) 0x07C0)
  433. #define MII_PHY_NWAY_RES ((USHORT) 0x1C00)
  434. #define MII_PHY_NWAY_EXP_RES ((USHORT) 0xFFE0)
  435. #define MII_MGMT_DATA_IN ((ULONG) 0x00080000)
  436. #define MII_READ_DATA_MSK MII_MGMT_DATA_IN
  437. /* DEC Serial ROM */
  438. #define DEC2114X_SROM_SIZE 128
  439. #define DEC2114X_SROM_WORDS 64
  440. #define DEC2114X_SROM_VERSION_3 0x3
  441. /* Serial ROM access macros */
  442. #define SROM_VERSION(pSrom) (UCHAR) *(pSrom+0x12)
  443. #define SROM_ILEAF0_OFFSET(pSrom)       SROM_SHORT (pSrom+0x1b)
  444. /* Serial ROM Info Leaf  - 21140 */
  445. #define ILEAF_21140_GPR_MODE(pILeaf) (UCHAR) *(pILeaf+2)
  446. #define ILEAF_21140_MEDIA_COUNT(pILeaf) (UCHAR) *(pILeaf+3)
  447. #define ILEAF_21140_INFO_BLK0(pILeaf) (UCHAR *) (pILeaf+4)
  448. /* Serial ROM Info Leaf  - 21143 */
  449. #define ILEAF_21143_MEDIA_COUNT(pILeaf) (UCHAR) *(pILeaf+2)
  450. #define ILEAF_21143_INFO_BLK0(pILeaf) (UCHAR *) (pILeaf+3)
  451. /* Serial ROM Info Block */
  452. #define IBLK_COMPACT_SIZE 4
  453. #define IBLK_IS_COMPACT(pIBlk) ((*(pIBlk) & 0x80) == 0x00)
  454. #define IBLK_IS_EXT(pIBlk) ((*(pIBlk) & 0x80) == 0x80)
  455. #define IBLK_IS_EXT0(pIBlk)                                             
  456.     (IBLK_IS_EXT(pIBlk) && (IBLK_EXT_TYPE(pIBlk) == 0x00))
  457. #define IBLK_IS_EXT1(pIBlk)                                 
  458.     (IBLK_IS_EXT(pIBlk) && (IBLK_EXT_TYPE(pIBlk) == 0x01))
  459.     
  460. #define IBLK_EXT_SIZE(pIBlk) (UCHAR) (*(pIBlk+0) & 0x7F)    
  461. #define IBLK_EXT_TYPE(pIBlk) (UCHAR) *(pIBlk+1)
  462. #define IBLK_IS_EXT2 0x02 /* Block type 2 */
  463. #define IBLK_IS_EXT3 0x03 /* Block type 3 */
  464. #define IBLK_IS_EXT4 0x04 /* Block type 4 */
  465. #define IBLK_IS_EXT5 0x05 /* Block type 5 */
  466. /* Extended format - Block type 0 & 1 - 21140 */
  467. #define IBLK_COMPACT_MCODE(pIBlk) (UCHAR) (*pIBlk & 0x7F)
  468. #define IBLK_COMPACT_GPDATA(pIBlk) (UCHAR) *(pIBlk+1)
  469. #define IBLK_COMPACT_CMD(pIBlk) SROM_SHORT(pIBlk+2)
  470. #define IBLK_EXT0_TO_COMPACT(pIBlk) (UCHAR *)(pIBlk+2)
  471. #define IBLK_EXT1_PHY(pIBlk) (UCHAR) *(pIBlk+2)
  472. #define IBLK_EXT1_INIT_LEN(pIBlk) (UCHAR) *(pIBlk+3)
  473. #define IBLK_EXT1_INIT_STR(pIBlk) (UCHAR *)(pIBlk+4)
  474. #define IBLK_EXT1_RESET_LEN(pIBlk)                                           
  475.     (UCHAR) *(IBLK_EXT1_INIT_STR(pIBlk) + IBLK_EXT1_INIT_LEN(pIBlk))
  476. #define IBLK_EXT1_RESET_STR(pIBlk)                                      
  477.     (UCHAR *) (IBLK_EXT1_INIT_STR(pIBlk) + IBLK_EXT1_INIT_LEN(pIBlk) + 1)
  478. #define IBLK_EXT1_MEDIA_CAP(pIBlk)                                           
  479.     SROM_SHORT( IBLK_EXT1_RESET_STR(pIBlk) + IBLK_EXT1_RESET_LEN(pIBlk))
  480. #define IBLK_EXT1_AUTO_AD(pIBlk)                                             
  481.     SROM_SHORT( IBLK_EXT1_RESET_STR(pIBlk) + IBLK_EXT1_RESET_LEN(pIBlk) + 2)
  482. #define IBLK_EXT1_FD_MAP(pIBlk)                                              
  483.     SROM_SHORT( IBLK_EXT1_RESET_STR(pIBlk) + IBLK_EXT1_RESET_LEN(pIBlk) + 4)
  484. #define IBLK_EXT1_TTM_MAP(pIBlk)                                             
  485.     SROM_SHORT( IBLK_EXT1_RESET_STR(pIBlk) + IBLK_EXT1_RESET_LEN(pIBlk) + 6)
  486. /* Extended format - Block type 2, 3, 4 & 5 - 21143 */
  487. #define IBLK_EXT2_MCODE(pIBlk) (UCHAR) (*(pIBlk + 2) & 0x3F)
  488. #define IBLK_EXT2_EXT(pIBlk) (UCHAR) ((*(pIBlk + 2) & 0x40) >> 6)
  489. #define IBLK_EXT2_MSD_CSR13(pIBlk) SROM_SHORT(pIBlk + 3)
  490. #define IBLK_EXT2_MSD_CSR14(pIBlk) SROM_SHORT(pIBlk + 5)
  491. #define IBLK_EXT2_MSD_CSR15(pIBlk) SROM_SHORT(pIBlk + 7)
  492. #define IBLK_EXT2_GPC(pIBlk)     
  493.     SROM_SHORT( pIBlk + 3 + ((((UCHAR) *pIBlk) & 0x7F) - 0x6)) 
  494. #define IBLK_EXT2_GPD(pIBlk)     
  495.     SROM_SHORT( pIBlk + 5 + ((((UCHAR) *pIBlk) & 0x7F) - 0x6)) 
  496. #define IBLK_EXT3_PHY(pIBlk)            (UCHAR) *(pIBlk+2)
  497. #define IBLK_EXT3_INIT_LEN(pIBlk)       (UCHAR) *(pIBlk+3)
  498. #define IBLK_EXT3_INIT_STR(pIBlk)       (UCHAR *)(pIBlk+4)
  499. #define IBLK_EXT3_RESET_LEN(pIBlk)                                           
  500.     (UCHAR) *(IBLK_EXT3_INIT_STR(pIBlk) + IBLK_EXT3_INIT_LEN(pIBlk))
  501. #define IBLK_EXT3_RESET_STR(pIBlk)                                           
  502.     (UCHAR *) (IBLK_EXT3_INIT_STR(pIBlk) + IBLK_EXT3_INIT_LEN(pIBlk) + 1)
  503. #define IBLK_EXT3_MEDIA_CAP(pIBlk)                                           
  504.     SROM_SHORT( IBLK_EXT3_RESET_STR(pIBlk) + IBLK_EXT3_RESET_LEN(pIBlk))
  505. #define IBLK_EXT3_AUTO_AD(pIBlk)                                             
  506.     SROM_SHORT( IBLK_EXT3_RESET_STR(pIBlk) + IBLK_EXT3_RESET_LEN(pIBlk) + 2)
  507. #define IBLK_EXT3_FD_MAP(pIBlk)                                              
  508.     SROM_SHORT( IBLK_EXT3_RESET_STR(pIBlk) + IBLK_EXT3_RESET_LEN(pIBlk) + 4)
  509. #define IBLK_EXT3_TTM_MAP(pIBlk)                                             
  510.     SROM_SHORT( IBLK_EXT3_RESET_STR(pIBlk) + IBLK_EXT3_RESET_LEN(pIBlk) + 6)
  511. #define IBLK_EXT3_MII_CI(pIBlk)                                             
  512.     SROM_SHORT( IBLK_EXT3_RESET_STR(pIBlk) + IBLK_EXT3_RESET_LEN(pIBlk) + 8)
  513.  
  514. #define IBLK_EXT4_MCODE(pIBlk) (UCHAR) (*(pIBlk + 2) & 0x3F)
  515. #define IBLK_EXT4_GPC(pIBlk) SROM_SHORT(pIBlk + 3 ) 
  516. #define IBLK_EXT4_GPD(pIBlk) SROM_SHORT(pIBlk + 5 ) 
  517. #define IBLK_EXT4_CMD(pIBlk) SROM_SHORT(pIBlk + 7 ) 
  518. #define IBLK_EXT4_CMD_PS 0x0001
  519. #define IBLK_EXT4_CMD_TTM 0x0010
  520. #define IBLK_EXT4_CMD_PCS 0x0020
  521. #define IBLK_EXT4_CMD_SCR 0x0040
  522. #define IBLK_EXT5_RESET_LEN(pIBlk) (UCHAR) *(pIBlk+2)
  523. /* Serial ROM Compact Info Block, command field */
  524. #define COMPACT_CMD_ACT_INV 0x8000       /* Active Invalid */
  525. #define COMPACT_CMD_MED_DEF 0x4000       /* Default Media */
  526. #define COMPACT_CMD_POLARITY 0x0080       /* Media bit polarity */
  527. #define COMPACT_CMD_SCR 0x0040       /* Scrambler mode */
  528. #define COMPACT_CMD_PCS 0x0030       /* PCS Function */
  529. #define COMPACT_CMD_MED_SENSE 0x000E       /* Media Sense */
  530. #define COMPACT_CMD_PS 0x0001       /* Port Select */
  531. /* Serial ROM EXT1 Info Block, valid media types */
  532. #define EXT1_MEDIA_100BT4 0x0200
  533. #define EXT1_MEDIA_100BTX_FD 0x0100
  534. #define EXT1_MEDIA_100BTX 0x0080
  535. #define EXT1_MEDIA_10BT_FD 0x0040
  536. #define EXT1_MEDIA_10BT 0x0020
  537. #define EXT1_MEDIA_CAP_MSK 0x03E0
  538. typedef struct free_buf
  539.     {
  540.     void * pClBuf;      /* pointer cluster buffer */
  541.     } FREE_BUF;
  542. /* The dec21x4xEnd driver control structure */
  543. typedef struct dec21x4x_drv_ctrl
  544.     {
  545.     END_OBJ endObj;              /* base class   */
  546.     int flags;               /* driver flags */
  547.     int unit;                /* unit number */
  548.     ULONG devAdrs;             /* IO base address */
  549.     int ivec;                /* interrupt vector */
  550.     int ilevel;              /* interrupt level */
  551.     char * memBase;             /* descriptor mempool base addr */
  552.     ULONG memSize;             /* descriptor mempool size */
  553.     ULONG pciMemBase;          /* memory base on PCI adr space */
  554.     ULONG usrFlags;      /* user configuration flags */
  555.     int offset;      /* offset for unalignment pb */
  556.     
  557.     int numRds;              /* RD ring size */
  558.     int rxIndex;             /* index into RD ring */
  559.     DEC_RD * rxRing;              /* RD ring */
  560.     int numTds;              /* TD ring size */
  561.     int txIndex;             /* index into TD ring */
  562.     int txDiIndex;           /* disposal index into TD ring */
  563.     DEC_TD * txRing;              /* TD ring */
  564.     UINT8 mediaCount;          /* Number of PHY devices [RW] */
  565.     UINT8 mediaDefault;        /* Default PHY device [RW] */
  566.     UINT8 mediaCurrent;        /* Current PHY device [RW] */
  567.     UINT8 gprModeVal;          /* Mode bits for GP register [RW]*/
  568.     BOOL rxHandling;      /* handling received packets */
  569.     BOOL txCleaning;      /* cleaning transmit queue */
  570.     CACHE_FUNCS  cacheFuncs;          /* cache function pointers */
  571.     BOOL txBlocked;      /* variable for blocking */
  572.     FREE_BUF freeBuf[128];      /* Array of free arguments */
  573.     CL_POOL_ID clPoolId;      /* cluster pool pointer */
  574.     } DEC21X4X_DRV_CTRL;
  575. IMPORT FUNCPTR _func_dec21x4xMediaSelect;
  576. #define DRV_NAME "dc"
  577. #define DRV_NAME_LEN            3
  578. #define EADDR_LEN 6
  579. #define ETH_CRC_LEN 4
  580. #define DEC_BUFSIZ (ETHERMTU + ENET_HDR_REAL_SIZ + EADDR_LEN)
  581. /* DRV_CTRL flags */
  582. #define DEC_MEMOWN 0x0001 /* TDs and RDs allocated by driver */
  583. #define DEC_TX_KICKSTART 0x0002 /* No transmit poll */
  584. #define DEC_POLLING 0x0004 /* Poll mode, io mode */
  585. #define DEC_PROMISC 0x0008 /* Promiscuous, rx mode */
  586. #define DEC_MCAST 0x0010 /* Multicast, rx mode */
  587. #define DEC_BSP_EADRS 0x0020  /* Use BSP routine to get ether addr */
  588. #define DEC_21143 0x2000 /* DEC21143 device type */
  589. #define DEC_21140 0x4000 /* DEC21140 device type */
  590. #define DEC_21040 0x8000 /* DEC21040 device type */
  591. /*
  592.  * User options
  593.  *
  594.  * These options may be set in the userFlags field of the dec21x4xEnd driver
  595.  * load string. The driver, at initialization, will set up apt registers to
  596.  * reflect the selected options.
  597.  */
  598. #define DEC_USR_BAR_RX 0x00001000 /* CSR0: Rx has priority over Tx */
  599. #define DEC_USR_BE 0x00000001 /* CSR0: Big Endian */
  600. #define DEC_USR_TAP_02 0x00000002 /* CSR0: Tx poll every 200 usec */
  601. #define DEC_USR_TAP_08 0x00000004 /* CSR0: Tx poll every 800 usec */
  602. #define DEC_USR_TAP_16 0x00000006 /* CSR0: Tx poll every 1.6 msec */
  603. #define DEC_USR_TAP_012 0x00000008      /* CSR0: Tx poll every 12.8 usec */
  604. #define DEC_USR_TAP_025 0x0000000A      /* CSR0: Tx poll every 25.6 usec */
  605. #define DEC_USR_TAP_051 0x0000000C      /* CSR0: Tx poll every 51.2 usec */
  606. #define DEC_USR_TAP_102 0x0000000E      /* CSR0: Tx poll every 102.4 usec */
  607. #define DEC_USR_TAP_MSK 0x0000000E
  608. #define DEC_USR_TAP_SHF 16
  609. #define DEC_USR_CAL_08 0x00000010 /* CSR0: Cache adrs aligned  8 lwords */
  610. #define DEC_USR_CAL_16 0x00000020 /* CSR0: Cache adrs aligned 16 lwords */
  611. #define DEC_USR_CAL_32 0x00000030 /* CSR0: Cache adrs aligned 32 lwords */
  612. #define DEC_USR_CAL_MSK 0x00000030
  613. #define DEC_USR_CAL_SHF 10
  614.     
  615. #define DEC_USR_PBL_01 0x00000040 /* CSR0: DMA burst len  1 lword */
  616. #define DEC_USR_PBL_02 0x00000080 /* CSR0: DMA burst len  2 lwords */
  617. #define DEC_USR_PBL_04 0x00000100 /* CSR0: DMA burst len  4 lwords */
  618. #define DEC_USR_PBL_08 0x00000200 /* CSR0: DMA burst len  8 lwords */
  619. #define DEC_USR_PBL_16 0x00000400 /* CSR0: DMA burst len 16 lwords */
  620. #define DEC_USR_PBL_32 0x00000800 /* CSR0: DMA burst len 32 lwords */
  621. #define DEC_USR_PBL_MSK 0x00000FC0
  622. #define DEC_USR_PBL_SHF 2
  623. #define DEC_USR_RML 0x00002000 /* CSR0: PCI memory-read-multiple */
  624. #define DEC_USR_XEA 0x00004000      /* Use sysDec21x4xEnetAddrGet() */
  625. #define DEC_USR_SF 0x00008000 /* Enable store&forward CSR6:21 */
  626. #define DEC_USR_THR_072 0x00000000      /* Use TxTheshold 72/128 bytes */
  627. #define DEC_USR_THR_096 0x00010000      /* Use TxTheshold 96/256 bytes */
  628. #define DEC_USR_THR_128 0x00020000      /* Use TxTheshold 128/512 bytes */
  629. #define DEC_USR_THR_160 0x00030000      /* Use TxTheshold 160/1024 bytes */
  630. #define DEC_USR_THR_MSK 0x00030000
  631. #define DEC_USR_THR_SHF 2
  632. #define DEC_USR_SB 0x00040000      /* Enable backoff counter CSR6:5 */
  633. #define DEC_USR_PB 0x00080000 /* Enable pass bad frame  CSR6:3 */
  634. #define DEC_USR_SC 0x00100000 /* Enable spl capture effect CSR6:31 */
  635. #define DEC_USR_CA 0x00200000 /* Enable capture effect CSR6:17 */
  636. #define DEC_USR_21143 0x40000000 /* DEC 21143 part */
  637. #define DEC_USR_21140 0x80000000 /* DEC 21140 part */
  638. #define DEC_USR_VER_MSK 0xC0000000 /* DEC version mask */
  639. #define DEC_USR_FD 0x00400000 /* enable Full Duplex mode CSR6:9 */
  640. #define DEC_USR_CSR6_MSK                                                
  641.     (CSR6_2114X_PS | CSR6_2114X_PCS | CSR6_2114X_SCR | CSR6_2114X_TTM | CSR6_FD)
  642. /* Device specific network configuration defined in configNet.h */
  643. IMPORT M_CL_CONFIG dec21x4xMBlkConfig;  /* mblk config description */
  644. IMPORT CL_DESC dec21x4xClDescTbl[]; /* cluster pool config table */
  645. IMPORT int dec21x4xClDescTblEnt;
  646. IMPORT FUNCPTR _func_dec2114xMediaSelect; /* specfic media routine */
  647. IMPORT VOIDFUNCPTR _func_dec2114xIntAck; /* specfic int. ack. routine */
  648. IMPORT END_OBJ * dec214x4DrvLoad (char * initStr); /* create device */
  649. #ifdef __cplusplus
  650. }
  651. #endif
  652. #endif /* __INCif_dec21x4xEndh */