linux/drivers/net/ethernet/broadcom/bgmac.h

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BGMAC_H
#define _BGMAC_H

#include <linux/netdevice.h>

#include "unimac.h"

#define BGMAC_DEV_CTL
#define BGMAC_DC_TSM
#define BGMAC_DC_CFCO
#define BGMAC_DC_RLSS
#define BGMAC_DC_MROR
#define BGMAC_DC_FCM_MASK
#define BGMAC_DC_FCM_SHIFT
#define BGMAC_DC_NAE
#define BGMAC_DC_TF
#define BGMAC_DC_RDS_MASK
#define BGMAC_DC_RDS_SHIFT
#define BGMAC_DC_TDS_MASK
#define BGMAC_DC_TDS_SHIFT
#define BGMAC_DEV_STATUS
#define BGMAC_DS_RBF
#define BGMAC_DS_RDF
#define BGMAC_DS_RIF
#define BGMAC_DS_TBF
#define BGMAC_DS_TDF
#define BGMAC_DS_TIF
#define BGMAC_DS_PO
#define BGMAC_DS_MM_MASK
#define BGMAC_DS_MM_SHIFT
#define BGMAC_BIST_STATUS
#define BGMAC_INT_STATUS
#define BGMAC_IS_MRO
#define BGMAC_IS_MTO
#define BGMAC_IS_TFD
#define BGMAC_IS_LS
#define BGMAC_IS_MDIO
#define BGMAC_IS_MR
#define BGMAC_IS_MT
#define BGMAC_IS_TO
#define BGMAC_IS_DESC_ERR
#define BGMAC_IS_DATA_ERR
#define BGMAC_IS_DESC_PROT_ERR
#define BGMAC_IS_RX_DESC_UNDERF
#define BGMAC_IS_RX_F_OVERF
#define BGMAC_IS_TX_F_UNDERF
#define BGMAC_IS_RX
#define BGMAC_IS_TX0
#define BGMAC_IS_TX1
#define BGMAC_IS_TX2
#define BGMAC_IS_TX3
#define BGMAC_IS_TX_MASK
#define BGMAC_IS_INTMASK
#define BGMAC_IS_ERRMASK
#define BGMAC_INT_MASK
#define BGMAC_GP_TIMER
#define BGMAC_INT_RECV_LAZY
#define BGMAC_IRL_TO_MASK
#define BGMAC_IRL_FC_MASK
#define BGMAC_IRL_FC_SHIFT
#define BGMAC_FLOW_CTL_THRESH
#define BGMAC_WRRTHRESH
#define BGMAC_GMAC_IDLE_CNT_THRESH
#define BGMAC_PHY_ACCESS
#define BGMAC_PA_DATA_MASK
#define BGMAC_PA_ADDR_MASK
#define BGMAC_PA_ADDR_SHIFT
#define BGMAC_PA_REG_MASK
#define BGMAC_PA_REG_SHIFT
#define BGMAC_PA_WRITE
#define BGMAC_PA_START
#define BGMAC_PHY_CNTL
#define BGMAC_PC_EPA_MASK
#define BGMAC_PC_MCT_MASK
#define BGMAC_PC_MCT_SHIFT
#define BGMAC_PC_MTE
#define BGMAC_TXQ_CTL
#define BGMAC_TXQ_CTL_DBT_MASK
#define BGMAC_TXQ_CTL_DBT_SHIFT
#define BGMAC_RXQ_CTL
#define BGMAC_RXQ_CTL_DBT_MASK
#define BGMAC_RXQ_CTL_DBT_SHIFT
#define BGMAC_RXQ_CTL_PTE
#define BGMAC_RXQ_CTL_MDP_MASK
#define BGMAC_RXQ_CTL_MDP_SHIFT
#define BGMAC_GPIO_SELECT
#define BGMAC_GPIO_OUTPUT_EN

/* For 0x1e0 see BCMA_CLKCTLST. Below are BGMAC specific bits */
#define BGMAC_BCMA_CLKCTLST_MISC_PLL_REQ
#define BGMAC_BCMA_CLKCTLST_MISC_PLL_ST

