at91_emac.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. #ifndef _ARCH_ARM_AT91_EMAC_H_
  2. #define _ARCH_ARM_AT91_EMAC_H_
  3. /*
  4. * Copyright (C) 2006 by egnite Software GmbH. All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  9. *
  10. * 1. Redistributions of source code must retain the above copyright
  11. * notice, this list of conditions and the following disclaimer.
  12. * 2. Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in the
  14. * documentation and/or other materials provided with the distribution.
  15. * 3. Neither the name of the copyright holders nor the names of
  16. * contributors may be used to endorse or promote products derived
  17. * from this software without specific prior written permission.
  18. *
  19. * THIS SOFTWARE IS PROVIDED BY EGNITE SOFTWARE GMBH AND CONTRIBUTORS
  20. * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  21. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  22. * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EGNITE
  23. * SOFTWARE GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  24. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  25. * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
  26. * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
  27. * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  28. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
  29. * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  30. * SUCH DAMAGE.
  31. *
  32. * For additional information see http://www.ethernut.de/
  33. */
  34. /*!
  35. * \file arch/arm/at91_emac.h
  36. * \brief AT91 peripherals.
  37. *
  38. * \verbatim
  39. *
  40. * $Log: at91_emac.h,v $
  41. * Revision 1.2 2006/08/31 19:19:55 haraldkipp
  42. * No time to write comments. ;-)
  43. *
  44. * Revision 1.1 2006/07/05 07:45:25 haraldkipp
  45. * Split on-chip interface definitions.
  46. *
  47. * \endverbatim
  48. */
  49. /*!
  50. * \addtogroup xgNutArchArmAt91Emac
  51. */
  52. /*@{*/
  53. /*! \name Network Control Register */
  54. /*@{*/
  55. #define EMAC_NCR_OFF 0x00000000 /*!< \brief Network control register offset. */
  56. #define EMAC_NCR (EMAC_BASE + EMAC_NCR_OFF) /*!< \brief Network Control register address. */
  57. #define EMAC_LB 0x00000001 /*!< \brief PHY loopback. */
  58. #define EMAC_LLB 0x00000002 /*!< \brief EMAC loopback. */
  59. #define EMAC_RE 0x00000004 /*!< \brief Receive enable. */
  60. #define EMAC_TE 0x00000008 /*!< \brief Transmit enable. */
  61. #define EMAC_MPE 0x00000010 /*!< \brief Management port enable. */
  62. #define EMAC_CLRSTAT 0x00000020 /*!< \brief Clear statistics registers. */
  63. #define EMAC_INCSTAT 0x00000040 /*!< \brief Increment statistics registers. */
  64. #define EMAC_WESTAT 0x00000080 /*!< \brief Write enable for statistics registers. */
  65. #define EMAC_BP 0x00000100 /*!< \brief Back pressure. */
  66. #define EMAC_TSTART 0x00000200 /*!< \brief Start Transmission. */
  67. #define EMAC_THALT 0x00000400 /*!< \brief Transmission halt. */
  68. #define EMAC_TPFR 0x00000800 /*!< \brief Transmit pause frame. */
  69. #define EMAC_TZQ 0x00001000 /*!< \brief Transmit zero quantum pause frame. */
  70. /*@}*/
  71. /*! \name Network Configuration Register */
  72. /*@{*/
  73. #define EMAC_NCFGR_OFF 0x00000004 /*!< \brief Network configuration register offset. */
  74. #define EMAC_NCFGR (EMAC_BASE + EMAC_NCFGR_OFF) /*!< \brief Network configuration register address. */
  75. #define EMAC_SPD 0x00000001 /*!< \brief Speed, set for 100Mb. */
  76. #define EMAC_FD 0x00000002 /*!< \brief Full duplex. */
  77. #define EMAC_JFRAME 0x00000008 /*!< \brief Jumbo Frames. */
  78. #define EMAC_CAF 0x00000010 /*!< \brief Copy all frames. */
  79. #define EMAC_NBC 0x00000020 /*!< \brief No broadcast. */
  80. #define EMAC_MTI 0x00000040 /*!< \brief Multicast hash event enable. */
  81. #define EMAC_UNI 0x00000080 /*!< \brief Unicast hash enable. */
  82. #define EMAC_BIG 0x00000100 /*!< \brief Receive 1522 bytes. */
  83. #define EMAC_EAE 0x00000200 /*!< \brief External address match enable. */
  84. #define EMAC_CLK 0x00000C00 /*!< \brief Clock divider mask. */
  85. #define EMAC_CLK_HCLK_8 0x00000000 /*!< \brief HCLK divided by 8. */
  86. #define EMAC_CLK_HCLK_16 0x00000400 /*!< \brief HCLK divided by 16. */
  87. #define EMAC_CLK_HCLK_32 0x00000800 /*!< \brief HCLK divided by 32. */
  88. #define EMAC_CLK_HCLK_64 0x00000C00 /*!< \brief HCLK divided by 64. */
  89. #define EMAC_RTY 0x00001000 /*!< \brief Retry test. */
  90. #define EMAC_PAE 0x00002000 /*!< \brief Pause enable. */
  91. #define EMAC_RBOF 0x0000C000 /*!< \brief Receive buffer offset. */
  92. #define EMAC_RBOF_OFFSET_0 0x00000000 /*!< \brief No offset from start of receive buffer. */
  93. #define EMAC_RBOF_OFFSET_1 0x00004000 /*!< \brief One byte offset from start of receive buffer. */
  94. #define EMAC_RBOF_OFFSET_2 0x00008000 /*!< \brief Two bytes offset from start of receive buffer. */
  95. #define EMAC_RBOF_OFFSET_3 0x0000C000 /*!< \brief Three bytes offset from start of receive buffer. */
  96. #define EMAC_RLCE 0x00010000 /*!< \brief Receive length field checking enable. */
  97. #define EMAC_DRFCS 0x00020000 /*!< \brief Discard receive FCS. */
  98. #define EMAC_EFRHD 0x00040000 /*!< \brief Allow receive during transmit in half duplex. */
  99. #define EMAC_IRXFCS 0x00080000 /*!< \brief Ignore received FCS. */
  100. /*@}*/
  101. /*! \name Network Status Register */
  102. /*@{*/
  103. #define EMAC_NSR_OFF 0x00000008 /*!< \brief Network Status register offset. */
  104. #define EMAC_NSR (EMAC_BASE + EMAC_NSR_OFF) /*!< \brief Network Status register address. */
  105. #define EMAC_LINKR 0x00000001 /*!< \brief . */
  106. #define EMAC_MDIO 0x00000002 /*!< \brief Status of MDIO input pin. */
  107. #define EMAC_IDLE 0x00000004 /*!< \brief Set when PHY is running. */
  108. /*@}*/
  109. /*! \name Transmit Status Register */
  110. /*@{*/
  111. #define EMAC_TSR_OFF 0x00000014 /*!< \brief Transmit Status register offset. */
  112. #define EMAC_TSR (EMAC_BASE + EMAC_TSR_OFF) /*!< \brief Transmit Status register address. */
  113. #define EMAC_UBR 0x00000001 /*!< \brief Used bit read. */
  114. #define EMAC_COL 0x00000002 /*!< \brief Collision occurred. */
  115. #define EMAC_RLES 0x00000004 /*!< \brief Retry limit exceeded. */
  116. #define EMAC_TGO 0x00000008 /*!< \brief Transmit active. */
  117. #define EMAC_BEX 0x00000010 /*!< \brief Buffers exhausted mid frame. */
  118. #define EMAC_COMP 0x00000020 /*!< \brief Transmit complete. */
  119. #define EMAC_UND 0x00000040 /*!< \brief Transmit underrun. */
  120. /*@}*/
  121. /*! \name Buffer Queue Pointer Register */
  122. /*@{*/
  123. #define EMAC_RBQP_OFF 0x00000018 /*!< \brief Receive buffer queue pointer. */
  124. #define EMAC_RBQP (EMAC_BASE + EMAC_RBQP_OFF) /*!< \brief Receive buffer queue pointer. */
  125. #define EMAC_TBQP_OFF 0x0000001C /*!< \brief Transmit buffer queue pointer. */
  126. #define EMAC_TBQP (EMAC_BASE + EMAC_TBQP_OFF) /*!< \brief Transmit buffer queue pointer. */
  127. /*@}*/
  128. /*! \name Receive Status Register */
  129. /*@{*/
  130. #define EMAC_RSR_OFF 0x00000020 /*!< \brief Receive status register offset. */
  131. #define EMAC_RSR (EMAC_BASE + EMAC_RSR_OFF) /*!< \brief Receive status register address. */
  132. #define EMAC_BNA 0x00000001 /*!< \brief Buffer not available. */
  133. #define EMAC_REC 0x00000002 /*!< \brief Frame received. */
  134. #define EMAC_OVR 0x00000004 /*!< \brief Receive overrun. */
  135. /*@}*/
  136. /*! \name Interrupt Registers */
  137. /*@{*/
  138. #define EMAC_ISR_OFF 0x00000024 /*!< \brief Status register offset. */
  139. #define EMAC_ISR (EMAC_BASE + EMAC_ISR_OFF) /*!< \brief Status register address. */
  140. #define EMAC_IER_OFF 0x00000028 /*!< \brief Enable register offset. */
  141. #define EMAC_IER (EMAC_BASE + EMAC_IER_OFF) /*!< \brief Enable register address. */
  142. #define EMAC_IDR_OFF 0x0000002C /*!< \brief Disable register offset. */
  143. #define EMAC_IDR (EMAC_BASE + EMAC_IDR_OFF) /*!< \brief Disable register address. */
  144. #define EMAC_IMR_OFF 0x00000030 /*!< \brief Mask register offset. */
  145. #define EMAC_IMR (EMAC_BASE + EMAC_IMR_OFF) /*!< \brief Mask register address. */
  146. #define EMAC_MFD 0x00000001 /*!< \brief Management frame done. */
  147. #define EMAC_RCOMP 0x00000002 /*!< \brief Receive complete. */
  148. #define EMAC_RXUBR 0x00000004 /*!< \brief Receive used bit read. */
  149. #define EMAC_TXUBR 0x00000008 /*!< \brief Transmit used bit read. */
  150. #define EMAC_TUND 0x00000010 /*!< \brief Ethernet transmit buffer underrun. */
  151. #define EMAC_RLEX 0x00000020 /*!< \brief Retry limit exceeded. */
  152. #define EMAC_TXERR 0x00000040 /*!< \brief Transmit error. */
  153. #define EMAC_TCOMP 0x00000080 /*!< \brief Transmit complete. */
  154. #define EMAC_LINK 0x00000200 /*!< \brief . */
  155. #define EMAC_ROVR 0x00000400 /*!< \brief Receive overrun. */
  156. #define EMAC_HRESP 0x00000800 /*!< \brief DMA bus error. */
  157. #define EMAC_PFR 0x00001000 /*!< \brief Pause frame received. */
  158. #define EMAC_PTZ 0x00002000 /*!< \brief Pause time zero. */
  159. /*@}*/
  160. /*! \name PHY Maintenance Register */
  161. /*@{*/
  162. #define EMAC_MAN_OFF 0x00000034 /*!< \brief PHY maintenance register offset. */
  163. #define EMAC_MAN (EMAC_BASE + EMAC_MAN_OFF) /*!< \brief PHY maintenance register address. */
  164. #define EMAC_DATA 0x0000FFFF /*!< \brief PHY data mask. */
  165. #define EMAC_DATA_LSB 0 /*!< \brief PHY data LSB. */
  166. #define EMAC_CODE 0x00020000 /*!< \brief Fixed value. */
  167. #define EMAC_REGA 0x007C0000 /*!< \brief PHY register address mask. */
  168. #define EMAC_REGA_LSB 18 /*!< \brief PHY register address LSB. */
  169. #define EMAC_PHYA 0x0F800000 /*!< \brief PHY address mask. */
  170. #define EMAC_PHYA_LSB 23 /*!< \brief PHY address LSB. */
  171. #define EMAC_RW 0x30000000 /*!< \brief PHY read/write command mask. */
  172. #define EMAC_RW_READ 0x20000000 /*!< \brief PHY read command. */
  173. #define EMAC_RW_WRITE 0x10000000 /*!< \brief PHY write command. */
  174. #define EMAC_SOF 0x40000000 /*!< \brief Fixed value. */
  175. /*@}*/
  176. /*! \name Pause Time Register */
  177. /*@{*/
  178. #define EMAC_PTR_OFF 0x00000038 /*!< \brief Pause time register offset. */
  179. #define EMAC_PTR (EMAC_BASE + EMAC_PTR_OFF) /*!< \brief Pause time register address. */
  180. #define EMAC_PTIME 0x0000FFFF /*!< \brief Pause time mask. */
  181. /*@}*/
  182. /*! \name Statistics Registers */
  183. /*@{*/
  184. #define EMAC_PFRR_OFF 0x0000003C /*!< \brief Pause frames received register offset. */
  185. #define EMAC_PFRR (EMAC_BASE + EMAC_PFRR_OFF) /*!< \brief Pause frames received register address. */
  186. #define EMAC_FTO_OFF 0x00000040 /*!< \brief Frames transmitted OK register offset. */
  187. #define EMAC_FTO (EMAC_BASE + EMAC_FTO_OFF) /*!< \brief Frames transmitted OK register address. */
  188. #define EMAC_SCF_OFF 0x00000044 /*!< \brief Single collision frame register offset. */
  189. #define EMAC_SCF (EMAC_BASE + EMAC_SCF_OFF) /*!< \brief Single collision frame register address. */
  190. #define EMAC_MCF_OFF 0x00000048 /*!< \brief Multiple collision frame register offset. */
  191. #define EMAC_MCF (EMAC_BASE + EMAC_MCF_OFF) /*!< \brief Multiple collision frame register address. */
  192. #define EMAC_FRO_OFF 0x0000004C /*!< \brief Frames received OK register offset. */
  193. #define EMAC_FRO (EMAC_BASE + EMAC_FRO_OFF) /*!< \brief Frames received OK register address. */
  194. #define EMAC_FCSE_OFF 0x00000050 /*!< \brief Frame check sequence error register offset. */
  195. #define EMAC_FCSE (EMAC_BASE + EMAC_FCSE_OFF) /*!< \brief Frame check sequence error register address. */
  196. #define EMAC_ALE_OFF 0x00000054 /*!< \brief Alignment error register offset. */
  197. #define EMAC_ALE (EMAC_BASE + EMAC_ALE_OFF) /*!< \brief Alignment error register address. */
  198. #define EMAC_DTF_OFF 0x00000058 /*!< \brief Deferred transmission frame register offset. */
  199. #define EMAC_DTF (EMAC_BASE + EMAC_DTF_OFF) /*!< \brief Deferred transmission frame register address. */
  200. #define EMAC_LCOL_OFF 0x0000005C /*!< \brief Late collision register offset. */
  201. #define EMAC_LCOL (EMAC_BASE + EMAC_LCOL_OFF) /*!< \brief Late collision register address. */
  202. #define EMAC_ECOL_OFF 0x00000060 /*!< \brief Excessive collision register offset. */
  203. #define EMAC_ECOL (EMAC_BASE + EMAC_ECOL_OFF) /*!< \brief Excessive collision register address. */
  204. #define EMAC_TUNDR_OFF 0x00000064 /*!< \brief Transmit underrun error register offset. */
  205. #define EMAC_TUNDR (EMAC_BASE + EMAC_TUNDR_OFF) /*!< \brief Transmit underrun error register address. */
  206. #define EMAC_CSE_OFF 0x00000068 /*!< \brief Carrier sense error register offset. */
  207. #define EMAC_CSE (EMAC_BASE + EMAC_CSE_OFF) /*!< \brief Carrier sense error register address. */
  208. #define EMAC_RRE_OFF 0x0000006C /*!< \brief Receive resource error register offset. */
  209. #define EMAC_RRE (EMAC_BASE + EMAC_RRE_OFF) /*!< \brief Receive resource error register address. */
  210. #define EMAC_ROV_OFF 0x00000070 /*!< \brief Receive overrun errors register offset. */
  211. #define EMAC_ROV (EMAC_BASE + EMAC_ROV_OFF) /*!< \brief Receive overrun errors register address. */
  212. #define EMAC_RSE_OFF 0x00000074 /*!< \brief Receive symbol errors register offset. */
  213. #define EMAC_RSE (EMAC_BASE + EMAC_RSE_OFF) /*!< \brief Receive symbol errors register address. */
  214. #define EMAC_ELE_OFF 0x00000078 /*!< \brief Excessive length errors register offset. */
  215. #define EMAC_ELE (EMAC_BASE + EMAC_ELE_OFF) /*!< \brief Excessive length errors register address. */
  216. #define EMAC_RJA_OFF 0x0000007C /*!< \brief Receive jabbers register offset. */
  217. #define EMAC_RJA (EMAC_BASE + EMAC_RJA_OFF) /*!< \brief Receive jabbers register address. */
  218. #define EMAC_USF_OFF 0x00000080 /*!< \brief Undersize frames register offset. */
  219. #define EMAC_USF (EMAC_BASE + EMAC_USF_OFF) /*!< \brief Undersize frames register address. */
  220. #define EMAC_STE_OFF 0x00000084 /*!< \brief SQE test error register offset. */
  221. #define EMAC_STE (EMAC_BASE + EMAC_STE_OFF) /*!< \brief SQE test error register address. */
  222. #define EMAC_RLE_OFF 0x00000088 /*!< \brief Receive length field mismatch register offset. */
  223. #define EMAC_RLE (EMAC_BASE + EMAC_RLE_OFF) /*!< \brief Receive length field mismatch register address. */
  224. #define EMAC_TPF_OFF 0x0000008C /*!< \brief Transmitted pause frames register offset. */
  225. #define EMAC_TPF (EMAC_BASE + EMAC_TPF_OFF) /*!< \brief Transmitted pause frames register address. */
  226. /*@}*/
  227. /*! \name MAC Adressing Registers */
  228. /*@{*/
  229. #define EMAC_HRB_OFF 0x00000090 /*!< \brief Hash address bottom[31:0]. */
  230. #define EMAC_HRB (EMAC_BASE + EMAC_HRB_OFF) /*!< \brief Hash address bottom[31:0]. */
  231. #define EMAC_HRT_OFF 0x00000094 /*!< \brief Hash address top[63:32]. */
  232. #define EMAC_HRT (EMAC_BASE + EMAC_HRT_OFF) /*!< \brief Hash address top[63:32]. */
  233. #define EMAC_SA1L_OFF 0x00000098 /*!< \brief Specific address 1 bottom, first 4 bytes. */
  234. #define EMAC_SA1L (EMAC_BASE + EMAC_SA1L_OFF) /*!< \brief Specific address 1 bottom, first 4 bytes. */
  235. #define EMAC_SA1H_OFF 0x0000009C /*!< \brief Specific address 1 top, last 2 bytes. */
  236. #define EMAC_SA1H (EMAC_BASE + EMAC_SA1H_OFF) /*!< \brief Specific address 1 top, last 2 bytes. */
  237. #define EMAC_SA2L_OFF 0x000000A0 /*!< \brief Specific address 2 bottom, first 4 bytes. */
  238. #define EMAC_SA2L (EMAC_BASE + EMAC_SA2L_OFF) /*!< \brief Specific address 2 bottom, first 4 bytes. */
  239. #define EMAC_SA2H_OFF 0x000000A4 /*!< \brief Specific address 2 top, last 2 bytes. */
  240. #define EMAC_SA2H (EMAC_BASE + EMAC_SA2H_OFF) /*!< \brief Specific address 2 top, last 2 bytes. */
  241. #define EMAC_SA3L_OFF 0x000000A8 /*!< \brief Specific address 3 bottom, first 4 bytes. */
  242. #define EMAC_SA3L (EMAC_BASE + EMAC_SA3L_OFF) /*!< \brief Specific address 3 bottom, first 4 bytes. */
  243. #define EMAC_SA3H_OFF 0x000000AC /*!< \brief Specific address 3 top, last 2 bytes. */
  244. #define EMAC_SA3H (EMAC_BASE + EMAC_SA3H_OFF) /*!< \brief Specific address 3 top, last 2 bytes. */
  245. #define EMAC_SA4L_OFF 0x000000B0 /*!< \brief Specific address 4 bottom, first 4 bytes. */
  246. #define EMAC_SA4L (EMAC_BASE + EMAC_SA4L_OFF) /*!< \brief Specific address 4 bottom, first 4 bytes. */
  247. #define EMAC_SA4H_OFF 0x000000B4 /*!< \brief Specific address 4 top, last 2 bytes. */
  248. #define EMAC_SA4H (EMAC_BASE + EMAC_SA4H_OFF) /*!< \brief Specific address 4 top, last 2 bytes. */
  249. /*@}*/
  250. /*! \name Type ID Register */
  251. /*@{*/
  252. #define EMAC_TID_OFF 0x000000B8 /*!< \brief Type ID checking register offset. */
  253. #define EMAC_TID (EMAC_BASE + EMAC_TID_OFF) /*!< \brief Type ID checking register address. */
  254. #define EMAC_TPQ_OFF 0x000000BC /*!< \brief Transmit pause quantum register offset. */
  255. #define EMAC_TPQ (EMAC_BASE + EMAC_TPQ_OFF) /*!< \brief Transmit pause quantum register address. */
  256. /*@}*/
  257. /*! \name User Input/Output Register */
  258. /*@{*/
  259. #define EMAC_USRIO_OFF 0x000000C0 /*!< \brief User input/output register offset. */
  260. #define EMAC_USRIO (EMAC_BASE + EMAC_USRIO_OFF) /*!< \brief User input/output register address. */
  261. #define EMAC_RMII 0x00000001 /*!< \brief Enable reduced MII. */
  262. #define EMAC_CLKEN 0x00000002 /*!< \brief Enable tranceiver input clock. */
  263. /*@}*/
  264. /*! \name Wake On LAN Register */
  265. /*@{*/
  266. #define EMAC_WOL_OFF 0x000000C4 /*!< \brief Wake On LAN register offset. */
  267. #define EMAC_WOL (EMAC_BASE + EMAC_WOL_OFF) /*!< \brief Wake On LAN register address. */
  268. #define EMAC_IP 0x0000FFFF /*!< \brief ARP request IP address mask. */
  269. #define EMAC_MAG 0x00010000 /*!< \brief Magic packet event enable. */
  270. #define EMAC_ARP 0x00020000 /*!< \brief ARP request event enable. */
  271. #define EMAC_SA1 0x00040000 /*!< \brief Specific address register 1 event enable. */
  272. /*@}*/
  273. /*! \name Revision Register */
  274. /*@{*/
  275. #define EMAC_REV_OFF 0x000000FC /*!< \brief Revision register offset. */
  276. #define EMAC_REV (EMAC_BASE + EMAC_REV_OFF) /*!< \brief Revision register address. */
  277. #define EMAC_REVREF 0x0000FFFF /*!< \brief Revision. */
  278. #define EMAC_PARTREF 0xFFFF0000 /*!< \brief Part. */
  279. /*@}*/
  280. /*@} xgNutArchArmAt91Emac */
  281. #endif /* _ARCH_ARM_AT91_EMAC_H_ */