Ultibo API
C/C++ API for Ultibo Core
Loading...
Searching...
No Matches
genet.h File Reference
#include "ultibo/threads.h"
#include "ultibo/network.h"

Go to the source code of this file.

Data Structures

struct  _GENET_CONTROL_BLOCK
struct  _GENET_RX_RING
struct  _GENET_TX_RING
struct  _GENET_NETWORK
struct  _GENET_STATUS64

Macros

#define GENET_NETWORK_DESCRIPTION   "Broadcom GENET (Gigabit Ethernet) controller"
 Description of GENET device.
#define GENET_MAX_TX_ENTRIES   SIZE_256
 Number of Transmit buffers allocated.
#define GENET_MAX_RX_ENTRIES   SIZE_512
 Number of Receive buffers allocated.
#define GENET_MAX_PACKET_SIZE   2048
#define GENET_V1   1
#define GENET_V2   2
#define GENET_V3   3
#define GENET_V4   4
#define GENET_V5   5
#define GENET_TOTAL_DESC   256
#define GENET_DESC_INDEX   16
#define GENET_ETH_BRCM_TAG_LEN   6
#define GENET_ETH_PAD   8
#define GENET_ETH_MAX_MTU_SIZE   (ETHERNET_MTU + ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + GENET_ETH_BRCM_TAG_LEN + ETHERNET_CRC_SIZE + GENET_ETH_PAD)
#define GENET_Q0_PRIORITY   0
#define CLEAR_ALL_HFB   0xFF
#define DMA_MAX_BURST_LENGTH   0x08
#define DMA_FC_THRESH_HI   (GENET_TOTAL_DESC >> 4)
#define DMA_FC_THRESH_LO   5
#define STATUS_RX_EXT_MASK   0x1FFFFF
#define STATUS_RX_CSUM_MASK   0xFFFF
#define STATUS_RX_CSUM_OK   0x10000
#define STATUS_RX_CSUM_FR   0x20000
#define STATUS_RX_PROTO_TCP   0
#define STATUS_RX_PROTO_UDP   1
#define STATUS_RX_PROTO_ICMP   2
#define STATUS_RX_PROTO_OTHER   3
#define STATUS_RX_PROTO_MASK   3
#define STATUS_RX_PROTO_SHIFT   18
#define STATUS_FILTER_INDEX_MASK   0xFFFF
#define STATUS_TX_CSUM_START_MASK   0x7FFF
#define STATUS_TX_CSUM_START_SHIFT   16
#define STATUS_TX_CSUM_PROTO_UDP   0x8000
#define STATUS_TX_CSUM_OFFSET_MASK   0x7FFF
#define STATUS_TX_CSUM_LV   0x80000000
#define DMA_DESC_LENGTH_STATUS   0x00
 in bytes of data in buffer
#define DMA_DESC_ADDRESS_LO   0x04
 lower bits of PA
#define DMA_DESC_ADDRESS_HI   0x08
 upper 32 bits of PA, GENETv4+
#define UMAC_HD_BKP_CTRL   0x004
#define HD_FC_EN   (1 << 0)
#define HD_FC_BKOFF_OK   (1 << 1)
#define IPG_CONFIG_RX_SHIFT   2
#define IPG_CONFIG_RX_MASK   0x1F
#define UMAC_CMD   0x008
#define CMD_TX_EN   (1 << 0)
#define CMD_RX_EN   (1 << 1)
#define UMAC_SPEED_10   0
#define UMAC_SPEED_100   1
#define UMAC_SPEED_1000   2
#define UMAC_SPEED_2500   3
#define CMD_SPEED_SHIFT   2
#define CMD_SPEED_MASK   3
#define CMD_PROMISC   (1 << 4)
#define CMD_PAD_EN   (1 << 5)
#define CMD_CRC_FWD   (1 << 6)
#define CMD_PAUSE_FWD   (1 << 7)
#define CMD_RX_PAUSE_IGNORE   (1 << 8)
#define CMD_TX_ADDR_INS   (1 << 9)
#define CMD_HD_EN   (1 << 10)
#define CMD_SW_RESET   (1 << 13)
#define CMD_LCL_LOOP_EN   (1 << 15)
#define CMD_AUTO_CONFIG   (1 << 22)
#define CMD_CNTL_FRM_EN   (1 << 23)
#define CMD_NO_LEN_CHK   (1 << 24)
#define CMD_RMT_LOOP_EN   (1 << 25)
#define CMD_PRBL_EN   (1 << 27)
#define CMD_TX_PAUSE_IGNORE   (1 << 28)
#define CMD_TX_RX_EN   (1 << 29)
#define CMD_RUNT_FILTER_DIS   (1 << 30)
#define UMAC_MAC0   0x00C
#define UMAC_MAC1   0x010
#define UMAC_MAX_FRAME_LEN   0x014
#define UMAC_MODE   0x44
#define MODE_LINK_STATUS   (1 << 5)
#define UMAC_EEE_CTRL   0x064
#define EN_LPI_RX_PAUSE   (1 << 0)
#define EN_LPI_TX_PFC   (1 << 1)
#define EN_LPI_TX_PAUSE   (1 << 2)
#define EEE_EN   (1 << 3)
#define RX_FIFO_CHECK   (1 << 4)
#define EEE_TX_CLK_DIS   (1 << 5)
#define DIS_EEE_10M   (1 << 6)
#define LP_IDLE_PREDICTION_MODE   (1 << 7)
#define UMAC_EEE_LPI_TIMER   0x068
#define UMAC_EEE_WAKE_TIMER   0x06C
#define UMAC_EEE_REF_COUNT   0x070
#define EEE_REFERENCE_COUNT_MASK   0xffff
#define UMAC_TX_FLUSH   0x334
#define UMAC_MIB_START   0x400
#define UMAC_MDIO_CMD   0x614
#define MDIO_START_BUSY   (1 << 29)
#define MDIO_READ_FAIL   (1 << 28)
#define MDIO_RD   (2 << 26)
#define MDIO_WR   (1 << 26)
#define MDIO_PMD_SHIFT   21
#define MDIO_PMD_MASK   0x1F
#define MDIO_REG_SHIFT   16
#define MDIO_REG_MASK   0x1F
#define UMAC_RBUF_OVFL_CNT_V1   0x61C
#define RBUF_OVFL_CNT_V2   0x80
#define RBUF_OVFL_CNT_V3PLUS   0x94
#define UMAC_MPD_CTRL   0x620
#define MPD_EN   (1 << 0)
#define MPD_PW_EN   (1 << 27)
#define MPD_MSEQ_LEN_SHIFT   16
#define MPD_MSEQ_LEN_MASK   0xFF
#define UMAC_MPD_PW_MS   0x624
#define UMAC_MPD_PW_LS   0x628
#define UMAC_RBUF_ERR_CNT_V1   0x634
#define RBUF_ERR_CNT_V2   0x84
#define RBUF_ERR_CNT_V3PLUS   0x98
#define UMAC_MDF_ERR_CNT   0x638
#define UMAC_MDF_CTRL   0x650
#define UMAC_MDF_ADDR   0x654
#define UMAC_MIB_CTRL   0x580
#define MIB_RESET_RX   (1 << 0)
#define MIB_RESET_RUNT   (1 << 1)
#define MIB_RESET_TX   (1 << 2)
#define RBUF_CTRL   0x00
#define RBUF_64B_EN   (1 << 0)
#define RBUF_ALIGN_2B   (1 << 1)
#define RBUF_BAD_DIS   (1 << 2)
#define RBUF_STATUS   0x0C
#define RBUF_STATUS_WOL   (1 << 0)
#define RBUF_STATUS_MPD_INTR_ACTIVE   (1 << 1)
#define RBUF_STATUS_ACPI_INTR_ACTIVE   (1 << 2)
#define RBUF_CHK_CTRL   0x14
#define RBUF_RXCHK_EN   (1 << 0)
#define RBUF_SKIP_FCS   (1 << 4)
#define RBUF_ENERGY_CTRL   0x9c
#define RBUF_EEE_EN   (1 << 0)
#define RBUF_PM_EN   (1 << 1)
#define RBUF_TBUF_SIZE_CTRL   0xb4
#define RBUF_HFB_CTRL_V1   0x38
#define RBUF_HFB_FILTER_EN_SHIFT   16
#define RBUF_HFB_FILTER_EN_MASK   0xffff0000
#define RBUF_HFB_EN   (1 << 0)
#define RBUF_HFB_256B   (1 << 1)
#define RBUF_ACPI_EN   (1 << 2)
#define RBUF_HFB_LEN_V1   0x3C
#define RBUF_FLTR_LEN_MASK   0xFF
#define RBUF_FLTR_LEN_SHIFT   8
#define TBUF_CTRL   0x00
#define TBUF_BP_MC   0x0C
#define TBUF_ENERGY_CTRL   0x14
#define TBUF_EEE_EN   (1 << 0)
#define TBUF_PM_EN   (1 << 1)
#define TBUF_CTRL_V1   0x80
#define TBUF_BP_MC_V1   0xA0
#define HFB_CTRL   0x00
#define HFB_FLT_ENABLE_V3PLUS   0x04
#define HFB_FLT_LEN_V2   0x04
#define HFB_FLT_LEN_V3PLUS   0x1C
#define INTRL2_CPU_STAT   0x00
#define INTRL2_CPU_SET   0x04
#define INTRL2_CPU_CLEAR   0x08
#define INTRL2_CPU_MASK_STATUS   0x0C
#define INTRL2_CPU_MASK_SET   0x10
#define INTRL2_CPU_MASK_CLEAR   0x14
#define UMAC_IRQ0_SCB   (1 << 0)
#define UMAC_IRQ0_EPHY   (1 << 1)
#define UMAC_IRQ0_PHY_DET_R   (1 << 2)
#define UMAC_IRQ0_PHY_DET_F   (1 << 3)
#define UMAC_IRQ0_LINK_UP   (1 << 4)
#define UMAC_IRQ0_LINK_DOWN   (1 << 5)
#define UMAC_IRQ0_LINK_EVENT   (UMAC_IRQ0_LINK_UP | UMAC_IRQ0_LINK_DOWN)
#define UMAC_IRQ0_UMAC   (1 << 6)
#define UMAC_IRQ0_UMAC_TSV   (1 << 7)
#define UMAC_IRQ0_TBUF_UNDERRUN   (1 << 8)
#define UMAC_IRQ0_RBUF_OVERFLOW   (1 << 9)
#define UMAC_IRQ0_HFB_SM   (1 << 10)
#define UMAC_IRQ0_HFB_MM   (1 << 11)
#define UMAC_IRQ0_MPD_R   (1 << 12)
#define UMAC_IRQ0_RXDMA_MBDONE   (1 << 13)
#define UMAC_IRQ0_RXDMA_PDONE   (1 << 14)
#define UMAC_IRQ0_RXDMA_BDONE   (1 << 15)
#define UMAC_IRQ0_RXDMA_DONE   UMAC_IRQ0_RXDMA_MBDONE
#define UMAC_IRQ0_TXDMA_MBDONE   (1 << 16)
#define UMAC_IRQ0_TXDMA_PDONE   (1 << 17)
#define UMAC_IRQ0_TXDMA_BDONE   (1 << 18)
#define UMAC_IRQ0_TXDMA_DONE   UMAC_IRQ0_TXDMA_MBDONE
#define UMAC_IRQ0_MDIO_DONE   (1 << 23)
#define UMAC_IRQ0_MDIO_ERROR   (1 << 24)
#define UMAC_IRQ1_TX_INTR_MASK   0xFFFF
#define UMAC_IRQ1_RX_INTR_MASK   0xFFFF
#define UMAC_IRQ1_RX_INTR_SHIFT   16
#define GENET_SYS_OFF   0x0000
#define GENET_GR_BRIDGE_OFF   0x0040
#define GENET_EXT_OFF   0x0080
#define GENET_INTRL2_0_OFF   0x0200
#define GENET_INTRL2_1_OFF   0x0240
#define GENET_RBUF_OFF   0x0300
#define GENET_UMAC_OFF   0x0800
#define SYS_REV_CTRL   0x00
#define SYS_PORT_CTRL   0x04
#define PORT_MODE_INT_EPHY   0
#define PORT_MODE_INT_GPHY   1
#define PORT_MODE_EXT_EPHY   2
#define PORT_MODE_EXT_GPHY   3
#define PORT_MODE_EXT_RVMII_25   (4 | (1 << 4))
#define PORT_MODE_EXT_RVMII_50   4
#define LED_ACT_SOURCE_MAC   (1 << 9)
#define SYS_RBUF_FLUSH_CTRL   0x08
#define SYS_TBUF_FLUSH_CTRL   0x0C
#define RBUF_FLUSH_CTRL_V1   0x04
#define EXT_EXT_PWR_MGMT   0x00
#define EXT_PWR_DOWN_BIAS   (1 << 0)
#define EXT_PWR_DOWN_DLL   (1 << 1)
#define EXT_PWR_DOWN_PHY   (1 << 2)
#define EXT_PWR_DN_EN_LD   (1 << 3)
#define EXT_ENERGY_DET   (1 << 4)
#define EXT_IDDQ_FROM_PHY   (1 << 5)
#define EXT_IDDQ_GLBL_PWR   (1 << 7)
#define EXT_PHY_RESET   (1 << 8)
#define EXT_ENERGY_DET_MASK   (1 << 12)
#define EXT_PWR_DOWN_PHY_TX   (1 << 16)
#define EXT_PWR_DOWN_PHY_RX   (1 << 17)
#define EXT_PWR_DOWN_PHY_SD   (1 << 18)
#define EXT_PWR_DOWN_PHY_RD   (1 << 19)
#define EXT_PWR_DOWN_PHY_EN   (1 << 20)
#define EXT_RGMII_OOB_CTRL   0x0C
#define RGMII_MODE_EN_V123   (1 << 0)
#define RGMII_LINK   (1 << 4)
#define OOB_DISABLE   (1 << 5)
#define RGMII_MODE_EN   (1 << 6)
#define ID_MODE_DIS   (1 << 16)
#define EXT_GPHY_CTRL   0x1C
#define EXT_CFG_IDDQ_BIAS   (1 << 0)
#define EXT_CFG_PWR_DOWN   (1 << 1)
#define EXT_CK25_DIS   (1 << 4)
#define EXT_GPHY_RESET   (1 << 5)
#define DMA_RING_SIZE   0x40
#define DMA_RINGS_SIZE   (DMA_RING_SIZE * (GENET_DESC_INDEX + 1))
#define DMA_RW_POINTER_MASK   0x1FF
#define DMA_P_INDEX_DISCARD_CNT_MASK   0xFFFF
#define DMA_P_INDEX_DISCARD_CNT_SHIFT   16
#define DMA_BUFFER_DONE_CNT_MASK   0xFFFF
#define DMA_BUFFER_DONE_CNT_SHIFT   16
#define DMA_P_INDEX_MASK   0xFFFF
#define DMA_C_INDEX_MASK   0xFFFF
#define DMA_RING_SIZE_MASK   0xFFFF
#define DMA_RING_SIZE_SHIFT   16
#define DMA_RING_BUFFER_SIZE_MASK   0xFFFF
#define DMA_INTR_THRESHOLD_MASK   0x01FF
#define DMA_XON_THREHOLD_MASK   0xFFFF
#define DMA_XOFF_THRESHOLD_MASK   0xFFFF
#define DMA_XOFF_THRESHOLD_SHIFT   16
#define DMA_FLOW_PERIOD_MASK   0xFFFF
#define DMA_MAX_PKT_SIZE_MASK   0xFFFF
#define DMA_MAX_PKT_SIZE_SHIFT   16
#define DMA_EN   (1 << 0)
#define DMA_RING_BUF_EN_SHIFT   0x01
#define DMA_RING_BUF_EN_MASK   0xFFFF
#define DMA_TSB_SWAP_EN   (1 << 20)
#define DMA_DISABLED   (1 << 0)
#define DMA_DESC_RAM_INIT_BUSY   (1 << 1)
#define DMA_SCB_BURST_SIZE_MASK   0x1F
#define DMA_ACTIVITY_VECTOR_MASK   0x1FFFF
#define DMA_BACKPRESSURE_MASK   0x1FFFF
#define DMA_PFC_ENABLE   (1 << 31)
#define DMA_BACKPRESSURE_STATUS_MASK   0x1FFFF
#define DMA_LITTLE_ENDIAN_MODE   (1 << 0)
#define DMA_REGISTER_MODE   (1 << 1)
#define DMA_TIMEOUT_MASK   0xFFFF
#define DMA_TIMEOUT_VAL   5000
 micro seconds