#define BGMAC_HW_WAR
#define BGMAC_PWR_CTL
#define BGMAC_DMA_BASE0
#define BGMAC_DMA_BASE1
#define BGMAC_DMA_BASE2
#define BGMAC_DMA_BASE3
#define BGMAC_TX_GOOD_OCTETS
#define BGMAC_TX_GOOD_OCTETS_HIGH
#define BGMAC_TX_GOOD_PKTS
#define BGMAC_TX_OCTETS
#define BGMAC_TX_OCTETS_HIGH
#define BGMAC_TX_PKTS
#define BGMAC_TX_BROADCAST_PKTS
#define BGMAC_TX_MULTICAST_PKTS
#define BGMAC_TX_LEN_64
#define BGMAC_TX_LEN_65_TO_127
#define BGMAC_TX_LEN_128_TO_255
#define BGMAC_TX_LEN_256_TO_511
#define BGMAC_TX_LEN_512_TO_1023
#define BGMAC_TX_LEN_1024_TO_1522
#define BGMAC_TX_LEN_1523_TO_2047
#define BGMAC_TX_LEN_2048_TO_4095
#define BGMAC_TX_LEN_4096_TO_8191
#define BGMAC_TX_LEN_8192_TO_MAX
#define BGMAC_TX_JABBER_PKTS
#define BGMAC_TX_OVERSIZE_PKTS
#define BGMAC_TX_FRAGMENT_PKTS
#define BGMAC_TX_UNDERRUNS
#define BGMAC_TX_TOTAL_COLS
#define BGMAC_TX_SINGLE_COLS
#define BGMAC_TX_MULTIPLE_COLS
#define BGMAC_TX_EXCESSIVE_COLS
#define BGMAC_TX_LATE_COLS
#define BGMAC_TX_DEFERED
#define BGMAC_TX_CARRIER_LOST
#define BGMAC_TX_PAUSE_PKTS
#define BGMAC_TX_UNI_PKTS
#define BGMAC_TX_Q0_PKTS
#define BGMAC_TX_Q0_OCTETS
#define BGMAC_TX_Q0_OCTETS_HIGH
#define BGMAC_TX_Q1_PKTS
#define BGMAC_TX_Q1_OCTETS
#define BGMAC_TX_Q1_OCTETS_HIGH
#define BGMAC_TX_Q2_PKTS
#define BGMAC_TX_Q2_OCTETS
#define BGMAC_TX_Q2_OCTETS_HIGH
#define BGMAC_TX_Q3_PKTS
#define BGMAC_TX_Q3_OCTETS
#define BGMAC_TX_Q3_OCTETS_HIGH
#define BGMAC_RX_GOOD_OCTETS
#define BGMAC_RX_GOOD_OCTETS_HIGH
#define BGMAC_RX_GOOD_PKTS
#define BGMAC_RX_OCTETS
#define BGMAC_RX_OCTETS_HIGH
#define BGMAC_RX_PKTS
#define BGMAC_RX_BROADCAST_PKTS
#define BGMAC_RX_MULTICAST_PKTS
#define BGMAC_RX_LEN_64
#define BGMAC_RX_LEN_65_TO_127
#define BGMAC_RX_LEN_128_TO_255
#define BGMAC_RX_LEN_256_TO_511
#define BGMAC_RX_LEN_512_TO_1023
#define BGMAC_RX_LEN_1024_TO_1522
#define BGMAC_RX_LEN_1523_TO_2047
#define BGMAC_RX_LEN_2048_TO_4095
#define BGMAC_RX_LEN_4096_TO_8191
#define BGMAC_RX_LEN_8192_TO_MAX
#define BGMAC_RX_JABBER_PKTS
#define BGMAC_RX_OVERSIZE_PKTS
#define BGMAC_RX_FRAGMENT_PKTS
#define BGMAC_RX_MISSED_PKTS
#define BGMAC_RX_CRC_ALIGN_ERRS
#define BGMAC_RX_UNDERSIZE
#define BGMAC_RX_CRC_ERRS
#define BGMAC_RX_ALIGN_ERRS
#define BGMAC_RX_SYMBOL_ERRS
#define BGMAC_RX_PAUSE_PKTS
#define BGMAC_RX_NONPAUSE_PKTS
#define BGMAC_RX_SACHANGES
#define BGMAC_RX_UNI_PKTS
#define BGMAC_UNIMAC

/* BCMA GMAC core specific IO Control (BCMA_IOCTL) flags */
#define BGMAC_BCMA_IOCTL_SW_CLKEN
#define BGMAC_BCMA_IOCTL_SW_RESET
/* The IOCTL values appear to be different in NS, NSP, and NS2, and do not match
 * the values directly above
 */
#define BGMAC_CLK_EN
#define BGMAC_RESERVED_0
#define BGMAC_SOURCE_SYNC_MODE_EN
#define BGMAC_DEST_SYNC_MODE_EN
#define BGMAC_TX_CLK_OUT_INVERT_EN
#define BGMAC_DIRECT_GMII_MODE
#define BGMAC_CLK_250_SEL
#define BGMAC_AWCACHE
#define BGMAC_RESERVED_1
#define BGMAC_ARCACHE
#define BGMAC_AWUSER
#define BGMAC_ARUSER
#define BGMAC_RESERVED

