30 #ifndef __STM32F4x7_ETH_H
31 #define __STM32F4x7_ETH_H
233 #ifdef USE_ENHANCED_DMA_DESCRIPTORS
234 uint32_t ExtendedStatus;
236 uint32_t TimeStampLow;
237 uint32_t TimeStampHigh;
252 __IO uint32_t Seg_Count;
253 } ETH_DMA_Rx_Frame_infos;
273 #define ETH_MAX_PACKET_SIZE 1524
274 #define ETH_HEADER 14
278 #define MIN_ETH_PAYLOAD 46
279 #define MAX_ETH_PAYLOAD 1500
280 #define JUMBO_FRAME_PAYLOAD 9000
299 #ifndef ETH_RX_BUF_SIZE
300 #define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE
305 #define ETH_RXBUFNB 5
326 #ifndef ETH_TX_BUF_SIZE
327 #define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE
332 #define ETH_TXBUFNB 5
335 #define ETH_DMARxDesc_FrameLengthShift 16
361 #define ETH_DMATxDesc_OWN ((uint32_t)0x80000000)
362 #define ETH_DMATxDesc_IC ((uint32_t)0x40000000)
363 #define ETH_DMATxDesc_LS ((uint32_t)0x20000000)
364 #define ETH_DMATxDesc_FS ((uint32_t)0x10000000)
365 #define ETH_DMATxDesc_DC ((uint32_t)0x08000000)
366 #define ETH_DMATxDesc_DP ((uint32_t)0x04000000)
367 #define ETH_DMATxDesc_TTSE ((uint32_t)0x02000000)
368 #define ETH_DMATxDesc_CIC ((uint32_t)0x00C00000)
369 #define ETH_DMATxDesc_CIC_ByPass ((uint32_t)0x00000000)
370 #define ETH_DMATxDesc_CIC_IPV4Header ((uint32_t)0x00400000)
371 #define ETH_DMATxDesc_CIC_TCPUDPICMP_Segment ((uint32_t)0x00800000)
372 #define ETH_DMATxDesc_CIC_TCPUDPICMP_Full ((uint32_t)0x00C00000)
373 #define ETH_DMATxDesc_TER ((uint32_t)0x00200000)
374 #define ETH_DMATxDesc_TCH ((uint32_t)0x00100000)
375 #define ETH_DMATxDesc_TTSS ((uint32_t)0x00020000)
376 #define ETH_DMATxDesc_IHE ((uint32_t)0x00010000)
377 #define ETH_DMATxDesc_ES ((uint32_t)0x00008000)
378 #define ETH_DMATxDesc_JT ((uint32_t)0x00004000)
379 #define ETH_DMATxDesc_FF ((uint32_t)0x00002000)
380 #define ETH_DMATxDesc_PCE ((uint32_t)0x00001000)
381 #define ETH_DMATxDesc_LCA ((uint32_t)0x00000800)
382 #define ETH_DMATxDesc_NC ((uint32_t)0x00000400)
383 #define ETH_DMATxDesc_LCO ((uint32_t)0x00000200)
384 #define ETH_DMATxDesc_EC ((uint32_t)0x00000100)
385 #define ETH_DMATxDesc_VF ((uint32_t)0x00000080)
386 #define ETH_DMATxDesc_CC ((uint32_t)0x00000078)
387 #define ETH_DMATxDesc_ED ((uint32_t)0x00000004)
388 #define ETH_DMATxDesc_UF ((uint32_t)0x00000002)
389 #define ETH_DMATxDesc_DB ((uint32_t)0x00000001)
394 #define ETH_DMATxDesc_TBS2 ((uint32_t)0x1FFF0000)
395 #define ETH_DMATxDesc_TBS1 ((uint32_t)0x00001FFF)
400 #define ETH_DMATxDesc_B1AP ((uint32_t)0xFFFFFFFF)
405 #define ETH_DMATxDesc_B2AP ((uint32_t)0xFFFFFFFF)
414 #define ETH_DMAPTPTxDesc_TTSL ((uint32_t)0xFFFFFFFF)
417 #define ETH_DMAPTPTxDesc_TTSH ((uint32_t)0xFFFFFFFF)
446 #define ETH_DMARxDesc_OWN ((uint32_t)0x80000000)
447 #define ETH_DMARxDesc_AFM ((uint32_t)0x40000000)
448 #define ETH_DMARxDesc_FL ((uint32_t)0x3FFF0000)
449 #define ETH_DMARxDesc_ES ((uint32_t)0x00008000)
450 #define ETH_DMARxDesc_DE ((uint32_t)0x00004000)
451 #define ETH_DMARxDesc_SAF ((uint32_t)0x00002000)
452 #define ETH_DMARxDesc_LE ((uint32_t)0x00001000)
453 #define ETH_DMARxDesc_OE ((uint32_t)0x00000800)
454 #define ETH_DMARxDesc_VLAN ((uint32_t)0x00000400)
455 #define ETH_DMARxDesc_FS ((uint32_t)0x00000200)
456 #define ETH_DMARxDesc_LS ((uint32_t)0x00000100)
457 #define ETH_DMARxDesc_IPV4HCE ((uint32_t)0x00000080)
458 #define ETH_DMARxDesc_LC ((uint32_t)0x00000040)
459 #define ETH_DMARxDesc_FT ((uint32_t)0x00000020)
460 #define ETH_DMARxDesc_RWT ((uint32_t)0x00000010)
461 #define ETH_DMARxDesc_RE ((uint32_t)0x00000008)
462 #define ETH_DMARxDesc_DBE ((uint32_t)0x00000004)
463 #define ETH_DMARxDesc_CE ((uint32_t)0x00000002)
464 #define ETH_DMARxDesc_MAMPCE ((uint32_t)0x00000001)
469 #define ETH_DMARxDesc_DIC ((uint32_t)0x80000000)
470 #define ETH_DMARxDesc_RBS2 ((uint32_t)0x1FFF0000)
471 #define ETH_DMARxDesc_RER ((uint32_t)0x00008000)
472 #define ETH_DMARxDesc_RCH ((uint32_t)0x00004000)
473 #define ETH_DMARxDesc_RBS1 ((uint32_t)0x00001FFF)
478 #define ETH_DMARxDesc_B1AP ((uint32_t)0xFFFFFFFF)
483 #define ETH_DMARxDesc_B2AP ((uint32_t)0xFFFFFFFF)
496 #define ETH_DMAPTPRxDesc_PTPV ((uint32_t)0x00002000)
497 #define ETH_DMAPTPRxDesc_PTPFT ((uint32_t)0x00001000)
498 #define ETH_DMAPTPRxDesc_PTPMT ((uint32_t)0x00000F00)
499 #define ETH_DMAPTPRxDesc_PTPMT_Sync ((uint32_t)0x00000100)
500 #define ETH_DMAPTPRxDesc_PTPMT_FollowUp ((uint32_t)0x00000200)
501 #define ETH_DMAPTPRxDesc_PTPMT_DelayReq ((uint32_t)0x00000300)
502 #define ETH_DMAPTPRxDesc_PTPMT_DelayResp ((uint32_t)0x00000400)
503 #define ETH_DMAPTPRxDesc_PTPMT_PdelayReq_Announce ((uint32_t)0x00000500)
504 #define ETH_DMAPTPRxDesc_PTPMT_PdelayResp_Manag ((uint32_t)0x00000600)
505 #define ETH_DMAPTPRxDesc_PTPMT_PdelayRespFollowUp_Signal ((uint32_t)0x00000700)
506 #define ETH_DMAPTPRxDesc_IPV6PR ((uint32_t)0x00000080)
507 #define ETH_DMAPTPRxDesc_IPV4PR ((uint32_t)0x00000040)
508 #define ETH_DMAPTPRxDesc_IPCB ((uint32_t)0x00000020)
509 #define ETH_DMAPTPRxDesc_IPPE ((uint32_t)0x00000010)
510 #define ETH_DMAPTPRxDesc_IPHE ((uint32_t)0x00000008)
511 #define ETH_DMAPTPRxDesc_IPPT ((uint32_t)0x00000007)
512 #define ETH_DMAPTPRxDesc_IPPT_UDP ((uint32_t)0x00000001)
513 #define ETH_DMAPTPRxDesc_IPPT_TCP ((uint32_t)0x00000002)
514 #define ETH_DMAPTPRxDesc_IPPT_ICMP ((uint32_t)0x00000003)
517 #define ETH_DMAPTPRxDesc_RTSL ((uint32_t)0xFFFFFFFF)
520 #define ETH_DMAPTPRxDesc_RTSH ((uint32_t)0xFFFFFFFF)
536 #define PHY_READ_TO ((uint32_t)0x0004FFFF)
537 #define PHY_WRITE_TO ((uint32_t)0x0004FFFF)
549 #define IS_ETH_PHY_ADDRESS(ADDRESS) ((ADDRESS) <= 0x20)
550 #define IS_ETH_PHY_REG(REG) (((REG) == PHY_BCR) || \
551 ((REG) == PHY_BSR) || \
560 #define PHY_Reset ((uint16_t)0x8000)
561 #define PHY_Loopback ((uint16_t)0x4000)
562 #define PHY_FULLDUPLEX_100M ((uint16_t)0x2100)
563 #define PHY_HALFDUPLEX_100M ((uint16_t)0x2000)
564 #define PHY_FULLDUPLEX_10M ((uint16_t)0x0100)
565 #define PHY_HALFDUPLEX_10M ((uint16_t)0x0000)
566 #define PHY_AutoNegotiation ((uint16_t)0x1000)
567 #define PHY_Restart_AutoNegotiation ((uint16_t)0x0200)
568 #define PHY_Powerdown ((uint16_t)0x0800)
569 #define PHY_Isolate ((uint16_t)0x0400)
578 #define PHY_AutoNego_Complete ((uint16_t)0x0020)
579 #define PHY_Linked_Status ((uint16_t)0x0004)
580 #define PHY_Jabber_detection ((uint16_t)0x0002)
595 #define ETH_AutoNegotiation_Enable ((uint32_t)0x00000001)
596 #define ETH_AutoNegotiation_Disable ((uint32_t)0x00000000)
597 #define IS_ETH_AUTONEGOTIATION(CMD) (((CMD) == ETH_AutoNegotiation_Enable) || \
598 ((CMD) == ETH_AutoNegotiation_Disable))
607 #define ETH_Watchdog_Enable ((uint32_t)0x00000000)
608 #define ETH_Watchdog_Disable ((uint32_t)0x00800000)
609 #define IS_ETH_WATCHDOG(CMD) (((CMD) == ETH_Watchdog_Enable) || \
610 ((CMD) == ETH_Watchdog_Disable))
619 #define ETH_Jabber_Enable ((uint32_t)0x00000000)
620 #define ETH_Jabber_Disable ((uint32_t)0x00400000)
621 #define IS_ETH_JABBER(CMD) (((CMD) == ETH_Jabber_Enable) || \
622 ((CMD) == ETH_Jabber_Disable))
631 #define ETH_InterFrameGap_96Bit ((uint32_t)0x00000000)
632 #define ETH_InterFrameGap_88Bit ((uint32_t)0x00020000)
633 #define ETH_InterFrameGap_80Bit ((uint32_t)0x00040000)
634 #define ETH_InterFrameGap_72Bit ((uint32_t)0x00060000)
635 #define ETH_InterFrameGap_64Bit ((uint32_t)0x00080000)
636 #define ETH_InterFrameGap_56Bit ((uint32_t)0x000A0000)
637 #define ETH_InterFrameGap_48Bit ((uint32_t)0x000C0000)
638 #define ETH_InterFrameGap_40Bit ((uint32_t)0x000E0000)
639 #define IS_ETH_INTER_FRAME_GAP(GAP) (((GAP) == ETH_InterFrameGap_96Bit) || \
640 ((GAP) == ETH_InterFrameGap_88Bit) || \
641 ((GAP) == ETH_InterFrameGap_80Bit) || \
642 ((GAP) == ETH_InterFrameGap_72Bit) || \
643 ((GAP) == ETH_InterFrameGap_64Bit) || \
644 ((GAP) == ETH_InterFrameGap_56Bit) || \
645 ((GAP) == ETH_InterFrameGap_48Bit) || \
646 ((GAP) == ETH_InterFrameGap_40Bit))
655 #define ETH_CarrierSense_Enable ((uint32_t)0x00000000)
656 #define ETH_CarrierSense_Disable ((uint32_t)0x00010000)
657 #define IS_ETH_CARRIER_SENSE(CMD) (((CMD) == ETH_CarrierSense_Enable) || \
658 ((CMD) == ETH_CarrierSense_Disable))
667 #define ETH_Speed_10M ((uint32_t)0x00000000)
668 #define ETH_Speed_100M ((uint32_t)0x00004000)
669 #define IS_ETH_SPEED(SPEED) (((SPEED) == ETH_Speed_10M) || \
670 ((SPEED) == ETH_Speed_100M))
679 #define ETH_ReceiveOwn_Enable ((uint32_t)0x00000000)
680 #define ETH_ReceiveOwn_Disable ((uint32_t)0x00002000)
681 #define IS_ETH_RECEIVE_OWN(CMD) (((CMD) == ETH_ReceiveOwn_Enable) || \
682 ((CMD) == ETH_ReceiveOwn_Disable))
691 #define ETH_LoopbackMode_Enable ((uint32_t)0x00001000)
692 #define ETH_LoopbackMode_Disable ((uint32_t)0x00000000)
693 #define IS_ETH_LOOPBACK_MODE(CMD) (((CMD) == ETH_LoopbackMode_Enable) || \
694 ((CMD) == ETH_LoopbackMode_Disable))
703 #define ETH_Mode_FullDuplex ((uint32_t)0x00000800)
704 #define ETH_Mode_HalfDuplex ((uint32_t)0x00000000)
705 #define IS_ETH_DUPLEX_MODE(MODE) (((MODE) == ETH_Mode_FullDuplex) || \
706 ((MODE) == ETH_Mode_HalfDuplex))
715 #define ETH_ChecksumOffload_Enable ((uint32_t)0x00000400)
716 #define ETH_ChecksumOffload_Disable ((uint32_t)0x00000000)
717 #define IS_ETH_CHECKSUM_OFFLOAD(CMD) (((CMD) == ETH_ChecksumOffload_Enable) || \
718 ((CMD) == ETH_ChecksumOffload_Disable))
727 #define ETH_RetryTransmission_Enable ((uint32_t)0x00000000)
728 #define ETH_RetryTransmission_Disable ((uint32_t)0x00000200)
729 #define IS_ETH_RETRY_TRANSMISSION(CMD) (((CMD) == ETH_RetryTransmission_Enable) || \
730 ((CMD) == ETH_RetryTransmission_Disable))
739 #define ETH_AutomaticPadCRCStrip_Enable ((uint32_t)0x00000080)
740 #define ETH_AutomaticPadCRCStrip_Disable ((uint32_t)0x00000000)
741 #define IS_ETH_AUTOMATIC_PADCRC_STRIP(CMD) (((CMD) == ETH_AutomaticPadCRCStrip_Enable) || \
742 ((CMD) == ETH_AutomaticPadCRCStrip_Disable))
751 #define ETH_BackOffLimit_10 ((uint32_t)0x00000000)
752 #define ETH_BackOffLimit_8 ((uint32_t)0x00000020)
753 #define ETH_BackOffLimit_4 ((uint32_t)0x00000040)
754 #define ETH_BackOffLimit_1 ((uint32_t)0x00000060)
755 #define IS_ETH_BACKOFF_LIMIT(LIMIT) (((LIMIT) == ETH_BackOffLimit_10) || \
756 ((LIMIT) == ETH_BackOffLimit_8) || \
757 ((LIMIT) == ETH_BackOffLimit_4) || \
758 ((LIMIT) == ETH_BackOffLimit_1))
767 #define ETH_DeferralCheck_Enable ((uint32_t)0x00000010)
768 #define ETH_DeferralCheck_Disable ((uint32_t)0x00000000)
769 #define IS_ETH_DEFERRAL_CHECK(CMD) (((CMD) == ETH_DeferralCheck_Enable) || \
770 ((CMD) == ETH_DeferralCheck_Disable))
779 #define ETH_ReceiveAll_Enable ((uint32_t)0x80000000)
780 #define ETH_ReceiveAll_Disable ((uint32_t)0x00000000)
781 #define IS_ETH_RECEIVE_ALL(CMD) (((CMD) == ETH_ReceiveAll_Enable) || \
782 ((CMD) == ETH_ReceiveAll_Disable))
791 #define ETH_SourceAddrFilter_Normal_Enable ((uint32_t)0x00000200)
792 #define ETH_SourceAddrFilter_Inverse_Enable ((uint32_t)0x00000300)
793 #define ETH_SourceAddrFilter_Disable ((uint32_t)0x00000000)
794 #define IS_ETH_SOURCE_ADDR_FILTER(CMD) (((CMD) == ETH_SourceAddrFilter_Normal_Enable) || \
795 ((CMD) == ETH_SourceAddrFilter_Inverse_Enable) || \
796 ((CMD) == ETH_SourceAddrFilter_Disable))
805 #define ETH_PassControlFrames_BlockAll ((uint32_t)0x00000040)
806 #define ETH_PassControlFrames_ForwardAll ((uint32_t)0x00000080)
807 #define ETH_PassControlFrames_ForwardPassedAddrFilter ((uint32_t)0x000000C0)
808 #define IS_ETH_CONTROL_FRAMES(PASS) (((PASS) == ETH_PassControlFrames_BlockAll) || \
809 ((PASS) == ETH_PassControlFrames_ForwardAll) || \
810 ((PASS) == ETH_PassControlFrames_ForwardPassedAddrFilter))
819 #define ETH_BroadcastFramesReception_Enable ((uint32_t)0x00000000)
820 #define ETH_BroadcastFramesReception_Disable ((uint32_t)0x00000020)
821 #define IS_ETH_BROADCAST_FRAMES_RECEPTION(CMD) (((CMD) == ETH_BroadcastFramesReception_Enable) || \
822 ((CMD) == ETH_BroadcastFramesReception_Disable))
831 #define ETH_DestinationAddrFilter_Normal ((uint32_t)0x00000000)
832 #define ETH_DestinationAddrFilter_Inverse ((uint32_t)0x00000008)
833 #define IS_ETH_DESTINATION_ADDR_FILTER(FILTER) (((FILTER) == ETH_DestinationAddrFilter_Normal) || \
834 ((FILTER) == ETH_DestinationAddrFilter_Inverse))
843 #define ETH_PromiscuousMode_Enable ((uint32_t)0x00000001)
844 #define ETH_PromiscuousMode_Disable ((uint32_t)0x00000000)
845 #define IS_ETH_PROMISCUOUS_MODE(CMD) (((CMD) == ETH_PromiscuousMode_Enable) || \
846 ((CMD) == ETH_PromiscuousMode_Disable))
855 #define ETH_MulticastFramesFilter_PerfectHashTable ((uint32_t)0x00000404)
856 #define ETH_MulticastFramesFilter_HashTable ((uint32_t)0x00000004)
857 #define ETH_MulticastFramesFilter_Perfect ((uint32_t)0x00000000)
858 #define ETH_MulticastFramesFilter_None ((uint32_t)0x00000010)
859 #define IS_ETH_MULTICAST_FRAMES_FILTER(FILTER) (((FILTER) == ETH_MulticastFramesFilter_PerfectHashTable) || \
860 ((FILTER) == ETH_MulticastFramesFilter_HashTable) || \
861 ((FILTER) == ETH_MulticastFramesFilter_Perfect) || \
862 ((FILTER) == ETH_MulticastFramesFilter_None))
872 #define ETH_UnicastFramesFilter_PerfectHashTable ((uint32_t)0x00000402)
873 #define ETH_UnicastFramesFilter_HashTable ((uint32_t)0x00000002)
874 #define ETH_UnicastFramesFilter_Perfect ((uint32_t)0x00000000)
875 #define IS_ETH_UNICAST_FRAMES_FILTER(FILTER) (((FILTER) == ETH_UnicastFramesFilter_PerfectHashTable) || \
876 ((FILTER) == ETH_UnicastFramesFilter_HashTable) || \
877 ((FILTER) == ETH_UnicastFramesFilter_Perfect))
886 #define IS_ETH_PAUSE_TIME(TIME) ((TIME) <= 0xFFFF)
895 #define ETH_ZeroQuantaPause_Enable ((uint32_t)0x00000000)
896 #define ETH_ZeroQuantaPause_Disable ((uint32_t)0x00000080)
897 #define IS_ETH_ZEROQUANTA_PAUSE(CMD) (((CMD) == ETH_ZeroQuantaPause_Enable) || \
898 ((CMD) == ETH_ZeroQuantaPause_Disable))
906 #define ETH_PauseLowThreshold_Minus4 ((uint32_t)0x00000000)
907 #define ETH_PauseLowThreshold_Minus28 ((uint32_t)0x00000010)
908 #define ETH_PauseLowThreshold_Minus144 ((uint32_t)0x00000020)
909 #define ETH_PauseLowThreshold_Minus256 ((uint32_t)0x00000030)
910 #define IS_ETH_PAUSE_LOW_THRESHOLD(THRESHOLD) (((THRESHOLD) == ETH_PauseLowThreshold_Minus4) || \
911 ((THRESHOLD) == ETH_PauseLowThreshold_Minus28) || \
912 ((THRESHOLD) == ETH_PauseLowThreshold_Minus144) || \
913 ((THRESHOLD) == ETH_PauseLowThreshold_Minus256))
922 #define ETH_UnicastPauseFrameDetect_Enable ((uint32_t)0x00000008)
923 #define ETH_UnicastPauseFrameDetect_Disable ((uint32_t)0x00000000)
924 #define IS_ETH_UNICAST_PAUSE_FRAME_DETECT(CMD) (((CMD) == ETH_UnicastPauseFrameDetect_Enable) || \
925 ((CMD) == ETH_UnicastPauseFrameDetect_Disable))
934 #define ETH_ReceiveFlowControl_Enable ((uint32_t)0x00000004)
935 #define ETH_ReceiveFlowControl_Disable ((uint32_t)0x00000000)
936 #define IS_ETH_RECEIVE_FLOWCONTROL(CMD) (((CMD) == ETH_ReceiveFlowControl_Enable) || \
937 ((CMD) == ETH_ReceiveFlowControl_Disable))
946 #define ETH_TransmitFlowControl_Enable ((uint32_t)0x00000002)
947 #define ETH_TransmitFlowControl_Disable ((uint32_t)0x00000000)
948 #define IS_ETH_TRANSMIT_FLOWCONTROL(CMD) (((CMD) == ETH_TransmitFlowControl_Enable) || \
949 ((CMD) == ETH_TransmitFlowControl_Disable))
958 #define ETH_VLANTagComparison_12Bit ((uint32_t)0x00010000)
959 #define ETH_VLANTagComparison_16Bit ((uint32_t)0x00000000)
960 #define IS_ETH_VLAN_TAG_COMPARISON(COMPARISON) (((COMPARISON) == ETH_VLANTagComparison_12Bit) || \
961 ((COMPARISON) == ETH_VLANTagComparison_16Bit))
962 #define IS_ETH_VLAN_TAG_IDENTIFIER(IDENTIFIER) ((IDENTIFIER) <= 0xFFFF)
971 #define ETH_MAC_FLAG_TST ((uint32_t)0x00000200)
972 #define ETH_MAC_FLAG_MMCT ((uint32_t)0x00000040)
973 #define ETH_MAC_FLAG_MMCR ((uint32_t)0x00000020)
974 #define ETH_MAC_FLAG_MMC ((uint32_t)0x00000010)
975 #define ETH_MAC_FLAG_PMT ((uint32_t)0x00000008)
976 #define IS_ETH_MAC_GET_FLAG(FLAG) (((FLAG) == ETH_MAC_FLAG_TST) || ((FLAG) == ETH_MAC_FLAG_MMCT) || \
977 ((FLAG) == ETH_MAC_FLAG_MMCR) || ((FLAG) == ETH_MAC_FLAG_MMC) || \
978 ((FLAG) == ETH_MAC_FLAG_PMT))
986 #define ETH_MAC_IT_TST ((uint32_t)0x00000200)
987 #define ETH_MAC_IT_MMCT ((uint32_t)0x00000040)
988 #define ETH_MAC_IT_MMCR ((uint32_t)0x00000020)
989 #define ETH_MAC_IT_MMC ((uint32_t)0x00000010)
990 #define ETH_MAC_IT_PMT ((uint32_t)0x00000008)
991 #define IS_ETH_MAC_IT(IT) ((((IT) & (uint32_t)0xFFFFFDF7) == 0x00) && ((IT) != 0x00))
992 #define IS_ETH_MAC_GET_IT(IT) (((IT) == ETH_MAC_IT_TST) || ((IT) == ETH_MAC_IT_MMCT) || \
993 ((IT) == ETH_MAC_IT_MMCR) || ((IT) == ETH_MAC_IT_MMC) || \
994 ((IT) == ETH_MAC_IT_PMT))
1002 #define ETH_MAC_Address0 ((uint32_t)0x00000000)
1003 #define ETH_MAC_Address1 ((uint32_t)0x00000008)
1004 #define ETH_MAC_Address2 ((uint32_t)0x00000010)
1005 #define ETH_MAC_Address3 ((uint32_t)0x00000018)
1006 #define IS_ETH_MAC_ADDRESS0123(ADDRESS) (((ADDRESS) == ETH_MAC_Address0) || \
1007 ((ADDRESS) == ETH_MAC_Address1) || \
1008 ((ADDRESS) == ETH_MAC_Address2) || \
1009 ((ADDRESS) == ETH_MAC_Address3))
1010 #define IS_ETH_MAC_ADDRESS123(ADDRESS) (((ADDRESS) == ETH_MAC_Address1) || \
1011 ((ADDRESS) == ETH_MAC_Address2) || \
1012 ((ADDRESS) == ETH_MAC_Address3))
1020 #define ETH_MAC_AddressFilter_SA ((uint32_t)0x00000000)
1021 #define ETH_MAC_AddressFilter_DA ((uint32_t)0x00000008)
1022 #define IS_ETH_MAC_ADDRESS_FILTER(FILTER) (((FILTER) == ETH_MAC_AddressFilter_SA) || \
1023 ((FILTER) == ETH_MAC_AddressFilter_DA))
1031 #define ETH_MAC_AddressMask_Byte6 ((uint32_t)0x20000000)
1032 #define ETH_MAC_AddressMask_Byte5 ((uint32_t)0x10000000)
1033 #define ETH_MAC_AddressMask_Byte4 ((uint32_t)0x08000000)
1034 #define ETH_MAC_AddressMask_Byte3 ((uint32_t)0x04000000)
1035 #define ETH_MAC_AddressMask_Byte2 ((uint32_t)0x02000000)
1036 #define ETH_MAC_AddressMask_Byte1 ((uint32_t)0x01000000)
1037 #define IS_ETH_MAC_ADDRESS_MASK(MASK) (((MASK) == ETH_MAC_AddressMask_Byte6) || \
1038 ((MASK) == ETH_MAC_AddressMask_Byte5) || \
1039 ((MASK) == ETH_MAC_AddressMask_Byte4) || \
1040 ((MASK) == ETH_MAC_AddressMask_Byte3) || \
1041 ((MASK) == ETH_MAC_AddressMask_Byte2) || \
1042 ((MASK) == ETH_MAC_AddressMask_Byte1))
1056 #define IS_ETH_DMATxDESC_GET_FLAG(FLAG) (((FLAG) == ETH_DMATxDesc_OWN) || \
1057 ((FLAG) == ETH_DMATxDesc_IC) || \
1058 ((FLAG) == ETH_DMATxDesc_LS) || \
1059 ((FLAG) == ETH_DMATxDesc_FS) || \
1060 ((FLAG) == ETH_DMATxDesc_DC) || \
1061 ((FLAG) == ETH_DMATxDesc_DP) || \
1062 ((FLAG) == ETH_DMATxDesc_TTSE) || \
1063 ((FLAG) == ETH_DMATxDesc_TER) || \
1064 ((FLAG) == ETH_DMATxDesc_TCH) || \
1065 ((FLAG) == ETH_DMATxDesc_TTSS) || \
1066 ((FLAG) == ETH_DMATxDesc_IHE) || \
1067 ((FLAG) == ETH_DMATxDesc_ES) || \
1068 ((FLAG) == ETH_DMATxDesc_JT) || \
1069 ((FLAG) == ETH_DMATxDesc_FF) || \
1070 ((FLAG) == ETH_DMATxDesc_PCE) || \
1071 ((FLAG) == ETH_DMATxDesc_LCA) || \
1072 ((FLAG) == ETH_DMATxDesc_NC) || \
1073 ((FLAG) == ETH_DMATxDesc_LCO) || \
1074 ((FLAG) == ETH_DMATxDesc_EC) || \
1075 ((FLAG) == ETH_DMATxDesc_VF) || \
1076 ((FLAG) == ETH_DMATxDesc_CC) || \
1077 ((FLAG) == ETH_DMATxDesc_ED) || \
1078 ((FLAG) == ETH_DMATxDesc_UF) || \
1079 ((FLAG) == ETH_DMATxDesc_DB))
1088 #define ETH_DMATxDesc_LastSegment ((uint32_t)0x40000000)
1089 #define ETH_DMATxDesc_FirstSegment ((uint32_t)0x20000000)
1090 #define IS_ETH_DMA_TXDESC_SEGMENT(SEGMENT) (((SEGMENT) == ETH_DMATxDesc_LastSegment) || \
1091 ((SEGMENT) == ETH_DMATxDesc_FirstSegment))
1100 #define ETH_DMATxDesc_ChecksumByPass ((uint32_t)0x00000000)
1101 #define ETH_DMATxDesc_ChecksumIPV4Header ((uint32_t)0x00400000)
1102 #define ETH_DMATxDesc_ChecksumTCPUDPICMPSegment ((uint32_t)0x00800000)
1103 #define ETH_DMATxDesc_ChecksumTCPUDPICMPFull ((uint32_t)0x00C00000)
1104 #define IS_ETH_DMA_TXDESC_CHECKSUM(CHECKSUM) (((CHECKSUM) == ETH_DMATxDesc_ChecksumByPass) || \
1105 ((CHECKSUM) == ETH_DMATxDesc_ChecksumIPV4Header) || \
1106 ((CHECKSUM) == ETH_DMATxDesc_ChecksumTCPUDPICMPSegment) || \
1107 ((CHECKSUM) == ETH_DMATxDesc_ChecksumTCPUDPICMPFull))
1111 #define IS_ETH_DMATxDESC_BUFFER_SIZE(SIZE) ((SIZE) <= 0x1FFF)
1120 #define IS_ETH_DMARxDESC_GET_FLAG(FLAG) (((FLAG) == ETH_DMARxDesc_OWN) || \
1121 ((FLAG) == ETH_DMARxDesc_AFM) || \
1122 ((FLAG) == ETH_DMARxDesc_ES) || \
1123 ((FLAG) == ETH_DMARxDesc_DE) || \
1124 ((FLAG) == ETH_DMARxDesc_SAF) || \
1125 ((FLAG) == ETH_DMARxDesc_LE) || \
1126 ((FLAG) == ETH_DMARxDesc_OE) || \
1127 ((FLAG) == ETH_DMARxDesc_VLAN) || \
1128 ((FLAG) == ETH_DMARxDesc_FS) || \
1129 ((FLAG) == ETH_DMARxDesc_LS) || \
1130 ((FLAG) == ETH_DMARxDesc_IPV4HCE) || \
1131 ((FLAG) == ETH_DMARxDesc_LC) || \
1132 ((FLAG) == ETH_DMARxDesc_FT) || \
1133 ((FLAG) == ETH_DMARxDesc_RWT) || \
1134 ((FLAG) == ETH_DMARxDesc_RE) || \
1135 ((FLAG) == ETH_DMARxDesc_DBE) || \
1136 ((FLAG) == ETH_DMARxDesc_CE) || \
1137 ((FLAG) == ETH_DMARxDesc_MAMPCE))
1140 #define IS_ETH_DMAPTPRxDESC_GET_EXTENDED_FLAG(FLAG) (((FLAG) == ETH_DMAPTPRxDesc_PTPV) || \
1141 ((FLAG) == ETH_DMAPTPRxDesc_PTPFT) || \
1142 ((FLAG) == ETH_DMAPTPRxDesc_PTPMT) || \
1143 ((FLAG) == ETH_DMAPTPRxDesc_IPV6PR) || \
1144 ((FLAG) == ETH_DMAPTPRxDesc_IPV4PR) || \
1145 ((FLAG) == ETH_DMAPTPRxDesc_IPCB) || \
1146 ((FLAG) == ETH_DMAPTPRxDesc_IPPE) || \
1147 ((FLAG) == ETH_DMAPTPRxDesc_IPHE) || \
1148 ((FLAG) == ETH_DMAPTPRxDesc_IPPT))
1157 #define ETH_DMARxDesc_Buffer1 ((uint32_t)0x00000000)
1158 #define ETH_DMARxDesc_Buffer2 ((uint32_t)0x00000001)
1159 #define IS_ETH_DMA_RXDESC_BUFFER(BUFFER) (((BUFFER) == ETH_DMARxDesc_Buffer1) || \
1160 ((BUFFER) == ETH_DMARxDesc_Buffer2))
1174 #define ETH_DropTCPIPChecksumErrorFrame_Enable ((uint32_t)0x00000000)
1175 #define ETH_DropTCPIPChecksumErrorFrame_Disable ((uint32_t)0x04000000)
1176 #define IS_ETH_DROP_TCPIP_CHECKSUM_FRAME(CMD) (((CMD) == ETH_DropTCPIPChecksumErrorFrame_Enable) || \
1177 ((CMD) == ETH_DropTCPIPChecksumErrorFrame_Disable))
1185 #define ETH_ReceiveStoreForward_Enable ((uint32_t)0x02000000)
1186 #define ETH_ReceiveStoreForward_Disable ((uint32_t)0x00000000)
1187 #define IS_ETH_RECEIVE_STORE_FORWARD(CMD) (((CMD) == ETH_ReceiveStoreForward_Enable) || \
1188 ((CMD) == ETH_ReceiveStoreForward_Disable))
1196 #define ETH_FlushReceivedFrame_Enable ((uint32_t)0x00000000)
1197 #define ETH_FlushReceivedFrame_Disable ((uint32_t)0x01000000)
1198 #define IS_ETH_FLUSH_RECEIVE_FRAME(CMD) (((CMD) == ETH_FlushReceivedFrame_Enable) || \
1199 ((CMD) == ETH_FlushReceivedFrame_Disable))
1207 #define ETH_TransmitStoreForward_Enable ((uint32_t)0x00200000)
1208 #define ETH_TransmitStoreForward_Disable ((uint32_t)0x00000000)
1209 #define IS_ETH_TRANSMIT_STORE_FORWARD(CMD) (((CMD) == ETH_TransmitStoreForward_Enable) || \
1210 ((CMD) == ETH_TransmitStoreForward_Disable))
1218 #define ETH_TransmitThresholdControl_64Bytes ((uint32_t)0x00000000)
1219 #define ETH_TransmitThresholdControl_128Bytes ((uint32_t)0x00004000)
1220 #define ETH_TransmitThresholdControl_192Bytes ((uint32_t)0x00008000)
1221 #define ETH_TransmitThresholdControl_256Bytes ((uint32_t)0x0000C000)
1222 #define ETH_TransmitThresholdControl_40Bytes ((uint32_t)0x00010000)
1223 #define ETH_TransmitThresholdControl_32Bytes ((uint32_t)0x00014000)
1224 #define ETH_TransmitThresholdControl_24Bytes ((uint32_t)0x00018000)
1225 #define ETH_TransmitThresholdControl_16Bytes ((uint32_t)0x0001C000)
1226 #define IS_ETH_TRANSMIT_THRESHOLD_CONTROL(THRESHOLD) (((THRESHOLD) == ETH_TransmitThresholdControl_64Bytes) || \
1227 ((THRESHOLD) == ETH_TransmitThresholdControl_128Bytes) || \
1228 ((THRESHOLD) == ETH_TransmitThresholdControl_192Bytes) || \
1229 ((THRESHOLD) == ETH_TransmitThresholdControl_256Bytes) || \
1230 ((THRESHOLD) == ETH_TransmitThresholdControl_40Bytes) || \
1231 ((THRESHOLD) == ETH_TransmitThresholdControl_32Bytes) || \
1232 ((THRESHOLD) == ETH_TransmitThresholdControl_24Bytes) || \
1233 ((THRESHOLD) == ETH_TransmitThresholdControl_16Bytes))
1241 #define ETH_ForwardErrorFrames_Enable ((uint32_t)0x00000080)
1242 #define ETH_ForwardErrorFrames_Disable ((uint32_t)0x00000000)
1243 #define IS_ETH_FORWARD_ERROR_FRAMES(CMD) (((CMD) == ETH_ForwardErrorFrames_Enable) || \
1244 ((CMD) == ETH_ForwardErrorFrames_Disable))
1252 #define ETH_ForwardUndersizedGoodFrames_Enable ((uint32_t)0x00000040)
1253 #define ETH_ForwardUndersizedGoodFrames_Disable ((uint32_t)0x00000000)
1254 #define IS_ETH_FORWARD_UNDERSIZED_GOOD_FRAMES(CMD) (((CMD) == ETH_ForwardUndersizedGoodFrames_Enable) || \
1255 ((CMD) == ETH_ForwardUndersizedGoodFrames_Disable))
1264 #define ETH_ReceiveThresholdControl_64Bytes ((uint32_t)0x00000000)
1265 #define ETH_ReceiveThresholdControl_32Bytes ((uint32_t)0x00000008)
1266 #define ETH_ReceiveThresholdControl_96Bytes ((uint32_t)0x00000010)
1267 #define ETH_ReceiveThresholdControl_128Bytes ((uint32_t)0x00000018)
1268 #define IS_ETH_RECEIVE_THRESHOLD_CONTROL(THRESHOLD) (((THRESHOLD) == ETH_ReceiveThresholdControl_64Bytes) || \
1269 ((THRESHOLD) == ETH_ReceiveThresholdControl_32Bytes) || \
1270 ((THRESHOLD) == ETH_ReceiveThresholdControl_96Bytes) || \
1271 ((THRESHOLD) == ETH_ReceiveThresholdControl_128Bytes))
1279 #define ETH_SecondFrameOperate_Enable ((uint32_t)0x00000004)
1280 #define ETH_SecondFrameOperate_Disable ((uint32_t)0x00000000)
1281 #define IS_ETH_SECOND_FRAME_OPERATE(CMD) (((CMD) == ETH_SecondFrameOperate_Enable) || \
1282 ((CMD) == ETH_SecondFrameOperate_Disable))
1291 #define ETH_AddressAlignedBeats_Enable ((uint32_t)0x02000000)
1292 #define ETH_AddressAlignedBeats_Disable ((uint32_t)0x00000000)
1293 #define IS_ETH_ADDRESS_ALIGNED_BEATS(CMD) (((CMD) == ETH_AddressAlignedBeats_Enable) || \
1294 ((CMD) == ETH_AddressAlignedBeats_Disable))
1303 #define ETH_FixedBurst_Enable ((uint32_t)0x00010000)
1304 #define ETH_FixedBurst_Disable ((uint32_t)0x00000000)
1305 #define IS_ETH_FIXED_BURST(CMD) (((CMD) == ETH_FixedBurst_Enable) || \
1306 ((CMD) == ETH_FixedBurst_Disable))
1315 #define ETH_RxDMABurstLength_1Beat ((uint32_t)0x00020000)
1316 #define ETH_RxDMABurstLength_2Beat ((uint32_t)0x00040000)
1317 #define ETH_RxDMABurstLength_4Beat ((uint32_t)0x00080000)
1318 #define ETH_RxDMABurstLength_8Beat ((uint32_t)0x00100000)
1319 #define ETH_RxDMABurstLength_16Beat ((uint32_t)0x00200000)
1320 #define ETH_RxDMABurstLength_32Beat ((uint32_t)0x00400000)
1321 #define ETH_RxDMABurstLength_4xPBL_4Beat ((uint32_t)0x01020000)
1322 #define ETH_RxDMABurstLength_4xPBL_8Beat ((uint32_t)0x01040000)
1323 #define ETH_RxDMABurstLength_4xPBL_16Beat ((uint32_t)0x01080000)
1324 #define ETH_RxDMABurstLength_4xPBL_32Beat ((uint32_t)0x01100000)
1325 #define ETH_RxDMABurstLength_4xPBL_64Beat ((uint32_t)0x01200000)
1326 #define ETH_RxDMABurstLength_4xPBL_128Beat ((uint32_t)0x01400000)
1328 #define IS_ETH_RXDMA_BURST_LENGTH(LENGTH) (((LENGTH) == ETH_RxDMABurstLength_1Beat) || \
1329 ((LENGTH) == ETH_RxDMABurstLength_2Beat) || \
1330 ((LENGTH) == ETH_RxDMABurstLength_4Beat) || \
1331 ((LENGTH) == ETH_RxDMABurstLength_8Beat) || \
1332 ((LENGTH) == ETH_RxDMABurstLength_16Beat) || \
1333 ((LENGTH) == ETH_RxDMABurstLength_32Beat) || \
1334 ((LENGTH) == ETH_RxDMABurstLength_4xPBL_4Beat) || \
1335 ((LENGTH) == ETH_RxDMABurstLength_4xPBL_8Beat) || \
1336 ((LENGTH) == ETH_RxDMABurstLength_4xPBL_16Beat) || \
1337 ((LENGTH) == ETH_RxDMABurstLength_4xPBL_32Beat) || \
1338 ((LENGTH) == ETH_RxDMABurstLength_4xPBL_64Beat) || \
1339 ((LENGTH) == ETH_RxDMABurstLength_4xPBL_128Beat))
1348 #define ETH_TxDMABurstLength_1Beat ((uint32_t)0x00000100)
1349 #define ETH_TxDMABurstLength_2Beat ((uint32_t)0x00000200)
1350 #define ETH_TxDMABurstLength_4Beat ((uint32_t)0x00000400)
1351 #define ETH_TxDMABurstLength_8Beat ((uint32_t)0x00000800)
1352 #define ETH_TxDMABurstLength_16Beat ((uint32_t)0x00001000)
1353 #define ETH_TxDMABurstLength_32Beat ((uint32_t)0x00002000)
1354 #define ETH_TxDMABurstLength_4xPBL_4Beat ((uint32_t)0x01000100)
1355 #define ETH_TxDMABurstLength_4xPBL_8Beat ((uint32_t)0x01000200)
1356 #define ETH_TxDMABurstLength_4xPBL_16Beat ((uint32_t)0x01000400)
1357 #define ETH_TxDMABurstLength_4xPBL_32Beat ((uint32_t)0x01000800)
1358 #define ETH_TxDMABurstLength_4xPBL_64Beat ((uint32_t)0x01001000)
1359 #define ETH_TxDMABurstLength_4xPBL_128Beat ((uint32_t)0x01002000)
1361 #define IS_ETH_TXDMA_BURST_LENGTH(LENGTH) (((LENGTH) == ETH_TxDMABurstLength_1Beat) || \
1362 ((LENGTH) == ETH_TxDMABurstLength_2Beat) || \
1363 ((LENGTH) == ETH_TxDMABurstLength_4Beat) || \
1364 ((LENGTH) == ETH_TxDMABurstLength_8Beat) || \
1365 ((LENGTH) == ETH_TxDMABurstLength_16Beat) || \
1366 ((LENGTH) == ETH_TxDMABurstLength_32Beat) || \
1367 ((LENGTH) == ETH_TxDMABurstLength_4xPBL_4Beat) || \
1368 ((LENGTH) == ETH_TxDMABurstLength_4xPBL_8Beat) || \
1369 ((LENGTH) == ETH_TxDMABurstLength_4xPBL_16Beat) || \
1370 ((LENGTH) == ETH_TxDMABurstLength_4xPBL_32Beat) || \
1371 ((LENGTH) == ETH_TxDMABurstLength_4xPBL_64Beat) || \
1372 ((LENGTH) == ETH_TxDMABurstLength_4xPBL_128Beat))
1376 #define IS_ETH_DMA_DESC_SKIP_LENGTH(LENGTH) ((LENGTH) <= 0x1F)
1385 #define ETH_DMAArbitration_RoundRobin_RxTx_1_1 ((uint32_t)0x00000000)
1386 #define ETH_DMAArbitration_RoundRobin_RxTx_2_1 ((uint32_t)0x00004000)
1387 #define ETH_DMAArbitration_RoundRobin_RxTx_3_1 ((uint32_t)0x00008000)
1388 #define ETH_DMAArbitration_RoundRobin_RxTx_4_1 ((uint32_t)0x0000C000)
1389 #define ETH_DMAArbitration_RxPriorTx ((uint32_t)0x00000002)
1390 #define IS_ETH_DMA_ARBITRATION_ROUNDROBIN_RXTX(RATIO) (((RATIO) == ETH_DMAArbitration_RoundRobin_RxTx_1_1) || \
1391 ((RATIO) == ETH_DMAArbitration_RoundRobin_RxTx_2_1) || \
1392 ((RATIO) == ETH_DMAArbitration_RoundRobin_RxTx_3_1) || \
1393 ((RATIO) == ETH_DMAArbitration_RoundRobin_RxTx_4_1) || \
1394 ((RATIO) == ETH_DMAArbitration_RxPriorTx))
1402 #define ETH_DMA_FLAG_TST ((uint32_t)0x20000000)
1403 #define ETH_DMA_FLAG_PMT ((uint32_t)0x10000000)
1404 #define ETH_DMA_FLAG_MMC ((uint32_t)0x08000000)
1405 #define ETH_DMA_FLAG_DataTransferError ((uint32_t)0x00800000)
1406 #define ETH_DMA_FLAG_ReadWriteError ((uint32_t)0x01000000)
1407 #define ETH_DMA_FLAG_AccessError ((uint32_t)0x02000000)
1408 #define ETH_DMA_FLAG_NIS ((uint32_t)0x00010000)
1409 #define ETH_DMA_FLAG_AIS ((uint32_t)0x00008000)
1410 #define ETH_DMA_FLAG_ER ((uint32_t)0x00004000)
1411 #define ETH_DMA_FLAG_FBE ((uint32_t)0x00002000)
1412 #define ETH_DMA_FLAG_ET ((uint32_t)0x00000400)
1413 #define ETH_DMA_FLAG_RWT ((uint32_t)0x00000200)
1414 #define ETH_DMA_FLAG_RPS ((uint32_t)0x00000100)
1415 #define ETH_DMA_FLAG_RBU ((uint32_t)0x00000080)
1416 #define ETH_DMA_FLAG_R ((uint32_t)0x00000040)
1417 #define ETH_DMA_FLAG_TU ((uint32_t)0x00000020)
1418 #define ETH_DMA_FLAG_RO ((uint32_t)0x00000010)
1419 #define ETH_DMA_FLAG_TJT ((uint32_t)0x00000008)
1420 #define ETH_DMA_FLAG_TBU ((uint32_t)0x00000004)
1421 #define ETH_DMA_FLAG_TPS ((uint32_t)0x00000002)
1422 #define ETH_DMA_FLAG_T ((uint32_t)0x00000001)
1424 #define IS_ETH_DMA_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFFFE1800) == 0x00) && ((FLAG) != 0x00))
1425 #define IS_ETH_DMA_GET_FLAG(FLAG) (((FLAG) == ETH_DMA_FLAG_TST) || ((FLAG) == ETH_DMA_FLAG_PMT) || \
1426 ((FLAG) == ETH_DMA_FLAG_MMC) || ((FLAG) == ETH_DMA_FLAG_DataTransferError) || \
1427 ((FLAG) == ETH_DMA_FLAG_ReadWriteError) || ((FLAG) == ETH_DMA_FLAG_AccessError) || \
1428 ((FLAG) == ETH_DMA_FLAG_NIS) || ((FLAG) == ETH_DMA_FLAG_AIS) || \
1429 ((FLAG) == ETH_DMA_FLAG_ER) || ((FLAG) == ETH_DMA_FLAG_FBE) || \
1430 ((FLAG) == ETH_DMA_FLAG_ET) || ((FLAG) == ETH_DMA_FLAG_RWT) || \
1431 ((FLAG) == ETH_DMA_FLAG_RPS) || ((FLAG) == ETH_DMA_FLAG_RBU) || \
1432 ((FLAG) == ETH_DMA_FLAG_R) || ((FLAG) == ETH_DMA_FLAG_TU) || \
1433 ((FLAG) == ETH_DMA_FLAG_RO) || ((FLAG) == ETH_DMA_FLAG_TJT) || \
1434 ((FLAG) == ETH_DMA_FLAG_TBU) || ((FLAG) == ETH_DMA_FLAG_TPS) || \
1435 ((FLAG) == ETH_DMA_FLAG_T))
1443 #define ETH_DMA_IT_TST ((uint32_t)0x20000000)
1444 #define ETH_DMA_IT_PMT ((uint32_t)0x10000000)
1445 #define ETH_DMA_IT_MMC ((uint32_t)0x08000000)
1446 #define ETH_DMA_IT_NIS ((uint32_t)0x00010000)
1447 #define ETH_DMA_IT_AIS ((uint32_t)0x00008000)
1448 #define ETH_DMA_IT_ER ((uint32_t)0x00004000)
1449 #define ETH_DMA_IT_FBE ((uint32_t)0x00002000)
1450 #define ETH_DMA_IT_ET ((uint32_t)0x00000400)
1451 #define ETH_DMA_IT_RWT ((uint32_t)0x00000200)
1452 #define ETH_DMA_IT_RPS ((uint32_t)0x00000100)
1453 #define ETH_DMA_IT_RBU ((uint32_t)0x00000080)
1454 #define ETH_DMA_IT_R ((uint32_t)0x00000040)
1455 #define ETH_DMA_IT_TU ((uint32_t)0x00000020)
1456 #define ETH_DMA_IT_RO ((uint32_t)0x00000010)
1457 #define ETH_DMA_IT_TJT ((uint32_t)0x00000008)
1458 #define ETH_DMA_IT_TBU ((uint32_t)0x00000004)
1459 #define ETH_DMA_IT_TPS ((uint32_t)0x00000002)
1460 #define ETH_DMA_IT_T ((uint32_t)0x00000001)
1462 #define IS_ETH_DMA_IT(IT) ((((IT) & (uint32_t)0xFFFE1800) == 0x00) && ((IT) != 0x00))
1463 #define IS_ETH_DMA_GET_IT(IT) (((IT) == ETH_DMA_IT_TST) || ((IT) == ETH_DMA_IT_PMT) || \
1464 ((IT) == ETH_DMA_IT_MMC) || ((IT) == ETH_DMA_IT_NIS) || \
1465 ((IT) == ETH_DMA_IT_AIS) || ((IT) == ETH_DMA_IT_ER) || \
1466 ((IT) == ETH_DMA_IT_FBE) || ((IT) == ETH_DMA_IT_ET) || \
1467 ((IT) == ETH_DMA_IT_RWT) || ((IT) == ETH_DMA_IT_RPS) || \
1468 ((IT) == ETH_DMA_IT_RBU) || ((IT) == ETH_DMA_IT_R) || \
1469 ((IT) == ETH_DMA_IT_TU) || ((IT) == ETH_DMA_IT_RO) || \
1470 ((IT) == ETH_DMA_IT_TJT) || ((IT) == ETH_DMA_IT_TBU) || \
1471 ((IT) == ETH_DMA_IT_TPS) || ((IT) == ETH_DMA_IT_T))
1480 #define ETH_DMA_TransmitProcess_Stopped ((uint32_t)0x00000000)
1481 #define ETH_DMA_TransmitProcess_Fetching ((uint32_t)0x00100000)
1482 #define ETH_DMA_TransmitProcess_Waiting ((uint32_t)0x00200000)
1483 #define ETH_DMA_TransmitProcess_Reading ((uint32_t)0x00300000)
1484 #define ETH_DMA_TransmitProcess_Suspended ((uint32_t)0x00600000)
1485 #define ETH_DMA_TransmitProcess_Closing ((uint32_t)0x00700000)
1495 #define ETH_DMA_ReceiveProcess_Stopped ((uint32_t)0x00000000)
1496 #define ETH_DMA_ReceiveProcess_Fetching ((uint32_t)0x00020000)
1497 #define ETH_DMA_ReceiveProcess_Waiting ((uint32_t)0x00060000)
1498 #define ETH_DMA_ReceiveProcess_Suspended ((uint32_t)0x00080000)
1499 #define ETH_DMA_ReceiveProcess_Closing ((uint32_t)0x000A0000)
1500 #define ETH_DMA_ReceiveProcess_Queuing ((uint32_t)0x000E0000)
1509 #define ETH_DMA_Overflow_RxFIFOCounter ((uint32_t)0x10000000)
1510 #define ETH_DMA_Overflow_MissedFrameCounter ((uint32_t)0x00010000)
1511 #define IS_ETH_DMA_GET_OVERFLOW(OVERFLOW) (((OVERFLOW) == ETH_DMA_Overflow_RxFIFOCounter) || \
1512 ((OVERFLOW) == ETH_DMA_Overflow_MissedFrameCounter))
1526 #define ETH_PMT_FLAG_WUFFRPR ((uint32_t)0x80000000)
1527 #define ETH_PMT_FLAG_WUFR ((uint32_t)0x00000040)
1528 #define ETH_PMT_FLAG_MPR ((uint32_t)0x00000020)
1529 #define IS_ETH_PMT_GET_FLAG(FLAG) (((FLAG) == ETH_PMT_FLAG_WUFR) || \
1530 ((FLAG) == ETH_PMT_FLAG_MPR))
1544 #define ETH_MMC_IT_TGF ((uint32_t)0x00200000)
1545 #define ETH_MMC_IT_TGFMSC ((uint32_t)0x00008000)
1546 #define ETH_MMC_IT_TGFSC ((uint32_t)0x00004000)
1555 #define ETH_MMC_IT_RGUF ((uint32_t)0x10020000)
1556 #define ETH_MMC_IT_RFAE ((uint32_t)0x10000040)
1557 #define ETH_MMC_IT_RFCE ((uint32_t)0x10000020)
1558 #define IS_ETH_MMC_IT(IT) (((((IT) & (uint32_t)0xFFDF3FFF) == 0x00) || (((IT) & (uint32_t)0xEFFDFF9F) == 0x00)) && \
1560 #define IS_ETH_MMC_GET_IT(IT) (((IT) == ETH_MMC_IT_TGF) || ((IT) == ETH_MMC_IT_TGFMSC) || \
1561 ((IT) == ETH_MMC_IT_TGFSC) || ((IT) == ETH_MMC_IT_RGUF) || \
1562 ((IT) == ETH_MMC_IT_RFAE) || ((IT) == ETH_MMC_IT_RFCE))
1570 #define ETH_MMCCR ((uint32_t)0x00000100)
1571 #define ETH_MMCRIR ((uint32_t)0x00000104)
1572 #define ETH_MMCTIR ((uint32_t)0x00000108)
1573 #define ETH_MMCRIMR ((uint32_t)0x0000010C)
1574 #define ETH_MMCTIMR ((uint32_t)0x00000110)
1575 #define ETH_MMCTGFSCCR ((uint32_t)0x0000014C)
1576 #define ETH_MMCTGFMSCCR ((uint32_t)0x00000150)
1577 #define ETH_MMCTGFCR ((uint32_t)0x00000168)
1578 #define ETH_MMCRFCECR ((uint32_t)0x00000194)
1579 #define ETH_MMCRFAECR ((uint32_t)0x00000198)
1580 #define ETH_MMCRGUFCR ((uint32_t)0x000001C4)
1585 #define IS_ETH_MMC_REGISTER(REG) (((REG) == ETH_MMCCR) || ((REG) == ETH_MMCRIR) || \
1586 ((REG) == ETH_MMCTIR) || ((REG) == ETH_MMCRIMR) || \
1587 ((REG) == ETH_MMCTIMR) || ((REG) == ETH_MMCTGFSCCR) || \
1588 ((REG) == ETH_MMCTGFMSCCR) || ((REG) == ETH_MMCTGFCR) || \
1589 ((REG) == ETH_MMCRFCECR) || ((REG) == ETH_MMCRFAECR) || \
1590 ((REG) == ETH_MMCRGUFCR))
1604 #define ETH_PTP_FineUpdate ((uint32_t)0x00000001)
1605 #define ETH_PTP_CoarseUpdate ((uint32_t)0x00000000)
1606 #define IS_ETH_PTP_UPDATE(UPDATE) (((UPDATE) == ETH_PTP_FineUpdate) || \
1607 ((UPDATE) == ETH_PTP_CoarseUpdate))
1617 #define ETH_PTP_FLAG_TSARU ((uint32_t)0x00000020)
1618 #define ETH_PTP_FLAG_TSITE ((uint32_t)0x00000010)
1619 #define ETH_PTP_FLAG_TSSTU ((uint32_t)0x00000008)
1620 #define ETH_PTP_FLAG_TSSTI ((uint32_t)0x00000004)
1622 #define ETH_PTP_FLAG_TSTTR ((uint32_t)0x10000002)
1623 #define ETH_PTP_FLAG_TSSO ((uint32_t)0x10000001)
1625 #define IS_ETH_PTP_GET_FLAG(FLAG) (((FLAG) == ETH_PTP_FLAG_TSARU) || \
1626 ((FLAG) == ETH_PTP_FLAG_TSITE) || \
1627 ((FLAG) == ETH_PTP_FLAG_TSSTU) || \
1628 ((FLAG) == ETH_PTP_FLAG_TSSTI) || \
1629 ((FLAG) == ETH_PTP_FLAG_TSTTR) || \
1630 ((FLAG) == ETH_PTP_FLAG_TSSO))
1635 #define IS_ETH_PTP_SUBSECOND_INCREMENT(SUBSECOND) ((SUBSECOND) <= 0xFF)
1645 #define ETH_PTP_PositiveTime ((uint32_t)0x00000000)
1646 #define ETH_PTP_NegativeTime ((uint32_t)0x80000000)
1647 #define IS_ETH_PTP_TIME_SIGN(SIGN) (((SIGN) == ETH_PTP_PositiveTime) || \
1648 ((SIGN) == ETH_PTP_NegativeTime))
1653 #define IS_ETH_PTP_TIME_STAMP_UPDATE_SUBSECOND(SUBSECOND) ((SUBSECOND) <= 0x7FFFFFFF)
1658 #define ETH_PTPTSCR ((uint32_t)0x00000700)
1659 #define ETH_PTPSSIR ((uint32_t)0x00000704)
1660 #define ETH_PTPTSHR ((uint32_t)0x00000708)
1661 #define ETH_PTPTSLR ((uint32_t)0x0000070C)
1662 #define ETH_PTPTSHUR ((uint32_t)0x00000710)
1663 #define ETH_PTPTSLUR ((uint32_t)0x00000714)
1664 #define ETH_PTPTSAR ((uint32_t)0x00000718)
1665 #define ETH_PTPTTHR ((uint32_t)0x0000071C)
1666 #define ETH_PTPTTLR ((uint32_t)0x00000720)
1668 #define ETH_PTPTSSR ((uint32_t)0x00000728)
1670 #define IS_ETH_PTP_REGISTER(REG) (((REG) == ETH_PTPTSCR) || ((REG) == ETH_PTPSSIR) || \
1671 ((REG) == ETH_PTPTSHR) || ((REG) == ETH_PTPTSLR) || \
1672 ((REG) == ETH_PTPTSHUR) || ((REG) == ETH_PTPTSLUR) || \
1673 ((REG) == ETH_PTPTSAR) || ((REG) == ETH_PTPTTHR) || \
1674 ((REG) == ETH_PTPTTLR) || ((REG) == ETH_PTPTSSR))
1679 #define ETH_PTP_OrdinaryClock ((uint32_t)0x00000000)
1680 #define ETH_PTP_BoundaryClock ((uint32_t)0x00010000)
1681 #define ETH_PTP_EndToEndTransparentClock ((uint32_t)0x00020000)
1682 #define ETH_PTP_PeerToPeerTransparentClock ((uint32_t)0x00030000)
1684 #define IS_ETH_PTP_TYPE_CLOCK(CLOCK) (((CLOCK) == ETH_PTP_OrdinaryClock) || \
1685 ((CLOCK) == ETH_PTP_BoundaryClock) || \
1686 ((CLOCK) == ETH_PTP_EndToEndTransparentClock) || \
1687 ((CLOCK) == ETH_PTP_PeerToPeerTransparentClock))
1691 #define ETH_PTP_SnapshotMasterMessage ((uint32_t)0x00008000)
1692 #define ETH_PTP_SnapshotEventMessage ((uint32_t)0x00004000)
1693 #define ETH_PTP_SnapshotIPV4Frames ((uint32_t)0x00002000)
1694 #define ETH_PTP_SnapshotIPV6Frames ((uint32_t)0x00001000)
1695 #define ETH_PTP_SnapshotPTPOverEthernetFrames ((uint32_t)0x00000800)
1696 #define ETH_PTP_SnapshotAllReceivedFrames ((uint32_t)0x00000100)
1698 #define IS_ETH_PTP_SNAPSHOT(SNAPSHOT) (((SNAPSHOT) == ETH_PTP_SnapshotMasterMessage) || \
1699 ((SNAPSHOT) == ETH_PTP_SnapshotEventMessage) || \
1700 ((SNAPSHOT) == ETH_PTP_SnapshotIPV4Frames) || \
1701 ((SNAPSHOT) == ETH_PTP_SnapshotIPV6Frames) || \
1702 ((SNAPSHOT) == ETH_PTP_SnapshotPTPOverEthernetFrames) || \
1703 ((SNAPSHOT) == ETH_PTP_SnapshotAllReceivedFrames))
1709 #define ETH_MAC_ADDR_HBASE (ETH_MAC_BASE + 0x40)
1710 #define ETH_MAC_ADDR_LBASE (ETH_MAC_BASE + 0x44)
1713 #define MACMIIAR_CR_MASK ((uint32_t)0xFFFFFFE3)
1716 #define MACCR_CLEAR_MASK ((uint32_t)0xFF20810F)
1719 #define MACFCR_CLEAR_MASK ((uint32_t)0x0000FF41)
1723 #define DMAOMR_CLEAR_MASK ((uint32_t)0xF8DE3F23)
1727 #define ETH_WAKEUP_REGISTER_LENGTH 8
1730 #define ETH_DMA_RX_OVERFLOW_MISSEDFRAMES_COUNTERSHIFT 17
1733 #define ETH_DMATXDESC_COLLISION_COUNTSHIFT 3
1736 #define ETH_DMATXDESC_BUFFER2_SIZESHIFT 16
1739 #define ETH_DMARXDESC_FRAME_LENGTHSHIFT 16
1742 #define ETH_DMARXDESC_BUFFER2_SIZESHIFT 16
1745 #define ETH_ERROR ((uint32_t)0)
1746 #define ETH_SUCCESS ((uint32_t)1)
1762 void ETH_Init_MII_Only(
void);
1763 void ETH_DeInit(
void);
1764 uint32_t ETH_Init(
ETH_InitTypeDef* ETH_InitStruct, uint16_t PHYAddress);
1766 void ETH_SoftwareReset(
void);
1767 FlagStatus ETH_GetSoftwareResetStatus(
void);
1768 void ETH_Start(
void);
1769 void ETH_Stop(
void);
1773 #ifdef USE_ENHANCED_DMA_DESCRIPTORS
1774 void ETH_EnhancedDescriptorCmd(FunctionalState NewState);
1781 uint32_t ETH_WritePHYRegister(uint16_t PHYAddress, uint16_t PHYReg, uint16_t PHYValue);
1782 uint32_t ETH_PHYLoopBackCmd(uint16_t PHYAddress, FunctionalState NewState);
1788 void ETH_MACReceptionCmd(FunctionalState NewState);
1789 FlagStatus ETH_GetFlowControlBusyStatus(
void);
1790 void ETH_InitiatePauseControlFrame(
void);
1791 void ETH_BackPressureActivationCmd(FunctionalState NewState);
1792 FlagStatus ETH_GetMACFlagStatus(uint32_t ETH_MAC_FLAG);
1793 ITStatus ETH_GetMACITStatus(uint32_t ETH_MAC_IT);
1794 void ETH_MACITConfig(uint32_t ETH_MAC_IT, FunctionalState NewState);
1795 void ETH_MACAddressConfig(uint32_t MacAddr, uint8_t *Addr);
1796 void ETH_GetMACAddress(uint32_t MacAddr, uint8_t *Addr);
1797 void ETH_MACAddressPerfectFilterCmd(uint32_t MacAddr, FunctionalState NewState);
1798 void ETH_MACAddressFilterConfig(uint32_t MacAddr, uint32_t Filter);
1799 void ETH_MACAddressMaskBytesFilterConfig(uint32_t MacAddr, uint32_t MaskByte);
1805 void ETH_DMATxDescChainInit(
ETH_DMADESCTypeDef *DMATxDescTab, uint8_t* TxBuff, uint32_t TxBuffCount);
1806 uint32_t ETH_CheckFrameReceived(
void);
1807 uint32_t ETH_Prepare_Transmit_Descriptors(u16 FrameLength);
1808 FrameTypeDef ETH_Get_Received_Frame(
void);
1809 FlagStatus ETH_GetDMATxDescFlagStatus(
ETH_DMADESCTypeDef *DMATxDesc, uint32_t ETH_DMATxDescFlag);
1812 void ETH_DMATxDescTransmitITConfig(
ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState);
1813 void ETH_DMATxDescFrameSegmentConfig(
ETH_DMADESCTypeDef *DMATxDesc, uint32_t DMATxDesc_FrameSegment);
1814 void ETH_DMATxDescChecksumInsertionConfig(
ETH_DMADESCTypeDef *DMATxDesc, uint32_t DMATxDesc_Checksum);
1816 void ETH_DMATxDescSecondAddressChainedCmd(
ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState);
1817 void ETH_DMATxDescShortFramePaddingCmd(
ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState);
1818 void ETH_DMATxDescBufferSizeConfig(
ETH_DMADESCTypeDef *DMATxDesc, uint32_t BufferSize1, uint32_t BufferSize2);
1819 FlagStatus ETH_GetDMARxDescFlagStatus(
ETH_DMADESCTypeDef *DMARxDesc, uint32_t ETH_DMARxDescFlag);
1820 #ifdef USE_ENHANCED_DMA_DESCRIPTORS
1821 FlagStatus ETH_GetDMAPTPRxDescExtendedFlagStatus(
ETH_DMADESCTypeDef *DMAPTPRxDesc, uint32_t ETH_DMAPTPRxDescExtendedFlag);
1825 void ETH_DMARxDescReceiveITConfig(
ETH_DMADESCTypeDef *DMARxDesc, FunctionalState NewState);
1826 void ETH_DMARxDescSecondAddressChainedCmd(
ETH_DMADESCTypeDef *DMARxDesc, FunctionalState NewState);
1827 uint32_t ETH_GetDMARxDescBufferSize(
ETH_DMADESCTypeDef *DMARxDesc, uint32_t DMARxDesc_Buffer);
1828 FrameTypeDef ETH_Get_Received_Frame_interrupt(
void);
1833 void ETH_DMAClearFlag(uint32_t ETH_DMA_FLAG);
1834 ITStatus ETH_GetDMAITStatus(uint32_t ETH_DMA_IT);
1835 void ETH_DMAClearITPendingBit(uint32_t ETH_DMA_IT);
1836 uint32_t ETH_GetTransmitProcessState(
void);
1837 uint32_t ETH_GetReceiveProcessState(
void);
1838 void ETH_FlushTransmitFIFO(
void);
1839 FlagStatus ETH_GetFlushTransmitFIFOStatus(
void);
1840 void ETH_DMATransmissionCmd(FunctionalState NewState);
1841 void ETH_DMAReceptionCmd(FunctionalState NewState);
1842 void ETH_DMAITConfig(uint32_t ETH_DMA_IT, FunctionalState NewState);
1843 FlagStatus ETH_GetDMAOverflowStatus(uint32_t ETH_DMA_Overflow);
1844 uint32_t ETH_GetRxOverflowMissedFrameCounter(
void);
1845 uint32_t ETH_GetBufferUnavailableMissedFrameCounter(
void);
1846 uint32_t ETH_GetCurrentTxDescStartAddress(
void);
1847 uint32_t ETH_GetCurrentRxDescStartAddress(
void);
1848 uint32_t ETH_GetCurrentTxBufferAddress(
void);
1849 uint32_t ETH_GetCurrentRxBufferAddress(
void);
1850 void ETH_ResumeDMATransmission(
void);
1851 void ETH_ResumeDMAReception(
void);
1852 void ETH_SetReceiveWatchdogTimer(uint8_t Value);
1859 void ETH_SetWakeUpFrameFilterRegister(uint32_t *Buffer);
1860 void ETH_GlobalUnicastWakeUpCmd(FunctionalState NewState);
1861 FlagStatus ETH_GetPMTFlagStatus(uint32_t ETH_PMT_FLAG);
1862 void ETH_WakeUpFrameDetectionCmd(FunctionalState NewState);
1863 void ETH_MagicPacketDetectionCmd(FunctionalState NewState);
1864 void ETH_PowerDownCmd(FunctionalState NewState);
1870 void ETH_MMCCounterHalfPreset(
void);
1871 void ETH_MMCCounterFreezeCmd(FunctionalState NewState);
1872 void ETH_MMCResetOnReadCmd(FunctionalState NewState);
1873 void ETH_MMCCounterRolloverCmd(FunctionalState NewState);
1874 void ETH_MMCCountersReset(
void);
1875 void ETH_MMCITConfig(uint32_t ETH_MMC_IT, FunctionalState NewState);
1876 ITStatus ETH_GetMMCITStatus(uint32_t ETH_MMC_IT);
1877 uint32_t ETH_GetMMCRegister(uint32_t ETH_MMCReg);
uint32_t ETH_DeferralCheck
uint32_t ETH_ReceiveFlowControl
uint32_t ETH_RxDMABurstLength
void ETH_DMARxDescChainInit(ETH_DMADESCTypeDef *DMARxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount)
DMA Tx/Rx descriptors.
uint32_t ETH_AddressAlignedBeats
uint32_t ETH_MulticastFramesFilter
uint32_t ETH_CarrierSense
uint32_t ETH_ForwardErrorFrames
uint32_t ETH_ChecksumOffload
uint32_t ETH_VLANTagIdentifier
uint32_t ETH_TransmitStoreForward
uint32_t ETH_DestinationAddrFilter
uint32_t ETH_DMAArbitration
CMSIS Cortex-M4 Device Peripheral Access Layer Header File. This file contains all the peripheral reg...
uint32_t ETH_ReceiveStoreForward
uint32_t ETH_PauseLowThreshold
uint32_t ETH_HashTableLow
FlagStatus ETH_GetDMAFlagStatus(uint32_t ETH_DMA_FLAG)
DMA.
uint32_t ETH_SourceAddrFilter
uint32_t ETH_TxDMABurstLength
uint32_t ETH_UnicastFramesFilter
uint32_t ETH_SecondFrameOperate
uint32_t ControlBufferSize
uint32_t ETH_BackOffLimit
void ETH_MACTransmissionCmd(FunctionalState NewState)
MAC.
uint32_t ETH_VLANTagComparison
uint16_t ETH_ReadPHYRegister(uint16_t PHYAddress, uint16_t PHYReg)
PHY.
ETH MAC Init structure definition.
uint32_t ETH_BroadcastFramesReception
uint32_t ETH_PassControlFrames
uint32_t ETH_AutoNegotiation
/ * MAC
uint32_t ETH_ReceiveThresholdControl
uint32_t ETH_RetryTransmission
uint32_t Buffer2NextDescAddr
uint32_t ETH_ForwardUndersizedGoodFrames
uint32_t ETH_TransmitThresholdControl
uint32_t ETH_LoopbackMode
uint32_t ETH_PromiscuousMode
uint32_t ETH_InterFrameGap
uint32_t ETH_ZeroQuantaPause
uint32_t ETH_AutomaticPadCRCStrip
uint32_t ETH_UnicastPauseFrameDetect
uint32_t ETH_TransmitFlowControl
void ETH_MMCCounterFullPreset(void)
MMC.
void ETH_ResetWakeUpFrameFilterRegisterPointer(void)
PMT.
uint32_t ETH_DropTCPIPChecksumErrorFrame
/ * DMA
uint32_t ETH_DescriptorSkipLength
uint32_t ETH_FlushReceivedFrame
uint32_t ETH_HashTableHigh