#define DMA_RATE_LIMIT_EN_MASK   0xFFFF
#define DMA_ARBITER_MODE_MASK   0x03
#define DMA_RING_BUF_PRIORITY_MASK   0x1F
#define DMA_RING_BUF_PRIORITY_SHIFT   5
#define DMA_RATE_ADJ_MASK   0xFF
#define DMA_BUFLENGTH_MASK   0x0fff
#define DMA_BUFLENGTH_SHIFT   16
#define DMA_OWN   0x8000
#define DMA_EOP   0x4000
#define DMA_SOP   0x2000
#define DMA_WRAP   0x1000
#define DMA_TX_UNDERRUN   0x0200
#define DMA_TX_APPEND_CRC   0x0040
#define DMA_TX_OW_CRC   0x0020
#define DMA_TX_DO_CSUM   0x0010
#define DMA_TX_QTAG_SHIFT   7
#define DMA_RX_CHK_V3PLUS   0x8000
#define DMA_RX_CHK_V12   0x1000
#define DMA_RX_BRDCAST   0x0040
#define DMA_RX_MULT   0x0020
#define DMA_RX_LG   0x0010
#define DMA_RX_NO   0x0008
#define DMA_RX_RXER   0x0004
#define DMA_RX_CRC_ERROR   0x0002
#define DMA_RX_OV   0x0001
#define DMA_RX_FI_MASK   0x001F
#define DMA_RX_FI_SHIFT   0x0007
#define DMA_DESC_ALLOC_MASK   0x00FF
#define DMA_ARBITER_RR   0x00
#define DMA_ARBITER_WRR   0x01
#define DMA_ARBITER_SP   0x02
#define GENET_POWER_CABLE_SENSE   0
#define GENET_POWER_PASSIVE   1
#define GENET_POWER_WOL_MAGIC   2
#define GENET_HAS_40BITS   (1 << 0)
#define GENET_HAS_EXT   (1 << 1)
#define GENET_HAS_MDIO_INTR   (1 << 2)
#define GENET_HAS_MOCA_LINK_DET   (1 << 3)
#define DMA_RING_CFG   0
#define DMA_CTRL   1
#define DMA_STATUS   2
#define DMA_SCB_BURST_SIZE   3
#define DMA_ARB_CTRL   4
#define DMA_PRIORITY_0   5
#define DMA_PRIORITY_1   6
#define DMA_PRIORITY_2   7
#define DMA_INDEX2RING_0   8
#define DMA_INDEX2RING_1   9
#define DMA_INDEX2RING_2   10
#define DMA_INDEX2RING_3   11
#define DMA_INDEX2RING_4   12
#define DMA_INDEX2RING_5   13
#define DMA_INDEX2RING_6   14
#define DMA_INDEX2RING_7   15
#define DMA_RING0_TIMEOUT   16
#define DMA_RING1_TIMEOUT   17
#define DMA_RING2_TIMEOUT   18
#define DMA_RING3_TIMEOUT   19
#define DMA_RING4_TIMEOUT   20
#define DMA_RING5_TIMEOUT   21
#define DMA_RING6_TIMEOUT   22
#define DMA_RING7_TIMEOUT   23
#define DMA_RING8_TIMEOUT   24
#define DMA_RING9_TIMEOUT   25
#define DMA_RING10_TIMEOUT   26
#define DMA_RING11_TIMEOUT   27
#define DMA_RING12_TIMEOUT   28
#define DMA_RING13_TIMEOUT   29
#define DMA_RING14_TIMEOUT   30
#define DMA_RING15_TIMEOUT   31
#define DMA_RING16_TIMEOUT   32
#define TDMA_READ_PTR   0
#define RDMA_WRITE_PTR   TDMA_READ_PTR
#define TDMA_READ_PTR_HI   1
#define RDMA_WRITE_PTR_HI   TDMA_READ_PTR_HI
#define TDMA_CONS_INDEX   2
#define RDMA_PROD_INDEX   TDMA_CONS_INDEX
#define TDMA_PROD_INDEX   3
#define RDMA_CONS_INDEX   TDMA_PROD_INDEX
#define DMA_RING_BUF_SIZE   4
#define DMA_START_ADDR   5
#define DMA_START_ADDR_HI   6
#define DMA_END_ADDR   7
#define DMA_END_ADDR_HI   8
#define DMA_MBUF_DONE_THRESH   9
#define TDMA_FLOW_PERIOD   10
#define RDMA_XON_XOFF_THRESH   TDMA_FLOW_PERIOD
#define TDMA_WRITE_PTR   11
#define RDMA_READ_PTR   TDMA_WRITE_PTR
#define TDMA_WRITE_PTR_HI   12
#define RDMA_READ_PTR_HI   TDMA_WRITE_PTR_HI
#define MDIO_CMD   0x00
#define MDIO_CFG   0x04
#define MDIO_C22   (1 << 0)
#define MDIO_C45   0
#define MDIO_CLK_DIV_SHIFT   4
#define MDIO_CLK_DIV_MASK   0x3F
#define MDIO_SUPP_PREAMBLE   (1 << 12)
#define PHY_ID_BCM50610   0x0143bd60
#define PHY_ID_BCM50610M   0x0143bd70
#define PHY_ID_BCM5241   0x0143bc30
#define PHY_ID_BCMAC131   0x0143bc70
#define PHY_ID_BCM5481   0x0143bca0
#define PHY_ID_BCM5395   0x0143bcf0
#define PHY_ID_BCM54810   0x03625d00
#define PHY_ID_BCM5482   0x0143bcb0
#define PHY_ID_BCM5411   0x00206070
#define PHY_ID_BCM5421   0x002060e0
#define PHY_ID_BCM54210E   0x600d84a0
#define PHY_ID_BCM5464   0x002060b0
#define PHY_ID_BCM5461   0x002060c0
#define PHY_ID_BCM54612E   0x03625e60
#define PHY_ID_BCM54616S   0x03625d10
#define PHY_ID_BCM57780   0x03625d90
#define PHY_ID_BCM89610   0x03625cd0
#define PHY_ID_BCM7250   0xae025280
#define PHY_ID_BCM7255   0xae025120
#define PHY_ID_BCM7260   0xae025190
#define PHY_ID_BCM7268   0xae025090
#define PHY_ID_BCM7271   0xae0253b0
#define PHY_ID_BCM7278   0xae0251a0
#define PHY_ID_BCM7364   0xae025260
#define PHY_ID_BCM7366   0x600d8490
#define PHY_ID_BCM7346   0x600d8650
#define PHY_ID_BCM7362   0x600d84b0
#define PHY_ID_BCM7425   0x600d86b0
#define PHY_ID_BCM7429   0x600d8730
#define PHY_ID_BCM7435   0x600d8750
#define PHY_ID_BCM74371   0xae0252e0
#define PHY_ID_BCM7439   0x600d8480
#define PHY_ID_BCM7439_2   0xae025080
#define PHY_ID_BCM7445   0x600d8510
#define PHY_ID_BCM_CYGNUS   0xae025200
#define PHY_ID_BCM_OMEGA   0xae025100
#define PHY_ID_MASK   0xfffffff0
#define PHY_BCM_FLAGS_MODE_COPPER   0x00000001
#define PHY_BCM_FLAGS_MODE_1000BX   0x00000002
#define PHY_BCM_FLAGS_INTF_SGMII   0x00000010
#define PHY_BCM_FLAGS_INTF_XAUI   0x00000020
#define PHY_BRCM_WIRESPEED_ENABLE   0x00000100
#define PHY_BRCM_AUTO_PWRDWN_ENABLE   0x00000200
#define PHY_BRCM_RX_REFCLK_UNUSED   0x00000400
#define PHY_BRCM_STD_IBND_DISABLE   0x00000800
#define PHY_BRCM_EXT_IBND_RX_ENABLE   0x00001000
#define PHY_BRCM_EXT_IBND_TX_ENABLE   0x00002000
#define PHY_BRCM_CLEAR_RGMII_MODE   0x00004000
#define PHY_BRCM_DIS_TXCRXC_NOENRGY   0x00008000
#define PHY_BRCM_EN_MASTER_MODE   0x00010000
#define MII_BCM54XX_ECR   0x10
 BCM54xx extended control register.
#define MII_BCM54XX_ECR_IM   0x1000
 Interrupt mask.
#define MII_BCM54XX_ECR_IF   0x0800
 Interrupt force.
#define MII_BCM54XX_ESR   0x11
 BCM54xx extended status register.