/* BCMA GMAC core specific IO status (BCMA_IOST) flags */
#define BGMAC_BCMA_IOST_ATTACHED

#define BGMAC_NUM_MIB_TX_REGS
#define BGMAC_NUM_MIB_RX_REGS

#define BGMAC_DMA_TX_CTL
#define BGMAC_DMA_TX_ENABLE
#define BGMAC_DMA_TX_SUSPEND
#define BGMAC_DMA_TX_LOOPBACK
#define BGMAC_DMA_TX_FLUSH
#define BGMAC_DMA_TX_MR_MASK
#define BGMAC_DMA_TX_MR_SHIFT
#define BGMAC_DMA_TX_MR_1
#define BGMAC_DMA_TX_MR_2
#define BGMAC_DMA_TX_PARITY_DISABLE
#define BGMAC_DMA_TX_ADDREXT_MASK
#define BGMAC_DMA_TX_ADDREXT_SHIFT
#define BGMAC_DMA_TX_BL_MASK
#define BGMAC_DMA_TX_BL_SHIFT
#define BGMAC_DMA_TX_BL_16
#define BGMAC_DMA_TX_BL_32
#define BGMAC_DMA_TX_BL_64
#define BGMAC_DMA_TX_BL_128
#define BGMAC_DMA_TX_BL_256
#define BGMAC_DMA_TX_BL_512
#define BGMAC_DMA_TX_BL_1024
#define BGMAC_DMA_TX_PC_MASK
#define BGMAC_DMA_TX_PC_SHIFT
#define BGMAC_DMA_TX_PC_0
#define BGMAC_DMA_TX_PC_4
#define BGMAC_DMA_TX_PC_8
#define BGMAC_DMA_TX_PC_16
#define BGMAC_DMA_TX_PT_MASK
#define BGMAC_DMA_TX_PT_SHIFT
#define BGMAC_DMA_TX_PT_1
#define BGMAC_DMA_TX_PT_2
#define BGMAC_DMA_TX_PT_4
#define BGMAC_DMA_TX_PT_8
#define BGMAC_DMA_TX_INDEX
#define BGMAC_DMA_TX_RINGLO
#define BGMAC_DMA_TX_RINGHI
#define BGMAC_DMA_TX_STATUS
#define BGMAC_DMA_TX_STATDPTR
#define BGMAC_DMA_TX_STAT
#define BGMAC_DMA_TX_STAT_DISABLED
#define BGMAC_DMA_TX_STAT_ACTIVE
#define BGMAC_DMA_TX_STAT_IDLEWAIT
#define BGMAC_DMA_TX_STAT_STOPPED
#define BGMAC_DMA_TX_STAT_SUSP
#define BGMAC_DMA_TX_ERROR
#define BGMAC_DMA_TX_ERRDPTR
#define BGMAC_DMA_TX_ERR
#define BGMAC_DMA_TX_ERR_NOERR
#define BGMAC_DMA_TX_ERR_PROT
#define BGMAC_DMA_TX_ERR_UNDERRUN
#define BGMAC_DMA_TX_ERR_TRANSFER
#define BGMAC_DMA_TX_ERR_DESCREAD
#define BGMAC_DMA_TX_ERR_CORE
#define BGMAC_DMA_RX_CTL
#define BGMAC_DMA_RX_ENABLE
#define BGMAC_DMA_RX_FRAME_OFFSET_MASK
#define BGMAC_DMA_RX_FRAME_OFFSET_SHIFT
#define BGMAC_DMA_RX_DIRECT_FIFO
#define BGMAC_DMA_RX_OVERFLOW_CONT
#define BGMAC_DMA_RX_PARITY_DISABLE
#define BGMAC_DMA_RX_MR_MASK
#define BGMAC_DMA_RX_MR_SHIFT
#define BGMAC_DMA_TX_MR_1
#define BGMAC_DMA_TX_MR_2
#define BGMAC_DMA_RX_ADDREXT_MASK
#define BGMAC_DMA_RX_ADDREXT_SHIFT
#define BGMAC_DMA_RX_BL_MASK
#define BGMAC_DMA_RX_BL_SHIFT
#define BGMAC_DMA_RX_BL_16
#define BGMAC_DMA_RX_BL_32
#define BGMAC_DMA_RX_BL_64
#define BGMAC_DMA_RX_BL_128
#define BGMAC_DMA_RX_BL_256
#define BGMAC_DMA_RX_BL_512
#define BGMAC_DMA_RX_BL_1024
#define BGMAC_DMA_RX_PC_MASK
#define BGMAC_DMA_RX_PC_SHIFT
#define BGMAC_DMA_RX_PC_0
#define BGMAC_DMA_RX_PC_4
#define BGMAC_DMA_RX_PC_8
#define BGMAC_DMA_RX_PC_16
#define BGMAC_DMA_RX_PT_MASK
#define BGMAC_DMA_RX_PT_SHIFT
#define BGMAC_DMA_RX_PT_1
#define BGMAC_DMA_RX_PT_2
#define BGMAC_DMA_RX_PT_4
#define BGMAC_DMA_RX_PT_8
#define BGMAC_DMA_RX_INDEX
#define BGMAC_DMA_RX_RINGLO
#define BGMAC_DMA_RX_RINGHI
#define BGMAC_DMA_RX_STATUS
#define BGMAC_DMA_RX_STATDPTR
#define BGMAC_DMA_RX_STAT
#define BGMAC_DMA_RX_STAT_DISABLED
#define BGMAC_DMA_RX_STAT_ACTIVE
#define BGMAC_DMA_RX_STAT_IDLEWAIT
#define BGMAC_DMA_RX_STAT_STOPPED
#define BGMAC_DMA_RX_STAT_SUSP
#define BGMAC_DMA_RX_ERROR
#define BGMAC_DMA_RX_ERRDPTR
#define BGMAC_DMA_RX_ERR
#define BGMAC_DMA_RX_ERR_NOERR
#define BGMAC_DMA_RX_ERR_PROT
#define BGMAC_DMA_RX_ERR_UNDERRUN
#define BGMAC_DMA_RX_ERR_TRANSFER
#define BGMAC_DMA_RX_ERR_DESCREAD
#define BGMAC_DMA_RX_ERR_CORE

