123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- /**************************************************************************//**
- * @file emac.h
- * @version V1.00
- * @brief M480 EMAC driver header file
- *
- * @copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.
- *****************************************************************************/
- #ifndef __EMAC_H__
- #define __EMAC_H__
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /** @addtogroup Standard_Driver Standard Driver
- @{
- */
- /** @addtogroup EMAC_Driver EMAC Driver
- @{
- */
- /** @addtogroup EMAC_EXPORTED_CONSTANTS EMAC Exported Constants
- @{
- */
- #define EMAC_PHY_ADDR 1UL /*!< PHY address, this address is board dependent \hideinitializer */
- #define EMAC_RX_DESC_SIZE 4UL /*!< Number of Rx Descriptors, should be 2 at least \hideinitializer */
- #define EMAC_TX_DESC_SIZE 4UL /*!< Number of Tx Descriptors, should be 2 at least \hideinitializer */
- #define EMAC_LINK_DOWN 0UL /*!< Ethernet link is down \hideinitializer */
- #define EMAC_LINK_100F 1UL /*!< Ethernet link is 100Mbps full duplex \hideinitializer */
- #define EMAC_LINK_100H 2UL /*!< Ethernet link is 100Mbps half duplex \hideinitializer */
- #define EMAC_LINK_10F 3UL /*!< Ethernet link is 10Mbps full duplex \hideinitializer */
- #define EMAC_LINK_10H 4UL /*!< Ethernet link is 10Mbps half duplex \hideinitializer */
- /*@}*/ /* end of group EMAC_EXPORTED_CONSTANTS */
- /** @addtogroup EMAC_EXPORTED_FUNCTIONS EMAC Exported Functions
- @{
- */
- /**
- * @brief Enable EMAC Tx function
- * @param None
- * @return None
- * \hideinitializer
- */
- #define EMAC_ENABLE_TX() (EMAC->CTL |= EMAC_CTL_TXON_Msk)
- /**
- * @brief Enable EMAC Rx function
- * @param None
- * @return None
- * \hideinitializer
- */
- #define EMAC_ENABLE_RX() do{EMAC->CTL |= EMAC_CTL_RXON_Msk; EMAC->RXST = 0;}while(0)
- /**
- * @brief Disable EMAC Tx function
- * @param None
- * @return None
- * \hideinitializer
- */
- #define EMAC_DISABLE_TX() (EMAC->CTL &= ~EMAC_CTL_TXON_Msk)
- /**
- * @brief Disable EMAC Rx function
- * @param None
- * @return None
- * \hideinitializer
- */
- #define EMAC_DISABLE_RX() (EMAC->CTL &= ~EMAC_CTL_RXON_Msk)
- /**
- * @brief Enable EMAC Magic Packet Wakeup function
- * @param None
- * @return None
- * \hideinitializer
- */
- #define EMAC_ENABLE_MAGIC_PKT_WAKEUP() (EMAC->CTL |= EMAC_CTL_WOLEN_Msk)
- /**
- * @brief Disable EMAC Magic Packet Wakeup function
- * @param None
- * @return None
- * \hideinitializer
- */
- #define EMAC_DISABLE_MAGIC_PKT_WAKEUP() (EMAC->CTL &= ~EMAC_CTL_WOLEN_Msk)
- /**
- * @brief Enable EMAC to receive broadcast packets
- * @param None
- * @return None
- * \hideinitializer
- */
- #define EMAC_ENABLE_RECV_BCASTPKT() (EMAC->CAMCTL |= EMAC_CAMCTL_ABP_Msk)
- /**
- * @brief Disable EMAC to receive broadcast packets
- * @param None
- * @return None
- * \hideinitializer
- */
- #define EMAC_DISABLE_RECV_BCASTPKT() (EMAC->CAMCTL &= ~EMAC_CAMCTL_ABP_Msk)
- /**
- * @brief Enable EMAC to receive multicast packets
- * @param None
- * @return None
- * \hideinitializer
- */
- #define EMAC_ENABLE_RECV_MCASTPKT() (EMAC->CAMCTL |= EMAC_CAMCTL_AMP_Msk)
- /**
- * @brief Disable EMAC Magic Packet Wakeup function
- * @param None
- * @return None
- * \hideinitializer
- */
- #define EMAC_DISABLE_RECV_MCASTPKT() (EMAC->CAMCTL &= ~EMAC_CAMCTL_AMP_Msk)
- /**
- * @brief Check if EMAC time stamp alarm interrupt occurred or not
- * @param None
- * @return If time stamp alarm interrupt occurred or not
- * @retval 0 Alarm interrupt does not occur
- * @retval 1 Alarm interrupt occurred
- * \hideinitializer
- */
- #define EMAC_GET_ALARM_FLAG() (EMAC->INTSTS & EMAC_INTSTS_TSALMIF_Msk ? 1 : 0)
- /**
- * @brief Clear EMAC time stamp alarm interrupt flag
- * @param None
- * @return None
- * \hideinitializer
- */
- #define EMAC_CLR_ALARM_FLAG() (EMAC->INTSTS = EMAC_INTSTS_TSALMIF_Msk)
- void EMAC_Open(uint8_t *pu8MacAddr);
- void EMAC_Close(void);
- void EMAC_SetMacAddr(uint8_t *pu8MacAddr);
- void EMAC_EnableCamEntry(uint32_t u32Entry, uint8_t pu8MacAddr[]);
- void EMAC_DisableCamEntry(uint32_t u32Entry);
- uint32_t EMAC_RecvPkt(uint8_t *pu8Data, uint32_t *pu32Size);
- uint32_t EMAC_RecvPktTS(uint8_t *pu8Data, uint32_t *pu32Size, uint32_t *pu32Sec, uint32_t *pu32Nsec);
- void EMAC_RecvPktDone(void);
- uint32_t EMAC_SendPkt(uint8_t *pu8Data, uint32_t u32Size);
- uint32_t EMAC_SendPktDone(void);
- uint32_t EMAC_SendPktDoneTS(uint32_t *pu32Sec, uint32_t *pu32Nsec);
- void EMAC_EnableTS(uint32_t u32Sec, uint32_t u32Nsec);
- void EMAC_DisableTS(void);
- void EMAC_GetTime(uint32_t *pu32Sec, uint32_t *pu32Nsec);
- void EMAC_SetTime(uint32_t u32Sec, uint32_t u32Nsec);
- void EMAC_UpdateTime(uint32_t u32Neg, uint32_t u32Sec, uint32_t u32Nsec);
- void EMAC_EnableAlarm(uint32_t u32Sec, uint32_t u32Nsec);
- void EMAC_DisableAlarm(void);
- uint32_t EMAC_CheckLinkStatus(void);
- /*@}*/ /* end of group EMAC_EXPORTED_FUNCTIONS */
- /*@}*/ /* end of group EMAC_Driver */
- /*@}*/ /* end of group Standard_Driver */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __EMAC_H__ */
- /*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/
|