bcmenet47xx.h
上传用户:yuanda199
上传日期:2022-06-26
资源大小:412k
文件大小:7k
源码类别:

VxWorks

开发平台:

C/C++

  1. /*
  2.     Copyright 2001, Broadcom Corporation
  3.     All Rights Reserved.
  4.     
  5.     This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
  6.     the contents of this file may not be disclosed to third parties, copied or
  7.     duplicated in any form, in whole or in part, without the prior written
  8.     permission of Broadcom Corporation.
  9. */
  10. /*
  11.  * Hardware-specific definitions for
  12.  * Broadcom BCM47XX 10/100 Mbps Ethernet cores.
  13.  *
  14.  * Copyright(c) Broadcom Corp.
  15.  * $Id: bcmenet47xx.h,v 1.1 Broadcom SDK $
  16.  */
  17. #ifndef _bcmenet_47xx_h_
  18. #define _bcmenet_47xx_h_
  19. #include <bcmdevs.h>
  20. #include <hnddma.h>
  21. #define BCMENET_NFILTERS 64 /* # ethernet address filter entries */
  22. #define BCMENET_MCHASHBASE 0x200 /* multicast hash filter base address */
  23. #define BCMENET_MCHASHSIZE 256 /* multicast hash filter size in bytes */
  24. #define BCMENET_MAX_DMA 4096 /* chip has 12 bits of DMA addressing */
  25. /* power management event wakeup pattern constants */
  26. #define BCMENET_NPMP 4 /* chip supports 4 wakeup patterns */
  27. #define BCMENET_PMPBASE 0x400 /* wakeup pattern base address */
  28. #define BCMENET_PMPSIZE 0x80 /* 128bytes each pattern */
  29. #define BCMENET_PMMBASE 0x600 /* wakeup mask base address */
  30. #define BCMENET_PMMSIZE 0x10 /* 128bits each mask */
  31. /* cpp contortions to concatenate w/arg prescan */
  32. #ifndef PAD
  33. #define _PADLINE(line) pad ## line
  34. #define _XSTR(line) _PADLINE(line)
  35. #define PAD _XSTR(__LINE__)
  36. #endif /* PAD */
  37. /* sometimes you just need the enet mib definitions */
  38. #include <bcmenetmib.h>
  39. /*
  40.  * Host Interface Registers
  41.  */
  42. typedef volatile struct _bcmenettregs {
  43. /* Device and Power Control */
  44. uint32 devcontrol;
  45. uint32 PAD[2];
  46. uint32 biststatus;
  47. uint32 wakeuplength;
  48. uint32 PAD[3];
  49. /* Interrupt Control */
  50. uint32 intstatus;
  51. uint32 intmask;
  52. uint32 gptimer;
  53. uint32 PAD[23];
  54. /* Ethernet MAC Address Filtering Control */
  55. uint32 PAD[2];
  56. uint32 enetftaddr;
  57. uint32 enetftdata;
  58. uint32 PAD[2];
  59. /* Ethernet MAC Control */
  60. uint32 emactxmaxburstlen;
  61. uint32 emacrxmaxburstlen;
  62. uint32 emaccontrol;
  63. uint32 emacflowcontrol;
  64. uint32 PAD[20];
  65. /* DMA Lazy Interrupt Control */
  66. uint32 intrecvlazy;
  67. uint32 PAD[63];
  68. /* DMA engine */
  69. dmaregs_t dmaregs;
  70. dmafifo_t dmafifo;
  71. uint32 PAD[116];
  72. /* EMAC Registers */
  73. uint32 rxconfig;
  74. uint32 rxmaxlength;
  75. uint32 txmaxlength;
  76. uint32 PAD;
  77. uint32 mdiocontrol;
  78. uint32 mdiodata;
  79. uint32 emacintmask;
  80. uint32 emacintstatus;
  81. uint32 camdatalo;
  82. uint32 camdatahi;
  83. uint32 camcontrol;
  84. uint32 enetcontrol;
  85. uint32 txcontrol;
  86. uint32 txwatermark;
  87. uint32 mibcontrol;
  88. uint32 PAD[49];
  89. /* EMAC MIB counters */
  90. bcmenetmib_t mib;
  91. uint32 PAD[585];
  92. /* Sonics SiliconBackplane config registers */
  93. sbconfig_t sbconfig;
  94. } bcmenetregs_t;
  95. /* device control */
  96. #define DC_PM ((uint32)1 << 7) /* pattern filtering enable */
  97. #define DC_IP ((uint32)1 << 10) /* internal ephy present (rev >= 1) */
  98. #define DC_ER ((uint32)1 << 15) /* ephy reset */
  99. #define DC_MP ((uint32)1 << 16) /* mii phy mode enable */
  100. #define DC_CO ((uint32)1 << 17) /* mii phy mode: enable clocks */
  101. #define DC_PA_MASK 0x7c0000 /* mii phy mode: mdc/mdio phy address */
  102. #define DC_PA_SHIFT 18
  103. /* wakeup length */
  104. #define WL_P0_MASK 0x7f /* pattern 0 */
  105. #define WL_D0 ((uint32)1 << 7)
  106. #define WL_P1_MASK 0x7f00 /* pattern 1 */
  107. #define WL_P1_SHIFT 8
  108. #define WL_D1 ((uint32)1 << 15)
  109. #define WL_P2_MASK 0x7f0000 /* pattern 2 */
  110. #define WL_P2_SHIFT 16
  111. #define WL_D2 ((uint32)1 << 23)
  112. #define WL_P3_MASK 0x7f000000 /* pattern 3 */
  113. #define WL_P3_SHIFT 24
  114. #define WL_D3 ((uint32)1 << 31)
  115. /* intstatus and intmask */
  116. #define I_PME ((uint32)1 << 6) /* power management event */
  117. #define I_TO ((uint32)1 << 7) /* general purpose timeout */
  118. #define I_PC ((uint32)1 << 10) /* descriptor error */
  119. #define I_PD ((uint32)1 << 11) /* data error */
  120. #define I_DE ((uint32)1 << 12) /* descriptor protocol error */
  121. #define I_RU ((uint32)1 << 13) /* receive descriptor underflow */
  122. #define I_RO ((uint32)1 << 14) /* receive fifo overflow */
  123. #define I_XU ((uint32)1 << 15) /* transmit fifo underflow */
  124. #define I_RI ((uint32)1 << 16) /* receive interrupt */
  125. #define I_XI ((uint32)1 << 24) /* transmit interrupt */
  126. #define I_EM ((uint32)1 << 26) /* emac interrupt */
  127. #define I_MW ((uint32)1 << 27) /* mii write */
  128. #define I_MR ((uint32)1 << 28) /* mii read */
  129. /* emaccontrol */
  130. #define EMC_CG ((uint32)1 << 0) /* crc32 generation enable */
  131. #define EMC_EP ((uint32)1 << 2) /* onchip ephy: powerdown (rev >= 1) */
  132. #define EMC_ED ((uint32)1 << 3) /* onchip ephy: energy detected (rev >= 1) */
  133. #define EMC_LC_MASK 0xe0 /* onchip ephy: led control (rev >= 1) */
  134. #define EMC_LC_SHIFT 5
  135. /* emacflowcontrol */
  136. #define EMF_RFH_MASK 0xff /* rx fifo hi water mark */
  137. #define EMF_PG ((uint32)1 << 15) /* enable pause frame generation */
  138. /* interrupt receive lazy */
  139. #define IRL_TO_MASK 0x00ffffff /* timeout */
  140. #define IRL_FC_MASK 0xff000000 /* frame count */
  141. #define IRL_FC_SHIFT 24 /* frame count */
  142. /* emac receive config */
  143. #define ERC_DB ((uint32)1 << 0) /* disable broadcast */
  144. #define ERC_AM ((uint32)1 << 1) /* accept all multicast */
  145. #define ERC_RDT ((uint32)1 << 2) /* receive disable while transmitting */
  146. #define ERC_PE ((uint32)1 << 3) /* promiscuous enable */
  147. #define ERC_LE ((uint32)1 << 4) /* loopback enable */
  148. #define ERC_FE ((uint32)1 << 5) /* enable flow control */
  149. #define ERC_UF ((uint32)1 << 6) /* accept unicast flow control frame */
  150. #define ERC_RF ((uint32)1 << 7) /* reject filter */
  151. /* emac mdio control */
  152. #define MC_MF_MASK 0x7f /* mdc frequency */
  153. #define MC_PE ((uint32)1 << 7) /* mii preamble enable */
  154. /* emac mdio data */
  155. #define MD_DATA_MASK 0xffff /* r/w data */
  156. #define MD_TA_MASK 0x30000 /* turnaround value */
  157. #define MD_TA_SHIFT 16
  158. #define MD_TA_VALID (2 << MD_TA_SHIFT) /* valid ta */
  159. #define MD_RA_MASK 0x7c0000 /* register address */
  160. #define MD_RA_SHIFT 18
  161. #define MD_PMD_MASK 0xf800000 /* physical media device */
  162. #define MD_PMD_SHIFT 23
  163. #define MD_OP_MASK 0x30000000 /* opcode */
  164. #define MD_OP_SHIFT 28
  165. #define MD_OP_WRITE (1 << MD_OP_SHIFT) /* write op */
  166. #define MD_OP_READ (2 << MD_OP_SHIFT) /* read op */
  167. #define MD_SB_MASK 0xc0000000 /* start bits */
  168. #define MD_SB_SHIFT 30
  169. #define MD_SB_START (0x1 << MD_SB_SHIFT) /* start of frame */
  170. /* emac intstatus and intmask */
  171. #define EI_MII ((uint32)1 << 0) /* mii mdio interrupt */
  172. #define EI_MIB ((uint32)1 << 1) /* mib interrupt */
  173. #define EI_FLOW ((uint32)1 << 2) /* flow control interrupt */
  174. /* emac cam data high */
  175. #define CD_V ((uint32)1 << 16) /* valid bit */
  176. /* emac cam control */
  177. #define CC_CE ((uint32)1 << 0) /* cam enable */
  178. #define CC_MS ((uint32)1 << 1) /* mask select */
  179. #define CC_RD ((uint32)1 << 2) /* read */
  180. #define CC_WR ((uint32)1 << 3) /* write */
  181. #define CC_INDEX_MASK 0x3f0000 /* index */
  182. #define CC_INDEX_SHIFT 16
  183. #define CC_CB ((uint32)1 << 31) /* cam busy */
  184. /* emac ethernet control */
  185. #define EC_EE ((uint32)1 << 0) /* emac enable */
  186. #define EC_ED ((uint32)1 << 1) /* emac disable */
  187. #define EC_ES ((uint32)1 << 2) /* emac soft reset */
  188. #define EC_EP ((uint32)1 << 3) /* external phy select */
  189. /* emac transmit control */
  190. #define EXC_FD ((uint32)1 << 0) /* full duplex */
  191. #define EXC_FM ((uint32)1 << 1) /* flowmode */
  192. #define EXC_SB ((uint32)1 << 2) /* single backoff enable */
  193. #define EXC_SS ((uint32)1 << 3) /* small slottime */
  194. /* emac mib control */
  195. #define EMC_RZ ((uint32)1 << 0) /* autoclear on read */
  196. /* sometimes you just need the enet rxheader definitions */
  197. #include <bcmenetrxh.h>
  198. #endif /* _bcmenet_47xx_h_ */