#define BGMAC_DESC_CTL0_EOT
#define BGMAC_DESC_CTL0_IOC
#define BGMAC_DESC_CTL0_EOF
#define BGMAC_DESC_CTL0_SOF
#define BGMAC_DESC_CTL1_LEN

#define BGMAC_PHY_NOREGS
#define BGMAC_PHY_MASK

#define BGMAC_MAX_TX_RINGS
#define BGMAC_MAX_RX_RINGS

#define BGMAC_TX_RING_SLOTS
#define BGMAC_RX_RING_SLOTS

#define BGMAC_RX_HEADER_LEN
#define BGMAC_RX_FRAME_OFFSET
#define BGMAC_RX_BUF_OFFSET
/* Jumbo frame size with FCS */
#define BGMAC_RX_MAX_FRAME_SIZE
#define BGMAC_RX_BUF_SIZE
#define BGMAC_RX_ALLOC_SIZE

#define BGMAC_BFL_ENETROBO
#define BGMAC_BFL_ENETADM
#define BGMAC_BFL_ENETVLAN

#define BGMAC_CHIPCTL_1_IF_TYPE_MASK
#define BGMAC_CHIPCTL_1_IF_TYPE_RMII
#define BGMAC_CHIPCTL_1_IF_TYPE_MII
#define BGMAC_CHIPCTL_1_IF_TYPE_RGMII
#define BGMAC_CHIPCTL_1_SW_TYPE_MASK
#define BGMAC_CHIPCTL_1_SW_TYPE_EPHY
#define BGMAC_CHIPCTL_1_SW_TYPE_EPHYMII
#define BGMAC_CHIPCTL_1_SW_TYPE_EPHYRMII
#define BGMAC_CHIPCTL_1_SW_TYPE_RGMII
#define BGMAC_CHIPCTL_1_RXC_DLL_BYPASS

#define BGMAC_CHIPCTL_4_IF_TYPE_MASK
#define BGMAC_CHIPCTL_4_IF_TYPE_RMII
#define BGMAC_CHIPCTL_4_IF_TYPE_MII
#define BGMAC_CHIPCTL_4_IF_TYPE_RGMII
#define BGMAC_CHIPCTL_4_SW_TYPE_MASK
#define BGMAC_CHIPCTL_4_SW_TYPE_EPHY
#define BGMAC_CHIPCTL_4_SW_TYPE_EPHYMII
#define BGMAC_CHIPCTL_4_SW_TYPE_EPHYRMII
#define BGMAC_CHIPCTL_4_SW_TYPE_RGMII