#define MII_BCM54XX_ESR_IS   0x1000
 Interrupt status.
#define MII_BCM54XX_EXP_DATA   0x15
 Expansion register data.
#define MII_BCM54XX_EXP_SEL   0x17
 Expansion register select.
#define MII_BCM54XX_EXP_SEL_SSD   0x0e00
 Secondary SerDes select.
#define MII_BCM54XX_EXP_SEL_ER   0x0f00
 Expansion register select.
#define MII_BCM54XX_EXP_SEL_ETC   0x0d00
 Expansion register spare + 2k mem.
#define MII_BCM54XX_AUX_CTL   0x18
 Auxiliary control register.
#define MII_BCM54XX_ISR   0x1a
 BCM54xx interrupt status register.
#define MII_BCM54XX_IMR   0x1b
 BCM54xx interrupt mask register.
#define MII_BCM54XX_INT_CRCERR   0x0001
 CRC error.
#define MII_BCM54XX_INT_LINK   0x0002
 Link status changed.
#define MII_BCM54XX_INT_SPEED   0x0004
 Link speed change.
#define MII_BCM54XX_INT_DUPLEX   0x0008
 Duplex mode changed.
#define MII_BCM54XX_INT_LRS   0x0010
 Local receiver status changed.
#define MII_BCM54XX_INT_RRS   0x0020
 Remote receiver status changed.
#define MII_BCM54XX_INT_SSERR   0x0040
 Scrambler synchronization error.
#define MII_BCM54XX_INT_UHCD   0x0080
 Unsupported HCD negotiated.
#define MII_BCM54XX_INT_NHCD   0x0100
 No HCD.
#define MII_BCM54XX_INT_NHCDL   0x0200
 No HCD link.
#define MII_BCM54XX_INT_ANPR   0x0400
 Auto-negotiation page received.
#define MII_BCM54XX_INT_LC   0x0800
 All counters below 128.
#define MII_BCM54XX_INT_HC   0x1000
 Counter above 32768.
#define MII_BCM54XX_INT_MDIX   0x2000
 MDIX status change.
#define MII_BCM54XX_INT_PSERR   0x4000
 Pair swap error.
#define MII_BCM54XX_SHD   0x1c
 0x1c shadow registers
#define MII_BCM54XX_SHD_WRITE   0x8000
#define MII_BCM54XX_AUXCTL_SHDWSEL_AUXCTL   0x00
#define MII_BCM54XX_AUXCTL_ACTL_TX_6DB   0x0400
#define MII_BCM54XX_AUXCTL_ACTL_SMDSP_ENA   0x0800
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC   0x07
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_WIRESPEED_EN   0x0010
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN   0x0100
#define MII_BCM54XX_AUXCTL_MISC_FORCE_AMDIX   0x0200
#define MII_BCM54XX_AUXCTL_MISC_WREN   0x8000
#define MII_BCM54XX_AUXCTL_SHDWSEL_READ_SHIFT   12
#define MII_BCM54XX_AUXCTL_SHDWSEL_MASK   0x0007
#define BCM_LED_SRC_LINKSPD1   0x0
#define BCM_LED_SRC_LINKSPD2   0x1
#define BCM_LED_SRC_XMITLED   0x2
#define BCM_LED_SRC_ACTIVITYLED   0x3
#define BCM_LED_SRC_FDXLED   0x4
#define BCM_LED_SRC_SLAVE   0x5
#define BCM_LED_SRC_INTR   0x6
#define BCM_LED_SRC_QUALITY   0x7
#define BCM_LED_SRC_RCVLED   0x8
#define BCM_LED_SRC_WIRESPEED   0x9
#define BCM_LED_SRC_MULTICOLOR1   0xa
#define BCM_LED_SRC_OPENSHORT   0xb
#define BCM_LED_SRC_OFF   0xe
 Tied high.
#define BCM_LED_SRC_ON   0xf
 Tied low.
#define BCM_EXP_MULTICOLOR   (MII_BCM54XX_EXP_SEL_ER + 0x04)
#define BCM_LED_MULTICOLOR_IN_PHASE   1 << 8
#define BCM_LED_MULTICOLOR_LINK_ACT   0x0
#define BCM_LED_MULTICOLOR_SPEED   0x1
#define BCM_LED_MULTICOLOR_ACT_FLASH   0x2
#define BCM_LED_MULTICOLOR_FDX   0x3
#define BCM_LED_MULTICOLOR_OFF   0x4
#define BCM_LED_MULTICOLOR_ON   0x5
#define BCM_LED_MULTICOLOR_ALT   0x6
#define BCM_LED_MULTICOLOR_FLASH   0x7
#define BCM_LED_MULTICOLOR_LINK   0x8
#define BCM_LED_MULTICOLOR_ACT   0x9
#define BCM_LED_MULTICOLOR_PROGRAM   0xa
#define BCM54XX_SHD_SCR2   0x04
#define BCM54XX_SHD_SCR2_WSPD_RTRY_DIS   0x100
#define BCM54XX_SHD_SCR2_WSPD_RTRY_LMT_SHIFT   2
#define BCM54XX_SHD_SCR2_WSPD_RTRY_LMT_OFFSET   2
#define BCM54XX_SHD_SCR2_WSPD_RTRY_LMT_MASK   0x7
#define BCM54XX_SHD_SCR3   0x05
#define BCM54XX_SHD_SCR3_DEF_CLK125   0x0001
#define BCM54XX_SHD_SCR3_DLLAPD_DIS   0x0002
#define BCM54XX_SHD_SCR3_TRDDAPD   0x0004
#define BCM54XX_SHD_APD   0x0a
#define BCM_APD_CLR_MASK   0xFE9F
 clear bits 5, 6 & 8
#define BCM54XX_SHD_APD_EN   0x0020
#define BCM_NO_ANEG_APD_EN   0x0060
 bits 5 & 6
#define BCM_APD_SINGLELP_EN   0x0100
 Bit 8.
#define BCM5482_SHD_LEDS1   0x0d
 01101: LED Selector 1
#define BCM54XX_SHD_RGMII_MODE   0x0b
 01011: RGMII Mode Selector
#define BCM5482_SHD_SSD   0x14
 10100: Secondary SerDes control
#define BCM5482_SHD_SSD_LEDM   0x0008
 SSD LED Mode enable.
#define BCM5482_SHD_SSD_EN   0x0001
 SSD enable.
#define BCM5482_SHD_MODE   0x1f
 11111: Mode Control Register
#define BCM5482_SHD_MODE_1000BX   0x0001
 Enable 1000BASE-X registers.
#define MII_BCM54XX_EXP_AADJ1CH0   0x001f
#define MII_BCM54XX_EXP_AADJ1CH0_SWP_ABCD_OEN   0x0200
#define MII_BCM54XX_EXP_AADJ1CH0_SWSEL_THPF   0x0100
#define MII_BCM54XX_EXP_AADJ1CH3   0x601f
#define MII_BCM54XX_EXP_AADJ1CH3_ADCCKADJ   0x0002
#define MII_BCM54XX_EXP_EXP08   0x0F08
#define MII_BCM54XX_EXP_EXP08_RJCT_2MHZ   0x0001
#define MII_BCM54XX_EXP_EXP08_EARLY_DAC_WAKE   0x0200
#define MII_BCM54XX_EXP_EXP75   0x0f75
#define MII_BCM54XX_EXP_EXP75_VDACCTRL   0x003c
#define MII_BCM54XX_EXP_EXP75_CM_OSC   0x0001
#define MII_BCM54XX_EXP_EXP96   0x0f96
#define MII_BCM54XX_EXP_EXP96_MYST   0x0010
#define MII_BCM54XX_EXP_EXP97   0x0f97
#define MII_BCM54XX_EXP_EXP97_MYST   0x0c0c
#define BCM5482_SSD_1000BX_CTL   0x00
 1000BASE-X Control
#define BCM5482_SSD_1000BX_CTL_PWRDOWN   0x0800
 Power-down SSD.
#define BCM5482_SSD_SGMII_SLAVE   0x15
 SGMII Slave Register.
#define BCM5482_SSD_SGMII_SLAVE_EN   0x0002
 Slave mode enable.
#define BCM5482_SSD_SGMII_SLAVE_AD   0x0001
 Slave auto-detection.
#define BCM54810_EXP_BROADREACH_LRE_MISC_CTL   (MII_BCM54XX_EXP_SEL_ER + 0x90)
#define BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN   (1 << 0)
#define BCM54810_SHD_CLK_CTL   0x3
#define BCM54810_SHD_CLK_CTL_GTXCLK_EN   (1 << 9)
#define BCM54612E_EXP_SPARE0   (MII_BCM54XX_EXP_SEL_ETC + 0x34)
#define BCM54612E_LED4_CLK125OUT_EN   (1 << 1)

Typedefs

typedef struct _GENET_NETWORK GENET_NETWORK
typedef struct _GENET_CONTROL_BLOCK GENET_CONTROL_BLOCK
typedef GENET_CONTROL_BLOCK GENET_CONTROL_BLOCKS[GENET_TOTAL_DESC]
typedef struct _GENET_RX_RING GENET_RX_RING
typedef void STDCALL(* genet_rx_ring_int_enable_proc) (GENET_NETWORK *network, GENET_RX_RING *ring)
typedef void STDCALL(* genet_rx_ring_int_disable_proc) (GENET_NETWORK *network, GENET_RX_RING *ring)
typedef GENET_RX_RING GENET_RX_RINGS[GENET_DESC_INDEX+1]
typedef struct _GENET_TX_RING GENET_TX_RING
typedef void STDCALL(* genet_tx_ring_int_enable_proc) (GENET_NETWORK *network, GENET_TX_RING *ring)
typedef void STDCALL(* genet_tx_ring_int_disable_proc) (GENET_NETWORK *network, GENET_TX_RING *ring)
typedef GENET_TX_RING GENET_TX_RINGS[GENET_DESC_INDEX+1]
typedef uint8_t GENET_DMA_REGISTERS[DMA_RING_CFG - DMA_RING16_TIMEOUT+1]
typedef uint8_t GENET_DMA_RING_REGISTERS[TDMA_READ_PTR - TDMA_WRITE_PTR_HI+1]
typedef struct _GENET_STATUS64 GENET_STATUS64

Functions

void STDCALL genet_init (void)
NETWORK_DEVICE *STDCALL genet_network_create (size_t address, uint32_t mdiooffset, uint32_t irq0, uint32_t irq1)
 Create and register a new GENET Network device which can be accessed using the Network API.
uint32_t STDCALL genet_network_destroy (NETWORK_DEVICE *network)
 Close, deregister and destroy a GENET Network device created by this driver.

Macro Definition Documentation

◆ GENET_NETWORK_DESCRIPTION

#define GENET_NETWORK_DESCRIPTION   "Broadcom GENET (Gigabit Ethernet) controller"

Description of GENET device.

GENET specific constants (Broadcom Gigabit Ethernet controller)

◆ GENET_MAX_TX_ENTRIES

#define GENET_MAX_TX_ENTRIES   SIZE_256

Number of Transmit buffers allocated.

◆ GENET_MAX_RX_ENTRIES

#define GENET_MAX_RX_ENTRIES   SIZE_512

Number of Receive buffers allocated.

◆ GENET_MAX_PACKET_SIZE

#define GENET_MAX_PACKET_SIZE   2048

◆ GENET_V1

#define GENET_V1   1

Version information

◆ GENET_V2

#define GENET_V2   2

◆ GENET_V3

#define GENET_V3   3

◆ GENET_V4

#define GENET_V4   4

◆ GENET_V5

#define GENET_V5   5

◆ GENET_TOTAL_DESC

#define GENET_TOTAL_DESC   256

Total number of Buffer Descriptors, same for RX/TX

◆ GENET_DESC_INDEX

#define GENET_DESC_INDEX   16

Max number of descriptor queues (plus 1 for default)

◆ GENET_ETH_BRCM_TAG_LEN

#define GENET_ETH_BRCM_TAG_LEN   6

Body(1500) + Header(14) + VLANTAG(4) + BRCMTAG(6) + FCS(4) = 1528 Plus PAD(6) = 1536 which is a multiple of 256 bytes

◆ GENET_ETH_PAD

#define GENET_ETH_PAD   8

◆ GENET_ETH_MAX_MTU_SIZE

◆ GENET_Q0_PRIORITY

#define GENET_Q0_PRIORITY   0

Default highest priority queue for multi queue support

◆ CLEAR_ALL_HFB

#define CLEAR_ALL_HFB   0xFF

Misc configuration

◆ DMA_MAX_BURST_LENGTH

