hal_eth.h 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file HAL_eth.h
  3. /// @author AE TEAM
  4. /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE HAL_eth.h EXAMPLES.
  5. /// ////////////////////////////////////////////////////////////////////////////
  6. /// @attention
  7. ///
  8. /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
  9. /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
  10. /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
  11. /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
  12. /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
  13. /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
  14. ///
  15. /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
  16. ////////////////////////////////////////////////////////////////////////////////
  17. #ifndef __HAL_ETH_H
  18. #define __HAL_ETH_H
  19. // Files includes
  20. #include "types.h"
  21. #include "mm32_device.h"
  22. #include "HAL_eth_conf.h"
  23. ////////////////////////////////////////////////////////////////////////////////
  24. /// @addtogroup MM32_Hardware_Abstract_Layer
  25. /// @{
  26. ////////////////////////////////////////////////////////////////////////////////
  27. /// @defgroup ETH_HAL
  28. /// @brief ETH HAL modules
  29. /// @{
  30. ////////////////////////////////////////////////////////////////////////////////
  31. /// @defgroup ETH_Exported_Types
  32. /// @{
  33. ////////////////////////////////////////////////////////////////////////////////
  34. ////////////////////////////////////////////////////////////////////////////////
  35. // ETH | Header | Extra | VLAN tag | Payload | CRC |
  36. // Size | 14 | 2 | 4 | 46 ~ 1500 | 4 |
  37. #define ETH_MAX_PACKET_SIZE 1524
  38. #define ETH_HEADER 14 ///< MAC Dest Addr 6 byte + MAC Src Addr 6 byte + Lenth/Type 2 byte
  39. #define ETH_EXTRA 2
  40. #define VLAN_TAG 4
  41. #define ETH_PAYLOAD_MIN 46
  42. #define ETH_PAYLOAD_MAX 1500
  43. #define JUMBO_FRAME_PAYLOAD 9000
  44. #ifndef ETH_RX_BUF_SIZE
  45. #define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE
  46. #endif
  47. #ifndef ETH_RX_BUF_NUM
  48. #define ETH_RX_BUF_NUM 4
  49. #endif
  50. #ifndef ETH_TX_BUF_SIZE
  51. #define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE
  52. #endif
  53. #ifndef ETH_TX_BUF_NUM
  54. #define ETH_TX_BUF_NUM 4
  55. #endif
  56. #define ETH_DMA_RDES_FL_Pos 16 ///< Ethernet DMA Received Frame Length Position
  57. #define ETH_WAKEUP_REGISTER_LENGTH 8 ///< ETHERNET Remote Wake-up frame register length
  58. #define ETH_DMA_RX_OVERFLOW_MISSEDFRAMES_COUNTERSHIFT 17 ///< ETHERNET Missed frames counter Shift
  59. #define ETH_DMA_TDES_COLLISION_COUNTSHIFT 3 ///< ETHERNET DMA Tx descriptors Collision Count Shift
  60. #define ETH_DMA_TDES_BUFFER2_SIZESHIFT 11 ///< ETHERNET DMA Tx descriptors Buffer2 Size Shift
  61. #define ETH_DMA_RDES_FRAME_LENGTHSHIFT 16 ///< ETHERNET DMA Rx descriptors Frame Length Shift
  62. #define ETH_DMA_RDES_BUFFER2_SIZESHIFT 11 ///< ETHERNET DMA Rx descriptors Buffer2 Size Shift
  63. ///< ETHERNET errors
  64. #define ETH_ERROR ((u32)0)
  65. #define ETH_SUCCESS ((u32)1)
  66. #ifdef _HAL_ETH_C_
  67. #define GLOBAL
  68. #else
  69. #define GLOBAL extern
  70. #endif
  71. ////////////////////////////////////////////////////////////////////////////////
  72. /// @brief ETH Init Structure Definition
  73. ////////////////////////////////////////////////////////////////////////////////
  74. typedef struct {
  75. __IO u32 ETH_AutoNegotiation;
  76. __IO u32 ETH_Watchdog;
  77. __IO u32 ETH_Jabber;
  78. __IO u32 ETH_InterFrameGap;
  79. __IO u32 ETH_CarrierSense;
  80. __IO u32 ETH_Speed;
  81. __IO u32 ETH_ReceiveOwn;
  82. __IO u32 ETH_LoopbackMode;
  83. __IO u32 ETH_Mode;
  84. __IO u32 ETH_ChecksumOffload;
  85. __IO u32 ETH_RetryTransmission;
  86. __IO u32 ETH_AutomaticPadCRCStrip;
  87. __IO u32 ETH_BackOffLimit;
  88. __IO u32 ETH_DeferralCheck;
  89. __IO u32 ETH_ReceiveAll;
  90. __IO u32 ETH_SourceAddrFilter;
  91. __IO u32 ETH_PassControlFrames;
  92. __IO u32 ETH_BroadcastFramesReception;
  93. __IO u32 ETH_DestinationAddrFilter;
  94. __IO u32 ETH_PromiscuousMode;
  95. __IO u32 ETH_MulticastFramesFilter;
  96. __IO u32 ETH_UnicastFramesFilter;
  97. __IO u32 ETH_HashTableHigh;
  98. __IO u32 ETH_HashTableLow;
  99. __IO u32 ETH_PauseTime;
  100. __IO u32 ETH_ZeroQuantaPause;
  101. __IO u32 ETH_PauseLowThreshold;
  102. __IO u32 ETH_UnicastPauseFrameDetect;
  103. __IO u32 ETH_ReceiveFlowControl;
  104. __IO u32 ETH_TransmitFlowControl;
  105. __IO u32 ETH_VLANTagComparison;
  106. __IO u32 ETH_VLANTagIdentifier;
  107. __IO u32 ETH_DropTCPIPChecksumErrorFrame;
  108. __IO u32 ETH_ReceiveStoreForward;
  109. __IO u32 ETH_FlushReceivedFrame;
  110. __IO u32 ETH_TransmitStoreForward;
  111. __IO u32 ETH_TransmitThresholdControl;
  112. __IO u32 ETH_ForwardErrorFrames;
  113. __IO u32 ETH_ForwardUndersizedGoodFrames;
  114. __IO u32 ETH_ReceiveThresholdControl;
  115. __IO u32 ETH_SecondFrameOperate;
  116. __IO u32 ETH_AddressAlignedBeats;
  117. __IO u32 ETH_FixedBurst;
  118. __IO u32 ETH_RxDMABurstLength;
  119. __IO u32 ETH_TxDMABurstLength;
  120. __IO u32 ETH_DescriptorSkipLength;
  121. __IO u32 ETH_DMAArbitration;
  122. } ETH_InitTypeDef;
  123. typedef struct {
  124. __IO u32 CS; ///< Control and Status
  125. __IO u32 BL; ///< Buffer1, Buffer2 lengths
  126. __IO u32 BUF1ADDR; ///< Buffer1 address pointer
  127. __IO u32 BUF2NDADDR; ///< Buffer2 or next descriptor address pointer
  128. #ifdef USE_ENHANCED_DMA_DESCRIPTORS ///< Enhanced ETHERNET DMA PTP Descriptors
  129. __IO u32 ExtendedStatus; ///< Extended status for PTP receive descriptor
  130. __IO u32 Reserved1; ///< Reserved
  131. __IO u32 TimeStampLow; ///< Time Stamp Low value for transmit and receive
  132. __IO u32 TimeStampHigh; ///< Time Stamp High value for transmit and receive
  133. #endif
  134. } ETH_DMADESCTypeDef;
  135. typedef struct {
  136. __IO u32 len;
  137. __IO u32 buf;
  138. __IO ETH_DMADESCTypeDef* ptrDesc;
  139. } FrameTypeDef;
  140. typedef struct {
  141. __IO ETH_DMADESCTypeDef* ptrFS_Rx_Desc; ///< First Segment Rx Desc
  142. __IO ETH_DMADESCTypeDef* ptrLS_Rx_Desc; ///< Last Segment Rx Desc
  143. __IO u32 cnt; ///< Segment count
  144. } ETH_DMA_Rx_Frame_infos;
  145. #define ETH_DMA_TDES_OWN ((u32)0x80000000) ///< OWN bit: descriptor is owned by DMA engine
  146. #define ETH_DMA_TDES_ES ((u32)0x00008000) ///< Error summary: OR of the following bits: UE || ED || EC || LCO || NC || LCA || FF || JT
  147. #define ETH_DMA_TDES_JT ((u32)0x00004000) ///< Jabber Timeout
  148. #define ETH_DMA_TDES_FF ((u32)0x00002000) ///< Frame Flushed: DMA/MTL flushed the frame due to SW flush
  149. #define ETH_DMA_TDES_LCA ((u32)0x00000800) ///< Loss of Carrier: carrier lost during transmission
  150. #define ETH_DMA_TDES_NC ((u32)0x00000400) ///< No Carrier: no carrier signal from the transceiver
  151. #define ETH_DMA_TDES_LCO ((u32)0x00000200) ///< Late Collision: transmission aborted due to collision
  152. #define ETH_DMA_TDES_EC ((u32)0x00000100) ///< Excessive Collision: transmission aborted after 16 collisions
  153. #define ETH_DMA_TDES_VF ((u32)0x00000080) ///< VLAN Frame
  154. #define ETH_DMA_TDES_CC ((u32)0x00000078) ///< Collision Count
  155. #define ETH_DMA_TDES_ED ((u32)0x00000004) ///< Excessive Deferral
  156. #define ETH_DMA_TDES_UF ((u32)0x00000002) ///< Underflow Error: late data arrival from the memory
  157. #define ETH_DMA_TDES_DB ((u32)0x00000001) ///< Deferred Bit
  158. #define ETH_DMA_TDES_IC ((u32)0x80000000) ///< Interrupt on Completion
  159. #define ETH_DMA_TDES_LS ((u32)0x40000000) ///< Last Segment
  160. #define ETH_DMA_TDES_FS ((u32)0x20000000) ///< First Segment
  161. #define ETH_DMA_TDES_DC ((u32)0x04000000) ///< Disable CRC
  162. #define ETH_DMA_TDES_TER ((u32)0x02000000) ///< Transmit end of ring
  163. #define ETH_DMA_TDES_TCH ((u32)0x01000000) ///< Second Address Chained
  164. #define ETH_DMA_TDES_DP ((u32)0x00800000) ///< Disable Padding
  165. #define ETH_DMA_TDES_TBS2 ((u32)0x003FF800) ///< Transmit Buffer 2 Size
  166. #define ETH_DMA_TDES_TBS1 ((u32)0x000007FF) ///< Transmit Buffer 1 Size
  167. #define ETH_DMA_TDES_B1AP ((u32)0xFFFFFFFF) ///< Buffer 1 Address Pointer
  168. #define ETH_DMA_TDES_B2AP ((u32)0xFFFFFFFF) ///< Buffer 2 Address Pointer
  169. #if defined(USE_ENHANCED_DMA_DESCRIPTORS)
  170. #define ETH_DMA_PTP_TDES_TTSL ((u32)0xFFFFFFFF) ///< Transmit Time Stamp Low
  171. #define ETH_DMA_PTP_TDES_TTSH ((u32)0xFFFFFFFF) ///< Transmit Time Stamp High
  172. #endif
  173. #define ETH_DMA_RDES_OWN ((u32)0x80000000) ///< OWN bit: descriptor is owned by DMA engine
  174. #define ETH_DMA_RDES_AFM ((u32)0x40000000) ///< DA Filter Fail for the rx frame
  175. #define ETH_DMA_RDES_FL ((u32)0x3FFF0000) ///< Receive descriptor frame length
  176. #define ETH_DMA_RDES_ES ((u32)0x00008000) ///< Error summary: OR of the following bits: DE || OE || IPC || LC || RWT || RE || CE
  177. #define ETH_DMA_RDES_DE ((u32)0x00004000) ///< Descriptor error: no more descriptors for receive frame
  178. #define ETH_DMA_RDES_SAF ((u32)0x00002000) ///< SA Filter Fail for the received frame
  179. #define ETH_DMA_RDES_LE ((u32)0x00001000) ///< Frame size not matching with length field
  180. #define ETH_DMA_RDES_OE ((u32)0x00000800) ///< Overflow Error: Frame was damaged due to buffer overflow
  181. #define ETH_DMA_RDES_VLAN ((u32)0x00000400) ///< VLAN Tag: received frame is a VLAN frame
  182. #define ETH_DMA_RDES_FS ((u32)0x00000200) ///< First descriptor of the frame
  183. #define ETH_DMA_RDES_LS ((u32)0x00000100) ///< Last descriptor of the frame
  184. #define ETH_DMA_RDES_IPV4HCE ((u32)0x00000080) ///< IPC Checksum Error: Rx Ipv4 header checksum error
  185. #define ETH_DMA_RDES_LC ((u32)0x00000040) ///< Late collision occurred during reception
  186. #define ETH_DMA_RDES_FT ((u32)0x00000020) ///< Frame type - Ethernet, otherwise 802.3
  187. #define ETH_DMA_RDES_RWT ((u32)0x00000010) ///< Receive Watchdog Timeout: watchdog timer expired during reception
  188. #define ETH_DMA_RDES_RE ((u32)0x00000008) ///< Receive error: error reported by MII interface
  189. #define ETH_DMA_RDES_DBE ((u32)0x00000004) ///< Dribble bit error: frame contains non int multiple of 8 bits
  190. #define ETH_DMA_RDES_CE ((u32)0x00000002) ///< CRC error
  191. #define ETH_DMA_RDES_MAMPCE ((u32)0x00000001) ///< Rx MAC Address/Payload Checksum Error: Rx MAC address matched/ Rx Payload Checksum Error
  192. #define ETH_DMA_RDES_DIC ((u32)0x80000000) ///< Disable Interrupt on Completion
  193. #define ETH_DMA_RDES_RER ((u32)0x02000000) ///< Receive End of Ring
  194. #define ETH_DMA_RDES_RCH ((u32)0x01000000) ///< Second Address Chained
  195. #define ETH_DMA_RDES_RBS2 ((u32)0x003FF800) ///< Receive Buffer2 Size
  196. #define ETH_DMA_RDES_RBS1 ((u32)0x000007FF) ///< Receive Buffer1 Size
  197. #define ETH_DMA_RDES_B1AP ((u32)0xFFFFFFFF) ///< Buffer 1 Address Pointer
  198. #define ETH_DMA_RDES_B2AP ((u32)0xFFFFFFFF) ///< Buffer 2 Address Pointer
  199. #if defined(USE_ENHANCED_DMA_DESCRIPTORS)
  200. #define ETH_DMA_PTP_RDES_PTPV ((u32)0x00002000) ///< PTP Version
  201. #define ETH_DMA_PTP_RDES_PTPFT ((u32)0x00001000) ///< PTP Frame Type
  202. #define ETH_DMA_PTP_RDES_PTPMT ((u32)0x00000F00) ///< PTP Message Type
  203. #define ETH_DMA_PTP_RDES_PTPMT_Sync ((u32)0x00000100) ///< SYNC message (all clock types)
  204. #define ETH_DMA_PTP_RDES_PTPMT_FollowUp ((u32)0x00000200) ///< FollowUp message (all clock types)
  205. #define ETH_DMA_PTP_RDES_PTPMT_DelayReq ((u32)0x00000300) ///< DelayReq message (all clock types)
  206. #define ETH_DMA_PTP_RDES_PTPMT_DelayResp ((u32)0x00000400) ///< DelayResp message (all clock types)
  207. #define ETH_DMA_PTP_RDES_PTPMT_PdelayReq_Announce ((u32)0x00000500) ///< PdelayReq message (peer-to-peer transparent clock) or Announce message (Ordinary or Boundary clock)
  208. #define ETH_DMA_PTP_RDES_PTPMT_PdelayResp_Manag ((u32)0x00000600) ///< PdelayResp message (peer-to-peer transparent clock) or Management message (Ordinary or Boundary clock)
  209. #define ETH_DMA_PTP_RDES_PTPMT_PdelayRespFollowUp_Signal ((u32)0x00000700) ///< PdelayRespFollowUp message (peer-to-peer transparent clock) or Signaling message (Ordinary or Boundary clock)
  210. #define ETH_DMA_PTP_RDES_IPV6PR ((u32)0x00000080) ///< IPv6 Packet Received
  211. #define ETH_DMA_PTP_RDES_IPV4PR ((u32)0x00000040) ///< IPv4 Packet Received
  212. #define ETH_DMA_PTP_RDES_IPCB ((u32)0x00000020) ///< IP Checksum Bypassed
  213. #define ETH_DMA_PTP_RDES_IPPE ((u32)0x00000010) ///< IP Payload Error
  214. #define ETH_DMA_PTP_RDES_IPHE ((u32)0x00000008) ///< IP Header Error
  215. #define ETH_DMA_PTP_RDES_IPPT ((u32)0x00000007) ///< IP Payload Type
  216. #define ETH_DMA_PTP_RDES_IPPT_UDP ((u32)0x00000001) ///< UDP payload encapsulated in the IP datagram
  217. #define ETH_DMA_PTP_RDES_IPPT_TCP ((u32)0x00000002) ///< TCP payload encapsulated in the IP datagram
  218. #define ETH_DMA_PTP_RDES_IPPT_ICMP ((u32)0x00000003) ///< ICMP payload encapsulated in the IP datagram
  219. #define ETH_DMA_PTP_RDES_TTSL ((u32)0xFFFFFFFF) ///< Receive Time Stamp Low
  220. #define ETH_DMA_PTP_RDES_TTSH ((u32)0xFFFFFFFF) ///< Receive Time Stamp High
  221. #endif
  222. ////////////////////////////////////////////////////////////////////////////////
  223. #define PHY_READ_TIMEOUT ((u32)0x0004FFFF)
  224. #define PHY_WRITE_TIMEOUT ((u32)0x0004FFFF)
  225. #define PHY_BCR 0 ///< Transceiver Basic Control Register
  226. #define PHY_BSR 1 ///< Transceiver Basic Status Register
  227. #define PHY_Reset ((u16)0x8000) ///< PHY Reset
  228. #define PHY_Loopback ((u16)0x4000) ///< Select loop-back mode
  229. #define PHY_FULLDUPLEX_100M ((u16)0x2100) ///< Set the full-duplex mode at 100 Mb/s
  230. #define PHY_HALFDUPLEX_100M ((u16)0x2000) ///< Set the half-duplex mode at 100 Mb/s
  231. #define PHY_FULLDUPLEX_10M ((u16)0x0100) ///< Set the full-duplex mode at 10 Mb/s
  232. #define PHY_HALFDUPLEX_10M ((u16)0x0000) ///< Set the half-duplex mode at 10 Mb/s
  233. #define PHY_AutoNegotiation ((u16)0x1000) ///< Enable auto-negotiation function
  234. #define PHY_Restart_AutoNegotiation ((u16)0x0200) ///< Restart auto-negotiation function
  235. #define PHY_Powerdown ((u16)0x0800) ///< Select the power down mode
  236. #define PHY_Isolate ((u16)0x0400) ///< Isolate PHY from MII
  237. #define PHY_AutoNego_Complete ((u16)0x0020) ///< Auto-Negotiation process completed
  238. #define PHY_Linked_Status ((u16)0x0004) ///< Valid link established
  239. #define PHY_Jabber_detection ((u16)0x0002) ///< Jabber condition detected
  240. ////////////////////////////////////////////////////////////////////////////////
  241. #define ETH_AutoNegotiation_Enable ((u32)0x00000001)
  242. #define ETH_AutoNegotiation_Disable ((u32)0x00000000)
  243. #define ETH_Watchdog_Enable ((u32)0x00000000)
  244. #define ETH_Watchdog_Disable ((u32)0x00800000)
  245. #define ETH_Jabber_Enable ((u32)0x00000000)
  246. #define ETH_Jabber_Disable ((u32)0x00400000)
  247. #define ETH_InterFrameGap_96Bit ((u32)0x00000000) ///< minimum IFG between frames during transmission is 96Bit
  248. #define ETH_InterFrameGap_88Bit ((u32)0x00020000) ///< minimum IFG between frames during transmission is 88Bit
  249. #define ETH_InterFrameGap_80Bit ((u32)0x00040000) ///< minimum IFG between frames during transmission is 80Bit
  250. #define ETH_InterFrameGap_72Bit ((u32)0x00060000) ///< minimum IFG between frames during transmission is 72Bit
  251. #define ETH_InterFrameGap_64Bit ((u32)0x00080000) ///< minimum IFG between frames during transmission is 64Bit
  252. #define ETH_InterFrameGap_56Bit ((u32)0x000A0000) ///< minimum IFG between frames during transmission is 56Bit
  253. #define ETH_InterFrameGap_48Bit ((u32)0x000C0000) ///< minimum IFG between frames during transmission is 48Bit
  254. #define ETH_InterFrameGap_40Bit ((u32)0x000E0000) ///< minimum IFG between frames during transmission is 40Bit
  255. #define ETH_CarrierSense_Enable ((u32)0x00000000)
  256. #define ETH_CarrierSense_Disable ((u32)0x00010000)
  257. #define ETH_Speed_10M ((u32)0x00000000)
  258. #define ETH_Speed_100M ((u32)0x00004000)
  259. #define ETH_ReceiveOwn_Enable ((u32)0x00000000)
  260. #define ETH_ReceiveOwn_Disable ((u32)0x00002000)
  261. #define ETH_LoopbackMode_Enable ((u32)0x00001000)
  262. #define ETH_LoopbackMode_Disable ((u32)0x00000000)
  263. #define ETH_Mode_FullDuplex ((u32)0x00000800)
  264. #define ETH_Mode_HalfDuplex ((u32)0x00000000)
  265. #define ETH_ChecksumOffload_Enable ((u32)0x00000400)
  266. #define ETH_ChecksumOffload_Disable ((u32)0x00000000)
  267. #define ETH_RetryTransmission_Enable ((u32)0x00000000)
  268. #define ETH_RetryTransmission_Disable ((u32)0x00000200)
  269. #define ETH_AutomaticPadCRCStrip_Enable ((u32)0x00000080)
  270. #define ETH_AutomaticPadCRCStrip_Disable ((u32)0x00000000)
  271. #define ETH_BackOffLimit_10 ((u32)0x00000000)
  272. #define ETH_BackOffLimit_8 ((u32)0x00000020)
  273. #define ETH_BackOffLimit_4 ((u32)0x00000040)
  274. #define ETH_BackOffLimit_1 ((u32)0x00000060)
  275. #define ETH_DeferralCheck_Enable ((u32)0x00000010)
  276. #define ETH_DeferralCheck_Disable ((u32)0x00000000)
  277. #define ETH_ReceiveAll_Enable ((u32)0x80000000)
  278. #define ETH_ReceiveAll_Disable ((u32)0x00000000)
  279. #define ETH_SourceAddrFilter_Normal_Enable ((u32)0x00000200)
  280. #define ETH_SourceAddrFilter_Inverse_Enable ((u32)0x00000300)
  281. #define ETH_SourceAddrFilter_Disable ((u32)0x00000000)
  282. #define ETH_PassControlFrames_BlockAll ((u32)0x00000040) ///< MAC filters all control frames from reaching the application
  283. #define ETH_PassControlFrames_ForwardAll ((u32)0x00000080) ///< MAC forwards all control frames to application even if they fail the Address Filter
  284. #define ETH_PassControlFrames_ForwardPassedAddrFilter ((u32)0x000000C0) ///< MAC forwards control frames that pass the Address Filter.
  285. #define ETH_BroadcastFramesReception_Enable ((u32)0x00000000)
  286. #define ETH_BroadcastFramesReception_Disable ((u32)0x00000020)
  287. #define ETH_DestinationAddrFilter_Normal ((u32)0x00000000)
  288. #define ETH_DestinationAddrFilter_Inverse ((u32)0x00000008)
  289. #define ETH_PromiscuousMode_Enable ((u32)0x00000001)
  290. #define ETH_PromiscuousMode_Disable ((u32)0x00000000)
  291. #define ETH_MulticastFramesFilter_PerfectHashTable ((u32)0x00000404)
  292. #define ETH_MulticastFramesFilter_HashTable ((u32)0x00000004)
  293. #define ETH_MulticastFramesFilter_Perfect ((u32)0x00000000)
  294. #define ETH_MulticastFramesFilter_None ((u32)0x00000010)
  295. #define ETH_UnicastFramesFilter_PerfectHashTable ((u32)0x00000402)
  296. #define ETH_UnicastFramesFilter_HashTable ((u32)0x00000002)
  297. #define ETH_UnicastFramesFilter_Perfect ((u32)0x00000000)
  298. #define ETH_ZeroQuantaPause_Enable ((u32)0x00000000)
  299. #define ETH_ZeroQuantaPause_Disable ((u32)0x00000080)
  300. #define ETH_PauseLowThreshold_Minus4 ((u32)0x00000000) ///< Pause time minus 4 slot times
  301. #define ETH_PauseLowThreshold_Minus28 ((u32)0x00000010) ///< Pause time minus 28 slot times
  302. #define ETH_PauseLowThreshold_Minus144 ((u32)0x00000020) ///< Pause time minus 144 slot times
  303. #define ETH_PauseLowThreshold_Minus256 ((u32)0x00000030) ///< Pause time minus 256 slot times
  304. #define ETH_UnicastPauseFrameDetect_Enable ((u32)0x00000008)
  305. #define ETH_UnicastPauseFrameDetect_Disable ((u32)0x00000000)
  306. #define ETH_ReceiveFlowControl_Enable ((u32)0x00000004)
  307. #define ETH_ReceiveFlowControl_Disable ((u32)0x00000000)
  308. #define ETH_TransmitFlowControl_Enable ((u32)0x00000002)
  309. #define ETH_TransmitFlowControl_Disable ((u32)0x00000000)
  310. #define ETH_VLANTagComparison_12Bit ((u32)0x00010000)
  311. #define ETH_VLANTagComparison_16Bit ((u32)0x00000000)
  312. #define ETH_MAC_FLAG_TST ((u32)0x00000200) ///< Time stamp trigger flag (on MAC)
  313. #define ETH_MAC_FLAG_MMCT ((u32)0x00000040) ///< MMC transmit flag
  314. #define ETH_MAC_FLAG_MMCR ((u32)0x00000020) ///< MMC receive flag
  315. #define ETH_MAC_FLAG_MMC ((u32)0x00000010) ///< MMC flag (on MAC)
  316. #define ETH_MAC_FLAG_PMT ((u32)0x00000008) ///< PMT flag (on MAC)
  317. #define ETH_MAC_IT_TST ((u32)0x00000200) ///< Time stamp trigger interrupt (on MAC)
  318. #define ETH_MAC_IT_MMCT ((u32)0x00000040) ///< MMC transmit interrupt
  319. #define ETH_MAC_IT_MMCR ((u32)0x00000020) ///< MMC receive interrupt
  320. #define ETH_MAC_IT_MMC ((u32)0x00000010) ///< MMC interrupt (on MAC)
  321. #define ETH_MAC_IT_PMT ((u32)0x00000008) ///< PMT interrupt (on MAC)
  322. #define ETH_MAC_Address0 ((u32)0x00000000)
  323. #define ETH_MAC_Address1 ((u32)0x00000008)
  324. #define ETH_MAC_Address2 ((u32)0x00000010)
  325. #define ETH_MAC_Address3 ((u32)0x00000018)
  326. #define ETH_MAC_AddressFilter_SA ((u32)0x00000000)
  327. #define ETH_MAC_AddressFilter_DA ((u32)0x00000008)
  328. #define ETH_MAC_AddressMask_Byte6 ((u32)0x20000000) ///< Mask MAC Address high reg bits [15:8]
  329. #define ETH_MAC_AddressMask_Byte5 ((u32)0x10000000) ///< Mask MAC Address high reg bits [7:0]
  330. #define ETH_MAC_AddressMask_Byte4 ((u32)0x08000000) ///< Mask MAC Address low reg bits [31:24]
  331. #define ETH_MAC_AddressMask_Byte3 ((u32)0x04000000) ///< Mask MAC Address low reg bits [23:16]
  332. #define ETH_MAC_AddressMask_Byte2 ((u32)0x02000000) ///< Mask MAC Address low reg bits [15:8]
  333. #define ETH_MAC_AddressMask_Byte1 ((u32)0x01000000) ///< Mask MAC Address low reg bits [70]
  334. ////////////////////////////////////////////////////////////////////////////////
  335. #define ETH_DMA_TDES_LastSegment ((u32)0x40000000) ///< Last Segment
  336. #define ETH_DMA_TDES_FirstSegment ((u32)0x20000000) ///< First Segment
  337. #define ETH_DMA_TDES_ChecksumByPass ((u32)0x00000000) ///< Checksum engine bypass
  338. #define ETH_DMA_TDES_ChecksumIPV4Header ((u32)0x00400000) ///< IPv4 header checksum insertion
  339. #define ETH_DMA_TDES_ChecksumTCPUDPICMPSegment ((u32)0x00800000) ///< TCP/UDP/ICMP checksum insertion. Pseudo header checksum is assumed to be present
  340. #define ETH_DMA_TDES_ChecksumTCPUDPICMPFull ((u32)0x00C00000) ///< TCP/UDP/ICMP checksum fully in hardware including pseudo header
  341. #define ETH_DMA_RDES_Buffer1 ((u32)0x00000000) ///< DMA Rx Desc Buffer1
  342. #define ETH_DMA_RDES_Buffer2 ((u32)0x00000001) ///< DMA Rx Desc Buffer2
  343. #define ETH_DropTCPIPChecksumErrorFrame_Enable ((u32)0x00000000)
  344. #define ETH_DropTCPIPChecksumErrorFrame_Disable ((u32)0x04000000)
  345. #define ETH_ReceiveStoreForward_Enable ((u32)0x02000000)
  346. #define ETH_ReceiveStoreForward_Disable ((u32)0x00000000)
  347. #define ETH_FlushReceivedFrame_Enable ((u32)0x00000000)
  348. #define ETH_FlushReceivedFrame_Disable ((u32)0x01000000)
  349. #define ETH_TransmitStoreForward_Enable ((u32)0x00200000)
  350. #define ETH_TransmitStoreForward_Disable ((u32)0x00000000)
  351. #define ETH_TransmitThresholdControl_64Bytes ((u32)0x00000000) ///< threshold level of the MTL Transmit FIFO is 64 Bytes
  352. #define ETH_TransmitThresholdControl_128Bytes ((u32)0x00004000) ///< threshold level of the MTL Transmit FIFO is 128 Bytes
  353. #define ETH_TransmitThresholdControl_192Bytes ((u32)0x00008000) ///< threshold level of the MTL Transmit FIFO is 192 Bytes
  354. #define ETH_TransmitThresholdControl_256Bytes ((u32)0x0000C000) ///< threshold level of the MTL Transmit FIFO is 256 Bytes
  355. #define ETH_TransmitThresholdControl_40Bytes ((u32)0x00010000) ///< threshold level of the MTL Transmit FIFO is 40 Bytes
  356. #define ETH_TransmitThresholdControl_32Bytes ((u32)0x00014000) ///< threshold level of the MTL Transmit FIFO is 32 Bytes
  357. #define ETH_TransmitThresholdControl_24Bytes ((u32)0x00018000) ///< threshold level of the MTL Transmit FIFO is 24 Bytes
  358. #define ETH_TransmitThresholdControl_16Bytes ((u32)0x0001C000) ///< threshold level of the MTL Transmit FIFO is 16 Bytes
  359. #define ETH_ForwardErrorFrames_Enable ((u32)0x00000080)
  360. #define ETH_ForwardErrorFrames_Disable ((u32)0x00000000)
  361. #define ETH_ForwardUndersizedGoodFrames_Enable ((u32)0x00000040)
  362. #define ETH_ForwardUndersizedGoodFrames_Disable ((u32)0x00000000)
  363. #define ETH_ReceiveThresholdControl_64Bytes ((u32)0x00000000) ///< threshold level of the MTL Receive FIFO is 64 Bytes
  364. #define ETH_ReceiveThresholdControl_32Bytes ((u32)0x00000008) ///< threshold level of the MTL Receive FIFO is 32 Bytes
  365. #define ETH_ReceiveThresholdControl_96Bytes ((u32)0x00000010) ///< threshold level of the MTL Receive FIFO is 96 Bytes
  366. #define ETH_ReceiveThresholdControl_128Bytes ((u32)0x00000018) ///< threshold level of the MTL Receive FIFO is 128 Bytes
  367. #define ETH_SecondFrameOperate_Enable ((u32)0x00000004)
  368. #define ETH_SecondFrameOperate_Disable ((u32)0x00000000)
  369. #define ETH_AddressAlignedBeats_Enable ((u32)0x02000000)
  370. #define ETH_AddressAlignedBeats_Disable ((u32)0x00000000)
  371. #define ETH_FixedBurst_Enable ((u32)0x00010000)
  372. #define ETH_FixedBurst_Disable ((u32)0x00000000)
  373. #define ETH_RxDMABurstLength_1Beat ((u32)0x00020000) ///< maximum number of beats to be transferred in one RxDMA transaction is 1
  374. #define ETH_RxDMABurstLength_2Beat ((u32)0x00040000) ///< maximum number of beats to be transferred in one RxDMA transaction is 2
  375. #define ETH_RxDMABurstLength_4Beat ((u32)0x00080000) ///< maximum number of beats to be transferred in one RxDMA transaction is 4
  376. #define ETH_RxDMABurstLength_8Beat ((u32)0x00100000) ///< maximum number of beats to be transferred in one RxDMA transaction is 8
  377. #define ETH_RxDMABurstLength_16Beat ((u32)0x00200000) ///< maximum number of beats to be transferred in one RxDMA transaction is 16
  378. #define ETH_RxDMABurstLength_32Beat ((u32)0x00400000) ///< maximum number of beats to be transferred in one RxDMA transaction is 32
  379. #define ETH_RxDMABurstLength_4xPBL_4Beat ((u32)0x01020000) ///< maximum number of beats to be transferred in one RxDMA transaction is 4
  380. #define ETH_RxDMABurstLength_4xPBL_8Beat ((u32)0x01040000) ///< maximum number of beats to be transferred in one RxDMA transaction is 8
  381. #define ETH_RxDMABurstLength_4xPBL_16Beat ((u32)0x01080000) ///< maximum number of beats to be transferred in one RxDMA transaction is 16
  382. #define ETH_RxDMABurstLength_4xPBL_32Beat ((u32)0x01100000) ///< maximum number of beats to be transferred in one RxDMA transaction is 32
  383. #define ETH_RxDMABurstLength_4xPBL_64Beat ((u32)0x01200000) ///< maximum number of beats to be transferred in one RxDMA transaction is 64
  384. #define ETH_RxDMABurstLength_4xPBL_128Beat ((u32)0x01400000) ///< maximum number of beats to be transferred in one RxDMA transaction is 128
  385. #define ETH_TxDMABurstLength_1Beat ((u32)0x00000100) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 1
  386. #define ETH_TxDMABurstLength_2Beat ((u32)0x00000200) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 2
  387. #define ETH_TxDMABurstLength_4Beat ((u32)0x00000400) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 4
  388. #define ETH_TxDMABurstLength_8Beat ((u32)0x00000800) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 8
  389. #define ETH_TxDMABurstLength_16Beat ((u32)0x00001000) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 16
  390. #define ETH_TxDMABurstLength_32Beat ((u32)0x00002000) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 32
  391. #define ETH_TxDMABurstLength_4xPBL_4Beat ((u32)0x01000100) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 4
  392. #define ETH_TxDMABurstLength_4xPBL_8Beat ((u32)0x01000200) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 8
  393. #define ETH_TxDMABurstLength_4xPBL_16Beat ((u32)0x01000400) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 16
  394. #define ETH_TxDMABurstLength_4xPBL_32Beat ((u32)0x01000800) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 32
  395. #define ETH_TxDMABurstLength_4xPBL_64Beat ((u32)0x01001000) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 64
  396. #define ETH_TxDMABurstLength_4xPBL_128Beat ((u32)0x01002000) ///< maximum number of beats to be transferred in one TxDMA (or both) transaction is 128
  397. #define ETH_DMAArbitration_RoundRobin_RxTx_1_1 ((u32)0x00000000)
  398. #define ETH_DMAArbitration_RoundRobin_RxTx_2_1 ((u32)0x00004000)
  399. #define ETH_DMAArbitration_RoundRobin_RxTx_3_1 ((u32)0x00008000)
  400. #define ETH_DMAArbitration_RoundRobin_RxTx_4_1 ((u32)0x0000C000)
  401. #define ETH_DMAArbitration_RxPriorTx ((u32)0x00000002)
  402. #define ETH_DMA_FLAG_TST ((u32)0x20000000) ///< Time-stamp trigger interrupt (on DMA)
  403. #define ETH_DMA_FLAG_PMT ((u32)0x10000000) ///< PMT interrupt (on DMA)
  404. #define ETH_DMA_FLAG_MMC ((u32)0x08000000) ///< MMC interrupt (on DMA)
  405. #define ETH_DMA_FLAG_DataTransferError ((u32)0x00800000) ///< Error bits 0-Rx DMA, 1-Tx DMA
  406. #define ETH_DMA_FLAG_ReadWriteError ((u32)0x01000000) ///< Error bits 0-write trnsf, 1-read transfr
  407. #define ETH_DMA_FLAG_AccessError ((u32)0x02000000) ///< Error bits 0-data buffer, 1-desc. access
  408. #define ETH_DMA_FLAG_NIS ((u32)0x00010000) ///< Normal interrupt summary flag
  409. #define ETH_DMA_FLAG_AIS ((u32)0x00008000) ///< Abnormal interrupt summary flag
  410. #define ETH_DMA_FLAG_ER ((u32)0x00004000) ///< Early receive flag
  411. #define ETH_DMA_FLAG_FBE ((u32)0x00002000) ///< Fatal bus error flag
  412. #define ETH_DMA_FLAG_ET ((u32)0x00000400) ///< Early transmit flag
  413. #define ETH_DMA_FLAG_RWT ((u32)0x00000200) ///< Receive watchdog timeout flag
  414. #define ETH_DMA_FLAG_RPS ((u32)0x00000100) ///< Receive process stopped flag
  415. #define ETH_DMA_FLAG_RBU ((u32)0x00000080) ///< Receive buffer unavailable flag
  416. #define ETH_DMA_FLAG_R ((u32)0x00000040) ///< Receive flag
  417. #define ETH_DMA_FLAG_TU ((u32)0x00000020) ///< Underflow flag
  418. #define ETH_DMA_FLAG_RO ((u32)0x00000010) ///< Overflow flag
  419. #define ETH_DMA_FLAG_TJT ((u32)0x00000008) ///< Transmit jabber timeout flag
  420. #define ETH_DMA_FLAG_TBU ((u32)0x00000004) ///< Transmit buffer unavailable flag
  421. #define ETH_DMA_FLAG_TPS ((u32)0x00000002) ///< Transmit process stopped flag
  422. #define ETH_DMA_FLAG_T ((u32)0x00000001) ///< Transmit flag
  423. #define ETH_DMA_IT_TST ((u32)0x20000000) ///< Time-stamp trigger interrupt (on DMA)
  424. #define ETH_DMA_IT_PMT ((u32)0x10000000) ///< PMT interrupt (on DMA)
  425. #define ETH_DMA_IT_MMC ((u32)0x08000000) ///< MMC interrupt (on DMA)
  426. #define ETH_DMA_IT_NIS ((u32)0x00010000) ///< Normal interrupt summary
  427. #define ETH_DMA_IT_AIS ((u32)0x00008000) ///< Abnormal interrupt summary
  428. #define ETH_DMA_IT_ER ((u32)0x00004000) ///< Early receive interrupt
  429. #define ETH_DMA_IT_FBE ((u32)0x00002000) ///< Fatal bus error interrupt
  430. #define ETH_DMA_IT_ET ((u32)0x00000400) ///< Early transmit interrupt
  431. #define ETH_DMA_IT_RWT ((u32)0x00000200) ///< Receive watchdog timeout interrupt
  432. #define ETH_DMA_IT_RPS ((u32)0x00000100) ///< Receive process stopped interrupt
  433. #define ETH_DMA_IT_RBU ((u32)0x00000080) ///< Receive buffer unavailable interrupt
  434. #define ETH_DMA_IT_R ((u32)0x00000040) ///< Receive interrupt
  435. #define ETH_DMA_IT_TU ((u32)0x00000020) ///< Underflow interrupt
  436. #define ETH_DMA_IT_RO ((u32)0x00000010) ///< Overflow interrupt
  437. #define ETH_DMA_IT_TJT ((u32)0x00000008) ///< Transmit jabber timeout interrupt
  438. #define ETH_DMA_IT_TBU ((u32)0x00000004) ///< Transmit buffer unavailable interrupt
  439. #define ETH_DMA_IT_TPS ((u32)0x00000002) ///< Transmit process stopped interrupt
  440. #define ETH_DMA_IT_T ((u32)0x00000001) ///< Transmit interrupt
  441. #define ETH_DMA_TransmitProcess_Stopped ((u32)0x00000000) ///< Stopped - Reset or Stop Tx Command issued
  442. #define ETH_DMA_TransmitProcess_Fetching ((u32)0x00100000) ///< Running - fetching the Tx descriptor
  443. #define ETH_DMA_TransmitProcess_Waiting ((u32)0x00200000) ///< Running - waiting for status
  444. #define ETH_DMA_TransmitProcess_Reading ((u32)0x00300000) ///< Running - reading the data from host memory
  445. #define ETH_DMA_TransmitProcess_Suspended ((u32)0x00600000) ///< Suspended - Tx Descriptor unavailable
  446. #define ETH_DMA_TransmitProcess_Closing ((u32)0x00700000) ///< Running - closing Rx descriptor
  447. #define ETH_DMA_ReceiveProcess_Stopped ((u32)0x00000000) ///< Stopped - Reset or Stop Rx Command issued
  448. #define ETH_DMA_ReceiveProcess_Fetching ((u32)0x00020000) ///< Running - fetching the Rx descriptor
  449. #define ETH_DMA_ReceiveProcess_Waiting ((u32)0x00060000) ///< Running - waiting for packet
  450. #define ETH_DMA_ReceiveProcess_Suspended ((u32)0x00080000) ///< Suspended - Rx Descriptor unavailable
  451. #define ETH_DMA_ReceiveProcess_Closing ((u32)0x000A0000) ///< Running - closing descriptor
  452. #define ETH_DMA_ReceiveProcess_Queuing ((u32)0x000E0000) ///< Running - queuing the receive frame into host memory
  453. #define ETH_DMA_Overflow_RxFIFOCounter ((u32)0x10000000) ///< Overflow bit for FIFO overflow counter
  454. #define ETH_DMA_Overflow_MissedFrameCounter ((u32)0x00010000) ///< Overflow bit for missed frame counter
  455. ////////////////////////////////////////////////////////////////////////////////
  456. #define ETH_PMT_FLAG_WUFFRPR ((u32)0x80000000) ///< Wake-Up Frame Filter Register Pointer Reset
  457. #define ETH_PMT_FLAG_WUFR ((u32)0x00000040) ///< Wake-Up Frame Received
  458. #define ETH_PMT_FLAG_MPR ((u32)0x00000020) ///< Magic Packet Received
  459. ////////////////////////////////////////////////////////////////////////////////
  460. #define ETH_MMC_IT_TGF ((u32)0x00200000) ///< When Tx good frame counter reaches half the maximum value
  461. #define ETH_MMC_IT_TGFMSC ((u32)0x00008000) ///< When Tx good multi col counter reaches half the maximum value
  462. #define ETH_MMC_IT_TGFSC ((u32)0x00004000) ///< When Tx good single col counter reaches half the maximum value
  463. #define ETH_MMC_IT_RGUF ((u32)0x10020000) ///< When Rx good unicast frames counter reaches half the maximum value
  464. #define ETH_MMC_IT_RFAE ((u32)0x10000040) ///< When Rx alignment error counter reaches half the maximum value
  465. #define ETH_MMC_IT_RFCE ((u32)0x10000020) ///< When Rx crc error counter reaches half the maximum value
  466. #define ETH_MMCCR ((u32)0x00000100) ///< MMC CR register
  467. #define ETH_MMCRIR ((u32)0x00000104) ///< MMC RIR register
  468. #define ETH_MMCTIR ((u32)0x00000108) ///< MMC TIR register
  469. #define ETH_MMCRIMR ((u32)0x0000010C) ///< MMC RIMR register
  470. #define ETH_MMCTIMR ((u32)0x00000110) ///< MMC TIMR register
  471. #define ETH_MMCTGFSCCR ((u32)0x0000014C) ///< MMC TGFSCCR register
  472. #define ETH_MMCTGFMSCCR ((u32)0x00000150) ///< MMC TGFMSCCR register
  473. #define ETH_MMCTGFCR ((u32)0x00000168) ///< MMC TGFCR register
  474. #define ETH_MMCRFCECR ((u32)0x00000194) ///< MMC RFCECR register
  475. #define ETH_MMCRFAECR ((u32)0x00000198) ///< MMC RFAECR register
  476. #define ETH_MMCRGUFCR ((u32)0x000001C4) ///< MMC RGUFCR register
  477. ////////////////////////////////////////////////////////////////////////////////
  478. #define ETH_PTP_FineUpdate ((u32)0x00000001) ///< Fine Update method
  479. #define ETH_PTP_CoarseUpdate ((u32)0x00000000) ///< Coarse Update method
  480. #define ETH_PTP_FLAG_TSARU ((u32)0x00000020) ///< Addend Register Update
  481. #define ETH_PTP_FLAG_TSITE ((u32)0x00000010) ///< Time Stamp Interrupt Trigger
  482. #define ETH_PTP_FLAG_TSSTU ((u32)0x00000008) ///< Time Stamp Update
  483. #define ETH_PTP_FLAG_TSSTI ((u32)0x00000004) ///< Time Stamp Initialize
  484. #define ETH_PTP_FLAG_TSTTR ((u32)0x10000002) ///< Time stamp target time reached
  485. #define ETH_PTP_FLAG_TSSO ((u32)0x10000001) ///< Time stamp seconds overflow
  486. #define ETH_PTP_PositiveTime ((u32)0x00000000) ///< Positive time value
  487. #define ETH_PTP_NegativeTime ((u32)0x80000000) ///< Negative time value
  488. #define ETH_PTPTSCR ((u32)0x00000700) ///< PTP TSCR register
  489. #define ETH_PTPSSIR ((u32)0x00000704) ///< PTP SSIR register
  490. #define ETH_PTPTSHR ((u32)0x00000708) ///< PTP TSHR register
  491. #define ETH_PTPTSLR ((u32)0x0000070C) ///< PTP TSLR register
  492. #define ETH_PTPTSHUR ((u32)0x00000710) ///< PTP TSHUR register
  493. #define ETH_PTPTSLUR ((u32)0x00000714) ///< PTP TSLUR register
  494. #define ETH_PTPTSAR ((u32)0x00000718) ///< PTP TSAR register
  495. #define ETH_PTPTTHR ((u32)0x0000071C) ///< PTP TTHR register
  496. #define ETH_PTPTTLR ((u32)0x00000720) ///< PTP TTLR register
  497. #define ETH_PTPTSSR ((u32)0x00000728) ///< PTP TSSR register
  498. #define ETH_PTP_OrdinaryClock ((u32)0x00000000) ///< Ordinary Clock
  499. #define ETH_PTP_BoundaryClock ((u32)0x00010000) ///< Boundary Clock
  500. #define ETH_PTP_EndToEndTransparentClock ((u32)0x00020000) ///< End To End Transparent Clock
  501. #define ETH_PTP_PeerToPeerTransparentClock ((u32)0x00030000) ///< Peer To Peer Transparent Clock
  502. #define ETH_PTP_SnapshotMasterMessage ((u32)0x00008000) ///< Time stamp snapshot for message relevant to master enable
  503. #define ETH_PTP_SnapshotEventMessage ((u32)0x00004000) ///< Time stamp snapshot for event message enable
  504. #define ETH_PTP_SnapshotIPV4Frames ((u32)0x00002000) ///< Time stamp snapshot for IPv4 frames enable
  505. #define ETH_PTP_SnapshotIPV6Frames ((u32)0x00001000) ///< Time stamp snapshot for IPv6 frames enable
  506. #define ETH_PTP_SnapshotPTPOverEthernetFrames ((u32)0x00000800) ///< Time stamp snapshot for PTP over ethernet frames enable
  507. #define ETH_PTP_SnapshotAllReceivedFrames ((u32)0x00000100) ///< Time stamp snapshot for all received frames enable
  508. #define ETH_MAC_ADDR_HBASE (ETH_BASE + 0x40) ///< ETHERNET MAC address high offset
  509. #define ETH_MAC_ADDR_LBASE (ETH_BASE + 0x44) ///< ETHERNET MAC address low offset
  510. #define MACMIIAR_CR_MASK ((u32)0xFFFFFFE3)
  511. #define MACCR_CLEAR_MASK ((u32)0xFF20810F)
  512. #define MACFCR_CLEAR_MASK ((u32)0x0000FF41)
  513. #define DMAOMR_CLEAR_MASK ((u32)0xF8DE3F23)
  514. GLOBAL __IO ETH_DMADESCTypeDef* DMATxDescToSet;
  515. GLOBAL __IO ETH_DMADESCTypeDef* DMARxDescToGet;
  516. GLOBAL ETH_DMA_Rx_Frame_infos RX_Frame_Descriptor;
  517. GLOBAL __IO ETH_DMA_Rx_Frame_infos* DMA_RX_FRAME_infos;
  518. GLOBAL __IO u32 Frame_Rx_index;
  519. #undef GLOBAL
  520. void ETH_DeInit(void);
  521. void ETH_StructInit(ETH_InitTypeDef* ptr);
  522. u32 ETH_Init(ETH_InitTypeDef* ptr, u16 phy_addr);
  523. void ETH_Start(void);
  524. void ETH_Stop(void);
  525. void ETH_MACTransmissionCmd(FunctionalState sta);
  526. void ETH_MACReceptionCmd(FunctionalState sta);
  527. FlagStatus ETH_GetFlowControlBusyStatus(void);
  528. void ETH_InitiatePauseControlFrame(void);
  529. void ETH_BackPressureActivationCmd(FunctionalState sta);
  530. void ETH_MACAddressConfig(u32 reg_addr, u8* mac_addr);
  531. void ETH_GetMACAddress(u32 reg_addr, u8* mac_addr);
  532. void ETH_MACAddressPerfectFilterCmd(u32 reg_addr, FunctionalState sta);
  533. void ETH_MACAddressFilterConfig(u32 reg_addr, u32 sta);
  534. void ETH_MACAddressMaskBytesFilterConfig(u32 reg_addr, u32 mask_byte);
  535. FrameTypeDef ETH_Get_Received_Frame(void);
  536. FrameTypeDef ETH_Get_Received_Frame_interrupt(void);
  537. u32 ETH_Prepare_Transmit_Descriptors(u16 len);
  538. void ETH_DMARxDescChainInit(ETH_DMADESCTypeDef* ptr_desc, u8* buf, u32 cnt);
  539. u32 ETH_CheckFrameReceived(void);
  540. void ETH_DMATxDescChainInit(ETH_DMADESCTypeDef* ptr_desc, u8* buf, u32 cnt);
  541. FlagStatus ETH_GetDMATxDescFlagStatus(ETH_DMADESCTypeDef* ptr_desc, u32 flag);
  542. u32 ETH_GetDMATxDescCollisionCount(ETH_DMADESCTypeDef* ptr_desc);
  543. void ETH_SetDMATxDescOwnBit(ETH_DMADESCTypeDef* ptr_desc);
  544. void ETH_DMATxDescTransmitITConfig(ETH_DMADESCTypeDef* ptr_desc, FunctionalState sta);
  545. void ETH_DMATxDescFrameSegmentConfig(ETH_DMADESCTypeDef* ptr_desc, u32 val);
  546. void ETH_DMATxDescChecksumInsertionConfig(ETH_DMADESCTypeDef* ptr_desc, u32 val);
  547. void ETH_DMATxDescCRCCmd(ETH_DMADESCTypeDef* ptr_desc, FunctionalState sta);
  548. void ETH_DMATxDescSecondAddressChainedCmd(ETH_DMADESCTypeDef* ptr_desc, FunctionalState sta);
  549. void ETH_DMATxDescShortFramePaddingCmd(ETH_DMADESCTypeDef* ptr_desc, FunctionalState sta);
  550. void ETH_DMATxDescBufferSizeConfig(ETH_DMADESCTypeDef* ptr_desc, u32 buf1_size, u32 buf2_size);
  551. FlagStatus ETH_GetDMARxDescFlagStatus(ETH_DMADESCTypeDef* ptr_desc, u32 flag);
  552. void ETH_SetDMARxDescOwnBit(ETH_DMADESCTypeDef* ptr_desc);
  553. u32 ETH_GetDMARxDescFrameLength(ETH_DMADESCTypeDef* ptr_desc);
  554. void ETH_DMARxDescReceiveITConfig(ETH_DMADESCTypeDef* ptr_desc, FunctionalState sta);
  555. u32 ETH_GetDMARxDescBufferSize(ETH_DMADESCTypeDef* ptr_desc, u32 buf);
  556. u32 ETH_GetRxPktSize(ETH_DMADESCTypeDef* ptr_desc);
  557. void ETH_SoftwareReset(void);
  558. FlagStatus ETH_GetSoftwareResetStatus(void);
  559. FlagStatus ETH_GetDMAFlagStatus(u32 flag);
  560. void ETH_DMAClearFlag(u32 flag);
  561. void ETH_DMAITConfig(u32 it, FunctionalState sta);
  562. ITStatus ETH_GetDMAITStatus(u32 it);
  563. void ETH_DMAClearITPendingBit(u32 it);
  564. u32 ETH_GetTransmitProcessState(void);
  565. u32 ETH_GetReceiveProcessState(void);
  566. void ETH_FlushTransmitFIFO(void);
  567. FlagStatus ETH_GetFlushTransmitFIFOStatus(void);
  568. void ETH_DMATransmissionCmd(FunctionalState sta);
  569. void ETH_DMAReceptionCmd(FunctionalState sta);
  570. FlagStatus ETH_GetDMAOverflowStatus(u32 val);
  571. u32 ETH_GetRxOverflowMissedFrameCounter(void);
  572. u32 ETH_GetBufferUnavailableMissedFrameCounter(void);
  573. u32 ETH_GetCurrentTxDescStartAddress(void);
  574. u32 ETH_GetCurrentRxDescStartAddress(void);
  575. u32 ETH_GetCurrentTxBufferAddress(void);
  576. u32 ETH_GetCurrentRxBufferAddress(void);
  577. void ETH_ResumeDMATransmission(void);
  578. void ETH_ResumeDMAReception(void);
  579. void ETH_SetReceiveWatchdogTimer(u8 val);
  580. u16 ETH_ReadPHYRegister(u16 addr, u16 reg);
  581. u16 ETH_WritePHYRegister(u16 addr, u16 reg, u16 val);
  582. u32 ETH_PHYLoopBackCmd(u16 addr, FunctionalState sta);
  583. void ETH_ResetWakeUpFrameFilterRegisterPointer(void);
  584. void ETH_SetWakeUpFrameFilterRegister(u32* buf);
  585. void ETH_GlobalUnicastWakeUpCmd(FunctionalState sta);
  586. FlagStatus ETH_GetPMTFlagStatus(u32 flag);
  587. void ETH_WakeUpFrameDetectionCmd(FunctionalState sta);
  588. void ETH_MagicPacketDetectionCmd(FunctionalState sta);
  589. void ETH_PowerDownCmd(FunctionalState sta);
  590. void ETH_MMCCounterFullPreset(void);
  591. void ETH_MMCCounterHalfPreset(void);
  592. void ETH_MMCCounterFreezeCmd(FunctionalState sta);
  593. void ETH_MMCResetOnReadCmd(FunctionalState sta);
  594. void ETH_MMCCounterRolloverCmd(FunctionalState sta);
  595. void ETH_MMCCountersReset(void);
  596. void ETH_MMCITConfig(u32 it, FunctionalState sta);
  597. ITStatus ETH_GetMMCITStatus(u32 it);
  598. u32 ETH_GetMMCRegister(u32 reg);
  599. /// @}
  600. /// @}
  601. /// @}
  602. ////////////////////////////////////////////////////////////////////////////////
  603. #endif //__HAL_ETH_H
  604. ////////////////////////////////////////////////////////////////////////////////