#define BGMAC_CHIPCTL_7_IF_TYPE_MASK
#define BGMAC_CHIPCTL_7_IF_TYPE_RMII
#define BGMAC_CHIPCTL_7_IF_TYPE_MII
#define BGMAC_CHIPCTL_7_IF_TYPE_RGMII

#define ETHER_MAX_LEN

/* Feature Flags */
#define BGMAC_FEAT_TX_MASK_SETUP
#define BGMAC_FEAT_RX_MASK_SETUP
#define BGMAC_FEAT_IOST_ATTACHED
#define BGMAC_FEAT_NO_RESET
#define BGMAC_FEAT_MISC_PLL_REQ
#define BGMAC_FEAT_SW_TYPE_PHY
#define BGMAC_FEAT_SW_TYPE_EPHYRMII
#define BGMAC_FEAT_SW_TYPE_RGMII
#define BGMAC_FEAT_CMN_PHY_CTL
#define BGMAC_FEAT_FLW_CTRL1
#define BGMAC_FEAT_FLW_CTRL2
#define BGMAC_FEAT_SET_RXQ_CLK
#define BGMAC_FEAT_CLKCTLST
#define BGMAC_FEAT_NO_CLR_MIB
#define BGMAC_FEAT_FORCE_SPEED_2500
#define BGMAC_FEAT_CMDCFG_SR_REV4
#define BGMAC_FEAT_IRQ_ID_OOB_6
#define BGMAC_FEAT_CC4_IF_SW_TYPE
#define BGMAC_FEAT_CC4_IF_SW_TYPE_RGMII
#define BGMAC_FEAT_CC7_IF_TYPE_RGMII
#define BGMAC_FEAT_IDM_MASK

struct bgmac_slot_info {};

struct bgmac_dma_desc {} __packed;

enum bgmac_dma_ring_type {};

/**
 * bgmac_dma_ring - contains info about DMA ring (either TX or RX one)
 * @start: index of the first slot containing data
 * @end: index of a slot that can *not* be read (yet)
 *
 * Be really aware of the specific @end meaning. It's an index of a slot *after*
 * the one containing data that can be read. If @start equals @end the ring is
 * empty.
 */
struct bgmac_dma_ring {};

struct bgmac_rx_header {};

struct bgmac {};

struct bgmac *bgmac_alloc(struct device *dev);
int bgmac_enet_probe(struct bgmac *bgmac);
void bgmac_enet_remove(struct bgmac *bgmac);
void bgmac_adjust_link(struct net_device *net_dev);
int bgmac_phy_connect_direct(struct bgmac *bgmac);
int bgmac_enet_suspend(struct bgmac *bgmac);
int bgmac_enet_resume(struct bgmac *bgmac);

struct mii_bus *bcma_mdio_mii_register(struct bgmac *bgmac);
void bcma_mdio_mii_unregister(struct mii_bus *mii_bus);

static inline u32 bgmac_read(struct bgmac *bgmac, u16 offset)
{}

static inline void bgmac_write(struct bgmac *bgmac, u16 offset, u32 value)
{}

static inline u32 bgmac_umac_read(struct bgmac *bgmac, u16 offset)
{}

static inline void bgmac_umac_write(struct bgmac *bgmac, u16 offset, u32 value)
{}

static inline u32 bgmac_idm_read(struct bgmac *bgmac, u16 offset)
{}

static inline void bgmac_idm_write(struct bgmac *bgmac, u16 offset, u32 value)
{}

static inline bool bgmac_clk_enabled(struct bgmac *bgmac)
{}

static inline void bgmac_clk_enable(struct bgmac *bgmac, u32 flags)
{}

static inline void bgmac_cco_ctl_maskset(struct bgmac *bgmac, u32 offset,
					 u32 mask, u32 set)
{}

static inline u32 bgmac_get_bus_clock(struct bgmac *bgmac)
{}

static inline void bgmac_cmn_maskset32(struct bgmac *bgmac, u16 offset,
				       u32 mask, u32 set)
{}

static inline void bgmac_maskset(struct bgmac *bgmac, u16 offset, u32 mask,
				   u32 set)
{}

static inline void bgmac_mask(struct bgmac *bgmac, u16 offset, u32 mask)
{}

static inline void bgmac_set(struct bgmac *bgmac, u16 offset, u32 set)
{}

static inline void bgmac_umac_maskset(struct bgmac *bgmac, u16 offset, u32 mask, u32 set)
{}

static inline int bgmac_phy_connect(struct bgmac *bgmac)
{}
#endif /* _BGMAC_H */