#define DMA_MAX_BURST_LENGTH   0x08

DMA configuration

◆ DMA_FC_THRESH_HI

#define DMA_FC_THRESH_HI   (GENET_TOTAL_DESC >> 4)

◆ DMA_FC_THRESH_LO

#define DMA_FC_THRESH_LO   5

◆ STATUS_RX_EXT_MASK

#define STATUS_RX_EXT_MASK   0x1FFFFF

RX status bits

◆ STATUS_RX_CSUM_MASK

#define STATUS_RX_CSUM_MASK   0xFFFF

◆ STATUS_RX_CSUM_OK

#define STATUS_RX_CSUM_OK   0x10000

◆ STATUS_RX_CSUM_FR

#define STATUS_RX_CSUM_FR   0x20000

◆ STATUS_RX_PROTO_TCP

#define STATUS_RX_PROTO_TCP   0

◆ STATUS_RX_PROTO_UDP

#define STATUS_RX_PROTO_UDP   1

◆ STATUS_RX_PROTO_ICMP

#define STATUS_RX_PROTO_ICMP   2

◆ STATUS_RX_PROTO_OTHER

#define STATUS_RX_PROTO_OTHER   3

◆ STATUS_RX_PROTO_MASK

#define STATUS_RX_PROTO_MASK   3

◆ STATUS_RX_PROTO_SHIFT

#define STATUS_RX_PROTO_SHIFT   18

◆ STATUS_FILTER_INDEX_MASK

#define STATUS_FILTER_INDEX_MASK   0xFFFF

◆ STATUS_TX_CSUM_START_MASK

#define STATUS_TX_CSUM_START_MASK   0x7FFF

TX status bits

◆ STATUS_TX_CSUM_START_SHIFT

#define STATUS_TX_CSUM_START_SHIFT   16

◆ STATUS_TX_CSUM_PROTO_UDP

#define STATUS_TX_CSUM_PROTO_UDP   0x8000

◆ STATUS_TX_CSUM_OFFSET_MASK

#define STATUS_TX_CSUM_OFFSET_MASK   0x7FFF

◆ STATUS_TX_CSUM_LV

#define STATUS_TX_CSUM_LV   0x80000000

◆ DMA_DESC_LENGTH_STATUS

#define DMA_DESC_LENGTH_STATUS   0x00

in bytes of data in buffer

DMA Descriptor

◆ DMA_DESC_ADDRESS_LO

#define DMA_DESC_ADDRESS_LO   0x04

lower bits of PA

◆ DMA_DESC_ADDRESS_HI

#define DMA_DESC_ADDRESS_HI   0x08

upper 32 bits of PA, GENETv4+

◆ UMAC_HD_BKP_CTRL

#define UMAC_HD_BKP_CTRL   0x004

UniMAC registers

◆ HD_FC_EN

#define HD_FC_EN   (1 << 0)

◆ HD_FC_BKOFF_OK

#define HD_FC_BKOFF_OK   (1 << 1)

◆ IPG_CONFIG_RX_SHIFT

#define IPG_CONFIG_RX_SHIFT   2

◆ IPG_CONFIG_RX_MASK

#define IPG_CONFIG_RX_MASK   0x1F

◆ UMAC_CMD

#define UMAC_CMD   0x008

◆ CMD_TX_EN

#define CMD_TX_EN   (1 << 0)

◆ CMD_RX_EN

#define CMD_RX_EN   (1 << 1)

◆ UMAC_SPEED_10

#define UMAC_SPEED_10   0

◆ UMAC_SPEED_100

#define UMAC_SPEED_100   1

◆ UMAC_SPEED_1000

#define UMAC_SPEED_1000   2

◆ UMAC_SPEED_2500

#define UMAC_SPEED_2500   3

◆ CMD_SPEED_SHIFT

#define CMD_SPEED_SHIFT   2

◆ CMD_SPEED_MASK

#define CMD_SPEED_MASK   3

◆ CMD_PROMISC

#define CMD_PROMISC   (1 << 4)

◆ CMD_PAD_EN

#define CMD_PAD_EN   (1 << 5)

◆ CMD_CRC_FWD

#define CMD_CRC_FWD   (1 << 6)

◆ CMD_PAUSE_FWD

#define CMD_PAUSE_FWD   (1 << 7)

◆ CMD_RX_PAUSE_IGNORE

#define CMD_RX_PAUSE_IGNORE   (1 << 8)

◆ CMD_TX_ADDR_INS

#define CMD_TX_ADDR_INS   (1 << 9)

◆ CMD_HD_EN

#define CMD_HD_EN   (1 << 10)

◆ CMD_SW_RESET

#define CMD_SW_RESET   (1 << 13)

◆ CMD_LCL_LOOP_EN

#define CMD_LCL_LOOP_EN   (1 << 15)

◆ CMD_AUTO_CONFIG

#define CMD_AUTO_CONFIG   (1 << 22)

◆ CMD_CNTL_FRM_EN

#define CMD_CNTL_FRM_EN   (1 << 23)

◆ CMD_NO_LEN_CHK

#define CMD_NO_LEN_CHK   (1 << 24)

◆ CMD_RMT_LOOP_EN

#define CMD_RMT_LOOP_EN   (1 << 25)

◆ CMD_PRBL_EN

#define CMD_PRBL_EN   (1 << 27)

◆ CMD_TX_PAUSE_IGNORE

#define CMD_TX_PAUSE_IGNORE   (1 << 28)

◆ CMD_TX_RX_EN

#define CMD_TX_RX_EN   (1 << 29)

◆ CMD_RUNT_FILTER_DIS

#define CMD_RUNT_FILTER_DIS   (1 << 30)

◆ UMAC_MAC0

#define UMAC_MAC0   0x00C

◆ UMAC_MAC1

#define UMAC_MAC1   0x010

◆ UMAC_MAX_FRAME_LEN

#define UMAC_MAX_FRAME_LEN   0x014

◆ UMAC_MODE

#define UMAC_MODE   0x44

◆ MODE_LINK_STATUS

#define MODE_LINK_STATUS   (1 << 5)

◆ UMAC_EEE_CTRL

#define UMAC_EEE_CTRL   0x064

◆ EN_LPI_RX_PAUSE

#define EN_LPI_RX_PAUSE   (1 << 0)

◆ EN_LPI_TX_PFC

#define EN_LPI_TX_PFC   (1 << 1)

◆ EN_LPI_TX_PAUSE

#define EN_LPI_TX_PAUSE   (1 << 2)

◆ EEE_EN

#define EEE_EN   (1 << 3)

◆ RX_FIFO_CHECK

#define RX_FIFO_CHECK   (1 << 4)

◆ EEE_TX_CLK_DIS

#define EEE_TX_CLK_DIS   (1 << 5)

◆ DIS_EEE_10M

#define DIS_EEE_10M   (1 << 6)

◆ LP_IDLE_PREDICTION_MODE

#define LP_IDLE_PREDICTION_MODE   (1 << 7)

◆ UMAC_EEE_LPI_TIMER

#define UMAC_EEE_LPI_TIMER   0x068

◆ UMAC_EEE_WAKE_TIMER

#define UMAC_EEE_WAKE_TIMER   0x06C

◆ UMAC_EEE_REF_COUNT

#define UMAC_EEE_REF_COUNT   0x070

◆ EEE_REFERENCE_COUNT_MASK

#define EEE_REFERENCE_COUNT_MASK   0xffff

◆ UMAC_TX_FLUSH

#define UMAC_TX_FLUSH   0x334

◆ UMAC_MIB_START

#define UMAC_MIB_START   0x400

◆ UMAC_MDIO_CMD

#define UMAC_MDIO_CMD   0x614

◆ MDIO_START_BUSY

#define MDIO_START_BUSY   (1 << 29)

◆ MDIO_READ_FAIL

#define MDIO_READ_FAIL   (1 << 28)

◆ MDIO_RD

#define MDIO_RD   (2 << 26)

◆ MDIO_WR

#define MDIO_WR   (1 << 26)

◆ MDIO_PMD_SHIFT

#define MDIO_PMD_SHIFT   21

◆ MDIO_PMD_MASK

#define MDIO_PMD_MASK   0x1F

◆ MDIO_REG_SHIFT

#define MDIO_REG_SHIFT   16

◆ MDIO_REG_MASK

#define MDIO_REG_MASK   0x1F

◆ UMAC_RBUF_OVFL_CNT_V1

#define UMAC_RBUF_OVFL_CNT_V1   0x61C

◆ RBUF_OVFL_CNT_V2

#define RBUF_OVFL_CNT_V2   0x80

◆ RBUF_OVFL_CNT_V3PLUS

#define RBUF_OVFL_CNT_V3PLUS   0x94

◆ UMAC_MPD_CTRL

#define UMAC_MPD_CTRL   0x620

◆ MPD_EN

#define MPD_EN   (1 << 0)

◆ MPD_PW_EN

#define MPD_PW_EN   (1 << 27)

◆ MPD_MSEQ_LEN_SHIFT

#define MPD_MSEQ_LEN_SHIFT   16

◆ MPD_MSEQ_LEN_MASK

#define MPD_MSEQ_LEN_MASK   0xFF

◆ UMAC_MPD_PW_MS

#define UMAC_MPD_PW_MS   0x624

◆ UMAC_MPD_PW_LS

#define UMAC_MPD_PW_LS   0x628

◆ UMAC_RBUF_ERR_CNT_V1

#define UMAC_RBUF_ERR_CNT_V1   0x634

◆ RBUF_ERR_CNT_V2

#define RBUF_ERR_CNT_V2   0x84

◆ RBUF_ERR_CNT_V3PLUS

#define RBUF_ERR_CNT_V3PLUS   0x98

◆ UMAC_MDF_ERR_CNT

#define UMAC_MDF_ERR_CNT   0x638

◆ UMAC_MDF_CTRL

#define UMAC_MDF_CTRL   0x650

◆ UMAC_MDF_ADDR

#define UMAC_MDF_ADDR   0x654

◆ UMAC_MIB_CTRL

#define UMAC_MIB_CTRL   0x580

◆ MIB_RESET_RX

#define MIB_RESET_RX   (1 << 0)

◆ MIB_RESET_RUNT

#define MIB_RESET_RUNT   (1 << 1)

◆ MIB_RESET_TX

#define MIB_RESET_TX   (1 << 2)

◆ RBUF_CTRL

#define RBUF_CTRL   0x00

Receive buffer registers

◆ RBUF_64B_EN

#define RBUF_64B_EN   (1 << 0)

◆ RBUF_ALIGN_2B

#define RBUF_ALIGN_2B   (1 << 1)

◆ RBUF_BAD_DIS

#define RBUF_BAD_DIS   (1 << 2)

◆ RBUF_STATUS

#define RBUF_STATUS   0x0C

◆ RBUF_STATUS_WOL

#define RBUF_STATUS_WOL   (1 << 0)

◆ RBUF_STATUS_MPD_INTR_ACTIVE

#define RBUF_STATUS_MPD_INTR_ACTIVE   (1 << 1)

◆ RBUF_STATUS_ACPI_INTR_ACTIVE

#define RBUF_STATUS_ACPI_INTR_ACTIVE   (1 << 2)

◆ RBUF_CHK_CTRL

#define RBUF_CHK_CTRL   0x14

◆ RBUF_RXCHK_EN

#define RBUF_RXCHK_EN   (1 << 0)

◆ RBUF_SKIP_FCS

#define RBUF_SKIP_FCS   (1 << 4)

◆ RBUF_ENERGY_CTRL

#define RBUF_ENERGY_CTRL   0x9c

◆ RBUF_EEE_EN

#define RBUF_EEE_EN   (1 << 0)

◆ RBUF_PM_EN

#define RBUF_PM_EN   (1 << 1)

◆ RBUF_TBUF_SIZE_CTRL

#define RBUF_TBUF_SIZE_CTRL   0xb4

◆ RBUF_HFB_CTRL_V1

#define RBUF_HFB_CTRL_V1   0x38

Hardware Filter Block (HFB)

◆ RBUF_HFB_FILTER_EN_SHIFT

#define RBUF_HFB_FILTER_EN_SHIFT   16

◆ RBUF_HFB_FILTER_EN_MASK

#define RBUF_HFB_FILTER_EN_MASK   0xffff0000

◆ RBUF_HFB_EN

#define RBUF_HFB_EN   (1 << 0)

◆ RBUF_HFB_256B

#define RBUF_HFB_256B   (1 << 1)

◆ RBUF_ACPI_EN

#define RBUF_ACPI_EN   (1 << 2)

