hw_emac.h 103 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874
  1. //*****************************************************************************
  2. //
  3. // hw_emac.h - Macros used when accessing the EMAC hardware.
  4. //
  5. // Copyright (c) 2012-2020 Texas Instruments Incorporated. All rights reserved.
  6. // Software License Agreement
  7. //
  8. // Redistribution and use in source and binary forms, with or without
  9. // modification, are permitted provided that the following conditions
  10. // are met:
  11. //
  12. // Redistributions of source code must retain the above copyright
  13. // notice, this list of conditions and the following disclaimer.
  14. //
  15. // Redistributions in binary form must reproduce the above copyright
  16. // notice, this list of conditions and the following disclaimer in the
  17. // documentation and/or other materials provided with the
  18. // distribution.
  19. //
  20. // Neither the name of Texas Instruments Incorporated nor the names of
  21. // its contributors may be used to endorse or promote products derived
  22. // from this software without specific prior written permission.
  23. //
  24. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  25. // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  26. // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  27. // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  28. // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  29. // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  30. // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  31. // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  32. // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  33. // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  34. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  35. //
  36. // This is part of revision 2.2.0.295 of the Tiva Firmware Development Package.
  37. //
  38. //*****************************************************************************
  39. #ifndef __HW_EMAC_H__
  40. #define __HW_EMAC_H__
  41. //*****************************************************************************
  42. //
  43. // The following are defines for the EMAC register offsets.
  44. //
  45. //*****************************************************************************
  46. #define EMAC_O_CFG 0x00000000 // Ethernet MAC Configuration
  47. #define EMAC_O_FRAMEFLTR 0x00000004 // Ethernet MAC Frame Filter
  48. #define EMAC_O_HASHTBLH 0x00000008 // Ethernet MAC Hash Table High
  49. #define EMAC_O_HASHTBLL 0x0000000C // Ethernet MAC Hash Table Low
  50. #define EMAC_O_MIIADDR 0x00000010 // Ethernet MAC MII Address
  51. #define EMAC_O_MIIDATA 0x00000014 // Ethernet MAC MII Data Register
  52. #define EMAC_O_FLOWCTL 0x00000018 // Ethernet MAC Flow Control
  53. #define EMAC_O_VLANTG 0x0000001C // Ethernet MAC VLAN Tag
  54. #define EMAC_O_STATUS 0x00000024 // Ethernet MAC Status
  55. #define EMAC_O_RWUFF 0x00000028 // Ethernet MAC Remote Wake-Up
  56. // Frame Filter
  57. #define EMAC_O_PMTCTLSTAT 0x0000002C // Ethernet MAC PMT Control and
  58. // Status Register
  59. #define EMAC_O_LPICTLSTAT 0x00000030 // Ethernet MAC Low Power Idle
  60. // Control and Status Register
  61. #define EMAC_O_LPITIMERCTL 0x00000034 // Ethernet MAC Low Power Idle
  62. // Timer Control Register
  63. #define EMAC_O_RIS 0x00000038 // Ethernet MAC Raw Interrupt
  64. // Status
  65. #define EMAC_O_IM 0x0000003C // Ethernet MAC Interrupt Mask
  66. #define EMAC_O_ADDR0H 0x00000040 // Ethernet MAC Address 0 High
  67. #define EMAC_O_ADDR0L 0x00000044 // Ethernet MAC Address 0 Low
  68. // Register
  69. #define EMAC_O_ADDR1H 0x00000048 // Ethernet MAC Address 1 High
  70. #define EMAC_O_ADDR1L 0x0000004C // Ethernet MAC Address 1 Low
  71. #define EMAC_O_ADDR2H 0x00000050 // Ethernet MAC Address 2 High
  72. #define EMAC_O_ADDR2L 0x00000054 // Ethernet MAC Address 2 Low
  73. #define EMAC_O_ADDR3H 0x00000058 // Ethernet MAC Address 3 High
  74. #define EMAC_O_ADDR3L 0x0000005C // Ethernet MAC Address 3 Low
  75. #define EMAC_O_WDOGTO 0x000000DC // Ethernet MAC Watchdog Timeout
  76. #define EMAC_O_MMCCTRL 0x00000100 // Ethernet MAC MMC Control
  77. #define EMAC_O_MMCRXRIS 0x00000104 // Ethernet MAC MMC Receive Raw
  78. // Interrupt Status
  79. #define EMAC_O_MMCTXRIS 0x00000108 // Ethernet MAC MMC Transmit Raw
  80. // Interrupt Status
  81. #define EMAC_O_MMCRXIM 0x0000010C // Ethernet MAC MMC Receive
  82. // Interrupt Mask
  83. #define EMAC_O_MMCTXIM 0x00000110 // Ethernet MAC MMC Transmit
  84. // Interrupt Mask
  85. #define EMAC_O_TXCNTGB 0x00000118 // Ethernet MAC Transmit Frame
  86. // Count for Good and Bad Frames
  87. #define EMAC_O_TXCNTSCOL 0x0000014C // Ethernet MAC Transmit Frame
  88. // Count for Frames Transmitted
  89. // after Single Collision
  90. #define EMAC_O_TXCNTMCOL 0x00000150 // Ethernet MAC Transmit Frame
  91. // Count for Frames Transmitted
  92. // after Multiple Collisions
  93. #define EMAC_O_TXOCTCNTG 0x00000164 // Ethernet MAC Transmit Octet
  94. // Count Good
  95. #define EMAC_O_RXCNTGB 0x00000180 // Ethernet MAC Receive Frame Count
  96. // for Good and Bad Frames
  97. #define EMAC_O_RXCNTCRCERR 0x00000194 // Ethernet MAC Receive Frame Count
  98. // for CRC Error Frames
  99. #define EMAC_O_RXCNTALGNERR 0x00000198 // Ethernet MAC Receive Frame Count
  100. // for Alignment Error Frames
  101. #define EMAC_O_RXCNTGUNI 0x000001C4 // Ethernet MAC Receive Frame Count
  102. // for Good Unicast Frames
  103. #define EMAC_O_VLNINCREP 0x00000584 // Ethernet MAC VLAN Tag Inclusion
  104. // or Replacement
  105. #define EMAC_O_VLANHASH 0x00000588 // Ethernet MAC VLAN Hash Table
  106. #define EMAC_O_TIMSTCTRL 0x00000700 // Ethernet MAC Timestamp Control
  107. #define EMAC_O_SUBSECINC 0x00000704 // Ethernet MAC Sub-Second
  108. // Increment
  109. #define EMAC_O_TIMSEC 0x00000708 // Ethernet MAC System Time -
  110. // Seconds
  111. #define EMAC_O_TIMNANO 0x0000070C // Ethernet MAC System Time -
  112. // Nanoseconds
  113. #define EMAC_O_TIMSECU 0x00000710 // Ethernet MAC System Time -
  114. // Seconds Update
  115. #define EMAC_O_TIMNANOU 0x00000714 // Ethernet MAC System Time -
  116. // Nanoseconds Update
  117. #define EMAC_O_TIMADD 0x00000718 // Ethernet MAC Timestamp Addend
  118. #define EMAC_O_TARGSEC 0x0000071C // Ethernet MAC Target Time Seconds
  119. #define EMAC_O_TARGNANO 0x00000720 // Ethernet MAC Target Time
  120. // Nanoseconds
  121. #define EMAC_O_HWORDSEC 0x00000724 // Ethernet MAC System Time-Higher
  122. // Word Seconds
  123. #define EMAC_O_TIMSTAT 0x00000728 // Ethernet MAC Timestamp Status
  124. #define EMAC_O_PPSCTRL 0x0000072C // Ethernet MAC PPS Control
  125. #define EMAC_O_PPS0INTVL 0x00000760 // Ethernet MAC PPS0 Interval
  126. #define EMAC_O_PPS0WIDTH 0x00000764 // Ethernet MAC PPS0 Width
  127. #define EMAC_O_DMABUSMOD 0x00000C00 // Ethernet MAC DMA Bus Mode
  128. #define EMAC_O_TXPOLLD 0x00000C04 // Ethernet MAC Transmit Poll
  129. // Demand
  130. #define EMAC_O_RXPOLLD 0x00000C08 // Ethernet MAC Receive Poll Demand
  131. #define EMAC_O_RXDLADDR 0x00000C0C // Ethernet MAC Receive Descriptor
  132. // List Address
  133. #define EMAC_O_TXDLADDR 0x00000C10 // Ethernet MAC Transmit Descriptor
  134. // List Address
  135. #define EMAC_O_DMARIS 0x00000C14 // Ethernet MAC DMA Interrupt
  136. // Status
  137. #define EMAC_O_DMAOPMODE 0x00000C18 // Ethernet MAC DMA Operation Mode
  138. #define EMAC_O_DMAIM 0x00000C1C // Ethernet MAC DMA Interrupt Mask
  139. // Register
  140. #define EMAC_O_MFBOC 0x00000C20 // Ethernet MAC Missed Frame and
  141. // Buffer Overflow Counter
  142. #define EMAC_O_RXINTWDT 0x00000C24 // Ethernet MAC Receive Interrupt
  143. // Watchdog Timer
  144. #define EMAC_O_HOSTXDESC 0x00000C48 // Ethernet MAC Current Host
  145. // Transmit Descriptor
  146. #define EMAC_O_HOSRXDESC 0x00000C4C // Ethernet MAC Current Host
  147. // Receive Descriptor
  148. #define EMAC_O_HOSTXBA 0x00000C50 // Ethernet MAC Current Host
  149. // Transmit Buffer Address
  150. #define EMAC_O_HOSRXBA 0x00000C54 // Ethernet MAC Current Host
  151. // Receive Buffer Address
  152. #define EMAC_O_PP 0x00000FC0 // Ethernet MAC Peripheral Property
  153. // Register
  154. #define EMAC_O_PC 0x00000FC4 // Ethernet MAC Peripheral
  155. // Configuration Register
  156. #define EMAC_O_CC 0x00000FC8 // Ethernet MAC Clock Configuration
  157. // Register
  158. #define EMAC_O_EPHYRIS 0x00000FD0 // Ethernet PHY Raw Interrupt
  159. // Status
  160. #define EMAC_O_EPHYIM 0x00000FD4 // Ethernet PHY Interrupt Mask
  161. #define EMAC_O_EPHYMISC 0x00000FD8 // Ethernet PHY Masked Interrupt
  162. // Status and Clear
  163. //*****************************************************************************
  164. //
  165. // The following are defines for the bit fields in the EMAC_O_CFG register.
  166. //
  167. //*****************************************************************************
  168. #define EMAC_CFG_TWOKPEN 0x08000000 // IEEE 802
  169. #define EMAC_CFG_CST 0x02000000 // CRC Stripping for Type Frames
  170. #define EMAC_CFG_WDDIS 0x00800000 // Watchdog Disable
  171. #define EMAC_CFG_JD 0x00400000 // Jabber Disable
  172. #define EMAC_CFG_JFEN 0x00100000 // Jumbo Frame Enable
  173. #define EMAC_CFG_IFG_M 0x000E0000 // Inter-Frame Gap (IFG)
  174. #define EMAC_CFG_IFG_96 0x00000000 // 96 bit times
  175. #define EMAC_CFG_IFG_88 0x00020000 // 88 bit times
  176. #define EMAC_CFG_IFG_80 0x00040000 // 80 bit times
  177. #define EMAC_CFG_IFG_72 0x00060000 // 72 bit times
  178. #define EMAC_CFG_IFG_64 0x00080000 // 64 bit times
  179. #define EMAC_CFG_IFG_56 0x000A0000 // 56 bit times
  180. #define EMAC_CFG_IFG_48 0x000C0000 // 48 bit times
  181. #define EMAC_CFG_IFG_40 0x000E0000 // 40 bit times
  182. #define EMAC_CFG_DISCRS 0x00010000 // Disable Carrier Sense During
  183. // Transmission
  184. #define EMAC_CFG_PS 0x00008000 // Port Select
  185. #define EMAC_CFG_FES 0x00004000 // Speed
  186. #define EMAC_CFG_DRO 0x00002000 // Disable Receive Own
  187. #define EMAC_CFG_LOOPBM 0x00001000 // Loopback Mode
  188. #define EMAC_CFG_DUPM 0x00000800 // Duplex Mode
  189. #define EMAC_CFG_IPC 0x00000400 // Checksum Offload
  190. #define EMAC_CFG_DR 0x00000200 // Disable Retry
  191. #define EMAC_CFG_ACS 0x00000080 // Automatic Pad or CRC Stripping
  192. #define EMAC_CFG_BL_M 0x00000060 // Back-Off Limit
  193. #define EMAC_CFG_BL_1024 0x00000000 // k = min (n,10)
  194. #define EMAC_CFG_BL_256 0x00000020 // k = min (n,8)
  195. #define EMAC_CFG_BL_8 0x00000040 // k = min (n,4)
  196. #define EMAC_CFG_BL_2 0x00000060 // k = min (n,1)
  197. #define EMAC_CFG_DC 0x00000010 // Deferral Check
  198. #define EMAC_CFG_TE 0x00000008 // Transmitter Enable
  199. #define EMAC_CFG_RE 0x00000004 // Receiver Enable
  200. #define EMAC_CFG_PRELEN_M 0x00000003 // Preamble Length for Transmit
  201. // Frames
  202. #define EMAC_CFG_PRELEN_7 0x00000000 // 7 bytes of preamble
  203. #define EMAC_CFG_PRELEN_5 0x00000001 // 5 bytes of preamble
  204. #define EMAC_CFG_PRELEN_3 0x00000002 // 3 bytes of preamble
  205. //*****************************************************************************
  206. //
  207. // The following are defines for the bit fields in the EMAC_O_FRAMEFLTR
  208. // register.
  209. //
  210. //*****************************************************************************
  211. #define EMAC_FRAMEFLTR_RA 0x80000000 // Receive All
  212. #define EMAC_FRAMEFLTR_VTFE 0x00010000 // VLAN Tag Filter Enable
  213. #define EMAC_FRAMEFLTR_HPF 0x00000400 // Hash or Perfect Filter
  214. #define EMAC_FRAMEFLTR_SAF 0x00000200 // Source Address Filter Enable
  215. #define EMAC_FRAMEFLTR_SAIF 0x00000100 // Source Address (SA) Inverse
  216. // Filtering
  217. #define EMAC_FRAMEFLTR_PCF_M 0x000000C0 // Pass Control Frames
  218. #define EMAC_FRAMEFLTR_PCF_ALL 0x00000000 // The MAC filters all control
  219. // frames from reaching application
  220. #define EMAC_FRAMEFLTR_PCF_PAUSE \
  221. 0x00000040 // MAC forwards all control frames
  222. // except PAUSE control frames to
  223. // application even if they fail
  224. // the address filter
  225. #define EMAC_FRAMEFLTR_PCF_NONE 0x00000080 // MAC forwards all control frames
  226. // to application even if they fail
  227. // the address Filter
  228. #define EMAC_FRAMEFLTR_PCF_ADDR 0x000000C0 // MAC forwards control frames that
  229. // pass the address Filter
  230. #define EMAC_FRAMEFLTR_DBF 0x00000020 // Disable Broadcast Frames
  231. #define EMAC_FRAMEFLTR_PM 0x00000010 // Pass All Multicast
  232. #define EMAC_FRAMEFLTR_DAIF 0x00000008 // Destination Address (DA) Inverse
  233. // Filtering
  234. #define EMAC_FRAMEFLTR_HMC 0x00000004 // Hash Multicast
  235. #define EMAC_FRAMEFLTR_HUC 0x00000002 // Hash Unicast
  236. #define EMAC_FRAMEFLTR_PR 0x00000001 // Promiscuous Mode
  237. //*****************************************************************************
  238. //
  239. // The following are defines for the bit fields in the EMAC_O_HASHTBLH
  240. // register.
  241. //
  242. //*****************************************************************************
  243. #define EMAC_HASHTBLH_HTH_M 0xFFFFFFFF // Hash Table High
  244. #define EMAC_HASHTBLH_HTH_S 0
  245. //*****************************************************************************
  246. //
  247. // The following are defines for the bit fields in the EMAC_O_HASHTBLL
  248. // register.
  249. //
  250. //*****************************************************************************
  251. #define EMAC_HASHTBLL_HTL_M 0xFFFFFFFF // Hash Table Low
  252. #define EMAC_HASHTBLL_HTL_S 0
  253. //*****************************************************************************
  254. //
  255. // The following are defines for the bit fields in the EMAC_O_MIIADDR register.
  256. //
  257. //*****************************************************************************
  258. #define EMAC_MIIADDR_PLA_M 0x0000F800 // Physical Layer Address
  259. #define EMAC_MIIADDR_MII_M 0x000007C0 // MII Register
  260. #define EMAC_MIIADDR_CR_M 0x0000003C // Clock Reference Frequency
  261. // Selection
  262. #define EMAC_MIIADDR_CR_60_100 0x00000000 // The frequency of the System
  263. // Clock is 60 to 100 MHz providing
  264. // a MDIO clock of SYSCLK/42
  265. #define EMAC_MIIADDR_CR_100_150 0x00000004 // The frequency of the System
  266. // Clock is 100 to 150 MHz
  267. // providing a MDIO clock of
  268. // SYSCLK/62
  269. #define EMAC_MIIADDR_CR_20_35 0x00000008 // The frequency of the System
  270. // Clock is 20-35 MHz providing a
  271. // MDIO clock of System Clock/16
  272. #define EMAC_MIIADDR_CR_35_60 0x0000000C // The frequency of the System
  273. // Clock is 35 to 60 MHz providing
  274. // a MDIO clock of System Clock/26
  275. #define EMAC_MIIADDR_MIIW 0x00000002 // MII Write
  276. #define EMAC_MIIADDR_MIIB 0x00000001 // MII Busy
  277. #define EMAC_MIIADDR_PLA_S 11
  278. #define EMAC_MIIADDR_MII_S 6
  279. //*****************************************************************************
  280. //
  281. // The following are defines for the bit fields in the EMAC_O_MIIDATA register.
  282. //
  283. //*****************************************************************************
  284. #define EMAC_MIIDATA_DATA_M 0x0000FFFF // MII Data
  285. #define EMAC_MIIDATA_DATA_S 0
  286. //*****************************************************************************
  287. //
  288. // The following are defines for the bit fields in the EMAC_O_FLOWCTL register.
  289. //
  290. //*****************************************************************************
  291. #define EMAC_FLOWCTL_PT_M 0xFFFF0000 // Pause Time
  292. #define EMAC_FLOWCTL_DZQP 0x00000080 // Disable Zero-Quanta Pause
  293. #define EMAC_FLOWCTL_UP 0x00000008 // Unicast Pause Frame Detect
  294. #define EMAC_FLOWCTL_RFE 0x00000004 // Receive Flow Control Enable
  295. #define EMAC_FLOWCTL_TFE 0x00000002 // Transmit Flow Control Enable
  296. #define EMAC_FLOWCTL_FCBBPA 0x00000001 // Flow Control Busy or
  297. // Back-pressure Activate
  298. #define EMAC_FLOWCTL_PT_S 16
  299. //*****************************************************************************
  300. //
  301. // The following are defines for the bit fields in the EMAC_O_VLANTG register.
  302. //
  303. //*****************************************************************************
  304. #define EMAC_VLANTG_VTHM 0x00080000 // VLAN Tag Hash Table Match Enable
  305. #define EMAC_VLANTG_ESVL 0x00040000 // Enable S-VLAN
  306. #define EMAC_VLANTG_VTIM 0x00020000 // VLAN Tag Inverse Match Enable
  307. #define EMAC_VLANTG_ETV 0x00010000 // Enable 12-Bit VLAN Tag
  308. // Comparison
  309. #define EMAC_VLANTG_VL_M 0x0000FFFF // VLAN Tag Identifier for Receive
  310. // Frames
  311. #define EMAC_VLANTG_VL_S 0
  312. //*****************************************************************************
  313. //
  314. // The following are defines for the bit fields in the EMAC_O_STATUS register.
  315. //
  316. //*****************************************************************************
  317. #define EMAC_STATUS_TXFF 0x02000000 // TX/RX Controller TX FIFO Full
  318. // Status
  319. #define EMAC_STATUS_TXFE 0x01000000 // TX/RX Controller TX FIFO Not
  320. // Empty Status
  321. #define EMAC_STATUS_TWC 0x00400000 // TX/RX Controller TX FIFO Write
  322. // Controller Active Status
  323. #define EMAC_STATUS_TRC_M 0x00300000 // TX/RX Controller's TX FIFO Read
  324. // Controller Status
  325. #define EMAC_STATUS_TRC_IDLE 0x00000000 // IDLE state
  326. #define EMAC_STATUS_TRC_READ 0x00100000 // READ state (transferring data to
  327. // MAC transmitter)
  328. #define EMAC_STATUS_TRC_WAIT 0x00200000 // Waiting for TX Status from MAC
  329. // transmitter
  330. #define EMAC_STATUS_TRC_WRFLUSH 0x00300000 // Writing the received TX Status
  331. // or flushing the TX FIFO
  332. #define EMAC_STATUS_TXPAUSED 0x00080000 // MAC Transmitter PAUSE
  333. #define EMAC_STATUS_TFC_M 0x00060000 // MAC Transmit Frame Controller
  334. // Status
  335. #define EMAC_STATUS_TFC_IDLE 0x00000000 // IDLE state
  336. #define EMAC_STATUS_TFC_STATUS 0x00020000 // Waiting for status of previous
  337. // frame or IFG or backoff period
  338. // to be over
  339. #define EMAC_STATUS_TFC_PAUSE 0x00040000 // Generating and transmitting a
  340. // PAUSE control frame (in the
  341. // full-duplex mode)
  342. #define EMAC_STATUS_TFC_INPUT 0x00060000 // Transferring input frame for
  343. // transmission
  344. #define EMAC_STATUS_TPE 0x00010000 // MAC MII Transmit Protocol Engine
  345. // Status
  346. #define EMAC_STATUS_RXF_M 0x00000300 // TX/RX Controller RX FIFO
  347. // Fill-level Status
  348. #define EMAC_STATUS_RXF_EMPTY 0x00000000 // RX FIFO Empty
  349. #define EMAC_STATUS_RXF_BELOW 0x00000100 // RX FIFO fill level is below the
  350. // flow-control deactivate
  351. // threshold
  352. #define EMAC_STATUS_RXF_ABOVE 0x00000200 // RX FIFO fill level is above the
  353. // flow-control activate threshold
  354. #define EMAC_STATUS_RXF_FULL 0x00000300 // RX FIFO Full
  355. #define EMAC_STATUS_RRC_M 0x00000060 // TX/RX Controller Read Controller
  356. // State
  357. #define EMAC_STATUS_RRC_IDLE 0x00000000 // IDLE state
  358. #define EMAC_STATUS_RRC_STATUS 0x00000020 // Reading frame data
  359. #define EMAC_STATUS_RRC_DATA 0x00000040 // Reading frame status (or
  360. // timestamp)
  361. #define EMAC_STATUS_RRC_FLUSH 0x00000060 // Flushing the frame data and
  362. // status
  363. #define EMAC_STATUS_RWC 0x00000010 // TX/RX Controller RX FIFO Write
  364. // Controller Active Status
  365. #define EMAC_STATUS_RFCFC_M 0x00000006 // MAC Receive Frame Controller
  366. // FIFO Status
  367. #define EMAC_STATUS_RPE 0x00000001 // MAC MII Receive Protocol Engine
  368. // Status
  369. #define EMAC_STATUS_RFCFC_S 1
  370. //*****************************************************************************
  371. //
  372. // The following are defines for the bit fields in the EMAC_O_RWUFF register.
  373. //
  374. //*****************************************************************************
  375. #define EMAC_RWUFF_WAKEUPFIL_M 0xFFFFFFFF // Remote Wake-Up Frame Filter
  376. #define EMAC_RWUFF_WAKEUPFIL_S 0
  377. //*****************************************************************************
  378. //
  379. // The following are defines for the bit fields in the EMAC_O_PMTCTLSTAT
  380. // register.
  381. //
  382. //*****************************************************************************
  383. #define EMAC_PMTCTLSTAT_WUPFRRST \
  384. 0x80000000 // Wake-Up Frame Filter Register
  385. // Pointer Reset
  386. #define EMAC_PMTCTLSTAT_RWKPTR_M \
  387. 0x07000000 // Remote Wake-Up FIFO Pointer
  388. #define EMAC_PMTCTLSTAT_GLBLUCAST \
  389. 0x00000200 // Global Unicast
  390. #define EMAC_PMTCTLSTAT_WUPRX 0x00000040 // Wake-Up Frame Received
  391. #define EMAC_PMTCTLSTAT_MGKPRX 0x00000020 // Magic Packet Received
  392. #define EMAC_PMTCTLSTAT_WUPFREN 0x00000004 // Wake-Up Frame Enable
  393. #define EMAC_PMTCTLSTAT_MGKPKTEN \
  394. 0x00000002 // Magic Packet Enable
  395. #define EMAC_PMTCTLSTAT_PWRDWN 0x00000001 // Power Down
  396. #define EMAC_PMTCTLSTAT_RWKPTR_S \
  397. 24
  398. //*****************************************************************************
  399. //
  400. // The following are defines for the bit fields in the EMAC_O_LPICTLSTAT
  401. // register.
  402. //
  403. //*****************************************************************************
  404. #define EMAC_LPICTLSTAT_LPITXA 0x00080000 // LPI TX Automate
  405. #define EMAC_LPICTLSTAT_PLSEN 0x00040000 // PHY Link Status Enable
  406. #define EMAC_LPICTLSTAT_PLS 0x00020000 // PHY Link Status
  407. #define EMAC_LPICTLSTAT_LPIEN 0x00010000 // LPI Enable
  408. #define EMAC_LPICTLSTAT_RLPIST 0x00000200 // Receive LPI State
  409. #define EMAC_LPICTLSTAT_TLPIST 0x00000100 // Transmit LPI State
  410. #define EMAC_LPICTLSTAT_RLPIEX 0x00000008 // Receive LPI Exit
  411. #define EMAC_LPICTLSTAT_RLPIEN 0x00000004 // Receive LPI Entry
  412. #define EMAC_LPICTLSTAT_TLPIEX 0x00000002 // Transmit LPI Exit
  413. #define EMAC_LPICTLSTAT_TLPIEN 0x00000001 // Transmit LPI Entry
  414. //*****************************************************************************
  415. //
  416. // The following are defines for the bit fields in the EMAC_O_LPITIMERCTL
  417. // register.
  418. //
  419. //*****************************************************************************
  420. #define EMAC_LPITIMERCTL_LST_M 0x03FF0000 // Low Power Idle LS Timer
  421. #define EMAC_LPITIMERCTL_LST_S 16
  422. #define EMAC_LPITIMERCTL_TWT_M 0x0000FFFF // Low Power Idle TW Timer
  423. #define EMAC_LPITIMERCTL_TWT_S 0
  424. //*****************************************************************************
  425. //
  426. // The following are defines for the bit fields in the EMAC_O_RIS register.
  427. //
  428. //*****************************************************************************
  429. #define EMAC_RIS_LPI 0x00000400 // LPI Interrupt Status
  430. #define EMAC_RIS_TS 0x00000200 // Timestamp Interrupt Status
  431. #define EMAC_RIS_MMCTX 0x00000040 // MMC Transmit Interrupt Status
  432. #define EMAC_RIS_MMCRX 0x00000020 // MMC Receive Interrupt Status
  433. #define EMAC_RIS_MMC 0x00000010 // MMC Interrupt Status
  434. #define EMAC_RIS_PMT 0x00000008 // PMT Interrupt Status
  435. //*****************************************************************************
  436. //
  437. // The following are defines for the bit fields in the EMAC_O_IM register.
  438. //
  439. //*****************************************************************************
  440. #define EMAC_IM_LPI 0x00000400 // LPI Interrupt Mask
  441. #define EMAC_IM_TSI 0x00000200 // Timestamp Interrupt Mask
  442. #define EMAC_IM_PMT 0x00000008 // PMT Interrupt Mask
  443. //*****************************************************************************
  444. //
  445. // The following are defines for the bit fields in the EMAC_O_ADDR0H register.
  446. //
  447. //*****************************************************************************
  448. #define EMAC_ADDR0H_AE 0x80000000 // Address Enable
  449. #define EMAC_ADDR0H_ADDRHI_M 0x0000FFFF // MAC Address0 [47:32]
  450. #define EMAC_ADDR0H_ADDRHI_S 0
  451. //*****************************************************************************
  452. //
  453. // The following are defines for the bit fields in the EMAC_O_ADDR0L register.
  454. //
  455. //*****************************************************************************
  456. #define EMAC_ADDR0L_ADDRLO_M 0xFFFFFFFF // MAC Address0 [31:0]
  457. #define EMAC_ADDR0L_ADDRLO_S 0
  458. //*****************************************************************************
  459. //
  460. // The following are defines for the bit fields in the EMAC_O_ADDR1H register.
  461. //
  462. //*****************************************************************************
  463. #define EMAC_ADDR1H_AE 0x80000000 // Address Enable
  464. #define EMAC_ADDR1H_SA 0x40000000 // Source Address
  465. #define EMAC_ADDR1H_MBC_M 0x3F000000 // Mask Byte Control
  466. #define EMAC_ADDR1H_ADDRHI_M 0x0000FFFF // MAC Address1 [47:32]
  467. #define EMAC_ADDR1H_MBC_S 24
  468. #define EMAC_ADDR1H_ADDRHI_S 0
  469. //*****************************************************************************
  470. //
  471. // The following are defines for the bit fields in the EMAC_O_ADDR1L register.
  472. //
  473. //*****************************************************************************
  474. #define EMAC_ADDR1L_ADDRLO_M 0xFFFFFFFF // MAC Address1 [31:0]
  475. #define EMAC_ADDR1L_ADDRLO_S 0
  476. //*****************************************************************************
  477. //
  478. // The following are defines for the bit fields in the EMAC_O_ADDR2H register.
  479. //
  480. //*****************************************************************************
  481. #define EMAC_ADDR2H_AE 0x80000000 // Address Enable
  482. #define EMAC_ADDR2H_SA 0x40000000 // Source Address
  483. #define EMAC_ADDR2H_MBC_M 0x3F000000 // Mask Byte Control
  484. #define EMAC_ADDR2H_ADDRHI_M 0x0000FFFF // MAC Address2 [47:32]
  485. #define EMAC_ADDR2H_MBC_S 24
  486. #define EMAC_ADDR2H_ADDRHI_S 0
  487. //*****************************************************************************
  488. //
  489. // The following are defines for the bit fields in the EMAC_O_ADDR2L register.
  490. //
  491. //*****************************************************************************
  492. #define EMAC_ADDR2L_ADDRLO_M 0xFFFFFFFF // MAC Address2 [31:0]
  493. #define EMAC_ADDR2L_ADDRLO_S 0
  494. //*****************************************************************************
  495. //
  496. // The following are defines for the bit fields in the EMAC_O_ADDR3H register.
  497. //
  498. //*****************************************************************************
  499. #define EMAC_ADDR3H_AE 0x80000000 // Address Enable
  500. #define EMAC_ADDR3H_SA 0x40000000 // Source Address
  501. #define EMAC_ADDR3H_MBC_M 0x3F000000 // Mask Byte Control
  502. #define EMAC_ADDR3H_ADDRHI_M 0x0000FFFF // MAC Address3 [47:32]
  503. #define EMAC_ADDR3H_MBC_S 24
  504. #define EMAC_ADDR3H_ADDRHI_S 0
  505. //*****************************************************************************
  506. //
  507. // The following are defines for the bit fields in the EMAC_O_ADDR3L register.
  508. //
  509. //*****************************************************************************
  510. #define EMAC_ADDR3L_ADDRLO_M 0xFFFFFFFF // MAC Address3 [31:0]
  511. #define EMAC_ADDR3L_ADDRLO_S 0
  512. //*****************************************************************************
  513. //
  514. // The following are defines for the bit fields in the EMAC_O_WDOGTO register.
  515. //
  516. //*****************************************************************************
  517. #define EMAC_WDOGTO_PWE 0x00010000 // Programmable Watchdog Enable
  518. #define EMAC_WDOGTO_WTO_M 0x00003FFF // Watchdog Timeout
  519. #define EMAC_WDOGTO_WTO_S 0
  520. //*****************************************************************************
  521. //
  522. // The following are defines for the bit fields in the EMAC_O_MMCCTRL register.
  523. //
  524. //*****************************************************************************
  525. #define EMAC_MMCCTRL_UCDBC 0x00000100 // Update MMC Counters for Dropped
  526. // Broadcast Frames
  527. #define EMAC_MMCCTRL_CNTPRSTLVL 0x00000020 // Full/Half Preset Level Value
  528. #define EMAC_MMCCTRL_CNTPRST 0x00000010 // Counters Preset
  529. #define EMAC_MMCCTRL_CNTFREEZ 0x00000008 // MMC Counter Freeze
  530. #define EMAC_MMCCTRL_RSTONRD 0x00000004 // Reset on Read
  531. #define EMAC_MMCCTRL_CNTSTPRO 0x00000002 // Counters Stop Rollover
  532. #define EMAC_MMCCTRL_CNTRST 0x00000001 // Counters Reset
  533. //*****************************************************************************
  534. //
  535. // The following are defines for the bit fields in the EMAC_O_MMCRXRIS
  536. // register.
  537. //
  538. //*****************************************************************************
  539. #define EMAC_MMCRXRIS_UCGF 0x00020000 // MMC Receive Unicast Good Frame
  540. // Counter Interrupt Status
  541. #define EMAC_MMCRXRIS_ALGNERR 0x00000040 // MMC Receive Alignment Error
  542. // Frame Counter Interrupt Status
  543. #define EMAC_MMCRXRIS_CRCERR 0x00000020 // MMC Receive CRC Error Frame
  544. // Counter Interrupt Status
  545. #define EMAC_MMCRXRIS_GBF 0x00000001 // MMC Receive Good Bad Frame
  546. // Counter Interrupt Status
  547. //*****************************************************************************
  548. //
  549. // The following are defines for the bit fields in the EMAC_O_MMCTXRIS
  550. // register.
  551. //
  552. //*****************************************************************************
  553. #define EMAC_MMCTXRIS_OCTCNT 0x00100000 // Octet Counter Interrupt Status
  554. #define EMAC_MMCTXRIS_MCOLLGF 0x00008000 // MMC Transmit Multiple Collision
  555. // Good Frame Counter Interrupt
  556. // Status
  557. #define EMAC_MMCTXRIS_SCOLLGF 0x00004000 // MMC Transmit Single Collision
  558. // Good Frame Counter Interrupt
  559. // Status
  560. #define EMAC_MMCTXRIS_GBF 0x00000002 // MMC Transmit Good Bad Frame
  561. // Counter Interrupt Status
  562. //*****************************************************************************
  563. //
  564. // The following are defines for the bit fields in the EMAC_O_MMCRXIM register.
  565. //
  566. //*****************************************************************************
  567. #define EMAC_MMCRXIM_UCGF 0x00020000 // MMC Receive Unicast Good Frame
  568. // Counter Interrupt Mask
  569. #define EMAC_MMCRXIM_ALGNERR 0x00000040 // MMC Receive Alignment Error
  570. // Frame Counter Interrupt Mask
  571. #define EMAC_MMCRXIM_CRCERR 0x00000020 // MMC Receive CRC Error Frame
  572. // Counter Interrupt Mask
  573. #define EMAC_MMCRXIM_GBF 0x00000001 // MMC Receive Good Bad Frame
  574. // Counter Interrupt Mask
  575. //*****************************************************************************
  576. //
  577. // The following are defines for the bit fields in the EMAC_O_MMCTXIM register.
  578. //
  579. //*****************************************************************************
  580. #define EMAC_MMCTXIM_OCTCNT 0x00100000 // MMC Transmit Good Octet Counter
  581. // Interrupt Mask
  582. #define EMAC_MMCTXIM_MCOLLGF 0x00008000 // MMC Transmit Multiple Collision
  583. // Good Frame Counter Interrupt
  584. // Mask
  585. #define EMAC_MMCTXIM_SCOLLGF 0x00004000 // MMC Transmit Single Collision
  586. // Good Frame Counter Interrupt
  587. // Mask
  588. #define EMAC_MMCTXIM_GBF 0x00000002 // MMC Transmit Good Bad Frame
  589. // Counter Interrupt Mask
  590. //*****************************************************************************
  591. //
  592. // The following are defines for the bit fields in the EMAC_O_TXCNTGB register.
  593. //
  594. //*****************************************************************************
  595. #define EMAC_TXCNTGB_TXFRMGB_M 0xFFFFFFFF // This field indicates the number
  596. // of good and bad frames
  597. // transmitted, exclusive of
  598. // retried frames
  599. #define EMAC_TXCNTGB_TXFRMGB_S 0
  600. //*****************************************************************************
  601. //
  602. // The following are defines for the bit fields in the EMAC_O_TXCNTSCOL
  603. // register.
  604. //
  605. //*****************************************************************************
  606. #define EMAC_TXCNTSCOL_TXSNGLCOLG_M \
  607. 0xFFFFFFFF // This field indicates the number
  608. // of successfully transmitted
  609. // frames after a single collision
  610. // in the half-duplex mode
  611. #define EMAC_TXCNTSCOL_TXSNGLCOLG_S \
  612. 0
  613. //*****************************************************************************
  614. //
  615. // The following are defines for the bit fields in the EMAC_O_TXCNTMCOL
  616. // register.
  617. //
  618. //*****************************************************************************
  619. #define EMAC_TXCNTMCOL_TXMULTCOLG_M \
  620. 0xFFFFFFFF // This field indicates the number
  621. // of successfully transmitted
  622. // frames after multiple collisions
  623. // in the half-duplex mode
  624. #define EMAC_TXCNTMCOL_TXMULTCOLG_S \
  625. 0
  626. //*****************************************************************************
  627. //
  628. // The following are defines for the bit fields in the EMAC_O_TXOCTCNTG
  629. // register.
  630. //
  631. //*****************************************************************************
  632. #define EMAC_TXOCTCNTG_TXOCTG_M 0xFFFFFFFF // This field indicates the number
  633. // of bytes transmitted, exclusive
  634. // of preamble, in good frames
  635. #define EMAC_TXOCTCNTG_TXOCTG_S 0
  636. //*****************************************************************************
  637. //
  638. // The following are defines for the bit fields in the EMAC_O_RXCNTGB register.
  639. //
  640. //*****************************************************************************
  641. #define EMAC_RXCNTGB_RXFRMGB_M 0xFFFFFFFF // This field indicates the number
  642. // of received good and bad frames
  643. #define EMAC_RXCNTGB_RXFRMGB_S 0
  644. //*****************************************************************************
  645. //
  646. // The following are defines for the bit fields in the EMAC_O_RXCNTCRCERR
  647. // register.
  648. //
  649. //*****************************************************************************
  650. #define EMAC_RXCNTCRCERR_RXCRCERR_M \
  651. 0xFFFFFFFF // This field indicates the number
  652. // of frames received with CRC
  653. // error
  654. #define EMAC_RXCNTCRCERR_RXCRCERR_S \
  655. 0
  656. //*****************************************************************************
  657. //
  658. // The following are defines for the bit fields in the EMAC_O_RXCNTALGNERR
  659. // register.
  660. //
  661. //*****************************************************************************
  662. #define EMAC_RXCNTALGNERR_RXALGNERR_M \
  663. 0xFFFFFFFF // This field indicates the number
  664. // of frames received with
  665. // alignment (dribble) error
  666. #define EMAC_RXCNTALGNERR_RXALGNERR_S \
  667. 0
  668. //*****************************************************************************
  669. //
  670. // The following are defines for the bit fields in the EMAC_O_RXCNTGUNI
  671. // register.
  672. //
  673. //*****************************************************************************
  674. #define EMAC_RXCNTGUNI_RXUCASTG_M \
  675. 0xFFFFFFFF // This field indicates the number
  676. // of received good unicast frames
  677. #define EMAC_RXCNTGUNI_RXUCASTG_S \
  678. 0
  679. //*****************************************************************************
  680. //
  681. // The following are defines for the bit fields in the EMAC_O_VLNINCREP
  682. // register.
  683. //
  684. //*****************************************************************************
  685. #define EMAC_VLNINCREP_CSVL 0x00080000 // C-VLAN or S-VLAN
  686. #define EMAC_VLNINCREP_VLP 0x00040000 // VLAN Priority Control
  687. #define EMAC_VLNINCREP_VLC_M 0x00030000 // VLAN Tag Control in Transmit
  688. // Frames
  689. #define EMAC_VLNINCREP_VLC_NONE 0x00000000 // No VLAN tag deletion, insertion,
  690. // or replacement
  691. #define EMAC_VLNINCREP_VLC_TAGDEL \
  692. 0x00010000 // VLAN tag deletion
  693. #define EMAC_VLNINCREP_VLC_TAGINS \
  694. 0x00020000 // VLAN tag insertion
  695. #define EMAC_VLNINCREP_VLC_TAGREP \
  696. 0x00030000 // VLAN tag replacement
  697. #define EMAC_VLNINCREP_VLT_M 0x0000FFFF // VLAN Tag for Transmit Frames
  698. #define EMAC_VLNINCREP_VLT_S 0
  699. //*****************************************************************************
  700. //
  701. // The following are defines for the bit fields in the EMAC_O_VLANHASH
  702. // register.
  703. //
  704. //*****************************************************************************
  705. #define EMAC_VLANHASH_VLHT_M 0x0000FFFF // VLAN Hash Table
  706. #define EMAC_VLANHASH_VLHT_S 0
  707. //*****************************************************************************
  708. //
  709. // The following are defines for the bit fields in the EMAC_O_TIMSTCTRL
  710. // register.
  711. //
  712. //*****************************************************************************
  713. #define EMAC_TIMSTCTRL_PTPFLTR 0x00040000 // Enable MAC address for PTP Frame
  714. // Filtering
  715. #define EMAC_TIMSTCTRL_SELPTP_M 0x00030000 // Select PTP packets for Taking
  716. // Snapshots
  717. #define EMAC_TIMSTCTRL_TSMAST 0x00008000 // Enable Snapshot for Messages
  718. // Relevant to Master
  719. #define EMAC_TIMSTCTRL_TSEVNT 0x00004000 // Enable Timestamp Snapshot for
  720. // Event Messages
  721. #define EMAC_TIMSTCTRL_PTPIPV4 0x00002000 // Enable Processing of PTP Frames
  722. // Sent over IPv4-UDP
  723. #define EMAC_TIMSTCTRL_PTPIPV6 0x00001000 // Enable Processing of PTP Frames
  724. // Sent Over IPv6-UDP
  725. #define EMAC_TIMSTCTRL_PTPETH 0x00000800 // Enable Processing of PTP Over
  726. // Ethernet Frames
  727. #define EMAC_TIMSTCTRL_PTPVER2 0x00000400 // Enable PTP Packet Processing For
  728. // Version 2 Format
  729. #define EMAC_TIMSTCTRL_DGTLBIN 0x00000200 // Timestamp Digital or Binary
  730. // Rollover Control
  731. #define EMAC_TIMSTCTRL_ALLF 0x00000100 // Enable Timestamp For All Frames
  732. #define EMAC_TIMSTCTRL_ADDREGUP 0x00000020 // Addend Register Update
  733. #define EMAC_TIMSTCTRL_INTTRIG 0x00000010 // Timestamp Interrupt Trigger
  734. // Enable
  735. #define EMAC_TIMSTCTRL_TSUPDT 0x00000008 // Timestamp Update
  736. #define EMAC_TIMSTCTRL_TSINIT 0x00000004 // Timestamp Initialize
  737. #define EMAC_TIMSTCTRL_TSFCUPDT 0x00000002 // Timestamp Fine or Coarse Update
  738. #define EMAC_TIMSTCTRL_TSEN 0x00000001 // Timestamp Enable
  739. #define EMAC_TIMSTCTRL_SELPTP_S 16
  740. //*****************************************************************************
  741. //
  742. // The following are defines for the bit fields in the EMAC_O_SUBSECINC
  743. // register.
  744. //
  745. //*****************************************************************************
  746. #define EMAC_SUBSECINC_SSINC_M 0x000000FF // Sub-second Increment Value
  747. #define EMAC_SUBSECINC_SSINC_S 0
  748. //*****************************************************************************
  749. //
  750. // The following are defines for the bit fields in the EMAC_O_TIMSEC register.
  751. //
  752. //*****************************************************************************
  753. #define EMAC_TIMSEC_TSS_M 0xFFFFFFFF // Timestamp Second
  754. #define EMAC_TIMSEC_TSS_S 0
  755. //*****************************************************************************
  756. //
  757. // The following are defines for the bit fields in the EMAC_O_TIMNANO register.
  758. //
  759. //*****************************************************************************
  760. #define EMAC_TIMNANO_TSSS_M 0x7FFFFFFF // Timestamp Sub-Seconds
  761. #define EMAC_TIMNANO_TSSS_S 0
  762. //*****************************************************************************
  763. //
  764. // The following are defines for the bit fields in the EMAC_O_TIMSECU register.
  765. //
  766. //*****************************************************************************
  767. #define EMAC_TIMSECU_TSS_M 0xFFFFFFFF // Timestamp Second
  768. #define EMAC_TIMSECU_TSS_S 0
  769. //*****************************************************************************
  770. //
  771. // The following are defines for the bit fields in the EMAC_O_TIMNANOU
  772. // register.
  773. //
  774. //*****************************************************************************
  775. #define EMAC_TIMNANOU_ADDSUB 0x80000000 // Add or subtract time
  776. #define EMAC_TIMNANOU_TSSS_M 0x7FFFFFFF // Timestamp Sub-Second
  777. #define EMAC_TIMNANOU_TSSS_S 0
  778. //*****************************************************************************
  779. //
  780. // The following are defines for the bit fields in the EMAC_O_TIMADD register.
  781. //
  782. //*****************************************************************************
  783. #define EMAC_TIMADD_TSAR_M 0xFFFFFFFF // Timestamp Addend Register
  784. #define EMAC_TIMADD_TSAR_S 0
  785. //*****************************************************************************
  786. //
  787. // The following are defines for the bit fields in the EMAC_O_TARGSEC register.
  788. //
  789. //*****************************************************************************
  790. #define EMAC_TARGSEC_TSTR_M 0xFFFFFFFF // Target Time Seconds Register
  791. #define EMAC_TARGSEC_TSTR_S 0
  792. //*****************************************************************************
  793. //
  794. // The following are defines for the bit fields in the EMAC_O_TARGNANO
  795. // register.
  796. //
  797. //*****************************************************************************
  798. #define EMAC_TARGNANO_TRGTBUSY 0x80000000 // Target Time Register Busy
  799. #define EMAC_TARGNANO_TTSLO_M 0x7FFFFFFF // Target Timestamp Low Register
  800. #define EMAC_TARGNANO_TTSLO_S 0
  801. //*****************************************************************************
  802. //
  803. // The following are defines for the bit fields in the EMAC_O_HWORDSEC
  804. // register.
  805. //
  806. //*****************************************************************************
  807. #define EMAC_HWORDSEC_TSHWR_M 0x0000FFFF // Target Timestamp Higher Word
  808. // Register
  809. #define EMAC_HWORDSEC_TSHWR_S 0
  810. //*****************************************************************************
  811. //
  812. // The following are defines for the bit fields in the EMAC_O_TIMSTAT register.
  813. //
  814. //*****************************************************************************
  815. #define EMAC_TIMSTAT_TSTARGT 0x00000002 // Timestamp Target Time Reached
  816. #define EMAC_TIMSTAT_TSSOVF 0x00000001 // Timestamp Seconds Overflow
  817. //*****************************************************************************
  818. //
  819. // The following are defines for the bit fields in the EMAC_O_PPSCTRL register.
  820. //
  821. //*****************************************************************************
  822. #define EMAC_PPSCTRL_TRGMODS0_M 0x00000060 // Target Time Register Mode for
  823. // PPS0 Output
  824. #define EMAC_PPSCTRL_TRGMODS0_INTONLY \
  825. 0x00000000 // Indicates that the Target Time
  826. // registers are programmed only
  827. // for generating the interrupt
  828. // event
  829. #define EMAC_PPSCTRL_TRGMODS0_INTPPS0 \
  830. 0x00000040 // Indicates that the Target Time
  831. // registers are programmed for
  832. // generating the interrupt event
  833. // and starting or stopping the
  834. // generation of the EN0PPS output
  835. // signal
  836. #define EMAC_PPSCTRL_TRGMODS0_PPS0ONLY \
  837. 0x00000060 // Indicates that the Target Time
  838. // registers are programmed only
  839. // for starting or stopping the
  840. // generation of the EN0PPS output
  841. // signal. No interrupt is asserted
  842. #define EMAC_PPSCTRL_PPSEN0 0x00000010 // Flexible PPS Output Mode Enable
  843. #define EMAC_PPSCTRL_PPSCTRL_M 0x0000000F // EN0PPS Output Frequency Control
  844. // (PPSCTRL) or Command Control
  845. // (PPSCMD)
  846. //*****************************************************************************
  847. //
  848. // The following are defines for the bit fields in the EMAC_O_PPS0INTVL
  849. // register.
  850. //
  851. //*****************************************************************************
  852. #define EMAC_PPS0INTVL_PPS0INT_M \
  853. 0xFFFFFFFF // PPS0 Output Signal Interval
  854. #define EMAC_PPS0INTVL_PPS0INT_S \
  855. 0
  856. //*****************************************************************************
  857. //
  858. // The following are defines for the bit fields in the EMAC_O_PPS0WIDTH
  859. // register.
  860. //
  861. //*****************************************************************************
  862. #define EMAC_PPS0WIDTH_M 0xFFFFFFFF // EN0PPS Output Signal Width
  863. #define EMAC_PPS0WIDTH_S 0
  864. //*****************************************************************************
  865. //
  866. // The following are defines for the bit fields in the EMAC_O_DMABUSMOD
  867. // register.
  868. //
  869. //*****************************************************************************
  870. #define EMAC_DMABUSMOD_RIB 0x80000000 // Rebuild Burst
  871. #define EMAC_DMABUSMOD_TXPR 0x08000000 // Transmit Priority
  872. #define EMAC_DMABUSMOD_MB 0x04000000 // Mixed Burst
  873. #define EMAC_DMABUSMOD_AAL 0x02000000 // Address Aligned Beats
  874. #define EMAC_DMABUSMOD_8XPBL 0x01000000 // 8 x Programmable Burst Length
  875. // (PBL) Mode
  876. #define EMAC_DMABUSMOD_USP 0x00800000 // Use Separate Programmable Burst
  877. // Length (PBL)
  878. #define EMAC_DMABUSMOD_RPBL_M 0x007E0000 // RX DMA Programmable Burst Length
  879. // (PBL)
  880. #define EMAC_DMABUSMOD_FB 0x00010000 // Fixed Burst
  881. #define EMAC_DMABUSMOD_PR_M 0x0000C000 // Priority Ratio
  882. #define EMAC_DMABUSMOD_PBL_M 0x00003F00 // Programmable Burst Length
  883. #define EMAC_DMABUSMOD_ATDS 0x00000080 // Alternate Descriptor Size
  884. #define EMAC_DMABUSMOD_DSL_M 0x0000007C // Descriptor Skip Length
  885. #define EMAC_DMABUSMOD_DA 0x00000002 // DMA Arbitration Scheme
  886. #define EMAC_DMABUSMOD_SWR 0x00000001 // DMA Software Reset
  887. #define EMAC_DMABUSMOD_RPBL_S 17
  888. #define EMAC_DMABUSMOD_PR_S 14
  889. #define EMAC_DMABUSMOD_PBL_S 8
  890. #define EMAC_DMABUSMOD_DSL_S 2
  891. //*****************************************************************************
  892. //
  893. // The following are defines for the bit fields in the EMAC_O_TXPOLLD register.
  894. //
  895. //*****************************************************************************
  896. #define EMAC_TXPOLLD_TPD_M 0xFFFFFFFF // Transmit Poll Demand
  897. #define EMAC_TXPOLLD_TPD_S 0
  898. //*****************************************************************************
  899. //
  900. // The following are defines for the bit fields in the EMAC_O_RXPOLLD register.
  901. //
  902. //*****************************************************************************
  903. #define EMAC_RXPOLLD_RPD_M 0xFFFFFFFF // Receive Poll Demand
  904. #define EMAC_RXPOLLD_RPD_S 0
  905. //*****************************************************************************
  906. //
  907. // The following are defines for the bit fields in the EMAC_O_RXDLADDR
  908. // register.
  909. //
  910. //*****************************************************************************
  911. #define EMAC_RXDLADDR_STRXLIST_M \
  912. 0xFFFFFFFC // Start of Receive List
  913. #define EMAC_RXDLADDR_STRXLIST_S \
  914. 2
  915. //*****************************************************************************
  916. //
  917. // The following are defines for the bit fields in the EMAC_O_TXDLADDR
  918. // register.
  919. //
  920. //*****************************************************************************
  921. #define EMAC_TXDLADDR_TXDLADDR_M \
  922. 0xFFFFFFFC // Start of Transmit List Base
  923. // Address
  924. #define EMAC_TXDLADDR_TXDLADDR_S \
  925. 2
  926. //*****************************************************************************
  927. //
  928. // The following are defines for the bit fields in the EMAC_O_DMARIS register.
  929. //
  930. //*****************************************************************************
  931. #define EMAC_DMARIS_LPI 0x40000000 // LPI Trigger Interrupt Status
  932. #define EMAC_DMARIS_TT 0x20000000 // Timestamp Trigger Interrupt
  933. // Status
  934. #define EMAC_DMARIS_PMT 0x10000000 // MAC PMT Interrupt Status
  935. #define EMAC_DMARIS_MMC 0x08000000 // MAC MMC Interrupt
  936. #define EMAC_DMARIS_AE_M 0x03800000 // Access Error
  937. #define EMAC_DMARIS_AE_RXDMAWD 0x00000000 // Error during RX DMA Write Data
  938. // Transfer
  939. #define EMAC_DMARIS_AE_TXDMARD 0x01800000 // Error during TX DMA Read Data
  940. // Transfer
  941. #define EMAC_DMARIS_AE_RXDMADW 0x02000000 // Error during RX DMA Descriptor
  942. // Write Access
  943. #define EMAC_DMARIS_AE_TXDMADW 0x02800000 // Error during TX DMA Descriptor
  944. // Write Access
  945. #define EMAC_DMARIS_AE_RXDMADR 0x03000000 // Error during RX DMA Descriptor
  946. // Read Access
  947. #define EMAC_DMARIS_AE_TXDMADR 0x03800000 // Error during TX DMA Descriptor
  948. // Read Access
  949. #define EMAC_DMARIS_TS_M 0x00700000 // Transmit Process State
  950. #define EMAC_DMARIS_TS_STOP 0x00000000 // Stopped; Reset or Stop transmit
  951. // command processed
  952. #define EMAC_DMARIS_TS_RUNTXTD 0x00100000 // Running; Fetching transmit
  953. // transfer descriptor
  954. #define EMAC_DMARIS_TS_STATUS 0x00200000 // Running; Waiting for status
  955. #define EMAC_DMARIS_TS_RUNTX 0x00300000 // Running; Reading data from host
  956. // memory buffer and queuing it to
  957. // transmit buffer (TX FIFO)
  958. #define EMAC_DMARIS_TS_TSTAMP 0x00400000 // Writing Timestamp
  959. #define EMAC_DMARIS_TS_SUSPEND 0x00600000 // Suspended; Transmit descriptor
  960. // unavailable or transmit buffer
  961. // underflow
  962. #define EMAC_DMARIS_TS_RUNCTD 0x00700000 // Running; Closing transmit
  963. // descriptor
  964. #define EMAC_DMARIS_RS_M 0x000E0000 // Received Process State
  965. #define EMAC_DMARIS_RS_STOP 0x00000000 // Stopped: Reset or stop receive
  966. // command issued
  967. #define EMAC_DMARIS_RS_RUNRXTD 0x00020000 // Running: Fetching receive
  968. // transfer descriptor
  969. #define EMAC_DMARIS_RS_RUNRXD 0x00060000 // Running: Waiting for receive
  970. // packet
  971. #define EMAC_DMARIS_RS_SUSPEND 0x00080000 // Suspended: Receive descriptor
  972. // unavailable
  973. #define EMAC_DMARIS_RS_RUNCRD 0x000A0000 // Running: Closing receive
  974. // descriptor
  975. #define EMAC_DMARIS_RS_TSWS 0x000C0000 // Writing Timestamp
  976. #define EMAC_DMARIS_RS_RUNTXD 0x000E0000 // Running: Transferring the
  977. // receive packet data from receive
  978. // buffer to host memory
  979. #define EMAC_DMARIS_NIS 0x00010000 // Normal Interrupt Summary
  980. #define EMAC_DMARIS_AIS 0x00008000 // Abnormal Interrupt Summary
  981. #define EMAC_DMARIS_ERI 0x00004000 // Early Receive Interrupt
  982. #define EMAC_DMARIS_FBI 0x00002000 // Fatal Bus Error Interrupt
  983. #define EMAC_DMARIS_ETI 0x00000400 // Early Transmit Interrupt
  984. #define EMAC_DMARIS_RWT 0x00000200 // Receive Watchdog Timeout
  985. #define EMAC_DMARIS_RPS 0x00000100 // Receive Process Stopped
  986. #define EMAC_DMARIS_RU 0x00000080 // Receive Buffer Unavailable
  987. #define EMAC_DMARIS_RI 0x00000040 // Receive Interrupt
  988. #define EMAC_DMARIS_UNF 0x00000020 // Transmit Underflow
  989. #define EMAC_DMARIS_OVF 0x00000010 // Receive Overflow
  990. #define EMAC_DMARIS_TJT 0x00000008 // Transmit Jabber Timeout
  991. #define EMAC_DMARIS_TU 0x00000004 // Transmit Buffer Unavailable
  992. #define EMAC_DMARIS_TPS 0x00000002 // Transmit Process Stopped
  993. #define EMAC_DMARIS_TI 0x00000001 // Transmit Interrupt
  994. //*****************************************************************************
  995. //
  996. // The following are defines for the bit fields in the EMAC_O_DMAOPMODE
  997. // register.
  998. //
  999. //*****************************************************************************
  1000. #define EMAC_DMAOPMODE_DT 0x04000000 // Disable Dropping of TCP/IP
  1001. // Checksum Error Frames
  1002. #define EMAC_DMAOPMODE_RSF 0x02000000 // Receive Store and Forward
  1003. #define EMAC_DMAOPMODE_DFF 0x01000000 // Disable Flushing of Received
  1004. // Frames
  1005. #define EMAC_DMAOPMODE_TSF 0x00200000 // Transmit Store and Forward
  1006. #define EMAC_DMAOPMODE_FTF 0x00100000 // Flush Transmit FIFO
  1007. #define EMAC_DMAOPMODE_TTC_M 0x0001C000 // Transmit Threshold Control
  1008. #define EMAC_DMAOPMODE_TTC_64 0x00000000 // 64 bytes
  1009. #define EMAC_DMAOPMODE_TTC_128 0x00004000 // 128 bytes
  1010. #define EMAC_DMAOPMODE_TTC_192 0x00008000 // 192 bytes
  1011. #define EMAC_DMAOPMODE_TTC_256 0x0000C000 // 256 bytes
  1012. #define EMAC_DMAOPMODE_TTC_40 0x00010000 // 40 bytes
  1013. #define EMAC_DMAOPMODE_TTC_32 0x00014000 // 32 bytes
  1014. #define EMAC_DMAOPMODE_TTC_24 0x00018000 // 24 bytes
  1015. #define EMAC_DMAOPMODE_TTC_16 0x0001C000 // 16 bytes
  1016. #define EMAC_DMAOPMODE_ST 0x00002000 // Start or Stop Transmission
  1017. // Command
  1018. #define EMAC_DMAOPMODE_FEF 0x00000080 // Forward Error Frames
  1019. #define EMAC_DMAOPMODE_FUF 0x00000040 // Forward Undersized Good Frames
  1020. #define EMAC_DMAOPMODE_DGF 0x00000020 // Drop Giant Frame Enable
  1021. #define EMAC_DMAOPMODE_RTC_M 0x00000018 // Receive Threshold Control
  1022. #define EMAC_DMAOPMODE_RTC_64 0x00000000 // 64 bytes
  1023. #define EMAC_DMAOPMODE_RTC_32 0x00000008 // 32 bytes
  1024. #define EMAC_DMAOPMODE_RTC_96 0x00000010 // 96 bytes
  1025. #define EMAC_DMAOPMODE_RTC_128 0x00000018 // 128 bytes
  1026. #define EMAC_DMAOPMODE_OSF 0x00000004 // Operate on Second Frame
  1027. #define EMAC_DMAOPMODE_SR 0x00000002 // Start or Stop Receive
  1028. //*****************************************************************************
  1029. //
  1030. // The following are defines for the bit fields in the EMAC_O_DMAIM register.
  1031. //
  1032. //*****************************************************************************
  1033. #define EMAC_DMAIM_NIE 0x00010000 // Normal Interrupt Summary Enable
  1034. #define EMAC_DMAIM_AIE 0x00008000 // Abnormal Interrupt Summary
  1035. // Enable
  1036. #define EMAC_DMAIM_ERE 0x00004000 // Early Receive Interrupt Enable
  1037. #define EMAC_DMAIM_FBE 0x00002000 // Fatal Bus Error Enable
  1038. #define EMAC_DMAIM_ETE 0x00000400 // Early Transmit Interrupt Enable
  1039. #define EMAC_DMAIM_RWE 0x00000200 // Receive Watchdog Timeout Enable
  1040. #define EMAC_DMAIM_RSE 0x00000100 // Receive Stopped Enable
  1041. #define EMAC_DMAIM_RUE 0x00000080 // Receive Buffer Unavailable
  1042. // Enable
  1043. #define EMAC_DMAIM_RIE 0x00000040 // Receive Interrupt Enable
  1044. #define EMAC_DMAIM_UNE 0x00000020 // Underflow Interrupt Enable
  1045. #define EMAC_DMAIM_OVE 0x00000010 // Overflow Interrupt Enable
  1046. #define EMAC_DMAIM_TJE 0x00000008 // Transmit Jabber Timeout Enable
  1047. #define EMAC_DMAIM_TUE 0x00000004 // Transmit Buffer Unvailable
  1048. // Enable
  1049. #define EMAC_DMAIM_TSE 0x00000002 // Transmit Stopped Enable
  1050. #define EMAC_DMAIM_TIE 0x00000001 // Transmit Interrupt Enable
  1051. //*****************************************************************************
  1052. //
  1053. // The following are defines for the bit fields in the EMAC_O_MFBOC register.
  1054. //
  1055. //*****************************************************************************
  1056. #define EMAC_MFBOC_OVFCNTOVF 0x10000000 // Overflow Bit for FIFO Overflow
  1057. // Counter
  1058. #define EMAC_MFBOC_OVFFRMCNT_M 0x0FFE0000 // Overflow Frame Counter
  1059. #define EMAC_MFBOC_MISCNTOVF 0x00010000 // Overflow bit for Missed Frame
  1060. // Counter
  1061. #define EMAC_MFBOC_MISFRMCNT_M 0x0000FFFF // Missed Frame Counter
  1062. #define EMAC_MFBOC_OVFFRMCNT_S 17
  1063. #define EMAC_MFBOC_MISFRMCNT_S 0
  1064. //*****************************************************************************
  1065. //
  1066. // The following are defines for the bit fields in the EMAC_O_RXINTWDT
  1067. // register.
  1068. //
  1069. //*****************************************************************************
  1070. #define EMAC_RXINTWDT_RIWT_M 0x000000FF // Receive Interrupt Watchdog Timer
  1071. // Count
  1072. #define EMAC_RXINTWDT_RIWT_S 0
  1073. //*****************************************************************************
  1074. //
  1075. // The following are defines for the bit fields in the EMAC_O_HOSTXDESC
  1076. // register.
  1077. //
  1078. //*****************************************************************************
  1079. #define EMAC_HOSTXDESC_CURTXDESC_M \
  1080. 0xFFFFFFFF // Host Transmit Descriptor Address
  1081. // Pointer
  1082. #define EMAC_HOSTXDESC_CURTXDESC_S \
  1083. 0
  1084. //*****************************************************************************
  1085. //
  1086. // The following are defines for the bit fields in the EMAC_O_HOSRXDESC
  1087. // register.
  1088. //
  1089. //*****************************************************************************
  1090. #define EMAC_HOSRXDESC_CURRXDESC_M \
  1091. 0xFFFFFFFF // Host Receive Descriptor Address
  1092. // Pointer
  1093. #define EMAC_HOSRXDESC_CURRXDESC_S \
  1094. 0
  1095. //*****************************************************************************
  1096. //
  1097. // The following are defines for the bit fields in the EMAC_O_HOSTXBA register.
  1098. //
  1099. //*****************************************************************************
  1100. #define EMAC_HOSTXBA_CURTXBUFA_M \
  1101. 0xFFFFFFFF // Host Transmit Buffer Address
  1102. // Pointer
  1103. #define EMAC_HOSTXBA_CURTXBUFA_S \
  1104. 0
  1105. //*****************************************************************************
  1106. //
  1107. // The following are defines for the bit fields in the EMAC_O_HOSRXBA register.
  1108. //
  1109. //*****************************************************************************
  1110. #define EMAC_HOSRXBA_CURRXBUFA_M \
  1111. 0xFFFFFFFF // Host Receive Buffer Address
  1112. // Pointer
  1113. #define EMAC_HOSRXBA_CURRXBUFA_S \
  1114. 0
  1115. //*****************************************************************************
  1116. //
  1117. // The following are defines for the bit fields in the EMAC_O_PP register.
  1118. //
  1119. //*****************************************************************************
  1120. #define EMAC_PP_MACTYPE_M 0x00000700 // Ethernet MAC Type
  1121. #define EMAC_PP_MACTYPE_1 0x00000100 // Tiva TM4E129x-class MAC
  1122. #define EMAC_PP_PHYTYPE_M 0x00000007 // Ethernet PHY Type
  1123. #define EMAC_PP_PHYTYPE_NONE 0x00000000 // No PHY
  1124. #define EMAC_PP_PHYTYPE_1 0x00000003 // Snowflake class PHY
  1125. //*****************************************************************************
  1126. //
  1127. // The following are defines for the bit fields in the EMAC_O_PC register.
  1128. //
  1129. //*****************************************************************************
  1130. #define EMAC_PC_PHYEXT 0x80000000 // PHY Select
  1131. #define EMAC_PC_PINTFS_M 0x70000000 // Ethernet Interface Select
  1132. #define EMAC_PC_PINTFS_IMII 0x00000000 // MII (default) Used for internal
  1133. // PHY or external PHY connected
  1134. // via MII
  1135. #define EMAC_PC_PINTFS_RMII 0x40000000 // RMII: Used for external PHY
  1136. // connected via RMII
  1137. #define EMAC_PC_DIGRESTART 0x02000000 // PHY Soft Restart
  1138. #define EMAC_PC_NIBDETDIS 0x01000000 // Odd Nibble TXER Detection
  1139. // Disable
  1140. #define EMAC_PC_RXERIDLE 0x00800000 // RXER Detection During Idle
  1141. #define EMAC_PC_ISOMIILL 0x00400000 // Isolate MII in Link Loss
  1142. #define EMAC_PC_LRR 0x00200000 // Link Loss Recovery
  1143. #define EMAC_PC_TDRRUN 0x00100000 // TDR Auto Run
  1144. #define EMAC_PC_FASTLDMODE_M 0x000F8000 // Fast Link Down Mode
  1145. #define EMAC_PC_POLSWAP 0x00004000 // Polarity Swap
  1146. #define EMAC_PC_MDISWAP 0x00002000 // MDI Swap
  1147. #define EMAC_PC_RBSTMDIX 0x00001000 // Robust Auto MDI-X
  1148. #define EMAC_PC_FASTMDIX 0x00000800 // Fast Auto MDI-X
  1149. #define EMAC_PC_MDIXEN 0x00000400 // MDIX Enable
  1150. #define EMAC_PC_FASTRXDV 0x00000200 // Fast RXDV Detection
  1151. #define EMAC_PC_FASTLUPD 0x00000100 // FAST Link-Up in Parallel Detect
  1152. #define EMAC_PC_EXTFD 0x00000080 // Extended Full Duplex Ability
  1153. #define EMAC_PC_FASTANEN 0x00000040 // Fast Auto Negotiation Enable
  1154. #define EMAC_PC_FASTANSEL_M 0x00000030 // Fast Auto Negotiation Select
  1155. #define EMAC_PC_ANEN 0x00000008 // Auto Negotiation Enable
  1156. #define EMAC_PC_ANMODE_M 0x00000006 // Auto Negotiation Mode
  1157. #define EMAC_PC_ANMODE_10HD 0x00000000 // When ANEN = 0x0, the mode is
  1158. // 10Base-T, Half-Duplex
  1159. #define EMAC_PC_ANMODE_10FD 0x00000002 // When ANEN = 0x0, the mode is
  1160. // 10Base-T, Full-Duplex
  1161. #define EMAC_PC_ANMODE_100HD 0x00000004 // When ANEN = 0x0, the mode is
  1162. // 100Base-TX, Half-Duplex
  1163. #define EMAC_PC_ANMODE_100FD 0x00000006 // When ANEN = 0x0, the mode is
  1164. // 100Base-TX, Full-Duplex
  1165. #define EMAC_PC_PHYHOLD 0x00000001 // Ethernet PHY Hold
  1166. #define EMAC_PC_FASTLDMODE_S 15
  1167. #define EMAC_PC_FASTANSEL_S 4
  1168. //*****************************************************************************
  1169. //
  1170. // The following are defines for the bit fields in the EMAC_O_CC register.
  1171. //
  1172. //*****************************************************************************
  1173. #define EMAC_CC_PTPCEN 0x00040000 // PTP Clock Reference Enable
  1174. #define EMAC_CC_POL 0x00020000 // LED Polarity Control
  1175. #define EMAC_CC_CLKEN 0x00010000 // EN0RREF_CLK Signal Enable
  1176. //*****************************************************************************
  1177. //
  1178. // The following are defines for the bit fields in the EMAC_O_EPHYRIS register.
  1179. //
  1180. //*****************************************************************************
  1181. #define EMAC_EPHYRIS_INT 0x00000001 // Ethernet PHY Raw Interrupt
  1182. // Status
  1183. //*****************************************************************************
  1184. //
  1185. // The following are defines for the bit fields in the EMAC_O_EPHYIM register.
  1186. //
  1187. //*****************************************************************************
  1188. #define EMAC_EPHYIM_INT 0x00000001 // Ethernet PHY Interrupt Mask
  1189. //*****************************************************************************
  1190. //
  1191. // The following are defines for the bit fields in the EMAC_O_EPHYMISC
  1192. // register.
  1193. //
  1194. //*****************************************************************************
  1195. #define EMAC_EPHYMISC_INT 0x00000001 // Ethernet PHY Status and Clear
  1196. // register
  1197. //*****************************************************************************
  1198. //
  1199. // The following are defines for the EPHY register offsets.
  1200. //
  1201. //*****************************************************************************
  1202. #define EPHY_BMCR 0x00000000 // Ethernet PHY Basic Mode Control
  1203. #define EPHY_BMSR 0x00000001 // Ethernet PHY Basic Mode Status
  1204. #define EPHY_ID1 0x00000002 // Ethernet PHY Identifier Register
  1205. // 1
  1206. #define EPHY_ID2 0x00000003 // Ethernet PHY Identifier Register
  1207. // 2
  1208. #define EPHY_ANA 0x00000004 // Ethernet PHY Auto-Negotiation
  1209. // Advertisement
  1210. #define EPHY_ANLPA 0x00000005 // Ethernet PHY Auto-Negotiation
  1211. // Link Partner Ability
  1212. #define EPHY_ANER 0x00000006 // Ethernet PHY Auto-Negotiation
  1213. // Expansion
  1214. #define EPHY_ANNPTR 0x00000007 // Ethernet PHY Auto-Negotiation
  1215. // Next Page TX
  1216. #define EPHY_ANLNPTR 0x00000008 // Ethernet PHY Auto-Negotiation
  1217. // Link Partner Ability Next Page
  1218. #define EPHY_CFG1 0x00000009 // Ethernet PHY Configuration 1
  1219. #define EPHY_CFG2 0x0000000A // Ethernet PHY Configuration 2
  1220. #define EPHY_CFG3 0x0000000B // Ethernet PHY Configuration 3
  1221. #define EPHY_REGCTL 0x0000000D // Ethernet PHY Register Control
  1222. #define EPHY_ADDAR 0x0000000E // Ethernet PHY Address or Data
  1223. #define EPHY_STS 0x00000010 // Ethernet PHY Status
  1224. #define EPHY_SCR 0x00000011 // Ethernet PHY Specific Control
  1225. #define EPHY_MISR1 0x00000012 // Ethernet PHY MII Interrupt
  1226. // Status 1
  1227. #define EPHY_MISR2 0x00000013 // Ethernet PHY MII Interrupt
  1228. // Status 2
  1229. #define EPHY_FCSCR 0x00000014 // Ethernet PHY False Carrier Sense
  1230. // Counter
  1231. #define EPHY_RXERCNT 0x00000015 // Ethernet PHY Receive Error Count
  1232. #define EPHY_BISTCR 0x00000016 // Ethernet PHY BIST Control
  1233. #define EPHY_LEDCR 0x00000018 // Ethernet PHY LED Control
  1234. #define EPHY_CTL 0x00000019 // Ethernet PHY Control
  1235. #define EPHY_10BTSC 0x0000001A // Ethernet PHY 10Base-T
  1236. // Status/Control - MR26
  1237. #define EPHY_BICSR1 0x0000001B // Ethernet PHY BIST Control and
  1238. // Status 1
  1239. #define EPHY_BICSR2 0x0000001C // Ethernet PHY BIST Control and
  1240. // Status 2
  1241. #define EPHY_CDCR 0x0000001E // Ethernet PHY Cable Diagnostic
  1242. // Control
  1243. #define EPHY_RCR 0x0000001F // Ethernet PHY Reset Control
  1244. #define EPHY_LEDCFG 0x00000025 // Ethernet PHY LED Configuration
  1245. //*****************************************************************************
  1246. //
  1247. // The following are defines for the bit fields in the EPHY_BMCR register.
  1248. //
  1249. //*****************************************************************************
  1250. #define EPHY_BMCR_MIIRESET 0x00008000 // MII Register reset
  1251. #define EPHY_BMCR_MIILOOPBK 0x00004000 // MII Loopback
  1252. #define EPHY_BMCR_SPEED 0x00002000 // Speed Select
  1253. #define EPHY_BMCR_ANEN 0x00001000 // Auto-Negotiate Enable
  1254. #define EPHY_BMCR_PWRDWN 0x00000800 // Power Down
  1255. #define EPHY_BMCR_ISOLATE 0x00000400 // Port Isolate
  1256. #define EPHY_BMCR_RESTARTAN 0x00000200 // Restart Auto-Negotiation
  1257. #define EPHY_BMCR_DUPLEXM 0x00000100 // Duplex Mode
  1258. #define EPHY_BMCR_COLLTST 0x00000080 // Collision Test
  1259. //*****************************************************************************
  1260. //
  1261. // The following are defines for the bit fields in the EPHY_BMSR register.
  1262. //
  1263. //*****************************************************************************
  1264. #define EPHY_BMSR_100BTXFD 0x00004000 // 100Base-TX Full Duplex Capable
  1265. #define EPHY_BMSR_100BTXHD 0x00002000 // 100Base-TX Half Duplex Capable
  1266. #define EPHY_BMSR_10BTFD 0x00001000 // 10 Base-T Full Duplex Capable
  1267. #define EPHY_BMSR_10BTHD 0x00000800 // 10 Base-T Half Duplex Capable
  1268. #define EPHY_BMSR_MFPRESUP 0x00000040 // Preamble Suppression Capable
  1269. #define EPHY_BMSR_ANC 0x00000020 // Auto-Negotiation Complete
  1270. #define EPHY_BMSR_RFAULT 0x00000010 // Remote Fault
  1271. #define EPHY_BMSR_ANEN 0x00000008 // Auto Negotiation Enabled
  1272. #define EPHY_BMSR_LINKSTAT 0x00000004 // Link Status
  1273. #define EPHY_BMSR_JABBER 0x00000002 // Jabber Detect
  1274. #define EPHY_BMSR_EXTEN 0x00000001 // Extended Capability Enable
  1275. //*****************************************************************************
  1276. //
  1277. // The following are defines for the bit fields in the EPHY_ID1 register.
  1278. //
  1279. //*****************************************************************************
  1280. #define EPHY_ID1_OUIMSB_M 0x0000FFFF // OUI Most Significant Bits
  1281. #define EPHY_ID1_OUIMSB_S 0
  1282. //*****************************************************************************
  1283. //
  1284. // The following are defines for the bit fields in the EPHY_ID2 register.
  1285. //
  1286. //*****************************************************************************
  1287. #define EPHY_ID2_OUILSB_M 0x0000FC00 // OUI Least Significant Bits
  1288. #define EPHY_ID2_VNDRMDL_M 0x000003F0 // Vendor Model Number
  1289. #define EPHY_ID2_MDLREV_M 0x0000000F // Model Revision Number
  1290. #define EPHY_ID2_OUILSB_S 10
  1291. #define EPHY_ID2_VNDRMDL_S 4
  1292. #define EPHY_ID2_MDLREV_S 0
  1293. //*****************************************************************************
  1294. //
  1295. // The following are defines for the bit fields in the EPHY_ANA register.
  1296. //
  1297. //*****************************************************************************
  1298. #define EPHY_ANA_NP 0x00008000 // Next Page Indication
  1299. #define EPHY_ANA_RF 0x00002000 // Remote Fault
  1300. #define EPHY_ANA_ASMDUP 0x00000800 // Asymmetric PAUSE support for
  1301. // Full Duplex Links
  1302. #define EPHY_ANA_PAUSE 0x00000400 // PAUSE Support for Full Duplex
  1303. // Links
  1304. #define EPHY_ANA_100BT4 0x00000200 // 100Base-T4 Support
  1305. #define EPHY_ANA_100BTXFD 0x00000100 // 100Base-TX Full Duplex Support
  1306. #define EPHY_ANA_100BTX 0x00000080 // 100Base-TX Support
  1307. #define EPHY_ANA_10BTFD 0x00000040 // 10Base-T Full Duplex Support
  1308. #define EPHY_ANA_10BT 0x00000020 // 10Base-T Support
  1309. #define EPHY_ANA_SELECT_M 0x0000001F // Protocol Selection
  1310. #define EPHY_ANA_SELECT_S 0
  1311. //*****************************************************************************
  1312. //
  1313. // The following are defines for the bit fields in the EPHY_ANLPA register.
  1314. //
  1315. //*****************************************************************************
  1316. #define EPHY_ANLPA_NP 0x00008000 // Next Page Indication
  1317. #define EPHY_ANLPA_ACK 0x00004000 // Acknowledge
  1318. #define EPHY_ANLPA_RF 0x00002000 // Remote Fault
  1319. #define EPHY_ANLPA_ASMDUP 0x00000800 // Asymmetric PAUSE
  1320. #define EPHY_ANLPA_PAUSE 0x00000400 // PAUSE
  1321. #define EPHY_ANLPA_100BT4 0x00000200 // 100Base-T4 Support
  1322. #define EPHY_ANLPA_100BTXFD 0x00000100 // 100Base-TX Full Duplex Support
  1323. #define EPHY_ANLPA_100BTX 0x00000080 // 100Base-TX Support
  1324. #define EPHY_ANLPA_10BTFD 0x00000040 // 10Base-T Full Duplex Support
  1325. #define EPHY_ANLPA_10BT 0x00000020 // 10Base-T Support
  1326. #define EPHY_ANLPA_SELECT_M 0x0000001F // Protocol Selection
  1327. #define EPHY_ANLPA_SELECT_S 0
  1328. //*****************************************************************************
  1329. //
  1330. // The following are defines for the bit fields in the EPHY_ANER register.
  1331. //
  1332. //*****************************************************************************
  1333. #define EPHY_ANER_PDF 0x00000010 // Parallel Detection Fault
  1334. #define EPHY_ANER_LPNPABLE 0x00000008 // Link Partner Next Page Able
  1335. #define EPHY_ANER_NPABLE 0x00000004 // Next Page Able
  1336. #define EPHY_ANER_PAGERX 0x00000002 // Link Code Word Page Received
  1337. #define EPHY_ANER_LPANABLE 0x00000001 // Link Partner Auto-Negotiation
  1338. // Able
  1339. //*****************************************************************************
  1340. //
  1341. // The following are defines for the bit fields in the EPHY_ANNPTR register.
  1342. //
  1343. //*****************************************************************************
  1344. #define EPHY_ANNPTR_NP 0x00008000 // Next Page Indication
  1345. #define EPHY_ANNPTR_MP 0x00002000 // Message Page
  1346. #define EPHY_ANNPTR_ACK2 0x00001000 // Acknowledge 2
  1347. #define EPHY_ANNPTR_TOGTX 0x00000800 // Toggle
  1348. #define EPHY_ANNPTR_CODE_M 0x000007FF // Code
  1349. #define EPHY_ANNPTR_CODE_S 0
  1350. //*****************************************************************************
  1351. //
  1352. // The following are defines for the bit fields in the EPHY_ANLNPTR register.
  1353. //
  1354. //*****************************************************************************
  1355. #define EPHY_ANLNPTR_NP 0x00008000 // Next Page Indication
  1356. #define EPHY_ANLNPTR_ACK 0x00004000 // Acknowledge
  1357. #define EPHY_ANLNPTR_MP 0x00002000 // Message Page
  1358. #define EPHY_ANLNPTR_ACK2 0x00001000 // Acknowledge 2
  1359. #define EPHY_ANLNPTR_TOG 0x00000800 // Toggle
  1360. #define EPHY_ANLNPTR_CODE_M 0x000007FF // Code
  1361. #define EPHY_ANLNPTR_CODE_S 0
  1362. //*****************************************************************************
  1363. //
  1364. // The following are defines for the bit fields in the EPHY_CFG1 register.
  1365. //
  1366. //*****************************************************************************
  1367. #define EPHY_CFG1_DONE 0x00008000 // Configuration Done
  1368. #define EPHY_CFG1_TDRAR 0x00000100 // TDR Auto-Run at Link Down
  1369. #define EPHY_CFG1_LLR 0x00000080 // Link Loss Recovery
  1370. #define EPHY_CFG1_FAMDIX 0x00000040 // Fast Auto MDI/MDIX
  1371. #define EPHY_CFG1_RAMDIX 0x00000020 // Robust Auto MDI/MDIX
  1372. #define EPHY_CFG1_FASTANEN 0x00000010 // Fast Auto Negotiation Enable
  1373. #define EPHY_CFG1_FANSEL_M 0x0000000C // Fast Auto-Negotiation Select
  1374. // Configuration
  1375. #define EPHY_CFG1_FANSEL_BLT80 0x00000000 // Break Link Timer: 80 ms
  1376. #define EPHY_CFG1_FANSEL_BLT120 0x00000004 // Break Link Timer: 120 ms
  1377. #define EPHY_CFG1_FANSEL_BLT240 0x00000008 // Break Link Timer: 240 ms
  1378. #define EPHY_CFG1_FRXDVDET 0x00000002 // FAST RXDV Detection
  1379. //*****************************************************************************
  1380. //
  1381. // The following are defines for the bit fields in the EPHY_CFG2 register.
  1382. //
  1383. //*****************************************************************************
  1384. #define EPHY_CFG2_FLUPPD 0x00000040 // Fast Link-Up in Parallel Detect
  1385. // Mode
  1386. #define EPHY_CFG2_EXTFD 0x00000020 // Extended Full-Duplex Ability
  1387. #define EPHY_CFG2_ENLEDLINK 0x00000010 // Enhanced LED Functionality
  1388. #define EPHY_CFG2_ISOMIILL 0x00000008 // Isolate MII outputs when
  1389. // Enhanced Link is not Achievable
  1390. #define EPHY_CFG2_RXERRIDLE 0x00000004 // Detection of Receive Symbol
  1391. // Error During IDLE State
  1392. #define EPHY_CFG2_ODDNDETDIS 0x00000002 // Detection of Transmit Error
  1393. //*****************************************************************************
  1394. //
  1395. // The following are defines for the bit fields in the EPHY_CFG3 register.
  1396. //
  1397. //*****************************************************************************
  1398. #define EPHY_CFG3_POLSWAP 0x00000080 // Polarity Swap
  1399. #define EPHY_CFG3_MDIMDIXS 0x00000040 // MDI/MDIX Swap
  1400. #define EPHY_CFG3_FLDWNM_M 0x0000001F // Fast Link Down Modes
  1401. #define EPHY_CFG3_FLDWNM_S 0
  1402. //*****************************************************************************
  1403. //
  1404. // The following are defines for the bit fields in the EPHY_REGCTL register.
  1405. //
  1406. //*****************************************************************************
  1407. #define EPHY_REGCTL_FUNC_M 0x0000C000 // Function
  1408. #define EPHY_REGCTL_FUNC_ADDR 0x00000000 // Address
  1409. #define EPHY_REGCTL_FUNC_DATANI 0x00004000 // Data, no post increment
  1410. #define EPHY_REGCTL_FUNC_DATAPIRW \
  1411. 0x00008000 // Data, post increment on read and
  1412. // write
  1413. #define EPHY_REGCTL_FUNC_DATAPIWO \
  1414. 0x0000C000 // Data, post increment on write
  1415. // only
  1416. #define EPHY_REGCTL_DEVAD_M 0x0000001F // Device Address
  1417. #define EPHY_REGCTL_DEVAD_S 0
  1418. //*****************************************************************************
  1419. //
  1420. // The following are defines for the bit fields in the EPHY_ADDAR register.
  1421. //
  1422. //*****************************************************************************
  1423. #define EPHY_ADDAR_ADDRDATA_M 0x0000FFFF // Address or Data
  1424. #define EPHY_ADDAR_ADDRDATA_S 0
  1425. //*****************************************************************************
  1426. //
  1427. // The following are defines for the bit fields in the EPHY_STS register.
  1428. //
  1429. //*****************************************************************************
  1430. #define EPHY_STS_MDIXM 0x00004000 // MDI-X Mode
  1431. #define EPHY_STS_RXLERR 0x00002000 // Receive Error Latch
  1432. #define EPHY_STS_POLSTAT 0x00001000 // Polarity Status
  1433. #define EPHY_STS_FCSL 0x00000800 // False Carrier Sense Latch
  1434. #define EPHY_STS_SD 0x00000400 // Signal Detect
  1435. #define EPHY_STS_DL 0x00000200 // Descrambler Lock
  1436. #define EPHY_STS_PAGERX 0x00000100 // Link Code Page Received
  1437. #define EPHY_STS_MIIREQ 0x00000080 // MII Interrupt Pending
  1438. #define EPHY_STS_RF 0x00000040 // Remote Fault
  1439. #define EPHY_STS_JD 0x00000020 // Jabber Detect
  1440. #define EPHY_STS_ANS 0x00000010 // Auto-Negotiation Status
  1441. #define EPHY_STS_MIILB 0x00000008 // MII Loopback Status
  1442. #define EPHY_STS_DUPLEX 0x00000004 // Duplex Status
  1443. #define EPHY_STS_SPEED 0x00000002 // Speed Status
  1444. #define EPHY_STS_LINK 0x00000001 // Link Status
  1445. //*****************************************************************************
  1446. //
  1447. // The following are defines for the bit fields in the EPHY_SCR register.
  1448. //
  1449. //*****************************************************************************
  1450. #define EPHY_SCR_DISCLK 0x00008000 // Disable CLK
  1451. #define EPHY_SCR_PSEN 0x00004000 // Power Saving Modes Enable
  1452. #define EPHY_SCR_PSMODE_M 0x00003000 // Power Saving Modes
  1453. #define EPHY_SCR_PSMODE_NORMAL 0x00000000 // Normal: Normal operation mode.
  1454. // PHY is fully functional
  1455. #define EPHY_SCR_PSMODE_LOWPWR 0x00001000 // IEEE Power Down
  1456. #define EPHY_SCR_PSMODE_ACTWOL 0x00002000 // Active Sleep
  1457. #define EPHY_SCR_PSMODE_PASWOL 0x00003000 // Passive Sleep
  1458. #define EPHY_SCR_SBPYASS 0x00000800 // Scrambler Bypass
  1459. #define EPHY_SCR_LBFIFO_M 0x00000300 // Loopback FIFO Depth
  1460. #define EPHY_SCR_LBFIFO_4 0x00000000 // Four nibble FIFO
  1461. #define EPHY_SCR_LBFIFO_5 0x00000100 // Five nibble FIFO
  1462. #define EPHY_SCR_LBFIFO_6 0x00000200 // Six nibble FIFO
  1463. #define EPHY_SCR_LBFIFO_8 0x00000300 // Eight nibble FIFO
  1464. #define EPHY_SCR_COLFDM 0x00000010 // Collision in Full-Duplex Mode
  1465. #define EPHY_SCR_TINT 0x00000004 // Test Interrupt
  1466. #define EPHY_SCR_INTEN 0x00000002 // Interrupt Enable
  1467. //*****************************************************************************
  1468. //
  1469. // The following are defines for the bit fields in the EPHY_MISR1 register.
  1470. //
  1471. //*****************************************************************************
  1472. #define EPHY_MISR1_LINKSTAT 0x00002000 // Change of Link Status Interrupt
  1473. #define EPHY_MISR1_SPEED 0x00001000 // Change of Speed Status Interrupt
  1474. #define EPHY_MISR1_DUPLEXM 0x00000800 // Change of Duplex Status
  1475. // Interrupt
  1476. #define EPHY_MISR1_ANC 0x00000400 // Auto-Negotiation Complete
  1477. // Interrupt
  1478. #define EPHY_MISR1_FCHF 0x00000200 // False Carrier Counter Half-Full
  1479. // Interrupt
  1480. #define EPHY_MISR1_RXHF 0x00000100 // Receive Error Counter Half-Full
  1481. // Interrupt
  1482. #define EPHY_MISR1_LINKSTATEN 0x00000020 // Link Status Interrupt Enable
  1483. #define EPHY_MISR1_SPEEDEN 0x00000010 // Speed Change Interrupt Enable
  1484. #define EPHY_MISR1_DUPLEXMEN 0x00000008 // Duplex Status Interrupt Enable
  1485. #define EPHY_MISR1_ANCEN 0x00000004 // Auto-Negotiation Complete
  1486. // Interrupt Enable
  1487. #define EPHY_MISR1_FCHFEN 0x00000002 // False Carrier Counter Register
  1488. // half-full Interrupt Enable
  1489. #define EPHY_MISR1_RXHFEN 0x00000001 // Receive Error Counter Register
  1490. // Half-Full Event Interrupt
  1491. //*****************************************************************************
  1492. //
  1493. // The following are defines for the bit fields in the EPHY_MISR2 register.
  1494. //
  1495. //*****************************************************************************
  1496. #define EPHY_MISR2_ANERR 0x00004000 // Auto-Negotiation Error Interrupt
  1497. #define EPHY_MISR2_PAGERX 0x00002000 // Page Receive Interrupt
  1498. #define EPHY_MISR2_LBFIFO 0x00001000 // Loopback FIFO Overflow/Underflow
  1499. // Event Interrupt
  1500. #define EPHY_MISR2_MDICO 0x00000800 // MDI/MDIX Crossover Status
  1501. // Changed Interrupt
  1502. #define EPHY_MISR2_SLEEP 0x00000400 // Sleep Mode Event Interrupt
  1503. #define EPHY_MISR2_POLINT 0x00000200 // Polarity Changed Interrupt
  1504. #define EPHY_MISR2_JABBER 0x00000100 // Jabber Detect Event Interrupt
  1505. #define EPHY_MISR2_ANERREN 0x00000040 // Auto-Negotiation Error Interrupt
  1506. // Enable
  1507. #define EPHY_MISR2_PAGERXEN 0x00000020 // Page Receive Interrupt Enable
  1508. #define EPHY_MISR2_LBFIFOEN 0x00000010 // Loopback FIFO Overflow/Underflow
  1509. // Interrupt Enable
  1510. #define EPHY_MISR2_MDICOEN 0x00000008 // MDI/MDIX Crossover Status
  1511. // Changed Interrupt Enable
  1512. #define EPHY_MISR2_SLEEPEN 0x00000004 // Sleep Mode Event Interrupt
  1513. // Enable
  1514. #define EPHY_MISR2_POLINTEN 0x00000002 // Polarity Changed Interrupt
  1515. // Enable
  1516. #define EPHY_MISR2_JABBEREN 0x00000001 // Jabber Detect Event Interrupt
  1517. // Enable
  1518. //*****************************************************************************
  1519. //
  1520. // The following are defines for the bit fields in the EPHY_FCSCR register.
  1521. //
  1522. //*****************************************************************************
  1523. #define EPHY_FCSCR_FCSCNT_M 0x000000FF // False Carrier Event Counter
  1524. #define EPHY_FCSCR_FCSCNT_S 0
  1525. //*****************************************************************************
  1526. //
  1527. // The following are defines for the bit fields in the EPHY_RXERCNT register.
  1528. //
  1529. //*****************************************************************************
  1530. #define EPHY_RXERCNT_RXERRCNT_M 0x0000FFFF // Receive Error Count
  1531. #define EPHY_RXERCNT_RXERRCNT_S 0
  1532. //*****************************************************************************
  1533. //
  1534. // The following are defines for the bit fields in the EPHY_BISTCR register.
  1535. //
  1536. //*****************************************************************************
  1537. #define EPHY_BISTCR_PRBSM 0x00004000 // PRBS Single/Continuous Mode
  1538. #define EPHY_BISTCR_PRBSPKT 0x00002000 // Generated PRBS Packets
  1539. #define EPHY_BISTCR_PKTEN 0x00001000 // Packet Generation Enable
  1540. #define EPHY_BISTCR_PRBSCHKLK 0x00000800 // PRBS Checker Lock Indication
  1541. #define EPHY_BISTCR_PRBSCHKSYNC 0x00000400 // PRBS Checker Lock Sync Loss
  1542. // Indication
  1543. #define EPHY_BISTCR_PKTGENSTAT 0x00000200 // Packet Generator Status
  1544. // Indication
  1545. #define EPHY_BISTCR_PWRMODE 0x00000100 // Power Mode Indication
  1546. #define EPHY_BISTCR_TXMIILB 0x00000040 // Transmit Data in MII Loopback
  1547. // Mode
  1548. #define EPHY_BISTCR_LBMODE_M 0x0000001F // Loopback Mode Select
  1549. #define EPHY_BISTCR_LBMODE_NPCSIN \
  1550. 0x00000001 // Near-end loopback: PCS Input
  1551. // Loopback
  1552. #define EPHY_BISTCR_LBMODE_NPCSOUT \
  1553. 0x00000002 // Near-end loopback: PCS Output
  1554. // Loopback (In 100Base-TX only)
  1555. #define EPHY_BISTCR_LBMODE_NDIG 0x00000004 // Near-end loopback: Digital
  1556. // Loopback
  1557. #define EPHY_BISTCR_LBMODE_NANA 0x00000008 // Near-end loopback: Analog
  1558. // Loopback (requires 100 Ohm
  1559. // termination)
  1560. #define EPHY_BISTCR_LBMODE_FREV 0x00000010 // Far-end Loopback: Reverse
  1561. // Loopback
  1562. //*****************************************************************************
  1563. //
  1564. // The following are defines for the bit fields in the EPHY_LEDCR register.
  1565. //
  1566. //*****************************************************************************
  1567. #define EPHY_LEDCR_BLINKRATE_M 0x00000600 // LED Blinking Rate (ON/OFF
  1568. // duration):
  1569. #define EPHY_LEDCR_BLINKRATE_20HZ \
  1570. 0x00000000 // 20 Hz (50 ms)
  1571. #define EPHY_LEDCR_BLINKRATE_10HZ \
  1572. 0x00000200 // 10 Hz (100 ms)
  1573. #define EPHY_LEDCR_BLINKRATE_5HZ \
  1574. 0x00000400 // 5 Hz (200 ms)
  1575. #define EPHY_LEDCR_BLINKRATE_2HZ \
  1576. 0x00000600 // 2 Hz (500 ms)
  1577. //*****************************************************************************
  1578. //
  1579. // The following are defines for the bit fields in the EPHY_CTL register.
  1580. //
  1581. //*****************************************************************************
  1582. #define EPHY_CTL_AUTOMDI 0x00008000 // Auto-MDIX Enable
  1583. #define EPHY_CTL_FORCEMDI 0x00004000 // Force MDIX
  1584. #define EPHY_CTL_PAUSERX 0x00002000 // Pause Receive Negotiated Status
  1585. #define EPHY_CTL_PAUSETX 0x00001000 // Pause Transmit Negotiated Status
  1586. #define EPHY_CTL_MIILNKSTAT 0x00000800 // MII Link Status
  1587. #define EPHY_CTL_BYPLEDSTRCH 0x00000080 // Bypass LED Stretching
  1588. //*****************************************************************************
  1589. //
  1590. // The following are defines for the bit fields in the EPHY_10BTSC register.
  1591. //
  1592. //*****************************************************************************
  1593. #define EPHY_10BTSC_RXTHEN 0x00002000 // Lower Receiver Threshold Enable
  1594. #define EPHY_10BTSC_SQUELCH_M 0x00001E00 // Squelch Configuration
  1595. #define EPHY_10BTSC_NLPDIS 0x00000080 // Normal Link Pulse (NLP)
  1596. // Transmission Control
  1597. #define EPHY_10BTSC_POLSTAT 0x00000010 // 10 Mb Polarity Status
  1598. #define EPHY_10BTSC_JABBERD 0x00000001 // Jabber Disable
  1599. #define EPHY_10BTSC_SQUELCH_S 9
  1600. //*****************************************************************************
  1601. //
  1602. // The following are defines for the bit fields in the EPHY_BICSR1 register.
  1603. //
  1604. //*****************************************************************************
  1605. #define EPHY_BICSR1_ERRCNT_M 0x0000FF00 // BIST Error Count
  1606. #define EPHY_BICSR1_IPGLENGTH_M 0x000000FF // BIST IPG Length
  1607. #define EPHY_BICSR1_ERRCNT_S 8
  1608. #define EPHY_BICSR1_IPGLENGTH_S 0
  1609. //*****************************************************************************
  1610. //
  1611. // The following are defines for the bit fields in the EPHY_BICSR2 register.
  1612. //
  1613. //*****************************************************************************
  1614. #define EPHY_BICSR2_PKTLENGTH_M 0x000007FF // BIST Packet Length
  1615. #define EPHY_BICSR2_PKTLENGTH_S 0
  1616. //*****************************************************************************
  1617. //
  1618. // The following are defines for the bit fields in the EPHY_CDCR register.
  1619. //
  1620. //*****************************************************************************
  1621. #define EPHY_CDCR_START 0x00008000 // Cable Diagnostic Process Start
  1622. #define EPHY_CDCR_LINKQUAL_M 0x00000300 // Link Quality Indication
  1623. #define EPHY_CDCR_LINKQUAL_GOOD 0x00000100 // Good Quality Link Indication
  1624. #define EPHY_CDCR_LINKQUAL_MILD 0x00000200 // Mid- Quality Link Indication
  1625. #define EPHY_CDCR_LINKQUAL_POOR 0x00000300 // Poor Quality Link Indication
  1626. #define EPHY_CDCR_DONE 0x00000002 // Cable Diagnostic Process Done
  1627. #define EPHY_CDCR_FAIL 0x00000001 // Cable Diagnostic Process Fail
  1628. //*****************************************************************************
  1629. //
  1630. // The following are defines for the bit fields in the EPHY_RCR register.
  1631. //
  1632. //*****************************************************************************
  1633. #define EPHY_RCR_SWRST 0x00008000 // Software Reset
  1634. #define EPHY_RCR_SWRESTART 0x00004000 // Software Restart
  1635. //*****************************************************************************
  1636. //
  1637. // The following are defines for the bit fields in the EPHY_LEDCFG register.
  1638. //
  1639. //*****************************************************************************
  1640. #define EPHY_LEDCFG_LED2_M 0x00000F00 // LED2 Configuration
  1641. #define EPHY_LEDCFG_LED2_LINK 0x00000000 // Link OK
  1642. #define EPHY_LEDCFG_LED2_RXTX 0x00000100 // RX/TX Activity
  1643. #define EPHY_LEDCFG_LED2_TX 0x00000200 // TX Activity
  1644. #define EPHY_LEDCFG_LED2_RX 0x00000300 // RX Activity
  1645. #define EPHY_LEDCFG_LED2_COL 0x00000400 // Collision
  1646. #define EPHY_LEDCFG_LED2_100BT 0x00000500 // 100-Base TX
  1647. #define EPHY_LEDCFG_LED2_10BT 0x00000600 // 10-Base TX
  1648. #define EPHY_LEDCFG_LED2_FD 0x00000700 // Full Duplex
  1649. #define EPHY_LEDCFG_LED2_LINKTXRX \
  1650. 0x00000800 // Link OK/Blink on TX/RX Activity
  1651. #define EPHY_LEDCFG_LED1_M 0x000000F0 // LED1 Configuration
  1652. #define EPHY_LEDCFG_LED1_LINK 0x00000000 // Link OK
  1653. #define EPHY_LEDCFG_LED1_RXTX 0x00000010 // RX/TX Activity
  1654. #define EPHY_LEDCFG_LED1_TX 0x00000020 // TX Activity
  1655. #define EPHY_LEDCFG_LED1_RX 0x00000030 // RX Activity
  1656. #define EPHY_LEDCFG_LED1_COL 0x00000040 // Collision
  1657. #define EPHY_LEDCFG_LED1_100BT 0x00000050 // 100-Base TX
  1658. #define EPHY_LEDCFG_LED1_10BT 0x00000060 // 10-Base TX
  1659. #define EPHY_LEDCFG_LED1_FD 0x00000070 // Full Duplex
  1660. #define EPHY_LEDCFG_LED1_LINKTXRX \
  1661. 0x00000080 // Link OK/Blink on TX/RX Activity
  1662. #define EPHY_LEDCFG_LED0_M 0x0000000F // LED0 Configuration
  1663. #define EPHY_LEDCFG_LED0_LINK 0x00000000 // Link OK
  1664. #define EPHY_LEDCFG_LED0_RXTX 0x00000001 // RX/TX Activity
  1665. #define EPHY_LEDCFG_LED0_TX 0x00000002 // TX Activity
  1666. #define EPHY_LEDCFG_LED0_RX 0x00000003 // RX Activity
  1667. #define EPHY_LEDCFG_LED0_COL 0x00000004 // Collision
  1668. #define EPHY_LEDCFG_LED0_100BT 0x00000005 // 100-Base TX
  1669. #define EPHY_LEDCFG_LED0_10BT 0x00000006 // 10-Base TX
  1670. #define EPHY_LEDCFG_LED0_FD 0x00000007 // Full Duplex
  1671. #define EPHY_LEDCFG_LED0_LINKTXRX \
  1672. 0x00000008 // Link OK/Blink on TX/RX Activity
  1673. //*****************************************************************************
  1674. //
  1675. // The following definitions are deprecated.
  1676. //
  1677. //*****************************************************************************
  1678. #ifndef DEPRECATED
  1679. //*****************************************************************************
  1680. //
  1681. // The following are deprecated defines for the bit fields in the
  1682. // EMAC_O_PPSCTRL register.
  1683. //
  1684. //*****************************************************************************
  1685. #define EMAC_PPSCTRL_PPSCTRL_1HZ \
  1686. 0x00000000 // When the PPSEN0 bit = 0x0, the
  1687. // EN0PPS signal is 1 pulse of the
  1688. // PTP reference clock.(of width
  1689. // clk_ptp_i) every second
  1690. #define EMAC_PPSCTRL_PPSCTRL_2HZ \
  1691. 0x00000001 // When the PPSEN0 bit = 0x0, the
  1692. // binary rollover is 2 Hz, and the
  1693. // digital rollover is 1 Hz
  1694. #define EMAC_PPSCTRL_PPSCTRL_4HZ \
  1695. 0x00000002 // When the PPSEN0 bit = 0x0, the
  1696. // binary rollover is 4 Hz, and the
  1697. // digital rollover is 2 Hz
  1698. #define EMAC_PPSCTRL_PPSCTRL_8HZ \
  1699. 0x00000003 // When thePPSEN0 bit = 0x0, the
  1700. // binary rollover is 8 Hz, and the
  1701. // digital rollover is 4 Hz,
  1702. #define EMAC_PPSCTRL_PPSCTRL_16HZ \
  1703. 0x00000004 // When thePPSEN0 bit = 0x0, the
  1704. // binary rollover is 16 Hz, and
  1705. // the digital rollover is 8 Hz
  1706. #define EMAC_PPSCTRL_PPSCTRL_32HZ \
  1707. 0x00000005 // When thePPSEN0 bit = 0x0, the
  1708. // binary rollover is 32 Hz, and
  1709. // the digital rollover is 16 Hz
  1710. #define EMAC_PPSCTRL_PPSCTRL_64HZ \
  1711. 0x00000006 // When thePPSEN0 bit = 0x0, the
  1712. // binary rollover is 64 Hz, and
  1713. // the digital rollover is 32 Hz
  1714. #define EMAC_PPSCTRL_PPSCTRL_128HZ \
  1715. 0x00000007 // When thePPSEN0 bit = 0x0, the
  1716. // binary rollover is 128 Hz, and
  1717. // the digital rollover is 64 Hz
  1718. #define EMAC_PPSCTRL_PPSCTRL_256HZ \
  1719. 0x00000008 // When thePPSEN0 bit = 0x0, the
  1720. // binary rollover is 256 Hz, and
  1721. // the digital rollover is 128 Hz
  1722. #define EMAC_PPSCTRL_PPSCTRL_512HZ \
  1723. 0x00000009 // When thePPSEN0 bit = 0x0, the
  1724. // binary rollover is 512 Hz, and
  1725. // the digital rollover is 256 Hz
  1726. #define EMAC_PPSCTRL_PPSCTRL_1024HZ \
  1727. 0x0000000A // When the PPSEN0 bit = 0x0, the
  1728. // binary rollover is 1.024 kHz,
  1729. // and the digital rollover is 512
  1730. // Hz
  1731. #define EMAC_PPSCTRL_PPSCTRL_2048HZ \
  1732. 0x0000000B // When thePPSEN0 bit = 0x0, the
  1733. // binary rollover is 2.048 kHz,
  1734. // and the digital rollover is
  1735. // 1.024 kHz
  1736. #define EMAC_PPSCTRL_PPSCTRL_4096HZ \
  1737. 0x0000000C // When thePPSEN0 bit = 0x0, the
  1738. // binary rollover is 4.096 kHz,
  1739. // and the digital rollover is
  1740. // 2.048 kHz
  1741. #define EMAC_PPSCTRL_PPSCTRL_8192HZ \
  1742. 0x0000000D // When thePPSEN0 bit = 0x0, the
  1743. // binary rollover is 8.192 kHz,
  1744. // and the digital rollover is
  1745. // 4.096 kHz
  1746. #define EMAC_PPSCTRL_PPSCTRL_16384HZ \
  1747. 0x0000000E // When thePPSEN0 bit = 0x0, the
  1748. // binary rollover is 16.384 kHz,
  1749. // and the digital rollover is
  1750. // 8.092 kHz
  1751. #define EMAC_PPSCTRL_PPSCTRL_32768HZ \
  1752. 0x0000000F // When thePPSEN0 bit = 0x0, the
  1753. // binary rollover is 32.768 KHz,
  1754. // and the digital rollover is
  1755. // 16.384 KHz
  1756. //*****************************************************************************
  1757. //
  1758. // The following are deprecated defines for the bit fields in the EMAC_O_CC
  1759. // register.
  1760. //
  1761. //*****************************************************************************
  1762. #define EMAC_CC_CS_PA7 0x00000001 // GPIO
  1763. #endif
  1764. #endif // __HW_EMAC_H__