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

VxWorks

开发平台:

C/C++

  1. /* if_dc.h - DEC 21x4x Ethernet LAN network interface header */
  2. /* Copyright 1984-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01h,09nov01,dat  Adding obsolescence warnings to outdated drivers
  7. 01g,30oct97,map  added definitions for MII/PHY
  8. 01f,29oct97,map  merged from mv2603/dec21140/dec21140.h (ver 01f) [SPR# 8176]
  9. 01e,24feb97,dbt  corrected previous modification history
  10. 01d,04sep96,dat  fixed comment within comment, spr 7106
  11. 01c,05sep95,vin  added setup/filter frame defines.
  12. 01b,04apr95,caf  changed name from "dcPci" to "dc".
  13. 01a,02mar95,vin  written.
  14. */
  15. #ifndef __INCif_dch
  16. #define __INCif_dch
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20. #warning "if_dc driver is obsolete, please use dec21x40End driver"
  21. #define DECPCI_REG_OFFSET 0x08 /* quad word aligned */
  22. /* Definitions for the flags field */
  23. #define DC_PROMISCUOUS_FLAG      0x01 /* set promiscuous mode */
  24. #define DC_MULTICAST_FLAG 0x02 /* pass all multicast pkts */
  25. /* Modes for 100-Mb/s Ethernet configuration */
  26. #define DC_100_MB_FLAG 0x04 /* 100-Mb/s mode */
  27. #define DC_21140_FLAG 0x08 /* Lance chip is 21140 */
  28. #define DC_FULLDUPLEX_FLAG 0x10 /* Full Duplex Mode */
  29. #define DC_SCRAMBLER_FLAG 0x20 /* MII/SYM in scrambler mode */
  30. #define DC_PCS_FLAG 0x40 /* MII/SYM in symbol mode */
  31. #define DC_PS_FLAG 0x80 /* Serial Port selected  */
  32. #define DC_ILOOPB_FLAG 0x100 /* Internal Loop Back Mode */
  33. #define DC_ELOOPB_FLAG 0x200 /* External Loop Back Mode */
  34. #define DC_HBE_FLAG 0x400 /* Heart Beat Enable Flag */
  35. #if (_BYTE_ORDER == _BIG_ENDIAN)
  36. #  define PCISWAP(x) LONGSWAP(x) /* processor big endian */
  37. #else
  38. #  define PCISWAP(x) (x) /* processor little endian */
  39. #endif /* _BYTE_ORDER == _BIG_ENDIAN */
  40. /*
  41.  * Receive Message Descriptor Entry.
  42.  * Four words per entry.  Number of entries must be a power of two.
  43.  */
  44. typedef struct rDesc
  45.     {
  46.     ULONG rDesc0; /* status and ownership */
  47.     ULONG rDesc1; /* control & buffer count */
  48.     ULONG rDesc2; /* buffer address 1 */
  49.     ULONG rDesc3; /* buffer address 2 */
  50.     } DC_RDE;
  51. /*
  52.  * Transmit Message Descriptor Entry.
  53.  * Four words per entry.  Number of entries must be a power of two.
  54.  */
  55. typedef struct tDesc
  56.     {
  57.     ULONG tDesc0; /* status and ownership */
  58.     ULONG tDesc1; /* control & buffer count */
  59.     ULONG tDesc2; /* buffer address 1 */
  60.     ULONG tDesc3; /* buffer address 2 */
  61.     } DC_TDE;
  62. #define MIN_RDS 5 /* 5 buffers reasonable minimum */
  63. #define MIN_TDS 5 /* 5 buffers reasonable minimum */
  64. #define NUM_RDS 32 /* default number of Recv descriptors */
  65. #define NUM_TDS 32 /* default number of Xmit descriptors */
  66. /* define CSRs and descriptors */
  67. #define CSR0 0 /* csr 0 */
  68. #define CSR1 1 /* csr 1 */
  69. #define CSR2 2 /* csr 2 */
  70. #define CSR3 3 /* csr 3 */
  71. #define CSR4 4 /* csr 4 */
  72. #define CSR5 5 /* csr 5 */
  73. #define CSR6 6 /* csr 6 */
  74. #define CSR7 7 /* csr 7 */
  75. #define CSR8 8 /* csr 8 */
  76. #define CSR9 9 /* csr 9 */
  77. #define CSR10 10 /* csr 10 */
  78. #define CSR11 11 /* csr 11 */
  79. #define CSR12 12 /* csr 12 */
  80. #define CSR13 13 /* csr 13 */
  81. #define CSR14 14 /* csr 14 */
  82. #define CSR15 15 /* csr 15 */
  83. #define RDESC0 0 /* recv desc 0 */
  84. #define RDESC1 1 /* recv desc 1 */
  85. #define RDESC2 2 /* recv desc 2 */
  86. #define RDESC3 3 /* recv desc 3 */
  87. #define TDESC0 0 /* xmit desc 0 */
  88. #define TDESC1 1 /* xmit desc 1 */
  89. #define TDESC2 2 /* xmit desc 2 */
  90. #define TDESC3 3 /* xmit desc 3 */
  91. /* command status register read write */
  92. #define CSR(base,x) ((ULONG)(base) + ((DECPCI_REG_OFFSET) * (x)))
  93. #define READ_CSR(base,x) (PCISWAP(*((ULONG *)CSR((base),(x)))))
  94. #define WRITE_CSR(base,x,val) (*((ULONG *)CSR((base),(x))) = PCISWAP((val)))
  95. /* recv xmit descriptor read write */
  96. #define DESC(base,x) ((ULONG)(base) + (4 * (x)))
  97. #define READ_DESC(base,x) (PCISWAP(*((ULONG *)(DESC((base),(x))))))
  98. #define WRITE_DESC(base,x,val) (*((ULONG *)(DESC((base),(x)))) = PCISWAP((val)))
  99. /* Configuration ID Register added for DEC21140 */
  100. #define SROM_SIZE 128
  101. #define CFID_DEVID_MASK 0xFFFF0000
  102. #define CFID_VENID_MASK 0x0000FFFF
  103. #define DEC21040_ID 0x00020000
  104. #define DEC21140_ID 0x00090000
  105. #define PMC_ETHERNET 0x0000F801 /* Def MAC adrs for DEC PMC */
  106. #define DEC_PMC_POS 10 /* MAC addr position on a DEC PMC ROM */
  107. /* Definitions for fields and bits in the DC_DEVICE */
  108. /* CSR0 Bus Mode Register */
  109. #define CSR0_RML 0x00200000 /* Read Multiple */
  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_CAL_NO 0x00000000 /* cache address alignment not used */
  115. #define CSR0_CAL_08 0x00004000 /* 08 longword boundary aligned */
  116. #define CSR0_CAL_16 0x00008000 /* 16 longword boundary aligned */
  117. #define CSR0_CAL_32 0x0000c000 /* 32 longword boundary aligned */
  118. #define CSR0_PBL_0 0x00000000 /* 0 longwords DMA'ed */
  119. #define CSR0_PBL_1 0x00000100 /* 1 longwords DMA'ed */
  120. #define CSR0_PBL_2 0x00000200 /* 2 longwords DMA'ed */
  121. #define CSR0_PBL_4 0x00000400 /* 4 longwords DMA'ed */
  122. #define CSR0_PBL_8 0x00000800 /* 8 longwords DMA'ed */
  123. #define CSR0_PBL_16 0x00001000 /* 16 longwords DMA'ed */
  124. #define CSR0_PBL_32 0x00002000 /* 32 longwords DMA'ed */
  125. #define CSR0_DAS 0x00010000 /* Diagnostic Address Space */
  126. #define CSR0_BLE 0x00000080 /* Big/little endian */
  127. #define CSR0_BAR 0x00000002 /* Bus arbitration */
  128. #define CSR0_SWR 0x00000001 /* software reset */
  129. #define CSR0_PBL_MSK 0x00003F00 /* Dma burst length mask */
  130. #define CSR0_PBL_VAL(x) (((x) << 8) & CSR0_PBL_MSK)
  131. #define CSR0_DSL_MSK 0x0000007C /* Descriptor skip length */
  132. #define CSR0_DSL_VAL(x) (((x) << 2) & CSR0_DSL_MSK)
  133. /* CSR1 Transmit Poll Demand Register */
  134. #define CSR1_TPD 0x00000001 /* Transmit poll demand */
  135. /* CSR2 Recieve Poll Demand Register */
  136. #define CSR2_RPD 0x00000001 /* Transmit poll demand */
  137. /* CSR3 Receive List Base address Register */
  138. #define CSR3_RDBA_MSK 0xFFFFFFFC /* long word aligned */
  139. #define CSR3_RDBA_VAL(x) ((x) & CSR3_RDBA_MSK)
  140. /* CSR4 Transmit List Base address Register */
  141. #define CSR4_TDBA_MSK 0xFFFFFFFC /* long word aligned */
  142. #define CSR4_TDBA_VAL(x) ((x) & CSR4_TDBA_MSK)
  143. /* CSR5 Status register */
  144. #define CSR5_ERR_PE 0x00000000 /* parity error */
  145. #define CSR5_ERR_MA 0x00800000 /* Master abort */
  146. #define CSR5_ERR_TA 0x01000000 /* target abort */
  147. #define CSR5_TPS_ST 0x00000000 /* Stopped */
  148. #define CSR5_TPS_RFTD 0x00100000 /* Running Fetch xmit descriptor */
  149. #define CSR5_TPS_RWET 0x00200000 /* Running Wait for end of Xmission */
  150. #define CSR5_TPS_RRBM 0x00300000 /* Running Read buff from memory */
  151. #define CSR5_TPS_RSP 0x00500000 /* Running Set up packet */
  152. #define CSR5_TPS_STFU 0x00600000 /* Suspended xmit FIFO underflow */
  153. #define CSR5_TPS_RCTD 0x00700000 /* Running Close xmit descriptor */
  154. #define CSR5_RPS_ST 0x00000000 /* stopped reset or stop rcv command */
  155. #define CSR5_RPS_RFRD 0x00020000 /* Running Fetch rcv descriptor */
  156. #define CSR5_RPS_RCEP 0x00040000 /* Running Check end of rcv packet */
  157. #define CSR5_RPS_RWRP 0x00060000 /* Running Wait for rcv packet */
  158. #define CSR5_RPS_SURB 0x00080000 /* Suspended - unavailable rcv buff */
  159. #define CSR5_RPS_RCRD 0x000A0000 /* Running close rcv descriptor */
  160. #define CSR5_RPS_RFFF 0x000C0000 /* flush frame from rcv FIFO */
  161. #define CSR5_RPS_RQRF 0x000E0000 /* queue the rcv frame into rcv buff */
  162. #define CSR5_NIS 0x00010000 /* normal interrupt summary */
  163. #define CSR5_AIS 0x00008000 /* abnormal interrupt summary */
  164. #define CSR5_SE 0x00002000 /* system error */
  165. #define CSR5_LNF 0x00001000 /* link fail */
  166. /* DEC21140 specific bit masks */
  167. #define CSR5_GPTE 0x00000800 /* General Purpose Timer Expire */
  168. #define CSR5_FD 0x00000800 /* Full-duplex short frame rcvd */
  169. #define CSR5_AT 0x00000400 /* AUI / Ten base T Pin */
  170. #define CSR5_RWT 0x00000200 /* rcv watchdog time-out */
  171. #define CSR5_RPS 0x00000100 /* rcv process stopped */
  172. #define CSR5_RU 0x00000080 /* rcv buffer unavailable */
  173. #define CSR5_RI 0x00000040 /* rcv interrupt */
  174. #define CSR5_UNF 0x00000020 /* xmit underflow */
  175. #define CSR5_TJT 0x00000008 /* xmit jabber time-out */
  176. #define CSR5_TU 0x00000004 /* xmit buffer unavailable */
  177. #define CSR5_TPS 0x00000002 /* Xmit Process stopped */
  178. #define CSR5_TI 0x00000001 /* xmit interrupt */
  179. #define CSR5_RPS_MSK 0x000E0000 /* Rcv process state mask */
  180. #define CSR5_TPS_MSK 0x00700000 /* Xmit process state mask */
  181. #define CSR5_ERR_MSK 0x03800000 /* error mask */
  182. /* CSR6 Operation Mode Register */
  183. /* DEC21140 specific bit masks */
  184.     
  185. #define CSR6_BIT25 0x02000000 /* BIT MUST ALWAYS BE 1 */
  186. #define CSR6_SCR 0x01000000 /* scrambler mode enable */
  187. #define CSR6_PCS 0x00800000 /* PCS mode enable */
  188. #define CSR6_TTM 0x00400000 /* transmit thresold mode */
  189. #define CSR6_SF 0x00200000 /* store forward mode */
  190. #define CSR6_HBD 0x00080000 /* heartbeat disabled */
  191. #define CSR6_PS 0x00040000 /* MII/SYM port selected */
  192. /* Common Bit States for CSR6 */
  193. #define CSR6_CAE 0x00020000 /* capture effect enable */
  194. #define CSR6_BP 0x00010000 /* back pressure */
  195. #define CSR6_THR_072 0x00000000 /* threshold bytes 72 */
  196. #define CSR6_THR_096 0x00004000 /* threshold bytes 96 */
  197. #define CSR6_THR_128 0x00008000 /* threshold bytes 128 */
  198. #define CSR6_THR_160 0x0000C000 /* threshold bytes 160 */
  199. #define CSR6_ST 0x00002000 /* start/stop Xmit command */
  200. #define CSR6_FC 0x00001000 /* Force collision mode */
  201. #define CSR6_OM_NOR 0x00000000 /* normal mode */
  202. #define CSR6_OM_ILB 0x00000400 /* internal loopback mode */
  203. #define CSR6_OM_ELB 0x00000800 /* external loopback mode */
  204. #define CSR6_FD 0x00000200 /* Full Duplex mode */
  205. #define CSR6_FKD 0x00000100 /* Flaky oscillator disable */
  206. #define CSR6_PM 0x00000080 /* Pass all multicast */
  207. #define CSR6_PR 0x00000040 /* promiscuous mode */
  208. #define CSR6_SB 0x00000020 /* Start/Stop Back off counter */
  209. #define CSR6_IF 0x00000010 /* inverse filtering */
  210. #define CSR6_PB 0x00000008 /* pass bad frames */
  211. #define CSR6_HO 0x00000004 /* hash only filtering mode */
  212. #define CSR6_SR 0x00000002 /* start/stop receive command */
  213. #define CSR6_HP 0x00000001 /* hash/perfect recv filtering mode */
  214. /* CSR7 Interrupt Mask register */
  215. #define CSR7_NIM 0x00010000 /* normal interrupt mask */
  216. #define CSR7_AIM 0x00008000 /* abnormal interrupt mask */
  217. #define CSR7_SEM 0x00002000 /* system error mask */
  218. #define CSR7_LFM 0x00001000 /* link fail mask */
  219. #define CSR7_FDM 0x00000800 /* full duplex mask */
  220. #define CSR7_ATM 0x00000400 /* aui/tp switch mask */
  221. #define CSR7_RWM 0x00000200 /* rcv watchdog time-out mask */
  222. #define CSR7_RSM 0x00000100 /* rcv stopped mask */
  223. #define CSR7_RUM 0x00000080 /* rcv buff unavailable mask */
  224. #define CSR7_RIM 0x00000040 /* rcv  interrupt mask */
  225. #define CSR7_UNM 0x00000020 /* underflow interrupt mask */ 
  226. #define CSR7_TJM 0x00000008 /* xmit jabber timer out mask */ 
  227. #define CSR7_TUM 0x00000004 /* xmit buff unavailable mask */
  228. #define CSR7_TSM 0x00000002 /* xmission stopped mask */
  229. #define CSR7_TIM 0x00000001 /* xmit interrupt mask */
  230. /* CSR8 Missing Frame Counter */
  231. #define CSR8_MFO 0x00010000 /* missed frame overflow */
  232. #define CSR8_MFC_MSK 0x0000FFFF /* Missed frame counter mask */
  233. /* CSR9 Ethernet Address ROM Register */
  234. #define CSR9_DNV 0x80000000 /* Data not valid */
  235. #define CSR9_DAT_MSK 0x000000FF /* data mask */
  236. #define ENET_ROM_SIZE 8 /* ethernet rom register size */
  237. /* CSR9 Serial Address ROM and MII Management Register for the DEC21140 */
  238. #define CSR9_040_DNVAL 0x80000000 /* Data not valid - 21040 */
  239. #define CSR9_MDI 0x00080000 /* MII mgmt data in - 21140+ */
  240. #define CSR9_MDI_SHF 19
  241. #define CSR9_MII_RD 0x00040000 /* MII mgmt read mode - 21140+ */
  242. #define CSR9_MII_WR 0x00000000 /* MII mgmt write mode - 21140+ */
  243. #define CSR9_MDO 0x00020000 /* MII mgmt write data - 21140+ */
  244. #define CSR9_MDO_SHF 17
  245. #define CSR9_MDC 0x00010000 /* MII mgmt clock - 21140+ */
  246. #define CSR9_RD 0x00004000 /* Read command - 21140+ */
  247. #define CSR9_WR 0x00002000 /* Write command - 21140+ */
  248. #define CSR9_BR 0x00001000 /* Boot rom select - 21140+ */
  249. #define CSR9_SR 0x00000800 /* Serial rom select - 21140+ */
  250. #define CSR9_REG 0x00000400 /* External register select - 21140+ */
  251. #define CSR9_DATA 0x000000FF /* Data */
  252. #define CSR9_DATA_OUT 0x00000008 /* Shift read data from SROM - 21140+ */
  253. #define CSR9_DATA_IN 0x00000004 /* Shift write data into SROM - 21140+*/
  254. #define CSR9_SROM_CLK 0x00000002 /* SCLK output to SROM - 21140+ */
  255. #define CSR9_SROM_CS 0x00000001 /* SerialROM chip select - 21140+ */
  256. #define CSR9_MII_DBIT_RD(X) (((X) & CSR9_MDI) >> CSR9_MDI_SHF)
  257. #define CSR9_MII_DBIT_WR(X) (((X) & 0x1) << CSR9_MDO_SHF)
  258. /* CSR10 Reserved */
  259. /* CSR11 Full Duplex Register */
  260. #define CSR11_FDACV_MSK 0x0000FFFF /* full duplex auto config mask */
  261. /* CSR11 General-Purpose Timer Register for the DEC21140 */
  262. #define CSR11_CON_MODE 0x00010000 /* GPT Continuous Mode */
  263. #define CSR11_VALUE_MASK 0x0000FFFF /* GPT Timer Value Mask */
  264. /* CSR12 SIA status Register */
  265. #define CSR12_DA0 0x00000080 /* Diagnostic bit all One */
  266. #define CSR12_DAZ 0x00000040 /* Diagnostic bit all zero */
  267. #define CSR12_DSP       0x00000020 /* Diagnostic BIST status indicator */
  268. #define CSR12_DSD 0x00000010 /* Diagnostic Self test done */
  269. #define CSR12_APS 0x00000008 /* Auto polarity state */
  270. #define CSR12_LKF 0x00000004 /* link fail status */
  271. #define CSR12_NCR 0x00000002 /* network connection error */
  272. #define CSR12_PAUI 0x00000001 /* pin AUI_TP indication */
  273. /* CSR12 General-Purpose Registerr for the DEC21140 */
  274. #define CSR12_CNTRL_FLAG 0x00000100   /* Control Flag */
  275. #define CSR12_DATA_MASK 0x000000FF   /* Mode and Data Mask */
  276. #define INIT_CSR12 CSR12_CNTRL_FLAG | 0x0f /* Base value for CSR12 */
  277. #define SYM_MODE 0x00000009 /* SYM value for CSR12 */
  278. /* CSR13 SIA connectivity Register */
  279. #define CSR13_OE57 0x00008000 /* Output enable 5 6 7 */
  280. #define CSR13_OE24 0x00004000 /* output enable 2 4 */
  281. #define CSR13_OE13 0x00002000 /* output enable 1 3 */
  282. #define CSR13_IE 0x00001000 /* input enable */
  283. #define CSR13_SEL_LED 0x00000f00 /* select LED and external driver */
  284. #define CSR13_ASE_APLL 0x00000080 /* ase apll start enable */
  285. #define CSR13_SIM 0x00000040 /* serial iface input multiplexer */
  286. #define CSR13_ENI 0x00000020 /* encoder Input multiplexer */
  287. #define CSR13_EDP_SIA 0x00000010 /* pll external input enable */
  288. #define CSR13_AUI_TP 0x00000008 /* AUI - 10BASE-T or AUI */
  289. #define CSR13_CAC_CSR 0x00000004 /* auto config register */
  290. #define CSR13_PS 0x00000002 /* pin AUI_TP select */
  291. #define CSR13_SRL_SIA 0x00000001 /* srl sia Reset */
  292. /* CSR14 SIA xmit rcv Register */
  293. #define CSR14_SPP 0x00004000 /* set polarity plus */
  294. #define CSR14_APE 0x00002000 /* auto polarity enable */
  295. #define CSR14_LTE 0x00001000 /* link test enable */
  296. #define CSR14_SQE 0x00000800 /* signal quality generate enable */
  297. #define CSR14_CLD 0x00000400 /* collision detect enable */
  298. #define CSR14_CSQ 0x00000200 /* collision squelch enable */
  299. #define CSR14_RSQ 0x00000100 /* receive squelch enable */
  300. #define CSR14_CPEN_NC 0x00000030 /* no compensation */
  301. #define CSR14_CPEN_HP 0x00000020 /* high power mode */
  302. #define CSR14_CPEN_DM 0x00000010 /* disable mode */
  303. #define CSR14_LSE 0x00000008 /* link pulse send enable */
  304. #define CSR14_DREN 0x00000004 /* driver enable */
  305. #define CSR14_LBK 0x00000002 /* loopback enable */
  306. #define CSR14_ECEN 0x00000001 /* encoder enable */
  307. /* CSR15 SIA general register */
  308. #define CSR15_JCK 0x00000004 /* jabber clock */
  309. #define CSR15_HUJ 0x00000002 /* host unjab */
  310. #define CSR15_JBD 0x00000001 /* jabber disable */
  311. /* CSR15 Watchdog Timer Register for the DEC21140 */
  312. #define CSR15_RWR_FLAG 0x00000020   /* Receive Watchdog Release */
  313. #define CSR15_RWD_FLAG 0x00000010   /* Receive Watchdog Disable */
  314. /* receive descriptor */
  315. /* receive descriptor 0 */
  316. #define RDESC0_OWN 0x80000000 /* Own */
  317. #define RDESC0_ES 0x00008000 /* Error summary */
  318. #define RDESC0_LE 0x00004000
  319. #define RDESC0_DT_SRF 0x00000000 /* serial rcvd frame */
  320. #define RDESC0_DT_ILF 0x00001000 /* internal loop back frame */
  321. #define RDESC0_DT_ELF 0x00002000 /* external loop back frame */
  322. #define RDESC0_RF 0x00000800 /* runt frame */
  323. #define RDESC0_MF 0x00000400 /* multicast frame */
  324. #define RDESC0_FD 0x00000200 /* first descriptor */
  325. #define RDESC0_LS 0x00000100 /* last descriptor */
  326. #define RDESC0_TL 0x00000080 /* frame too long */
  327. #define RDESC0_CS 0x00000040 /* collision seen */
  328. #define RDESC0_FT 0x00000020 /* frame type */
  329. #define RDESC0_RJ 0x00000010 /* receive watch dog */
  330. #define RDESC0_DB 0x00000004 /* dribbling bit */
  331. #define RDESC0_CE 0x00000002 /* crc error */
  332. #define RDESC0_OF 0x00000001 /* Over flow */
  333. #define RDESC0_FL_MSK 0x7FFF0000 /* Frame length mask */
  334. #define RDESC0_FL_GET(x) (((x) & RDESC0_FL_MSK) >> 16)
  335. #define RDESC0_FL_PUT(x) (((x) << 16) & RDESC0_FL_MSK)
  336. /* receive descriptor 1 */
  337. #define RDESC1_RER 0x02000000 /* recv end of ring */
  338. #define RDESC1_RCH 0x01000000 /* second address chained */
  339. #define RDESC1_RBS2_MSK 0x003FF800 /* RBS2 buffer 2 size */
  340. #define RDESC1_RBS1_MSK 0x000007FF /* RBS1 buffer 1 size */
  341. #define RDESC1_RBS1_VAL(x) ((x) & RDESC1_RBS1_MSK) /* multiple of 4 */
  342. #define RDESC1_RBS2_VAL(x) (((x) << 11) & RDESC1_RBS2_MSK)
  343. /* transmit descriptor */
  344. /* xmit descriptor 0 */
  345. #define TDESC0_OWN 0x80000000 /* own */
  346. #define TDESC0_ES 0x00008000 /* error summary */
  347. #define TDESC0_TO 0x00004000 /* xmit jabber time out */
  348. #define TDESC0_LO 0x00000800 /* loss of carrier */
  349. #define TDESC0_NC 0x00000400 /* NC No carrier */
  350. #define TDESC0_LC 0x00000200 /* late collision */
  351. #define TDESC0_EC 0x00000100 /* excessive collision */
  352. #define TDESC0_HF 0x00000080 /* heart beat fail */
  353. #define TDESC0_LF 0x00000004 /* link fail */
  354. #define TDESC0_UF 0x00000002 /* underflow error */
  355. #define TDESC0_DE         0x00000001 /* deffered */
  356. #define TDESC0_CC_MSK 0x00000078
  357. /* xmit descriptor 1 */
  358. #define TDESC1_IC 0x80000000 /* interrupt on completion */
  359. #define TDESC1_LS 0x40000000 /* last segment */
  360. #define TDESC1_FS 0x20000000 /* first segment */
  361. #define TDESC1_FT1 0x10000000 /* filtering type */
  362. #define TDESC1_SET 0x08000000 /* setup packet */
  363. #define TDESC1_AC 0x04000000 /* add crc disable */
  364. #define TDESC1_TER 0x02000000 /* xmit end of ring */
  365. #define TDESC1_TCH 0x01000000 /* second address chained */
  366. #define TDESC1_DPD 0x00800000 /* disabled padding */
  367. #define TDESC1_FTO 0x00400000 /* filtering type */
  368. #define TDESC1_TBS2_MSK 0x003FF800 /* TBS2 buffer 2 size */
  369. #define TDESC1_TBS1_MSK 0x000007FF /* TBS2 buffer 1 size */
  370. #define TDESC1_TBS1_PUT(x) ((x) & TDESC1_TBS1_MSK) /* multiple of 4 */
  371. #define TDESC1_TBS2_PUT(x) (((x) << 11) & TDESC1_TBS2_MSK)
  372. #define FLTR_FRM_SIZE 0xC0 /* filter frm size 192 bytes */
  373. #define FLTR_FRM_SIZE_ULONGS (FLTR_FRM_SIZE / sizeof (ULONG))
  374. #define FLTR_FRM_ADRS_NUM 0x10 /* filter frm holds 16 addrs */
  375. #define FLTR_FRM_ADRS_SIZE 0x06 /* size of each phys addrs */
  376. #define FLTR_FRM_DEF_ADRS 0xFFFFFFFF /* enet broad cast address */
  377. /* MII/PHY defines */
  378. #define DC_MAX_PHY 32 /* max number of PHY devices */
  379. #define DC_MAX_LINK_TOUT 6 /* max link timeout (in secs) */
  380. #define MII_PREAMBLE ((ULONG) 0xFFFFFFFF)
  381. /* MII frame header format */
  382. #define MII_SOF 0x4 /* start of frame */
  383. #define MII_RD 0x2 /* op-code: Read */
  384. #define MII_WR 0x1 /* op-code: Write  */
  385. /* MII PHY registers */
  386. #define MII_PHY_CR 0x00 /* Control Register */
  387. #define MII_PHY_SR 0x01 /* Status Register */
  388. #define MII_PHY_ID0 0x02 /* Identifier Register 0 */
  389. #define MII_PHY_ID1 0x03 /* Identifier Register 1 */
  390. #define MII_PHY_ANA 0x04 /* Auto Negot'n Advertisement */
  391. #define MII_PHY_ANLPA 0x05 /* Auto Negot'n Link Partner Ability */
  392. #define MII_PHY_ANE 0x06 /* Auto Negot'n Expansion */
  393. #define MII_PHY_ANP 0x07 /* Auto Negot'n Next Page TX */
  394. /* ID0 values of PHY devices */
  395. #define MII_PHY_ID0_NATIONAL 0x2000 /* National TX */
  396. #define MII_PHY_ID0_BROADCOM 0x03e0 /* Broadcom T4 */
  397. #define MII_PHY_ID0_SEEQ 0x0016 /* Seeq T4 */
  398. #define MII_PHY_ID0_CYPRESS 0x0014 /* Cypress T4 */
  399. /* MII_PHY control register */
  400. #define MII_PHY_CR_RESET 0x8000 /* reset */
  401. #define MII_PHY_CR_LOOP 0x4000 /* loopback enable */
  402. #define MII_PHY_CR_100M 0x2000 /* speed 100Mbps */
  403. #define MII_PHY_CR_10M 0x0000 /* speed 10Mbps */
  404. #define MII_PHY_CR_AUTO 0x1000 /* auto speed enable */
  405. #define MII_PHY_CR_OFF 0x0800 /* powerdown mode */
  406. #define MII_PHY_CR_ISOLAT 0x0400 /* isolate mode */
  407. #define MII_PHY_CR_RAN 0x0200 /* restart auto negotiate */
  408. #define MII_PHY_CR_FDX 0x0100 /* full duplex mode */
  409. #define MII_PHY_CR_CTE 0x0080 /* collision test enable */
  410. /* MII PHY status register */
  411. #define MII_PHY_SR_100T4 0x8000 /* 100BASE-T4 capable */
  412. #define MII_PHY_SR_100TX_FD 0x4000 /* 100BASE-TX Full Duplex capable */
  413. #define MII_PHY_SR_100TX_HD 0x2000 /* 100BASE-TX Half Duplex capable */
  414. #define MII_PHY_SR_10TFD 0x1000 /* 10BASE-T Full Duplex capable */
  415. #define MII_PHY_SR_10THD 0x0800 /* 10BASE-T Half Duplex capable */
  416. #define MII_PHY_SR_ASS 0x0020 /* Auto Speed Selection Complete*/
  417. #define MII_PHY_SR_RFD 0x0010 /* Remote Fault Detected */
  418. #define MII_PHY_SR_AN 0x0008 /* Auto Negotiation capable */
  419. #define MII_PHY_SR_LNK 0x0004 /* Link Status */
  420. #define MII_PHY_SR_JABD 0x0002 /* Jabber Detect */
  421. #define MII_PHY_SR_XC 0x0001 /* Extended Capabilities */
  422. /* MII PHY Auto Negotiation Advertisement Register */
  423. #define MII_PHY_ANA_TAF 0x03e0 /* Technology Ability Field */
  424. #define MII_PHY_ANA_T4AM 0x0200 /* T4 Technology Ability Mask */
  425. #define MII_PHY_ANA_TXAM 0x0180 /* TX Technology Ability Mask */
  426. #define MII_PHY_ANA_FDAM 0x0140 /* Full Duplex Technology Ability Mask */
  427. #define MII_PHY_ANA_HDAM 0x02a0 /* Half Duplex Technology Ability Mask */
  428. #define MII_PHY_ANA_100M 0x0380 /* 100Mb Technology Ability Mask */
  429. #define MII_PHY_ANA_10M 0x0060 /* 10Mb Technology Ability Mask */
  430. #define MII_PHY_ANA_CSMA 0x0001 /* CSMA-CD Capable */
  431. /* MII PHY Auto Negotiation Remote End Register */
  432. #define MII_PHY_ANLPA_NP 0x8000 /* Next Page (Enable) */
  433. #define MII_PHY_ANLPA_ACK 0x4000 /* Remote Acknowledge */
  434. #define MII_PHY_ANLPA_RF 0x2000 /* Remote Fault */
  435. #define MII_PHY_ANLPA_TAF 0x03e0 /* Technology Ability Field */
  436. #define MII_PHY_ANLPA_T4AM 0x0200 /* T4 Technology Ability Mask */
  437. #define MII_PHY_ANLPA_TXAM 0x0180 /* TX Technology Ability Mask */
  438. #define MII_PHY_ANLPA_FDAM 0x0140 /* Full Duplex Technology Ability Mask */
  439. #define MII_PHY_ANLPA_HDAM 0x02a0 /* Half Duplex Technology Ability Mask */
  440. #define MII_PHY_ANLPA_100M 0x0380 /* 100Mb Technology Ability Mask */
  441. #define MII_PHY_ANLPA_10M 0x0060 /* 10Mb Technology Ability Mask */
  442. #define MII_PHY_ANLPA_CSMA 0x0001 /* CSMA-CD Capable */
  443. #if 0
  444. /* MII defines */
  445. #define MII_LINK_STATUS 0x4
  446. #define MII_WRITE_DATA_POS 17
  447. #define MII_READ_DATA_POS 19
  448. #define PHY_ADDR_ALIGN 23
  449. #define REG_ADDR_ALIGN 18
  450. #define PHY_CONTROL_REG 0
  451. #define PHY_STATUS_REG 1
  452. #define MII_READ_FRAME ((ULONG) 0x60000000)
  453. #define MII_WRITE ((ULONG) 0x00002000)
  454. #define MII_WRITE_DATA ((ULONG) 0x00020000)
  455. #define MII_WRITE_TS ((ULONG) 0x00042000)
  456. #define MII_READ ((ULONG) 0x00044000)
  457. #define MII_READ_DATA ((ULONG) 0x00080000)
  458. #define MII_CLOCK ((ULONG) 0x00010000)
  459. #define MII_PHY_CTRL_RES_MSK ((USHORT) 0x007F)
  460. #define MII_PHY_STAT_RES_MSK ((USHORT) 0x07C0)
  461. #define MII_PHY_NWAY_RES_MSK ((USHORT) 0x1C00)
  462. #define MII_PHY_NWAY_EXP_RES_BITS ((USHORT) 0xFFE0)
  463. #endif
  464. /* SROM Version defines */
  465. #define MAX_GP_WRITES 10
  466. #define MAX_MEDIAS 10
  467. /* SROM Version Data types */
  468. typedef struct {
  469.    UCHAR MediaCode;
  470.    UCHAR GPPortData;
  471.    USHORT Command;
  472. } CompactFormat;
  473. typedef struct {
  474.    UCHAR Length;
  475.    UCHAR Type;
  476.    UCHAR BlockData[4];
  477. } ExtendedFormat0;
  478. typedef struct {
  479.    UCHAR Length;
  480.    UCHAR Type;
  481.    UCHAR BlockData[40];
  482. } ExtendedFormat1;
  483. typedef union InfoBlock {
  484.    CompactFormat Compact;
  485.    ExtendedFormat0 Extended0;
  486.    ExtendedFormat1 Extended1;
  487. } InfoBlock;
  488. typedef struct {
  489.    USHORT ConnType;
  490.    UCHAR GPControl;
  491.    UCHAR BlockCount;
  492.    InfoBlock dcInfoBlock;
  493. } InfoLeaf;
  494. typedef struct {
  495.    UINT ValCSR6;
  496.    UINT GPCount;
  497.    UINT GPValue[MAX_GP_WRITES];
  498.    UINT GPResetLen;
  499.    UINT GPResetValue[MAX_GP_WRITES];
  500. } MediaSettingsType;
  501. typedef struct {
  502.    UINT ActiveMedia;
  503.    UINT MediaFound;
  504.    UINT GPMask;
  505.    MediaSettingsType MediaArray[MAX_MEDIAS];
  506.    UINT DontSwitch;
  507. } MediaBlocksType;
  508. #ifdef __cplusplus
  509. }
  510. #endif
  511. #endif /* __INCif_dch */