◆ RBUF_HFB_LEN_V1

#define RBUF_HFB_LEN_V1   0x3C

◆ RBUF_FLTR_LEN_MASK

#define RBUF_FLTR_LEN_MASK   0xFF

◆ RBUF_FLTR_LEN_SHIFT

#define RBUF_FLTR_LEN_SHIFT   8

◆ TBUF_CTRL

#define TBUF_CTRL   0x00

Transmit buffer registers

◆ TBUF_BP_MC

#define TBUF_BP_MC   0x0C

◆ TBUF_ENERGY_CTRL

#define TBUF_ENERGY_CTRL   0x14

◆ TBUF_EEE_EN

#define TBUF_EEE_EN   (1 << 0)

◆ TBUF_PM_EN

#define TBUF_PM_EN   (1 << 1)

◆ TBUF_CTRL_V1

#define TBUF_CTRL_V1   0x80

◆ TBUF_BP_MC_V1

#define TBUF_BP_MC_V1   0xA0

◆ HFB_CTRL

#define HFB_CTRL   0x00

Hardware Filter Block (HFB) registers

◆ HFB_FLT_ENABLE_V3PLUS

#define HFB_FLT_ENABLE_V3PLUS   0x04

◆ HFB_FLT_LEN_V2

#define HFB_FLT_LEN_V2   0x04

◆ HFB_FLT_LEN_V3PLUS

#define HFB_FLT_LEN_V3PLUS   0x1C

◆ INTRL2_CPU_STAT

#define INTRL2_CPU_STAT   0x00

UniMAC intrl2 registers

◆ INTRL2_CPU_SET

#define INTRL2_CPU_SET   0x04

◆ INTRL2_CPU_CLEAR

#define INTRL2_CPU_CLEAR   0x08

◆ INTRL2_CPU_MASK_STATUS

#define INTRL2_CPU_MASK_STATUS   0x0C

◆ INTRL2_CPU_MASK_SET

#define INTRL2_CPU_MASK_SET   0x10

◆ INTRL2_CPU_MASK_CLEAR

#define INTRL2_CPU_MASK_CLEAR   0x14

◆ UMAC_IRQ0_SCB

#define UMAC_IRQ0_SCB   (1 << 0)

INTRL2 IRQ0 definitions

◆ UMAC_IRQ0_EPHY

#define UMAC_IRQ0_EPHY   (1 << 1)

◆ UMAC_IRQ0_PHY_DET_R

#define UMAC_IRQ0_PHY_DET_R   (1 << 2)

◆ UMAC_IRQ0_PHY_DET_F

#define UMAC_IRQ0_PHY_DET_F   (1 << 3)

◆ UMAC_IRQ0_LINK_UP

#define UMAC_IRQ0_LINK_UP   (1 << 4)

◆ UMAC_IRQ0_LINK_DOWN

#define UMAC_IRQ0_LINK_DOWN   (1 << 5)

◆ UMAC_IRQ0_LINK_EVENT

#define UMAC_IRQ0_LINK_EVENT   (UMAC_IRQ0_LINK_UP | UMAC_IRQ0_LINK_DOWN)

◆ UMAC_IRQ0_UMAC

#define UMAC_IRQ0_UMAC   (1 << 6)

◆ UMAC_IRQ0_UMAC_TSV

#define UMAC_IRQ0_UMAC_TSV   (1 << 7)

◆ UMAC_IRQ0_TBUF_UNDERRUN

#define UMAC_IRQ0_TBUF_UNDERRUN   (1 << 8)

◆ UMAC_IRQ0_RBUF_OVERFLOW

#define UMAC_IRQ0_RBUF_OVERFLOW   (1 << 9)

◆ UMAC_IRQ0_HFB_SM

#define UMAC_IRQ0_HFB_SM   (1 << 10)

◆ UMAC_IRQ0_HFB_MM

#define UMAC_IRQ0_HFB_MM   (1 << 11)

◆ UMAC_IRQ0_MPD_R

#define UMAC_IRQ0_MPD_R   (1 << 12)

◆ UMAC_IRQ0_RXDMA_MBDONE

#define UMAC_IRQ0_RXDMA_MBDONE   (1 << 13)

◆ UMAC_IRQ0_RXDMA_PDONE

#define UMAC_IRQ0_RXDMA_PDONE   (1 << 14)

◆ UMAC_IRQ0_RXDMA_BDONE

#define UMAC_IRQ0_RXDMA_BDONE   (1 << 15)

◆ UMAC_IRQ0_RXDMA_DONE

#define UMAC_IRQ0_RXDMA_DONE   UMAC_IRQ0_RXDMA_MBDONE

◆ UMAC_IRQ0_TXDMA_MBDONE

#define UMAC_IRQ0_TXDMA_MBDONE   (1 << 16)

◆ UMAC_IRQ0_TXDMA_PDONE

#define UMAC_IRQ0_TXDMA_PDONE   (1 << 17)

◆ UMAC_IRQ0_TXDMA_BDONE

#define UMAC_IRQ0_TXDMA_BDONE   (1 << 18)

◆ UMAC_IRQ0_TXDMA_DONE

#define UMAC_IRQ0_TXDMA_DONE   UMAC_IRQ0_TXDMA_MBDONE

◆ UMAC_IRQ0_MDIO_DONE

#define UMAC_IRQ0_MDIO_DONE   (1 << 23)

Only valid for GENETv3+

◆ UMAC_IRQ0_MDIO_ERROR

#define UMAC_IRQ0_MDIO_ERROR   (1 << 24)

◆ UMAC_IRQ1_TX_INTR_MASK

#define UMAC_IRQ1_TX_INTR_MASK   0xFFFF

INTRL2 IRQ1 definitions

◆ UMAC_IRQ1_RX_INTR_MASK

#define UMAC_IRQ1_RX_INTR_MASK   0xFFFF

◆ UMAC_IRQ1_RX_INTR_SHIFT

#define UMAC_IRQ1_RX_INTR_SHIFT   16

◆ GENET_SYS_OFF

#define GENET_SYS_OFF   0x0000

Register block offsets

◆ GENET_GR_BRIDGE_OFF

#define GENET_GR_BRIDGE_OFF   0x0040

◆ GENET_EXT_OFF

#define GENET_EXT_OFF   0x0080

◆ GENET_INTRL2_0_OFF

#define GENET_INTRL2_0_OFF   0x0200

◆ GENET_INTRL2_1_OFF

#define GENET_INTRL2_1_OFF   0x0240

◆ GENET_RBUF_OFF

#define GENET_RBUF_OFF   0x0300

◆ GENET_UMAC_OFF

#define GENET_UMAC_OFF   0x0800

◆ SYS_REV_CTRL

#define SYS_REV_CTRL   0x00

SYS block offsets and register definitions

◆ SYS_PORT_CTRL

#define SYS_PORT_CTRL   0x04

◆ PORT_MODE_INT_EPHY

#define PORT_MODE_INT_EPHY   0

◆ PORT_MODE_INT_GPHY

#define PORT_MODE_INT_GPHY   1

◆ PORT_MODE_EXT_EPHY

#define PORT_MODE_EXT_EPHY   2

◆ PORT_MODE_EXT_GPHY

#define PORT_MODE_EXT_GPHY   3

◆ PORT_MODE_EXT_RVMII_25

#define PORT_MODE_EXT_RVMII_25   (4 | (1 << 4))

◆ PORT_MODE_EXT_RVMII_50

#define PORT_MODE_EXT_RVMII_50   4

◆ LED_ACT_SOURCE_MAC

#define LED_ACT_SOURCE_MAC   (1 << 9)

◆ SYS_RBUF_FLUSH_CTRL

#define SYS_RBUF_FLUSH_CTRL   0x08

◆ SYS_TBUF_FLUSH_CTRL

#define SYS_TBUF_FLUSH_CTRL   0x0C

◆ RBUF_FLUSH_CTRL_V1

#define RBUF_FLUSH_CTRL_V1   0x04

◆ EXT_EXT_PWR_MGMT

#define EXT_EXT_PWR_MGMT   0x00

Ext block register offsets and definitions

◆ EXT_PWR_DOWN_BIAS

#define EXT_PWR_DOWN_BIAS   (1 << 0)

◆ EXT_PWR_DOWN_DLL

#define EXT_PWR_DOWN_DLL   (1 << 1)

◆ EXT_PWR_DOWN_PHY

#define EXT_PWR_DOWN_PHY   (1 << 2)

◆ EXT_PWR_DN_EN_LD

#define EXT_PWR_DN_EN_LD   (1 << 3)

◆ EXT_ENERGY_DET

#define EXT_ENERGY_DET   (1 << 4)

◆ EXT_IDDQ_FROM_PHY

#define EXT_IDDQ_FROM_PHY   (1 << 5)

◆ EXT_IDDQ_GLBL_PWR

#define EXT_IDDQ_GLBL_PWR   (1 << 7)

◆ EXT_PHY_RESET

#define EXT_PHY_RESET   (1 << 8)

◆ EXT_ENERGY_DET_MASK

#define EXT_ENERGY_DET_MASK   (1 << 12)

◆ EXT_PWR_DOWN_PHY_TX

#define EXT_PWR_DOWN_PHY_TX   (1 << 16)

◆ EXT_PWR_DOWN_PHY_RX

#define EXT_PWR_DOWN_PHY_RX   (1 << 17)

◆ EXT_PWR_DOWN_PHY_SD

#define EXT_PWR_DOWN_PHY_SD   (1 << 18)

◆ EXT_PWR_DOWN_PHY_RD

#define EXT_PWR_DOWN_PHY_RD   (1 << 19)

◆ EXT_PWR_DOWN_PHY_EN

#define EXT_PWR_DOWN_PHY_EN   (1 << 20)

◆ EXT_RGMII_OOB_CTRL

#define EXT_RGMII_OOB_CTRL   0x0C

◆ RGMII_MODE_EN_V123

#define RGMII_MODE_EN_V123   (1 << 0)

◆ RGMII_LINK

#define RGMII_LINK   (1 << 4)

◆ OOB_DISABLE

#define OOB_DISABLE   (1 << 5)

◆ RGMII_MODE_EN

#define RGMII_MODE_EN   (1 << 6)

◆ ID_MODE_DIS

#define ID_MODE_DIS   (1 << 16)

◆ EXT_GPHY_CTRL

#define EXT_GPHY_CTRL   0x1C

◆ EXT_CFG_IDDQ_BIAS

#define EXT_CFG_IDDQ_BIAS   (1 << 0)

◆ EXT_CFG_PWR_DOWN

#define EXT_CFG_PWR_DOWN   (1 << 1)

◆ EXT_CK25_DIS

#define EXT_CK25_DIS   (1 << 4)

◆ EXT_GPHY_RESET

#define EXT_GPHY_RESET   (1 << 5)

◆ DMA_RING_SIZE

#define DMA_RING_SIZE   0x40

DMA rings size

◆ DMA_RINGS_SIZE

#define DMA_RINGS_SIZE   (DMA_RING_SIZE * (GENET_DESC_INDEX + 1))

◆ DMA_RW_POINTER_MASK

#define DMA_RW_POINTER_MASK   0x1FF

DMA registers common definitions

◆ DMA_P_INDEX_DISCARD_CNT_MASK

#define DMA_P_INDEX_DISCARD_CNT_MASK   0xFFFF

◆ DMA_P_INDEX_DISCARD_CNT_SHIFT

#define DMA_P_INDEX_DISCARD_CNT_SHIFT   16

◆ DMA_BUFFER_DONE_CNT_MASK

#define DMA_BUFFER_DONE_CNT_MASK   0xFFFF

◆ DMA_BUFFER_DONE_CNT_SHIFT

#define DMA_BUFFER_DONE_CNT_SHIFT   16

◆ DMA_P_INDEX_MASK

#define DMA_P_INDEX_MASK   0xFFFF

◆ DMA_C_INDEX_MASK

#define DMA_C_INDEX_MASK   0xFFFF

◆ DMA_RING_SIZE_MASK

#define DMA_RING_SIZE_MASK   0xFFFF

DMA ring size register

◆ DMA_RING_SIZE_SHIFT

#define DMA_RING_SIZE_SHIFT   16

◆ DMA_RING_BUFFER_SIZE_MASK

#define DMA_RING_BUFFER_SIZE_MASK   0xFFFF

◆ DMA_INTR_THRESHOLD_MASK

#define DMA_INTR_THRESHOLD_MASK   0x01FF

DMA interrupt threshold register

◆ DMA_XON_THREHOLD_MASK

#define DMA_XON_THREHOLD_MASK   0xFFFF

