Bouffalo SDK  1.0
Bouffalolab Software Development Kit
bflb_emac.h File Reference
#include "bflb_core.h"
Include dependency graph for bflb_emac.h:

Go to the source code of this file.

Data Structures

struct  bflb_emac_config_s
 EMAC configuration structure. More...
 
struct  bflb_emac_phy_cfg_s
 EMAC phy configuration structure. More...
 

Macros

#define EMAC_DO_FLUSH_DATA   (1)
 
#define EMAC_CLK_USE_EXTERNAL   (0)
 
#define EMAC_CLK_USE_INTERNAL   (1)
 
#define EMAC_CMD_NO_PREAMBLE_MODE   (0x01)
 
#define EMAC_CMD_EN_PROMISCUOUS   (0x02)
 
#define EMAC_CMD_FRAME_GAP_CHECK   (0x03)
 
#define EMAC_CMD_FULL_DUPLEX   (0x04)
 
#define EMAC_CMD_EN_TX_CRC_FIELD   (0x05)
 
#define EMAC_CMD_RECV_HUGE_FRAMES   (0x06)
 
#define EMAC_CMD_EN_AUTO_PADDING   (0x07)
 
#define EMAC_CMD_RECV_SMALL_FRAME   (0x08)
 
#define EMAC_CMD_SET_PHY_ADDRESS   (0x09)
 
#define EMAC_CMD_SET_MAC_ADDRESS   (0x0A)
 
#define EMAC_CMD_SET_PACKET_GAP   (0x0B)
 
#define EMAC_CMD_SET_MIN_FRAME   (0x0C)
 
#define EMAC_CMD_SET_MAX_FRAME   (0x0D)
 
#define EMAC_CMD_SET_MAXRET   (0x0E)
 
#define EMAC_CMD_SET_COLLVALID   (0x0F)
 
#define PHY_STATE_DOWN   (0) /* PHY is not usable */
 
#define PHY_STATE_READY   (1) /* PHY is OK, wait for controller */
 
#define PHY_STATE_UP   (2) /* Network is ready for TX/RX */
 
#define PHY_STATE_RUNNING   (3) /* working */
 
#define PHY_STATE_NOLINK   (4) /* no cable connected */
 
#define PHY_STATE_STOPPED   (5) /* PHY has been stopped */
 
#define PHY_STATE_TESTING   (6) /* in test mode */
 
#define EMAC_NORMAL_PACKET   (uint32_t)(0)
 
#define EMAC_FRAGMENT_PACKET   (uint32_t)(0x01)
 
#define EMAC_NOCOPY_PACKET   (uint32_t)(0x02)
 
#define ETH_MAX_PACKET_SIZE   ((uint32_t)1524U)
 
#define ETH_HEADER_SZIE   ((uint32_t)14U)
 
#define ETH_CRC_SIZE   ((uint32_t)4U)
 
#define ETH_EXTRA_SIZE   ((uint32_t)2U)
 
#define ETH_VLAN_TAG_SIZE   ((uint32_t)4U)
 
#define ETH_MIN_ETH_PAYLOAD_SIZE   ((uint32_t)46U)
 
#define ETH_MAX_ETH_PAYLOAD_SIZE   ((uint32_t)1500U)
 
#define ETH_JUMBO_FRAME_PAYLOAD_SIZE   ((uint32_t)9000U)
 
#define ETH_TX_BUFFER_SIZE   (ETH_MAX_PACKET_SIZE)
 
#define ETH_RX_BUFFER_SIZE   (ETH_MAX_PACKET_SIZE)
 
#define EMAC_INT_EN_TX_DONE   (1 << 0)
 
#define EMAC_INT_EN_TX_ERROR   (1 << 1)
 
#define EMAC_INT_EN_RX_DONE   (1 << 2)
 
#define EMAC_INT_EN_RX_ERROR   (1 << 3)
 
#define EMAC_INT_EN_RX_BUSY   (1 << 4)
 
#define EMAC_INT_EN_TX_CTRL   (1 << 5)
 
#define EMAC_INT_EN_RX_CTRL   (1 << 6)
 
#define EMAC_INT_EN_ALL   (0x7f << 0)
 
#define EMAC_INT_STS_TX_DONE   (1 << 0)
 
#define EMAC_INT_STS_TX_ERROR   (1 << 1)
 
#define EMAC_INT_STS_RX_DONE   (1 << 2)
 
#define EMAC_INT_STS_RX_ERROR   (1 << 3)
 
#define EMAC_INT_STS_RX_BUSY   (1 << 4)
 
#define EMAC_INT_STS_TX_CTRL   (1 << 5)
 
#define EMAC_INT_STS_RX_CTRL   (1 << 6)
 
#define EMAC_INT_STS_ALL   (0x7f << 0)
 
#define EMAC_BD_TYPE_INVLAID   (0)
 
#define EMAC_BD_TYPE_TX   (1)
 
#define EMAC_BD_TYPE_RX   (2)
 
#define EMAC_BD_TYPE_NONE   (3)
 
#define EMAC_BD_TYPE_MAX   (0x7FFFFFFF)
 

Functions

void bflb_emac_init (struct bflb_device_s *dev, const struct bflb_emac_config_s *config)
 
void bflb_emac_stop (struct bflb_device_s *dev)
 
void bflb_emac_start (struct bflb_device_s *dev)
 
void bflb_emac_start_tx (struct bflb_device_s *dev)
 
void bflb_emac_stop_tx (struct bflb_device_s *dev)
 
void bflb_emac_start_rx (struct bflb_device_s *dev)
 
void bflb_emac_stop_rx (struct bflb_device_s *dev)
 
void bflb_emac_bd_init (struct bflb_device_s *dev, uint8_t *eth_tx_buff, uint8_t tx_buf_count, uint8_t *eth_rx_buff, uint8_t rx_buf_count)
 
uint32_t bflb_emac_bd_get_cur_active (struct bflb_device_s *dev, uint8_t bdt)
 
void bflb_emac_bd_rx_enqueue (uint32_t index)
 
void bflb_emac_bd_rx_on_err (uint32_t index)
 
void bflb_emac_bd_tx_dequeue (uint32_t index)
 
void bflb_emac_bd_tx_on_err (uint32_t index)
 
int bflb_emac_bd_tx_enqueue (uint32_t flags, uint32_t len, const uint8_t *data_in)
 
int bflb_emac_bd_rx_dequeue (uint32_t flags, uint32_t *len, uint8_t *data_out)
 
int emac_bd_fragment_support (void)
 
void bflb_emac_int_enable (struct bflb_device_s *dev, uint32_t flag, bool enable)
 
void bflb_emac_int_clear (struct bflb_device_s *dev, uint32_t flag)
 
uint32_t bflb_emac_get_int_status (struct bflb_device_s *dev)
 
int bflb_emac_feature_control (struct bflb_device_s *dev, int cmd, size_t arg)
 
int bflb_emac_phy_reg_read (struct bflb_device_s *dev, uint16_t phy_reg, uint16_t *phy_reg_val)
 
int bflb_emac_phy_reg_write (struct bflb_device_s *dev, uint16_t phy_reg, uint16_t phy_reg_val)