#ifndef __BCMGENET_H__
#define __BCMGENET_H__
#include <linux/skbuff.h>
#include <linux/netdevice.h>
#include <linux/spinlock.h>
#include <linux/clk.h>
#include <linux/mii.h>
#include <linux/if_vlan.h>
#include <linux/phy.h>
#include <linux/dim.h>
#include <linux/ethtool.h>
#include "../unimac.h"
#define TOTAL_DESC …
#define DESC_INDEX …
#define ENET_BRCM_TAG_LEN …
#define ENET_PAD …
#define ENET_MAX_MTU_SIZE …
#define DMA_MAX_BURST_LENGTH …
#define MAX_NUM_OF_FS_RULES …
#define CLEAR_ALL_HFB …
#define DMA_FC_THRESH_HI …
#define DMA_FC_THRESH_LO …
struct status_64 { … };
#define STATUS_RX_EXT_MASK …
#define STATUS_RX_CSUM_MASK …
#define STATUS_RX_CSUM_OK …
#define STATUS_RX_CSUM_FR …
#define STATUS_RX_PROTO_TCP …
#define STATUS_RX_PROTO_UDP …
#define STATUS_RX_PROTO_ICMP …
#define STATUS_RX_PROTO_OTHER …
#define STATUS_RX_PROTO_MASK …
#define STATUS_RX_PROTO_SHIFT …
#define STATUS_FILTER_INDEX_MASK …
#define STATUS_TX_CSUM_START_MASK …
#define STATUS_TX_CSUM_START_SHIFT …
#define STATUS_TX_CSUM_PROTO_UDP …
#define STATUS_TX_CSUM_OFFSET_MASK …
#define STATUS_TX_CSUM_LV …
#define DMA_DESC_LENGTH_STATUS …
#define DMA_DESC_ADDRESS_LO …
#define DMA_DESC_ADDRESS_HI …
struct bcmgenet_pkt_counters { … };
struct bcmgenet_rx_counters { … };
struct bcmgenet_tx_counters { … };
struct bcmgenet_mib_counters { … };
#define UMAC_MIB_START …
#define UMAC_MDIO_CMD …
#define MDIO_START_BUSY …
#define MDIO_READ_FAIL …
#define MDIO_RD …
#define MDIO_WR …
#define MDIO_PMD_SHIFT …
#define MDIO_PMD_MASK …
#define MDIO_REG_SHIFT …
#define MDIO_REG_MASK …
#define UMAC_RBUF_OVFL_CNT_V1 …
#define RBUF_OVFL_CNT_V2 …
#define RBUF_OVFL_CNT_V3PLUS …
#define UMAC_MPD_CTRL …
#define MPD_EN …
#define MPD_PW_EN …
#define MPD_MSEQ_LEN_SHIFT …
#define MPD_MSEQ_LEN_MASK …
#define UMAC_MPD_PW_MS …
#define UMAC_MPD_PW_LS …
#define UMAC_RBUF_ERR_CNT_V1 …
#define RBUF_ERR_CNT_V2 …
#define RBUF_ERR_CNT_V3PLUS …
#define UMAC_MDF_ERR_CNT …
#define UMAC_MDF_CTRL …
#define UMAC_MDF_ADDR …
#define UMAC_MIB_CTRL …
#define MIB_RESET_RX …
#define MIB_RESET_RUNT …
#define MIB_RESET_TX …
#define RBUF_CTRL …
#define RBUF_64B_EN …
#define RBUF_ALIGN_2B …
#define RBUF_BAD_DIS …
#define RBUF_STATUS …
#define RBUF_STATUS_WOL …
#define RBUF_STATUS_MPD_INTR_ACTIVE …
#define RBUF_STATUS_ACPI_INTR_ACTIVE …
#define RBUF_CHK_CTRL …
#define RBUF_RXCHK_EN …
#define RBUF_SKIP_FCS …
#define RBUF_L3_PARSE_DIS …
#define RBUF_ENERGY_CTRL …
#define RBUF_EEE_EN …
#define RBUF_PM_EN …
#define RBUF_TBUF_SIZE_CTRL …
#define RBUF_HFB_CTRL_V1 …
#define RBUF_HFB_FILTER_EN_SHIFT …
#define RBUF_HFB_FILTER_EN_MASK …
#define RBUF_HFB_EN …
#define RBUF_HFB_256B …
#define RBUF_ACPI_EN …
#define RBUF_HFB_LEN_V1 …
#define RBUF_FLTR_LEN_MASK …
#define RBUF_FLTR_LEN_SHIFT …
#define TBUF_CTRL …
#define TBUF_64B_EN …
#define TBUF_BP_MC …
#define TBUF_ENERGY_CTRL …
#define TBUF_EEE_EN …
#define TBUF_PM_EN …
#define TBUF_CTRL_V1 …
#define TBUF_BP_MC_V1 …
#define HFB_CTRL …
#define HFB_FLT_ENABLE_V3PLUS …
#define HFB_FLT_LEN_V2 …
#define HFB_FLT_LEN_V3PLUS …
#define INTRL2_CPU_STAT …
#define INTRL2_CPU_SET …
#define INTRL2_CPU_CLEAR …
#define INTRL2_CPU_MASK_STATUS …
#define INTRL2_CPU_MASK_SET …
#define INTRL2_CPU_MASK_CLEAR …
#define UMAC_IRQ_SCB …
#define UMAC_IRQ_EPHY …
#define UMAC_IRQ_PHY_DET_R …
#define UMAC_IRQ_PHY_DET_F …
#define UMAC_IRQ_LINK_UP …
#define UMAC_IRQ_LINK_DOWN …
#define UMAC_IRQ_LINK_EVENT …
#define UMAC_IRQ_UMAC …
#define UMAC_IRQ_UMAC_TSV …
#define UMAC_IRQ_TBUF_UNDERRUN …
#define UMAC_IRQ_RBUF_OVERFLOW …
#define UMAC_IRQ_HFB_SM …
#define UMAC_IRQ_HFB_MM …
#define UMAC_IRQ_MPD_R …
#define UMAC_IRQ_WAKE_EVENT …
#define UMAC_IRQ_RXDMA_MBDONE …
#define UMAC_IRQ_RXDMA_PDONE …
#define UMAC_IRQ_RXDMA_BDONE …
#define UMAC_IRQ_RXDMA_DONE …
#define UMAC_IRQ_TXDMA_MBDONE …
#define UMAC_IRQ_TXDMA_PDONE …
#define UMAC_IRQ_TXDMA_BDONE …
#define UMAC_IRQ_TXDMA_DONE …
#define UMAC_IRQ_MDIO_DONE …
#define UMAC_IRQ_MDIO_ERROR …
#define UMAC_IRQ1_TX_INTR_MASK …
#define UMAC_IRQ1_RX_INTR_MASK …
#define UMAC_IRQ1_RX_INTR_SHIFT …
#define GENET_SYS_OFF …
#define GENET_GR_BRIDGE_OFF …
#define GENET_EXT_OFF …
#define GENET_INTRL2_0_OFF …
#define GENET_INTRL2_1_OFF …
#define GENET_RBUF_OFF …
#define GENET_UMAC_OFF …
#define SYS_REV_CTRL …
#define SYS_PORT_CTRL …
#define PORT_MODE_INT_EPHY …
#define PORT_MODE_INT_GPHY …
#define PORT_MODE_EXT_EPHY …
#define PORT_MODE_EXT_GPHY …
#define PORT_MODE_EXT_RVMII_25 …
#define PORT_MODE_EXT_RVMII_50 …
#define LED_ACT_SOURCE_MAC …
#define SYS_RBUF_FLUSH_CTRL …
#define SYS_TBUF_FLUSH_CTRL …
#define RBUF_FLUSH_CTRL_V1 …
#define EXT_EXT_PWR_MGMT …
#define EXT_PWR_DOWN_BIAS …
#define EXT_PWR_DOWN_DLL …
#define EXT_PWR_DOWN_PHY …
#define EXT_PWR_DN_EN_LD …
#define EXT_ENERGY_DET …
#define EXT_IDDQ_FROM_PHY …
#define EXT_IDDQ_GLBL_PWR …
#define EXT_PHY_RESET …
#define EXT_ENERGY_DET_MASK …
#define EXT_PWR_DOWN_PHY_TX …
#define EXT_PWR_DOWN_PHY_RX …
#define EXT_PWR_DOWN_PHY_SD …
#define EXT_PWR_DOWN_PHY_RD …
#define EXT_PWR_DOWN_PHY_EN …
#define EXT_RGMII_OOB_CTRL …
#define RGMII_MODE_EN_V123 …
#define RGMII_LINK …
#define OOB_DISABLE …
#define RGMII_MODE_EN …
#define ID_MODE_DIS …
#define EXT_GPHY_CTRL …
#define EXT_CFG_IDDQ_BIAS …
#define EXT_CFG_PWR_DOWN …
#define EXT_CK25_DIS …
#define EXT_CFG_IDDQ_GLOBAL_PWR …
#define EXT_GPHY_RESET …
#define DMA_RING_SIZE …
#define DMA_RINGS_SIZE …
#define DMA_RW_POINTER_MASK …
#define DMA_P_INDEX_DISCARD_CNT_MASK …
#define DMA_P_INDEX_DISCARD_CNT_SHIFT …
#define DMA_BUFFER_DONE_CNT_MASK …
#define DMA_BUFFER_DONE_CNT_SHIFT …
#define DMA_P_INDEX_MASK …
#define DMA_C_INDEX_MASK …
#define DMA_RING_SIZE_MASK …
#define DMA_RING_SIZE_SHIFT …
#define DMA_RING_BUFFER_SIZE_MASK …
#define DMA_INTR_THRESHOLD_MASK …
#define DMA_XON_THREHOLD_MASK …
#define DMA_XOFF_THRESHOLD_MASK …
#define DMA_XOFF_THRESHOLD_SHIFT …
#define DMA_FLOW_PERIOD_MASK …
#define DMA_MAX_PKT_SIZE_MASK …
#define DMA_MAX_PKT_SIZE_SHIFT …
#define DMA_EN …
#define DMA_RING_BUF_EN_SHIFT …
#define DMA_RING_BUF_EN_MASK …
#define DMA_TSB_SWAP_EN …
#define DMA_DISABLED …
#define DMA_DESC_RAM_INIT_BUSY …
#define DMA_SCB_BURST_SIZE_MASK …
#define DMA_ACTIVITY_VECTOR_MASK …
#define DMA_BACKPRESSURE_MASK …
#define DMA_PFC_ENABLE …
#define DMA_BACKPRESSURE_STATUS_MASK …
#define DMA_LITTLE_ENDIAN_MODE …
#define DMA_REGISTER_MODE …
#define DMA_TIMEOUT_MASK …
#define DMA_TIMEOUT_VAL …
#define DMA_RATE_LIMIT_EN_MASK …
#define DMA_ARBITER_MODE_MASK …
#define DMA_RING_BUF_PRIORITY_MASK …
#define DMA_RING_BUF_PRIORITY_SHIFT …
#define DMA_PRIO_REG_INDEX(q) …
#define DMA_PRIO_REG_SHIFT(q) …
#define DMA_RATE_ADJ_MASK …
#define DMA_BUFLENGTH_MASK …
#define DMA_BUFLENGTH_SHIFT …
#define DMA_OWN …
#define DMA_EOP …
#define DMA_SOP …
#define DMA_WRAP …
#define DMA_TX_UNDERRUN …
#define DMA_TX_APPEND_CRC …
#define DMA_TX_OW_CRC …
#define DMA_TX_DO_CSUM …
#define DMA_TX_QTAG_SHIFT …
#define DMA_RX_CHK_V3PLUS …
#define DMA_RX_CHK_V12 …
#define DMA_RX_BRDCAST …
#define DMA_RX_MULT …
#define DMA_RX_LG …
#define DMA_RX_NO …
#define DMA_RX_RXER …
#define DMA_RX_CRC_ERROR …
#define DMA_RX_OV …
#define DMA_RX_FI_MASK …
#define DMA_RX_FI_SHIFT …
#define DMA_DESC_ALLOC_MASK …
#define DMA_ARBITER_RR …
#define DMA_ARBITER_WRR …
#define DMA_ARBITER_SP …
struct enet_cb { … };
enum bcmgenet_power_mode { … };
struct bcmgenet_priv;
enum bcmgenet_version { … };
#define GENET_IS_V1(p) …
#define GENET_IS_V2(p) …
#define GENET_IS_V3(p) …
#define GENET_IS_V4(p) …
#define GENET_IS_V5(p) …
#define GENET_HAS_40BITS …
#define GENET_HAS_EXT …
#define GENET_HAS_MDIO_INTR …
#define GENET_HAS_MOCA_LINK_DET …
struct bcmgenet_hw_params { … };
struct bcmgenet_skb_cb { … };
#define GENET_CB(skb) …
struct bcmgenet_tx_ring { … };
struct bcmgenet_net_dim { … };
struct bcmgenet_rx_ring { … };
enum bcmgenet_rxnfc_state { … };
struct bcmgenet_rxnfc_rule { … };
struct bcmgenet_priv { … };
#define GENET_IO_MACRO(name, offset) …
GENET_IO_MACRO(ext, GENET_EXT_OFF);
GENET_IO_MACRO(umac, GENET_UMAC_OFF);
GENET_IO_MACRO(sys, GENET_SYS_OFF);
GENET_IO_MACRO(intrl2_0, GENET_INTRL2_0_OFF);
GENET_IO_MACRO(intrl2_1, GENET_INTRL2_1_OFF);
GENET_IO_MACRO(hfb, priv->hw_params->hfb_offset);
GENET_IO_MACRO(hfb_reg, priv->hw_params->hfb_reg_offset);
GENET_IO_MACRO(rbuf, GENET_RBUF_OFF);
int bcmgenet_mii_init(struct net_device *dev);
int bcmgenet_mii_config(struct net_device *dev, bool init);
int bcmgenet_mii_probe(struct net_device *dev);
void bcmgenet_mii_exit(struct net_device *dev);
void bcmgenet_phy_pause_set(struct net_device *dev, bool rx, bool tx);
void bcmgenet_phy_power_set(struct net_device *dev, bool enable);
void bcmgenet_mii_setup(struct net_device *dev);
void bcmgenet_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol);
int bcmgenet_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol);
int bcmgenet_wol_power_down_cfg(struct bcmgenet_priv *priv,
enum bcmgenet_power_mode mode);
void bcmgenet_wol_power_up_cfg(struct bcmgenet_priv *priv,
enum bcmgenet_power_mode mode);
void bcmgenet_eee_enable_set(struct net_device *dev, bool enable,
bool tx_lpi_enabled);
#endif