DMA XON/XOFF register

◆ DMA_XOFF_THRESHOLD_MASK

#define DMA_XOFF_THRESHOLD_MASK   0xFFFF

◆ DMA_XOFF_THRESHOLD_SHIFT

#define DMA_XOFF_THRESHOLD_SHIFT   16

◆ DMA_FLOW_PERIOD_MASK

#define DMA_FLOW_PERIOD_MASK   0xFFFF

DMA flow period register

◆ DMA_MAX_PKT_SIZE_MASK

#define DMA_MAX_PKT_SIZE_MASK   0xFFFF

◆ DMA_MAX_PKT_SIZE_SHIFT

#define DMA_MAX_PKT_SIZE_SHIFT   16

◆ DMA_EN

#define DMA_EN   (1 << 0)

DMA control register

◆ DMA_RING_BUF_EN_SHIFT

#define DMA_RING_BUF_EN_SHIFT   0x01

◆ DMA_RING_BUF_EN_MASK

#define DMA_RING_BUF_EN_MASK   0xFFFF

◆ DMA_TSB_SWAP_EN

#define DMA_TSB_SWAP_EN   (1 << 20)

◆ DMA_DISABLED

#define DMA_DISABLED   (1 << 0)

DMA status register

◆ DMA_DESC_RAM_INIT_BUSY

#define DMA_DESC_RAM_INIT_BUSY   (1 << 1)

◆ DMA_SCB_BURST_SIZE_MASK

#define DMA_SCB_BURST_SIZE_MASK   0x1F

DMA SCB burst size register

◆ DMA_ACTIVITY_VECTOR_MASK

#define DMA_ACTIVITY_VECTOR_MASK   0x1FFFF

DMA activity vector register

◆ DMA_BACKPRESSURE_MASK

#define DMA_BACKPRESSURE_MASK   0x1FFFF

DMA backpressure mask register

◆ DMA_PFC_ENABLE

#define DMA_PFC_ENABLE   (1 << 31)

◆ DMA_BACKPRESSURE_STATUS_MASK

#define DMA_BACKPRESSURE_STATUS_MASK   0x1FFFF

DMA backpressure status register

◆ DMA_LITTLE_ENDIAN_MODE

#define DMA_LITTLE_ENDIAN_MODE   (1 << 0)

DMA override register

◆ DMA_REGISTER_MODE

#define DMA_REGISTER_MODE   (1 << 1)

◆ DMA_TIMEOUT_MASK

#define DMA_TIMEOUT_MASK   0xFFFF

DMA timeout register

◆ DMA_TIMEOUT_VAL

#define DMA_TIMEOUT_VAL   5000

micro seconds

◆ DMA_RATE_LIMIT_EN_MASK

#define DMA_RATE_LIMIT_EN_MASK   0xFFFF

TDMA rate limiting control register

◆ DMA_ARBITER_MODE_MASK

#define DMA_ARBITER_MODE_MASK   0x03

TDMA arbitration control register

◆ DMA_RING_BUF_PRIORITY_MASK

#define DMA_RING_BUF_PRIORITY_MASK   0x1F

◆ DMA_RING_BUF_PRIORITY_SHIFT

#define DMA_RING_BUF_PRIORITY_SHIFT   5

◆ DMA_RATE_ADJ_MASK

#define DMA_RATE_ADJ_MASK   0xFF

◆ DMA_BUFLENGTH_MASK

#define DMA_BUFLENGTH_MASK   0x0fff

TX/RX DMA Descriptor common bits

◆ DMA_BUFLENGTH_SHIFT

#define DMA_BUFLENGTH_SHIFT   16

◆ DMA_OWN

#define DMA_OWN   0x8000

◆ DMA_EOP

#define DMA_EOP   0x4000

◆ DMA_SOP

#define DMA_SOP   0x2000

◆ DMA_WRAP

#define DMA_WRAP   0x1000

◆ DMA_TX_UNDERRUN

#define DMA_TX_UNDERRUN   0x0200

TX specific DMA descriptor bits

◆ DMA_TX_APPEND_CRC

#define DMA_TX_APPEND_CRC   0x0040

◆ DMA_TX_OW_CRC

#define DMA_TX_OW_CRC   0x0020

◆ DMA_TX_DO_CSUM

#define DMA_TX_DO_CSUM   0x0010

◆ DMA_TX_QTAG_SHIFT

#define DMA_TX_QTAG_SHIFT   7

◆ DMA_RX_CHK_V3PLUS

#define DMA_RX_CHK_V3PLUS   0x8000

RX Specific DMA descriptor bits

◆ DMA_RX_CHK_V12

#define DMA_RX_CHK_V12   0x1000

◆ DMA_RX_BRDCAST

#define DMA_RX_BRDCAST   0x0040

◆ DMA_RX_MULT

#define DMA_RX_MULT   0x0020

◆ DMA_RX_LG

#define DMA_RX_LG   0x0010

◆ DMA_RX_NO

#define DMA_RX_NO   0x0008

◆ DMA_RX_RXER

#define DMA_RX_RXER   0x0004

◆ DMA_RX_CRC_ERROR

#define DMA_RX_CRC_ERROR   0x0002

◆ DMA_RX_OV

#define DMA_RX_OV   0x0001

◆ DMA_RX_FI_MASK

#define DMA_RX_FI_MASK   0x001F

◆ DMA_RX_FI_SHIFT

#define DMA_RX_FI_SHIFT   0x0007

◆ DMA_DESC_ALLOC_MASK

#define DMA_DESC_ALLOC_MASK   0x00FF

◆ DMA_ARBITER_RR

#define DMA_ARBITER_RR   0x00

◆ DMA_ARBITER_WRR

#define DMA_ARBITER_WRR   0x01

◆ DMA_ARBITER_SP

#define DMA_ARBITER_SP   0x02

◆ GENET_POWER_CABLE_SENSE

#define GENET_POWER_CABLE_SENSE   0

Power management mode

◆ GENET_POWER_PASSIVE

#define GENET_POWER_PASSIVE   1

◆ GENET_POWER_WOL_MAGIC

#define GENET_POWER_WOL_MAGIC   2

◆ GENET_HAS_40BITS

#define GENET_HAS_40BITS   (1 << 0)

Hardware flags

◆ GENET_HAS_EXT

#define GENET_HAS_EXT   (1 << 1)

◆ GENET_HAS_MDIO_INTR

#define GENET_HAS_MDIO_INTR   (1 << 2)

◆ GENET_HAS_MOCA_LINK_DET

#define GENET_HAS_MOCA_LINK_DET   (1 << 3)

◆ DMA_RING_CFG

#define DMA_RING_CFG   0

RX/TX DMA registers

◆ DMA_CTRL

#define DMA_CTRL   1

◆ DMA_STATUS

#define DMA_STATUS   2

◆ DMA_SCB_BURST_SIZE

#define DMA_SCB_BURST_SIZE   3

◆ DMA_ARB_CTRL

#define DMA_ARB_CTRL   4

◆ DMA_PRIORITY_0

#define DMA_PRIORITY_0   5

◆ DMA_PRIORITY_1

#define DMA_PRIORITY_1   6

◆ DMA_PRIORITY_2

#define DMA_PRIORITY_2   7

◆ DMA_INDEX2RING_0

#define DMA_INDEX2RING_0   8

◆ DMA_INDEX2RING_1

#define DMA_INDEX2RING_1   9

◆ DMA_INDEX2RING_2

#define DMA_INDEX2RING_2   10

◆ DMA_INDEX2RING_3

#define DMA_INDEX2RING_3   11

◆ DMA_INDEX2RING_4

#define DMA_INDEX2RING_4   12

◆ DMA_INDEX2RING_5

#define DMA_INDEX2RING_5   13

◆ DMA_INDEX2RING_6

#define DMA_INDEX2RING_6   14

◆ DMA_INDEX2RING_7

#define DMA_INDEX2RING_7   15

◆ DMA_RING0_TIMEOUT

#define DMA_RING0_TIMEOUT   16

◆ DMA_RING1_TIMEOUT

#define DMA_RING1_TIMEOUT   17

◆ DMA_RING2_TIMEOUT

#define DMA_RING2_TIMEOUT   18

◆ DMA_RING3_TIMEOUT

#define DMA_RING3_TIMEOUT   19

◆ DMA_RING4_TIMEOUT

#define DMA_RING4_TIMEOUT   20

◆ DMA_RING5_TIMEOUT

#define DMA_RING5_TIMEOUT   21

◆ DMA_RING6_TIMEOUT

#define DMA_RING6_TIMEOUT   22

◆ DMA_RING7_TIMEOUT

#define DMA_RING7_TIMEOUT   23

◆ DMA_RING8_TIMEOUT

#define DMA_RING8_TIMEOUT   24

◆ DMA_RING9_TIMEOUT

#define DMA_RING9_TIMEOUT   25

◆ DMA_RING10_TIMEOUT

#define DMA_RING10_TIMEOUT   26

◆ DMA_RING11_TIMEOUT

#define DMA_RING11_TIMEOUT   27

◆ DMA_RING12_TIMEOUT

#define DMA_RING12_TIMEOUT   28

◆ DMA_RING13_TIMEOUT

#define DMA_RING13_TIMEOUT   29

◆ DMA_RING14_TIMEOUT

#define DMA_RING14_TIMEOUT   30

◆ DMA_RING15_TIMEOUT

#define DMA_RING15_TIMEOUT   31

◆ DMA_RING16_TIMEOUT

#define DMA_RING16_TIMEOUT   32

◆ TDMA_READ_PTR

#define TDMA_READ_PTR   0

RDMA/TDMA ring registers Merge the common fields and just prefix with T/D the registers having different meaning depending on the direction

◆ RDMA_WRITE_PTR

#define RDMA_WRITE_PTR   TDMA_READ_PTR

◆ TDMA_READ_PTR_HI

#define TDMA_READ_PTR_HI   1

◆ RDMA_WRITE_PTR_HI

#define RDMA_WRITE_PTR_HI   TDMA_READ_PTR_HI

◆ TDMA_CONS_INDEX

#define TDMA_CONS_INDEX   2

◆ RDMA_PROD_INDEX

#define RDMA_PROD_INDEX   TDMA_CONS_INDEX

◆ TDMA_PROD_INDEX

#define TDMA_PROD_INDEX   3

◆ RDMA_CONS_INDEX

#define RDMA_CONS_INDEX   TDMA_PROD_INDEX

◆ DMA_RING_BUF_SIZE

#define DMA_RING_BUF_SIZE   4

◆ DMA_START_ADDR

#define DMA_START_ADDR   5

◆ DMA_START_ADDR_HI

#define DMA_START_ADDR_HI   6

◆ DMA_END_ADDR

#define DMA_END_ADDR   7

◆ DMA_END_ADDR_HI

#define DMA_END_ADDR_HI   8

◆ DMA_MBUF_DONE_THRESH

#define DMA_MBUF_DONE_THRESH   9

◆ TDMA_FLOW_PERIOD

#define TDMA_FLOW_PERIOD   10

◆ RDMA_XON_XOFF_THRESH

#define RDMA_XON_XOFF_THRESH   TDMA_FLOW_PERIOD

◆ TDMA_WRITE_PTR

#define TDMA_WRITE_PTR   11

◆ RDMA_READ_PTR

#define RDMA_READ_PTR   TDMA_WRITE_PTR

◆ TDMA_WRITE_PTR_HI

#define TDMA_WRITE_PTR_HI   12

◆ RDMA_READ_PTR_HI

#define RDMA_READ_PTR_HI   TDMA_WRITE_PTR_HI

◆ MDIO_CMD

#define MDIO_CMD   0x00

UniMAC specific constants (Broadcom UniMAC MDIO bus controller)

◆ MDIO_CFG

#define MDIO_CFG   0x04

See UMAC_MDIO_CMD MDIO_START_BUSY =(1 shl 29); MDIO_READ_FAIL =(1 shl 28); MDIO_RD = (2 shl 26); MDIO_WR = (1 shl 26); MDIO_PMD_SHIFT = 21; MDIO_PMD_MASK = 0x1F; MDIO_REG_SHIFT = 16; MDIO_REG_MASK = 0x1F;

◆ MDIO_C22

#define MDIO_C22   (1 << 0)

◆ MDIO_C45

#define MDIO_C45   0

◆ MDIO_CLK_DIV_SHIFT

#define MDIO_CLK_DIV_SHIFT   4

◆ MDIO_CLK_DIV_MASK

#define MDIO_CLK_DIV_MASK   0x3F

◆ MDIO_SUPP_PREAMBLE

