hw_ethernet.h 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683
  1. //*****************************************************************************
  2. //
  3. // hw_ethernet.h - Macros used when accessing the Ethernet hardware.
  4. //
  5. // Copyright (c) 2006-2009 Luminary Micro, Inc. All rights reserved.
  6. // Software License Agreement
  7. //
  8. // Luminary Micro, Inc. (LMI) is supplying this software for use solely and
  9. // exclusively on LMI's microcontroller products.
  10. //
  11. // The software is owned by LMI and/or its suppliers, and is protected under
  12. // applicable copyright laws. All rights are reserved. You may not combine
  13. // this software with "viral" open-source software in order to form a larger
  14. // program. Any use in violation of the foregoing restrictions may subject
  15. // the user to criminal sanctions under applicable laws, as well as to civil
  16. // liability for the breach of the terms and conditions of this license.
  17. //
  18. // THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
  19. // OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
  20. // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
  21. // LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
  22. // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
  23. //
  24. // This is part of revision 4694 of the Stellaris Firmware Development Package.
  25. //
  26. //*****************************************************************************
  27. #ifndef __HW_ETHERNET_H__
  28. #define __HW_ETHERNET_H__
  29. //*****************************************************************************
  30. //
  31. // The following are defines for the MAC register offsets in the Ethernet
  32. // Controller.
  33. //
  34. //*****************************************************************************
  35. #define MAC_O_RIS 0x00000000 // Ethernet MAC Raw Interrupt
  36. // Status
  37. #define MAC_O_IACK 0x00000000 // Interrupt Acknowledge Register
  38. #define MAC_O_IM 0x00000004 // Interrupt Mask Register
  39. #define MAC_O_RCTL 0x00000008 // Receive Control Register
  40. #define MAC_O_TCTL 0x0000000C // Transmit Control Register
  41. #define MAC_O_DATA 0x00000010 // Data Register
  42. #define MAC_O_IA0 0x00000014 // Individual Address Register 0
  43. #define MAC_O_IA1 0x00000018 // Individual Address Register 1
  44. #define MAC_O_THR 0x0000001C // Threshold Register
  45. #define MAC_O_MCTL 0x00000020 // Management Control Register
  46. #define MAC_O_MDV 0x00000024 // Management Divider Register
  47. #define MAC_O_MTXD 0x0000002C // Management Transmit Data Reg
  48. #define MAC_O_MRXD 0x00000030 // Management Receive Data Reg
  49. #define MAC_O_NP 0x00000034 // Number of Packets Register
  50. #define MAC_O_TR 0x00000038 // Transmission Request Register
  51. #define MAC_O_TS 0x0000003C // Timer Support Register
  52. #define MAC_O_LED 0x00000040 // Ethernet MAC LED Encoding
  53. #define MAC_O_MDIX 0x00000044 // MDIX Register
  54. //*****************************************************************************
  55. //
  56. // The following are defines for the bit fields in the MAC_IACK register.
  57. //
  58. //*****************************************************************************
  59. #define MAC_IACK_PHYINT 0x00000040 // Clear PHY Interrupt
  60. #define MAC_IACK_MDINT 0x00000020 // Clear MDI Transaction Complete
  61. #define MAC_IACK_RXER 0x00000010 // Clear RX Error
  62. #define MAC_IACK_FOV 0x00000008 // Clear RX FIFO Overrun
  63. #define MAC_IACK_TXEMP 0x00000004 // Clear TX FIFO Empy
  64. #define MAC_IACK_TXER 0x00000002 // Clear TX Error
  65. #define MAC_IACK_RXINT 0x00000001 // Clear RX Packet Available
  66. //*****************************************************************************
  67. //
  68. // The following are defines for the bit fields in the MAC_IM register.
  69. //
  70. //*****************************************************************************
  71. #define MAC_IM_PHYINTM 0x00000040 // Mask PHY Interrupt
  72. #define MAC_IM_MDINTM 0x00000020 // Mask MDI Transaction Complete
  73. #define MAC_IM_RXERM 0x00000010 // Mask RX Error
  74. #define MAC_IM_FOVM 0x00000008 // Mask RX FIFO Overrun
  75. #define MAC_IM_TXEMPM 0x00000004 // Mask TX FIFO Empy
  76. #define MAC_IM_TXERM 0x00000002 // Mask TX Error
  77. #define MAC_IM_RXINTM 0x00000001 // Mask RX Packet Available
  78. //*****************************************************************************
  79. //
  80. // The following are defines for the bit fields in the MAC_RCTL register.
  81. //
  82. //*****************************************************************************
  83. #define MAC_RCTL_RSTFIFO 0x00000010 // Clear the Receive FIFO
  84. #define MAC_RCTL_BADCRC 0x00000008 // Reject Packets With Bad CRC
  85. #define MAC_RCTL_PRMS 0x00000004 // Enable Promiscuous Mode
  86. #define MAC_RCTL_AMUL 0x00000002 // Enable Multicast Packets
  87. #define MAC_RCTL_RXEN 0x00000001 // Enable Ethernet Receiver
  88. //*****************************************************************************
  89. //
  90. // The following are defines for the bit fields in the MAC_TCTL register.
  91. //
  92. //*****************************************************************************
  93. #define MAC_TCTL_DUPLEX 0x00000010 // Enable Duplex mode
  94. #define MAC_TCTL_CRC 0x00000004 // Enable CRC Generation
  95. #define MAC_TCTL_PADEN 0x00000002 // Enable Automatic Padding
  96. #define MAC_TCTL_TXEN 0x00000001 // Enable Ethernet Transmitter
  97. //*****************************************************************************
  98. //
  99. // The following are defines for the bit fields in the MAC_IA0 register.
  100. //
  101. //*****************************************************************************
  102. #define MAC_IA0_MACOCT4_M 0xFF000000 // MAC Address Octet 4.
  103. #define MAC_IA0_MACOCT3_M 0x00FF0000 // MAC Address Octet 3.
  104. #define MAC_IA0_MACOCT2_M 0x0000FF00 // MAC Address Octet 2.
  105. #define MAC_IA0_MACOCT1_M 0x000000FF // MAC Address Octet 1.
  106. #define MAC_IA0_MACOCT4_S 24
  107. #define MAC_IA0_MACOCT3_S 16
  108. #define MAC_IA0_MACOCT2_S 8
  109. #define MAC_IA0_MACOCT1_S 0
  110. //*****************************************************************************
  111. //
  112. // The following are defines for the bit fields in the MAC_IA1 register.
  113. //
  114. //*****************************************************************************
  115. #define MAC_IA1_MACOCT6_M 0x0000FF00 // MAC Address Octet 6.
  116. #define MAC_IA1_MACOCT5_M 0x000000FF // MAC Address Octet 5.
  117. #define MAC_IA1_MACOCT6_S 8
  118. #define MAC_IA1_MACOCT5_S 0
  119. //*****************************************************************************
  120. //
  121. // The following are defines for the bit fields in the MAC_TXTH register.
  122. //
  123. //*****************************************************************************
  124. #define MAC_THR_THRESH_M 0x0000003F // Threshold Value.
  125. #define MAC_THR_THRESH_S 0
  126. //*****************************************************************************
  127. //
  128. // The following are defines for the bit fields in the MAC_MCTL register.
  129. //
  130. //*****************************************************************************
  131. #define MAC_MCTL_REGADR_M 0x000000F8 // MII Register Address.
  132. #define MAC_MCTL_WRITE 0x00000002 // Next MII Transaction is Write
  133. #define MAC_MCTL_START 0x00000001 // Start MII Transaction
  134. #define MAC_MCTL_REGADR_S 3
  135. //*****************************************************************************
  136. //
  137. // The following are defines for the bit fields in the MAC_MDV register.
  138. //
  139. //*****************************************************************************
  140. #define MAC_MDV_DIV_M 0x000000FF // Clock Divider.
  141. #define MAC_MDV_DIV_S 0
  142. //*****************************************************************************
  143. //
  144. // The following are defines for the bit fields in the MAC_MTXD register.
  145. //
  146. //*****************************************************************************
  147. #define MAC_MTXD_MDTX_M 0x0000FFFF // MII Register Transmit Data.
  148. #define MAC_MTXD_MDTX_S 0
  149. //*****************************************************************************
  150. //
  151. // The following are defines for the bit fields in the MAC_MRXD register.
  152. //
  153. //*****************************************************************************
  154. #define MAC_MRXD_MDRX_M 0x0000FFFF // MII Register Receive Data.
  155. #define MAC_MRXD_MDRX_S 0
  156. //*****************************************************************************
  157. //
  158. // The following are defines for the bit fields in the MAC_NP register.
  159. //
  160. //*****************************************************************************
  161. #define MAC_NP_NPR_M 0x0000003F // Number of Packets in Receive
  162. // FIFO.
  163. #define MAC_NP_NPR_S 0
  164. //*****************************************************************************
  165. //
  166. // The following are defines for the bit fields in the MAC_TXRQ register.
  167. //
  168. //*****************************************************************************
  169. #define MAC_TR_NEWTX 0x00000001 // Start an Ethernet Transmission
  170. //*****************************************************************************
  171. //
  172. // The following are defines for the bit fields in the MAC_TS register.
  173. //
  174. //*****************************************************************************
  175. #define MAC_TS_TSEN 0x00000001 // Enable Timestamp Logic
  176. //*****************************************************************************
  177. //
  178. // The following are defines for the bit fields in the MAC_MDIX register.
  179. //
  180. //*****************************************************************************
  181. #define MAC_MDIX_EN 0x00000001 // MDI/MDI-X Enable.
  182. //*****************************************************************************
  183. //
  184. // The following are defines for the Ethernet Controller PHY registers.
  185. //
  186. //*****************************************************************************
  187. #define PHY_MR0 0x00000000 // Ethernet PHY Management Register
  188. // 0 - Control
  189. #define PHY_MR1 0x00000001 // Ethernet PHY Management Register
  190. // 1 - Status
  191. #define PHY_MR2 0x00000002 // Ethernet PHY Management Register
  192. // 2 - PHY Identifier 1
  193. #define PHY_MR3 0x00000003 // Ethernet PHY Management Register
  194. // 3 - PHY Identifier 2
  195. #define PHY_MR4 0x00000004 // Ethernet PHY Management Register
  196. // 4 - Auto-Negotiation
  197. // Advertisement
  198. #define PHY_MR5 0x00000005 // Ethernet PHY Management Register
  199. // 5 - Auto-Negotiation Link
  200. // Partner Base Page Ability
  201. #define PHY_MR6 0x00000006 // Ethernet PHY Management Register
  202. // 6 - Auto-Negotiation Expansion
  203. #define PHY_MR16 0x00000010 // Ethernet PHY Management Register
  204. // 16 - Vendor-Specific
  205. #define PHY_MR17 0x00000011 // Ethernet PHY Management Register
  206. // 17 - Interrupt Control/Status
  207. #define PHY_MR18 0x00000012 // Ethernet PHY Management Register
  208. // 18 - Diagnostic
  209. #define PHY_MR19 0x00000013 // Ethernet PHY Management Register
  210. // 19 - Transceiver Control
  211. #define PHY_MR23 0x00000017 // Ethernet PHY Management Register
  212. // 23 - LED Configuration
  213. #define PHY_MR24 0x00000018 // Ethernet PHY Management Register
  214. // 24 -MDI/MDIX Control
  215. #define PHY_MR27 0x0000001B // Ethernet PHY Management Register
  216. // 27 -Special Control/Status
  217. #define PHY_MR29 0x0000001D // Ethernet PHY Management Register
  218. // 29 - Interrupt Status
  219. #define PHY_MR30 0x0000001E // Ethernet PHY Management Register
  220. // 30 - Interrupt Mask
  221. #define PHY_MR31 0x0000001F // Ethernet PHY Management Register
  222. // 31 - PHY Special Control/Status
  223. //*****************************************************************************
  224. //
  225. // The following are defines for the bit fields in the PHY_MR0 register.
  226. //
  227. //*****************************************************************************
  228. #define PHY_MR0_RESET 0x00008000 // Reset Registers.
  229. #define PHY_MR0_LOOPBK 0x00004000 // Loopback Mode.
  230. #define PHY_MR0_SPEEDSL 0x00002000 // Speed Select.
  231. #define PHY_MR0_ANEGEN 0x00001000 // Auto-Negotiation Enable.
  232. #define PHY_MR0_PWRDN 0x00000800 // Power Down.
  233. #define PHY_MR0_ISO 0x00000400 // Isolate.
  234. #define PHY_MR0_RANEG 0x00000200 // Restart Auto-Negotiation.
  235. #define PHY_MR0_DUPLEX 0x00000100 // Set Duplex Mode.
  236. #define PHY_MR0_COLT 0x00000080 // Collision Test.
  237. //*****************************************************************************
  238. //
  239. // The following are defines for the bit fields in the MAC_O_RIS register.
  240. //
  241. //*****************************************************************************
  242. #define MAC_RIS_PHYINT 0x00000040 // PHY Interrupt.
  243. #define MAC_RIS_MDINT 0x00000020 // MII Transaction Complete.
  244. #define MAC_RIS_RXER 0x00000010 // Receive Error.
  245. #define MAC_RIS_FOV 0x00000008 // FIFO Overrrun.
  246. #define MAC_RIS_TXEMP 0x00000004 // Transmit FIFO Empty.
  247. #define MAC_RIS_TXER 0x00000002 // Transmit Error.
  248. #define MAC_RIS_RXINT 0x00000001 // Packet Received.
  249. //*****************************************************************************
  250. //
  251. // The following are defines for the bit fields in the PHY_MR1 register.
  252. //
  253. //*****************************************************************************
  254. #define PHY_MR1_100X_F 0x00004000 // 100BASE-TX Full-Duplex Mode.
  255. #define PHY_MR1_100X_H 0x00002000 // 100BASE-TX Half-Duplex Mode.
  256. #define PHY_MR1_10T_F 0x00001000 // 10BASE-T Full-Duplex Mode.
  257. #define PHY_MR1_10T_H 0x00000800 // 10BASE-T Half-Duplex Mode.
  258. #define PHY_MR1_MFPS 0x00000040 // Management Frames with Preamble
  259. // Suppressed.
  260. #define PHY_MR1_ANEGC 0x00000020 // Auto-Negotiation Complete.
  261. #define PHY_MR1_RFAULT 0x00000010 // Remote Fault.
  262. #define PHY_MR1_ANEGA 0x00000008 // Auto-Negotiation.
  263. #define PHY_MR1_LINK 0x00000004 // Link Made.
  264. #define PHY_MR1_JAB 0x00000002 // Jabber Condition.
  265. #define PHY_MR1_EXTD 0x00000001 // Extended Capabilities.
  266. //*****************************************************************************
  267. //
  268. // The following are defines for the bit fields in the PHY_MR2 register.
  269. //
  270. //*****************************************************************************
  271. #define PHY_MR2_OUI_M 0x0000FFFF // Organizationally Unique
  272. // Identifier[21:6].
  273. #define PHY_MR2_OUI_S 0
  274. //*****************************************************************************
  275. //
  276. // The following are defines for the bit fields in the PHY_MR3 register.
  277. //
  278. //*****************************************************************************
  279. #define PHY_MR3_OUI_M 0x0000FC00 // Organizationally Unique
  280. // Identifier[5:0].
  281. #define PHY_MR3_MN_M 0x000003F0 // Model Number.
  282. #define PHY_MR3_RN_M 0x0000000F // Revision Number.
  283. #define PHY_MR3_OUI_S 10
  284. #define PHY_MR3_MN_S 4
  285. #define PHY_MR3_RN_S 0
  286. //*****************************************************************************
  287. //
  288. // The following are defines for the bit fields in the PHY_MR4 register.
  289. //
  290. //*****************************************************************************
  291. #define PHY_MR4_NP 0x00008000 // Next Page.
  292. #define PHY_MR4_RF 0x00002000 // Remote Fault.
  293. #define PHY_MR4_A3 0x00000100 // Technology Ability Field[3].
  294. #define PHY_MR4_A2 0x00000080 // Technology Ability Field[2].
  295. #define PHY_MR4_A1 0x00000040 // Technology Ability Field[1].
  296. #define PHY_MR4_A0 0x00000020 // Technology Ability Field[0].
  297. #define PHY_MR4_S_M 0x0000001F // Selector Field.
  298. #define PHY_MR4_S_S 0
  299. //*****************************************************************************
  300. //
  301. // The following are defines for the bit fields in the PHY_MR5 register.
  302. //
  303. //*****************************************************************************
  304. #define PHY_MR5_NP 0x00008000 // Next Page.
  305. #define PHY_MR5_ACK 0x00004000 // Acknowledge.
  306. #define PHY_MR5_RF 0x00002000 // Remote Fault.
  307. #define PHY_MR5_A_M 0x00001FE0 // Technology Ability Field.
  308. #define PHY_MR5_S_M 0x0000001F // Selector Field.
  309. #define PHY_MR5_S_8023 0x00000001 // IEEE Std 802.3
  310. #define PHY_MR5_S_8029 0x00000002 // IEEE Std 802.9 ISLAN-16T
  311. #define PHY_MR5_S_8025 0x00000003 // IEEE Std 802.5
  312. #define PHY_MR5_S_1394 0x00000004 // IEEE Std 1394
  313. #define PHY_MR5_A_S 5
  314. //*****************************************************************************
  315. //
  316. // The following are defines for the bit fields in the PHY_MR6 register.
  317. //
  318. //*****************************************************************************
  319. #define PHY_MR6_PDF 0x00000010 // Parallel Detection Fault.
  320. #define PHY_MR6_LPNPA 0x00000008 // Link Partner is Next Page Able.
  321. #define PHY_MR6_PRX 0x00000002 // New Page Received.
  322. #define PHY_MR6_LPANEGA 0x00000001 // Link Partner is Auto-Negotiation
  323. // Able.
  324. //*****************************************************************************
  325. //
  326. // The following are defines for the bit fields in the MAC_O_DATA register.
  327. //
  328. //*****************************************************************************
  329. #define MAC_DATA_TXDATA_M 0xFFFFFFFF // Transmit FIFO Data.
  330. #define MAC_DATA_RXDATA_M 0xFFFFFFFF // Receive FIFO Data.
  331. #define MAC_DATA_RXDATA_S 0
  332. #define MAC_DATA_TXDATA_S 0
  333. //*****************************************************************************
  334. //
  335. // The following are defines for the bit fields in the PHY_MR16 register.
  336. //
  337. //*****************************************************************************
  338. #define PHY_MR16_RPTR 0x00008000 // Repeater Mode.
  339. #define PHY_MR16_INPOL 0x00004000 // Interrupt Polarity.
  340. #define PHY_MR16_TXHIM 0x00001000 // Transmit High Impedance Mode.
  341. #define PHY_MR16_SQEI 0x00000800 // SQE Inhibit Testing.
  342. #define PHY_MR16_NL10 0x00000400 // Natural Loopback Mode.
  343. #define PHY_MR16_SR_M 0x000003C0 // Silicon Revision Identifier.
  344. #define PHY_MR16_APOL 0x00000020 // Auto-Polarity Disable.
  345. #define PHY_MR16_RVSPOL 0x00000010 // Receive Data Polarity.
  346. #define PHY_MR16_PCSBP 0x00000002 // PCS Bypass.
  347. #define PHY_MR16_RXCC 0x00000001 // Receive Clock Control.
  348. #define PHY_MR16_SR_S 6
  349. //*****************************************************************************
  350. //
  351. // The following are defines for the bit fields in the PHY_MR17 register.
  352. //
  353. //*****************************************************************************
  354. #define PHY_MR17_JABBER_IE 0x00008000 // Jabber Interrupt Enable.
  355. #define PHY_MR17_FASTRIP 0x00004000 // 10-BASE-T Fast Mode Enable.
  356. #define PHY_MR17_RXER_IE 0x00004000 // Receive Error Interrupt Enable.
  357. #define PHY_MR17_EDPD 0x00002000 // Enable Energy Detect Power Down.
  358. #define PHY_MR17_PRX_IE 0x00002000 // Page Received Interrupt Enable.
  359. #define PHY_MR17_PDF_IE 0x00001000 // Parallel Detection Fault
  360. // Interrupt Enable.
  361. #define PHY_MR17_LSQE 0x00000800 // Low Squelch Enable.
  362. #define PHY_MR17_LPACK_IE 0x00000800 // LP Acknowledge Interrupt Enable.
  363. #define PHY_MR17_LSCHG_IE 0x00000400 // Link Status Change Interrupt
  364. // Enable.
  365. #define PHY_MR17_MDPB 0x00000400 // Management Data Preamble Bypass.
  366. #define PHY_MR17_RFAULT_IE 0x00000200 // Remote Fault Interrupt Enable.
  367. #define PHY_MR17_FLPBK 0x00000200 // Far Loopback Mode.
  368. #define PHY_MR17_ANEGCOMP_IE 0x00000100 // Auto-Negotiation Complete
  369. // Interrupt Enable.
  370. #define PHY_MR17_FASTEST 0x00000100 // Auto-Negotiation Test Mode.
  371. #define PHY_MR17_JABBER_INT 0x00000080 // Jabber Event Interrupt.
  372. #define PHY_MR17_RXER_INT 0x00000040 // Receive Error Interrupt.
  373. #define PHY_MR17_PRX_INT 0x00000020 // Page Receive Interrupt.
  374. #define PHY_MR17_PDF_INT 0x00000010 // Parallel Detection Fault
  375. // Interrupt.
  376. #define PHY_MR17_REFCE 0x00000010 // Reference Clock Enable.
  377. #define PHY_MR17_LPACK_INT 0x00000008 // LP Acknowledge Interrupt.
  378. #define PHY_MR17_PADBP 0x00000008 // PHY Address Bypass.
  379. #define PHY_MR17_LSCHG_INT 0x00000004 // Link Status Change Interrupt.
  380. #define PHY_MR17_FGLS 0x00000004 // Force Good Link Status.
  381. #define PHY_MR17_RFAULT_INT 0x00000002 // Remote Fault Interrupt.
  382. #define PHY_MR17_ENON 0x00000002 // Energy On.
  383. #define PHY_MR17_ANEGCOMP_INT 0x00000001 // Auto-Negotiation Complete
  384. // Interrupt.
  385. //*****************************************************************************
  386. //
  387. // The following are defines for the bit fields in the PHY_MR18 register.
  388. //
  389. //*****************************************************************************
  390. #define PHY_MR18_ANEGF 0x00001000 // Auto-Negotiation Failure.
  391. #define PHY_MR18_DPLX 0x00000800 // Duplex Mode.
  392. #define PHY_MR18_RATE 0x00000400 // Rate.
  393. #define PHY_MR18_RXSD 0x00000200 // Receive Detection.
  394. #define PHY_MR18_RX_LOCK 0x00000100 // Receive PLL Lock.
  395. //*****************************************************************************
  396. //
  397. // The following are defines for the bit fields in the PHY_MR19 register.
  398. //
  399. //*****************************************************************************
  400. #define PHY_MR19_TXO_M 0x0000C000 // Transmit Amplitude Selection.
  401. #define PHY_MR19_TXO_00DB 0x00000000 // Gain set for 0.0dB of insertion
  402. // loss
  403. #define PHY_MR19_TXO_04DB 0x00004000 // Gain set for 0.4dB of insertion
  404. // loss
  405. #define PHY_MR19_TXO_08DB 0x00008000 // Gain set for 0.8dB of insertion
  406. // loss
  407. #define PHY_MR19_TXO_12DB 0x0000C000 // Gain set for 1.2dB of insertion
  408. // loss
  409. //*****************************************************************************
  410. //
  411. // The following are defines for the bit fields in the PHY_MR23 register.
  412. //
  413. //*****************************************************************************
  414. #define PHY_MR23_LED1_M 0x000000F0 // LED1 Source.
  415. #define PHY_MR23_LED1_LINK 0x00000000 // Link OK
  416. #define PHY_MR23_LED1_RXTX 0x00000010 // RX or TX Activity (Default LED1)
  417. #define PHY_MR23_LED1_100 0x00000050 // 100BASE-TX mode
  418. #define PHY_MR23_LED1_10 0x00000060 // 10BASE-T mode
  419. #define PHY_MR23_LED1_DUPLEX 0x00000070 // Full-Duplex
  420. #define PHY_MR23_LED1_LINKACT 0x00000080 // Link OK & Blink=RX or TX
  421. // Activity
  422. #define PHY_MR23_LED0_M 0x0000000F // LED0 Source.
  423. #define PHY_MR23_LED0_LINK 0x00000000 // Link OK (Default LED0)
  424. #define PHY_MR23_LED0_RXTX 0x00000001 // RX or TX Activity
  425. #define PHY_MR23_LED0_100 0x00000005 // 100BASE-TX mode
  426. #define PHY_MR23_LED0_10 0x00000006 // 10BASE-T mode
  427. #define PHY_MR23_LED0_DUPLEX 0x00000007 // Full-Duplex
  428. #define PHY_MR23_LED0_LINKACT 0x00000008 // Link OK & Blink=RX or TX
  429. // Activity
  430. //*****************************************************************************
  431. //
  432. // The following are defines for the bit fields in the PHY_MR24 register.
  433. //
  434. //*****************************************************************************
  435. #define PHY_MR24_PD_MODE 0x00000080 // Parallel Detection Mode.
  436. #define PHY_MR24_AUTO_SW 0x00000040 // Auto-Switching Enable.
  437. #define PHY_MR24_MDIX 0x00000020 // Auto-Switching Configuration.
  438. #define PHY_MR24_MDIX_CM 0x00000010 // Auto-Switching Complete.
  439. #define PHY_MR24_MDIX_SD_M 0x0000000F // Auto-Switching Seed.
  440. #define PHY_MR24_MDIX_SD_S 0
  441. //*****************************************************************************
  442. //
  443. // The following are defines for the bit fields in the PHY_MR27 register.
  444. //
  445. //*****************************************************************************
  446. #define PHY_MR27_XPOL 0x00000010 // Polarity State of 10 BASE-T.
  447. //*****************************************************************************
  448. //
  449. // The following are defines for the bit fields in the PHY_MR29 register.
  450. //
  451. //*****************************************************************************
  452. #define PHY_MR29_EONIS 0x00000080 // ENERGYON Interrupt.
  453. #define PHY_MR29_ANCOMPIS 0x00000040 // Auto-Negotiation Complete
  454. // Interrupt.
  455. #define PHY_MR29_RFLTIS 0x00000020 // Remote Fault Interrupt.
  456. #define PHY_MR29_LDIS 0x00000010 // Link Down Interrupt.
  457. #define PHY_MR29_LPACKIS 0x00000008 // Auto-Negotiation LP Acknowledge.
  458. #define PHY_MR29_PDFIS 0x00000004 // Parallel Detection Fault.
  459. #define PHY_MR29_PRXIS 0x00000002 // Auto Negotiation Page Received.
  460. //*****************************************************************************
  461. //
  462. // The following are defines for the bit fields in the PHY_MR30 register.
  463. //
  464. //*****************************************************************************
  465. #define PHY_MR30_EONIM 0x00000080 // ENERGYON Interrupt Enabled.
  466. #define PHY_MR30_ANCOMPIM 0x00000040 // Auto-Negotiation Complete
  467. // Interrupt Enabled.
  468. #define PHY_MR30_RFLTIM 0x00000020 // Remote Fault Interrupt Enabled.
  469. #define PHY_MR30_LDIM 0x00000010 // Link Down Interrupt Enabled.
  470. #define PHY_MR30_LPACKIM 0x00000008 // Auto-Negotiation LP Acknowledge
  471. // Enabled.
  472. #define PHY_MR30_PDFIM 0x00000004 // Parallel Detection Fault
  473. // Enabled.
  474. #define PHY_MR30_PRXIM 0x00000002 // Auto Negotiation Page Received
  475. // Enabled.
  476. //*****************************************************************************
  477. //
  478. // The following are defines for the bit fields in the PHY_MR31 register.
  479. //
  480. //*****************************************************************************
  481. #define PHY_MR31_BPRMG 0x00008000 // Bypass Remove Glitch.
  482. #define PHY_MR31_AUTODONE 0x00001000 // Auto Negotiation Done.
  483. #define PHY_MR31_EN4B5B 0x00000040 // Enable 4B5B Encoding/Decoding.
  484. #define PHY_MR31_SPEED_M 0x0000001C // HCD Speed Value.
  485. #define PHY_MR31_SCRDIS 0x00000001 // Scramble Disable.
  486. #define PHY_MR31_SPEED_S 2
  487. //*****************************************************************************
  488. //
  489. // The following are defines for the bit fields in the MAC_O_LED register.
  490. //
  491. //*****************************************************************************
  492. #define MAC_LED_LED1_M 0x000000F0 // LED1 Source.
  493. #define MAC_LED_LED1_LINK 0x00000000 // Link OK
  494. #define MAC_LED_LED1_RXTX 0x00000010 // RX or TX Activity (Default LED1)
  495. #define MAC_LED_LED1_100 0x00000050 // 100BASE-TX mode
  496. #define MAC_LED_LED1_10 0x00000060 // 10BASE-T mode
  497. #define MAC_LED_LED1_DUPLEX 0x00000070 // Full-Duplex
  498. #define MAC_LED_LED1_LINKACT 0x00000080 // Link OK & Blink=RX or TX
  499. // Activity
  500. #define MAC_LED_LED0_M 0x0000000F // LED0 Source.
  501. #define MAC_LED_LED0_LINK 0x00000000 // Link OK (Default LED0)
  502. #define MAC_LED_LED0_RXTX 0x00000001 // RX or TX Activity
  503. #define MAC_LED_LED0_100 0x00000005 // 100BASE-TX mode
  504. #define MAC_LED_LED0_10 0x00000006 // 10BASE-T mode
  505. #define MAC_LED_LED0_DUPLEX 0x00000007 // Full-Duplex
  506. #define MAC_LED_LED0_LINKACT 0x00000008 // Link OK & Blink=RX or TX
  507. // Activity
  508. //*****************************************************************************
  509. //
  510. // The following definitions are deprecated.
  511. //
  512. //*****************************************************************************
  513. #ifndef DEPRECATED
  514. //*****************************************************************************
  515. //
  516. // The following are deprecated defines for the MAC register offsets in the
  517. // Ethernet Controller.
  518. //
  519. //*****************************************************************************
  520. #define MAC_O_IS 0x00000000 // Interrupt Status Register
  521. #define MAC_O_MADD 0x00000028 // Management Address Register
  522. //*****************************************************************************
  523. //
  524. // The following are deprecated defines for the reset values of the MAC
  525. // registers.
  526. //
  527. //*****************************************************************************
  528. #define MAC_RV_MDV 0x00000080
  529. #define MAC_RV_IM 0x0000007F
  530. #define MAC_RV_THR 0x0000003F
  531. #define MAC_RV_RCTL 0x00000008
  532. #define MAC_RV_IA0 0x00000000
  533. #define MAC_RV_TCTL 0x00000000
  534. #define MAC_RV_DATA 0x00000000
  535. #define MAC_RV_MRXD 0x00000000
  536. #define MAC_RV_TR 0x00000000
  537. #define MAC_RV_IS 0x00000000
  538. #define MAC_RV_NP 0x00000000
  539. #define MAC_RV_MCTL 0x00000000
  540. #define MAC_RV_MTXD 0x00000000
  541. #define MAC_RV_IA1 0x00000000
  542. #define MAC_RV_IACK 0x00000000
  543. #define MAC_RV_MADD 0x00000000
  544. //*****************************************************************************
  545. //
  546. // The following are deprecated defines for the bit fields in the MAC_IS
  547. // register.
  548. //
  549. //*****************************************************************************
  550. #define MAC_IS_PHYINT 0x00000040 // PHY Interrupt
  551. #define MAC_IS_MDINT 0x00000020 // MDI Transaction Complete
  552. #define MAC_IS_RXER 0x00000010 // RX Error
  553. #define MAC_IS_FOV 0x00000008 // RX FIFO Overrun
  554. #define MAC_IS_TXEMP 0x00000004 // TX FIFO Empy
  555. #define MAC_IS_TXER 0x00000002 // TX Error
  556. #define MAC_IS_RXINT 0x00000001 // RX Packet Available
  557. //*****************************************************************************
  558. //
  559. // The following are deprecated defines for the bit fields in the MAC_IA0
  560. // register.
  561. //
  562. //*****************************************************************************
  563. #define MAC_IA0_MACOCT4 0xFF000000 // 4th Octet of MAC address
  564. #define MAC_IA0_MACOCT3 0x00FF0000 // 3rd Octet of MAC address
  565. #define MAC_IA0_MACOCT2 0x0000FF00 // 2nd Octet of MAC address
  566. #define MAC_IA0_MACOCT1 0x000000FF // 1st Octet of MAC address
  567. //*****************************************************************************
  568. //
  569. // The following are deprecated defines for the bit fields in the MAC_IA1
  570. // register.
  571. //
  572. //*****************************************************************************
  573. #define MAC_IA1_MACOCT6 0x0000FF00 // 6th Octet of MAC address
  574. #define MAC_IA1_MACOCT5 0x000000FF // 5th Octet of MAC address
  575. //*****************************************************************************
  576. //
  577. // The following are deprecated defines for the bit fields in the MAC_TXTH
  578. // register.
  579. //
  580. //*****************************************************************************
  581. #define MAC_THR_THRESH 0x0000003F // Transmit Threshold Value
  582. //*****************************************************************************
  583. //
  584. // The following are deprecated defines for the bit fields in the MAC_MCTL
  585. // register.
  586. //
  587. //*****************************************************************************
  588. #define MAC_MCTL_REGADR 0x000000F8 // Address for Next MII Transaction
  589. //*****************************************************************************
  590. //
  591. // The following are deprecated defines for the bit fields in the MAC_MDV
  592. // register.
  593. //
  594. //*****************************************************************************
  595. #define MAC_MDV_DIV 0x000000FF // Clock Divider for MDC for TX
  596. //*****************************************************************************
  597. //
  598. // The following are deprecated defines for the bit fields in the MAC_MTXD
  599. // register.
  600. //
  601. //*****************************************************************************
  602. #define MAC_MTXD_MDTX 0x0000FFFF // Data for Next MII Transaction
  603. //*****************************************************************************
  604. //
  605. // The following are deprecated defines for the bit fields in the MAC_MRXD
  606. // register.
  607. //
  608. //*****************************************************************************
  609. #define MAC_MRXD_MDRX 0x0000FFFF // Data Read from Last MII Trans.
  610. //*****************************************************************************
  611. //
  612. // The following are deprecated defines for the bit fields in the MAC_NP
  613. // register.
  614. //
  615. //*****************************************************************************
  616. #define MAC_NP_NPR 0x0000003F // Number of RX Frames in FIFO
  617. //*****************************************************************************
  618. //
  619. // The following are deprecated defines for the bit fields in the PHY_MR23
  620. // register.
  621. //
  622. //*****************************************************************************
  623. #define PHY_MR23_LED1_TX 0x00000020 // TX Activity
  624. #define PHY_MR23_LED1_RX 0x00000030 // RX Activity
  625. #define PHY_MR23_LED1_COL 0x00000040 // Collision
  626. #define PHY_MR23_LED0_TX 0x00000002 // TX Activity
  627. #define PHY_MR23_LED0_RX 0x00000003 // RX Activity
  628. #define PHY_MR23_LED0_COL 0x00000004 // Collision
  629. #endif
  630. #endif // __HW_ETHERNET_H__