#define MDIO_SUPP_PREAMBLE   (1 << 12)

◆ PHY_ID_BCM50610

#define PHY_ID_BCM50610   0x0143bd60

Broadcom PHY ID

◆ PHY_ID_BCM50610M

#define PHY_ID_BCM50610M   0x0143bd70

◆ PHY_ID_BCM5241

#define PHY_ID_BCM5241   0x0143bc30

◆ PHY_ID_BCMAC131

#define PHY_ID_BCMAC131   0x0143bc70

◆ PHY_ID_BCM5481

#define PHY_ID_BCM5481   0x0143bca0

◆ PHY_ID_BCM5395

#define PHY_ID_BCM5395   0x0143bcf0

◆ PHY_ID_BCM54810

#define PHY_ID_BCM54810   0x03625d00

◆ PHY_ID_BCM5482

#define PHY_ID_BCM5482   0x0143bcb0

◆ PHY_ID_BCM5411

#define PHY_ID_BCM5411   0x00206070

◆ PHY_ID_BCM5421

#define PHY_ID_BCM5421   0x002060e0

◆ PHY_ID_BCM54210E

#define PHY_ID_BCM54210E   0x600d84a0

◆ PHY_ID_BCM5464

#define PHY_ID_BCM5464   0x002060b0

◆ PHY_ID_BCM5461

#define PHY_ID_BCM5461   0x002060c0

◆ PHY_ID_BCM54612E

#define PHY_ID_BCM54612E   0x03625e60

◆ PHY_ID_BCM54616S

#define PHY_ID_BCM54616S   0x03625d10

◆ PHY_ID_BCM57780

#define PHY_ID_BCM57780   0x03625d90

◆ PHY_ID_BCM89610

#define PHY_ID_BCM89610   0x03625cd0

◆ PHY_ID_BCM7250

#define PHY_ID_BCM7250   0xae025280

◆ PHY_ID_BCM7255

#define PHY_ID_BCM7255   0xae025120

◆ PHY_ID_BCM7260

#define PHY_ID_BCM7260   0xae025190

◆ PHY_ID_BCM7268

#define PHY_ID_BCM7268   0xae025090

◆ PHY_ID_BCM7271

#define PHY_ID_BCM7271   0xae0253b0

◆ PHY_ID_BCM7278

#define PHY_ID_BCM7278   0xae0251a0

◆ PHY_ID_BCM7364

#define PHY_ID_BCM7364   0xae025260

◆ PHY_ID_BCM7366

#define PHY_ID_BCM7366   0x600d8490

◆ PHY_ID_BCM7346

#define PHY_ID_BCM7346   0x600d8650

◆ PHY_ID_BCM7362

#define PHY_ID_BCM7362   0x600d84b0

◆ PHY_ID_BCM7425

#define PHY_ID_BCM7425   0x600d86b0

◆ PHY_ID_BCM7429

#define PHY_ID_BCM7429   0x600d8730

◆ PHY_ID_BCM7435

#define PHY_ID_BCM7435   0x600d8750

◆ PHY_ID_BCM74371

#define PHY_ID_BCM74371   0xae0252e0

◆ PHY_ID_BCM7439

#define PHY_ID_BCM7439   0x600d8480

◆ PHY_ID_BCM7439_2

#define PHY_ID_BCM7439_2   0xae025080

◆ PHY_ID_BCM7445

#define PHY_ID_BCM7445   0x600d8510

◆ PHY_ID_BCM_CYGNUS

#define PHY_ID_BCM_CYGNUS   0xae025200

◆ PHY_ID_BCM_OMEGA

#define PHY_ID_BCM_OMEGA   0xae025100

◆ PHY_ID_MASK

#define PHY_ID_MASK   0xfffffff0

◆ PHY_BCM_FLAGS_MODE_COPPER

#define PHY_BCM_FLAGS_MODE_COPPER   0x00000001

Broadcom PHY Flags

◆ PHY_BCM_FLAGS_MODE_1000BX

#define PHY_BCM_FLAGS_MODE_1000BX   0x00000002

◆ PHY_BCM_FLAGS_INTF_SGMII

#define PHY_BCM_FLAGS_INTF_SGMII   0x00000010

◆ PHY_BCM_FLAGS_INTF_XAUI

#define PHY_BCM_FLAGS_INTF_XAUI   0x00000020

◆ PHY_BRCM_WIRESPEED_ENABLE

#define PHY_BRCM_WIRESPEED_ENABLE   0x00000100

◆ PHY_BRCM_AUTO_PWRDWN_ENABLE

#define PHY_BRCM_AUTO_PWRDWN_ENABLE   0x00000200

◆ PHY_BRCM_RX_REFCLK_UNUSED

#define PHY_BRCM_RX_REFCLK_UNUSED   0x00000400

◆ PHY_BRCM_STD_IBND_DISABLE

#define PHY_BRCM_STD_IBND_DISABLE   0x00000800

◆ PHY_BRCM_EXT_IBND_RX_ENABLE

#define PHY_BRCM_EXT_IBND_RX_ENABLE   0x00001000

◆ PHY_BRCM_EXT_IBND_TX_ENABLE

#define PHY_BRCM_EXT_IBND_TX_ENABLE   0x00002000

◆ PHY_BRCM_CLEAR_RGMII_MODE

#define PHY_BRCM_CLEAR_RGMII_MODE   0x00004000

◆ PHY_BRCM_DIS_TXCRXC_NOENRGY

#define PHY_BRCM_DIS_TXCRXC_NOENRGY   0x00008000

◆ PHY_BRCM_EN_MASTER_MODE

#define PHY_BRCM_EN_MASTER_MODE   0x00010000

◆ MII_BCM54XX_ECR

#define MII_BCM54XX_ECR   0x10

BCM54xx extended control register.

Broadcom BCM54XX register definitions, common to most Broadcom PHYs

◆ MII_BCM54XX_ECR_IM

#define MII_BCM54XX_ECR_IM   0x1000

Interrupt mask.

◆ MII_BCM54XX_ECR_IF

#define MII_BCM54XX_ECR_IF   0x0800

Interrupt force.

◆ MII_BCM54XX_ESR

#define MII_BCM54XX_ESR   0x11

BCM54xx extended status register.

◆ MII_BCM54XX_ESR_IS

#define MII_BCM54XX_ESR_IS   0x1000

Interrupt status.

◆ MII_BCM54XX_EXP_DATA

#define MII_BCM54XX_EXP_DATA   0x15

Expansion register data.

◆ MII_BCM54XX_EXP_SEL

#define MII_BCM54XX_EXP_SEL   0x17

Expansion register select.

◆ MII_BCM54XX_EXP_SEL_SSD

#define MII_BCM54XX_EXP_SEL_SSD   0x0e00

Secondary SerDes select.

◆ MII_BCM54XX_EXP_SEL_ER

#define MII_BCM54XX_EXP_SEL_ER   0x0f00

Expansion register select.

◆ MII_BCM54XX_EXP_SEL_ETC

#define MII_BCM54XX_EXP_SEL_ETC   0x0d00

Expansion register spare + 2k mem.

◆ MII_BCM54XX_AUX_CTL

#define MII_BCM54XX_AUX_CTL   0x18

Auxiliary control register.

◆ MII_BCM54XX_ISR

#define MII_BCM54XX_ISR   0x1a

BCM54xx interrupt status register.

◆ MII_BCM54XX_IMR

#define MII_BCM54XX_IMR   0x1b

BCM54xx interrupt mask register.

◆ MII_BCM54XX_INT_CRCERR

#define MII_BCM54XX_INT_CRCERR   0x0001

CRC error.

◆ MII_BCM54XX_INT_LINK

#define MII_BCM54XX_INT_LINK   0x0002

Link status changed.

◆ MII_BCM54XX_INT_SPEED

#define MII_BCM54XX_INT_SPEED   0x0004

Link speed change.

◆ MII_BCM54XX_INT_DUPLEX

#define MII_BCM54XX_INT_DUPLEX   0x0008

Duplex mode changed.

◆ MII_BCM54XX_INT_LRS

#define MII_BCM54XX_INT_LRS   0x0010

Local receiver status changed.

◆ MII_BCM54XX_INT_RRS

#define MII_BCM54XX_INT_RRS   0x0020

Remote receiver status changed.

◆ MII_BCM54XX_INT_SSERR

#define MII_BCM54XX_INT_SSERR   0x0040

Scrambler synchronization error.

◆ MII_BCM54XX_INT_UHCD

#define MII_BCM54XX_INT_UHCD   0x0080

Unsupported HCD negotiated.

◆ MII_BCM54XX_INT_NHCD

#define MII_BCM54XX_INT_NHCD   0x0100

No HCD.

◆ MII_BCM54XX_INT_NHCDL

#define MII_BCM54XX_INT_NHCDL   0x0200

No HCD link.

◆ MII_BCM54XX_INT_ANPR

#define MII_BCM54XX_INT_ANPR   0x0400

Auto-negotiation page received.

◆ MII_BCM54XX_INT_LC

#define MII_BCM54XX_INT_LC   0x0800

All counters below 128.

◆ MII_BCM54XX_INT_HC

#define MII_BCM54XX_INT_HC   0x1000

Counter above 32768.

◆ MII_BCM54XX_INT_MDIX

#define MII_BCM54XX_INT_MDIX   0x2000

MDIX status change.

◆ MII_BCM54XX_INT_PSERR

#define MII_BCM54XX_INT_PSERR   0x4000

Pair swap error.

◆ MII_BCM54XX_SHD

#define MII_BCM54XX_SHD   0x1c

0x1c shadow registers

◆ MII_BCM54XX_SHD_WRITE

#define MII_BCM54XX_SHD_WRITE   0x8000

◆ MII_BCM54XX_AUXCTL_SHDWSEL_AUXCTL

#define MII_BCM54XX_AUXCTL_SHDWSEL_AUXCTL   0x00

Broadcom Auxilliary Control Shadow Access Registers (PHY REG 0x18)

◆ MII_BCM54XX_AUXCTL_ACTL_TX_6DB

#define MII_BCM54XX_AUXCTL_ACTL_TX_6DB   0x0400

◆ MII_BCM54XX_AUXCTL_ACTL_SMDSP_ENA

#define MII_BCM54XX_AUXCTL_ACTL_SMDSP_ENA   0x0800

◆ MII_BCM54XX_AUXCTL_SHDWSEL_MISC

#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC   0x07

◆ MII_BCM54XX_AUXCTL_SHDWSEL_MISC_WIRESPEED_EN

#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_WIRESPEED_EN   0x0010

◆ MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN

#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN   0x0100

◆ MII_BCM54XX_AUXCTL_MISC_FORCE_AMDIX

#define MII_BCM54XX_AUXCTL_MISC_FORCE_AMDIX   0x0200

◆ MII_BCM54XX_AUXCTL_MISC_WREN

#define MII_BCM54XX_AUXCTL_MISC_WREN   0x8000

◆ MII_BCM54XX_AUXCTL_SHDWSEL_READ_SHIFT

#define MII_BCM54XX_AUXCTL_SHDWSEL_READ_SHIFT   12

◆ MII_BCM54XX_AUXCTL_SHDWSEL_MASK

#define MII_BCM54XX_AUXCTL_SHDWSEL_MASK   0x0007

◆ BCM_LED_SRC_LINKSPD1

#define BCM_LED_SRC_LINKSPD1   0x0

Broadcom LED source encodings (These are used in BCM5461, BCM5481,BCM5482, and possibly some others)

◆ BCM_LED_SRC_LINKSPD2

#define BCM_LED_SRC_LINKSPD2   0x1

◆ BCM_LED_SRC_XMITLED

#define BCM_LED_SRC_XMITLED   0x2

◆ BCM_LED_SRC_ACTIVITYLED

#define BCM_LED_SRC_ACTIVITYLED   0x3

◆ BCM_LED_SRC_FDXLED

#define BCM_LED_SRC_FDXLED   0x4

◆ BCM_LED_SRC_SLAVE

#define BCM_LED_SRC_SLAVE   0x5

◆ BCM_LED_SRC_INTR

#define BCM_LED_SRC_INTR   0x6

◆ BCM_LED_SRC_QUALITY

#define BCM_LED_SRC_QUALITY   0x7

◆ BCM_LED_SRC_RCVLED

#define BCM_LED_SRC_RCVLED   0x8

◆ BCM_LED_SRC_WIRESPEED

#define BCM_LED_SRC_WIRESPEED   0x9

◆ BCM_LED_SRC_MULTICOLOR1

#define BCM_LED_SRC_MULTICOLOR1   0xa

◆ BCM_LED_SRC_OPENSHORT

#define BCM_LED_SRC_OPENSHORT   0xb

◆ BCM_LED_SRC_OFF

#define BCM_LED_SRC_OFF   0xe

Tied high.

◆ BCM_LED_SRC_ON

#define BCM_LED_SRC_ON   0xf

Tied low.

◆ BCM_EXP_MULTICOLOR

#define BCM_EXP_MULTICOLOR   (MII_BCM54XX_EXP_SEL_ER + 0x04)

Broadcom Multicolor LED configurations (expansion register 4)

◆ BCM_LED_MULTICOLOR_IN_PHASE

#define BCM_LED_MULTICOLOR_IN_PHASE   1 << 8

◆ BCM_LED_MULTICOLOR_LINK_ACT

#define BCM_LED_MULTICOLOR_LINK_ACT   0x0

◆ BCM_LED_MULTICOLOR_SPEED

#define BCM_LED_MULTICOLOR_SPEED   0x1

◆ BCM_LED_MULTICOLOR_ACT_FLASH

#define BCM_LED_MULTICOLOR_ACT_FLASH   0x2

◆ BCM_LED_MULTICOLOR_FDX

#define BCM_LED_MULTICOLOR_FDX   0x3

◆ BCM_LED_MULTICOLOR_OFF

#define BCM_LED_MULTICOLOR_OFF   0x4

◆ BCM_LED_MULTICOLOR_ON

#define BCM_LED_MULTICOLOR_ON   0x5

◆ BCM_LED_MULTICOLOR_ALT

#define BCM_LED_MULTICOLOR_ALT   0x6

◆ BCM_LED_MULTICOLOR_FLASH

#define BCM_LED_MULTICOLOR_FLASH   0x7

◆ BCM_LED_MULTICOLOR_LINK

#define BCM_LED_MULTICOLOR_LINK   0x8

◆ BCM_LED_MULTICOLOR_ACT

#define BCM_LED_MULTICOLOR_ACT   0x9

◆ BCM_LED_MULTICOLOR_PROGRAM

#define BCM_LED_MULTICOLOR_PROGRAM   0xa

◆ BCM54XX_SHD_SCR2

#define BCM54XX_SHD_SCR2   0x04

BCM5482 Shadow registers Shadow values go into bits [14:10] of register 0x1c to select a shadow register to access 00100: Reserved control register 2

◆ BCM54XX_SHD_SCR2_WSPD_RTRY_DIS

#define BCM54XX_SHD_SCR2_WSPD_RTRY_DIS   0x100

◆ BCM54XX_SHD_SCR2_WSPD_RTRY_LMT_SHIFT

#define BCM54XX_SHD_SCR2_WSPD_RTRY_LMT_SHIFT   2

◆ BCM54XX_SHD_SCR2_WSPD_RTRY_LMT_OFFSET

#define BCM54XX_SHD_SCR2_WSPD_RTRY_LMT_OFFSET   2

◆ BCM54XX_SHD_SCR2_WSPD_RTRY_LMT_MASK

#define BCM54XX_SHD_SCR2_WSPD_RTRY_LMT_MASK   0x7

◆ BCM54XX_SHD_SCR3

#define BCM54XX_SHD_SCR3   0x05

00101: Spare Control Register 3

◆ BCM54XX_SHD_SCR3_DEF_CLK125

#define BCM54XX_SHD_SCR3_DEF_CLK125   0x0001

◆ BCM54XX_SHD_SCR3_DLLAPD_DIS

#define BCM54XX_SHD_SCR3_DLLAPD_DIS   0x0002

◆ BCM54XX_SHD_SCR3_TRDDAPD

#define BCM54XX_SHD_SCR3_TRDDAPD   0x0004

◆ BCM54XX_SHD_APD

#define BCM54XX_SHD_APD   0x0a

01010: Auto Power-Down

◆ BCM_APD_CLR_MASK

#define BCM_APD_CLR_MASK   0xFE9F

clear bits 5, 6 & 8

◆ BCM54XX_SHD_APD_EN

#define BCM54XX_SHD_APD_EN   0x0020

◆ BCM_NO_ANEG_APD_EN

#define BCM_NO_ANEG_APD_EN   0x0060

bits 5 & 6

◆ BCM_APD_SINGLELP_EN

#define BCM_APD_SINGLELP_EN   0x0100

Bit 8.

◆ BCM5482_SHD_LEDS1

#define BCM5482_SHD_LEDS1   0x0d

01101: LED Selector 1

◆ BCM54XX_SHD_RGMII_MODE

#define BCM54XX_SHD_RGMII_MODE   0x0b

01011: RGMII Mode Selector

◆ BCM5482_SHD_SSD

#define BCM5482_SHD_SSD   0x14

10100: Secondary SerDes control

◆ BCM5482_SHD_SSD_LEDM

#define BCM5482_SHD_SSD_LEDM   0x0008

SSD LED Mode enable.

◆ BCM5482_SHD_SSD_EN

#define BCM5482_SHD_SSD_EN   0x0001

SSD enable.

◆ BCM5482_SHD_MODE

#define BCM5482_SHD_MODE   0x1f

11111: Mode Control Register

◆ BCM5482_SHD_MODE_1000BX

#define BCM5482_SHD_MODE_1000BX   0x0001

Enable 1000BASE-X registers.

◆ MII_BCM54XX_EXP_AADJ1CH0

#define MII_BCM54XX_EXP_AADJ1CH0   0x001f

Expansion Shadow Access Registers (PHY REG 0x15, 0x16, and 0x17)

◆ MII_BCM54XX_EXP_AADJ1CH0_SWP_ABCD_OEN

#define MII_BCM54XX_EXP_AADJ1CH0_SWP_ABCD_OEN   0x0200

◆ MII_BCM54XX_EXP_AADJ1CH0_SWSEL_THPF

#define MII_BCM54XX_EXP_AADJ1CH0_SWSEL_THPF   0x0100

◆ MII_BCM54XX_EXP_AADJ1CH3

#define MII_BCM54XX_EXP_AADJ1CH3   0x601f

◆ MII_BCM54XX_EXP_AADJ1CH3_ADCCKADJ

#define MII_BCM54XX_EXP_AADJ1CH3_ADCCKADJ   0x0002

◆ MII_BCM54XX_EXP_EXP08

#define MII_BCM54XX_EXP_EXP08   0x0F08

◆ MII_BCM54XX_EXP_EXP08_RJCT_2MHZ

#define MII_BCM54XX_EXP_EXP08_RJCT_2MHZ   0x0001

◆ MII_BCM54XX_EXP_EXP08_EARLY_DAC_WAKE

#define MII_BCM54XX_EXP_EXP08_EARLY_DAC_WAKE   0x0200

◆ MII_BCM54XX_EXP_EXP75

#define MII_BCM54XX_EXP_EXP75   0x0f75

◆ MII_BCM54XX_EXP_EXP75_VDACCTRL

#define MII_BCM54XX_EXP_EXP75_VDACCTRL   0x003c

◆ MII_BCM54XX_EXP_EXP75_CM_OSC

#define MII_BCM54XX_EXP_EXP75_CM_OSC   0x0001

◆ MII_BCM54XX_EXP_EXP96

#define MII_BCM54XX_EXP_EXP96   0x0f96

◆ MII_BCM54XX_EXP_EXP96_MYST

#define MII_BCM54XX_EXP_EXP96_MYST   0x0010

◆ MII_BCM54XX_EXP_EXP97

#define MII_BCM54XX_EXP_EXP97   0x0f97

◆ MII_BCM54XX_EXP_EXP97_MYST

#define MII_BCM54XX_EXP_EXP97_MYST   0x0c0c

◆ BCM5482_SSD_1000BX_CTL

#define BCM5482_SSD_1000BX_CTL   0x00

1000BASE-X Control

BCM5482 Secondary SerDes registers

◆ BCM5482_SSD_1000BX_CTL_PWRDOWN

#define BCM5482_SSD_1000BX_CTL_PWRDOWN   0x0800

Power-down SSD.

◆ BCM5482_SSD_SGMII_SLAVE

#define BCM5482_SSD_SGMII_SLAVE   0x15

SGMII Slave Register.

◆ BCM5482_SSD_SGMII_SLAVE_EN

#define BCM5482_SSD_SGMII_SLAVE_EN   0x0002

Slave mode enable.

◆ BCM5482_SSD_SGMII_SLAVE_AD

#define BCM5482_SSD_SGMII_SLAVE_AD   0x0001

Slave auto-detection.

◆ BCM54810_EXP_BROADREACH_LRE_MISC_CTL

#define BCM54810_EXP_BROADREACH_LRE_MISC_CTL   (MII_BCM54XX_EXP_SEL_ER + 0x90)

BCM54810 Registers

◆ BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN

#define BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN   (1 << 0)

◆ BCM54810_SHD_CLK_CTL

#define BCM54810_SHD_CLK_CTL   0x3

◆ BCM54810_SHD_CLK_CTL_GTXCLK_EN

#define BCM54810_SHD_CLK_CTL_GTXCLK_EN   (1 << 9)

◆ BCM54612E_EXP_SPARE0

#define BCM54612E_EXP_SPARE0   (MII_BCM54XX_EXP_SEL_ETC + 0x34)

BCM54612E Registers

◆ BCM54612E_LED4_CLK125OUT_EN

#define BCM54612E_LED4_CLK125OUT_EN   (1 << 1)

Typedef Documentation

◆ GENET_NETWORK

typedef struct _GENET_NETWORK GENET_NETWORK

GENET specific types (Broadcom Gigabit Ethernet controller)

◆ GENET_CONTROL_BLOCK

RX/TX Control Block

◆ GENET_CONTROL_BLOCKS

typedef GENET_CONTROL_BLOCK GENET_CONTROL_BLOCKS[GENET_TOTAL_DESC]

◆ GENET_RX_RING

typedef struct _GENET_RX_RING GENET_RX_RING

RX Ring Buffer

◆ genet_rx_ring_int_enable_proc

typedef void STDCALL(* genet_rx_ring_int_enable_proc) (GENET_NETWORK *network, GENET_RX_RING *ring)

◆ genet_rx_ring_int_disable_proc

typedef void STDCALL(* genet_rx_ring_int_disable_proc) (GENET_NETWORK *network, GENET_RX_RING *ring)

◆ GENET_RX_RINGS

typedef GENET_RX_RING GENET_RX_RINGS[GENET_DESC_INDEX+1]

◆ GENET_TX_RING

typedef struct _GENET_TX_RING GENET_TX_RING

TX Ring Buffer

◆ genet_tx_ring_int_enable_proc

typedef void STDCALL(* genet_tx_ring_int_enable_proc) (GENET_NETWORK *network, GENET_TX_RING *ring)

◆ genet_tx_ring_int_disable_proc

typedef void STDCALL(* genet_tx_ring_int_disable_proc) (GENET_NETWORK *network, GENET_TX_RING *ring)

◆ GENET_TX_RINGS

typedef GENET_TX_RING GENET_TX_RINGS[GENET_DESC_INDEX+1]

◆ GENET_DMA_REGISTERS

typedef uint8_t GENET_DMA_REGISTERS[DMA_RING_CFG - DMA_RING16_TIMEOUT+1]

RX/TX DMA registers

◆ GENET_DMA_RING_REGISTERS

typedef uint8_t GENET_DMA_RING_REGISTERS[TDMA_READ_PTR - TDMA_WRITE_PTR_HI+1]

RX/TX DMA ring registers

◆ GENET_STATUS64

Function Documentation

◆ genet_init()

void STDCALL genet_init ( void )

UniMAC specific types (Broadcom UniMAC MDIO bus controller) Nothing Initialization Functions

◆ genet_network_create()

NETWORK_DEVICE *STDCALL genet_network_create ( size_t address,
uint32_t mdiooffset,
uint32_t irq0,
uint32_t irq1 )

Create and register a new GENET Network device which can be accessed using the Network API.

GENET Functions

Parameters
AddressThe address of the GENET registers
MDIOOffsetThe offset from address of the MDIO registers
IRQ0The interrupt number for interrupt 0 of the GENET
IRQ1The interrupt number for interrupt 1 of the GENET
Returns
Pointer to the new Network device or nil if the Network device could not be created

◆ genet_network_destroy()

uint32_t STDCALL genet_network_destroy ( NETWORK_DEVICE * network)

Close, deregister and destroy a GENET Network device created by this driver.

Parameters
NetworkThe Network device to destroy
Returns
ERROR_SUCCESS if completed or another error code on failure