iPXE
Data Structures | Macros | Functions | Variables
etherfabric.c File Reference
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <assert.h>
#include <byteswap.h>
#include <ipxe/io.h>
#include <ipxe/pci.h>
#include <ipxe/malloc.h>
#include <ipxe/ethernet.h>
#include <ipxe/iobuf.h>
#include <ipxe/netdevice.h>
#include <ipxe/timer.h>
#include <mii.h>
#include "etherfabric.h"
#include "etherfabric_nic.h"

Go to the source code of this file.

Data Structures

struct  falcon_nv_config_ver2
 
struct  falcon_nv_extra
 

Macros

#define EFAB_REGDUMP(...)
 
#define EFAB_TRACE(...)   DBGP(__VA_ARGS__)
 
#define EFAB_LOG(...)   DBG(__VA_ARGS__)
 
#define EFAB_ERR(...)   DBG(__VA_ARGS__)
 
#define FALCON_USE_IO_BAR   0
 
#define HZ   100
 
#define EFAB_BYTE   1
 
#define FQS(_prefix, _x)
 
#define EFAB_MAX_FRAME_LEN(mtu)   ( ( ( ( mtu ) + 4/* FCS */ ) + 7 ) & ~7 )
 
#define GMII_PSSR   0x11 /* PHY-specific status register */
 
#define LPA_EF_1000FULL   0x00020000
 
#define LPA_EF_1000HALF   0x00010000
 
#define LPA_EF_10000FULL   0x00040000
 
#define LPA_EF_10000HALF   0x00080000
 
#define LPA_EF_1000   ( LPA_EF_1000FULL | LPA_EF_1000HALF )
 
#define LPA_EF_10000   ( LPA_EF_10000FULL | LPA_EF_10000HALF )
 
#define LPA_EF_DUPLEX
 
#define LPA_OTHER
 
#define PSSR_LSTATUS   0x0400 /* Bit 10 - link status */
 
#define MDIO_MMD_PMAPMD   (1)
 
#define MDIO_MMD_WIS   (2)
 
#define MDIO_MMD_PCS   (3)
 
#define MDIO_MMD_PHYXS   (4)
 
#define MDIO_MMD_DTEXS   (5)
 
#define MDIO_MMD_TC   (6)
 
#define MDIO_MMD_AN   (7)
 
#define MDIO_MMDREG_CTRL1   (0)
 
#define MDIO_MMDREG_STAT1   (1)
 
#define MDIO_MMDREG_DEVS0   (5)
 
#define MDIO_MMDREG_STAT2   (8)
 
#define MDIO_MMDREG_CTRL1_RESET_LBN   (15)
 
#define MDIO_MMDREG_CTRL1_RESET_WIDTH   (1)
 
#define MDIO_MMDREG_STAT1_FAULT_LBN   (7)
 
#define MDIO_MMDREG_STAT1_FAULT_WIDTH   (1)
 
#define MDIO_MMDREG_STAT1_LINK_LBN   (2)
 
#define MDIO_MMDREG_STAT1_LINK_WIDTH   (1)
 
#define DEV_PRESENT_BIT(_b)   (1 << _b)
 
#define MDIO_MMDREG_DEVS0_DTEXS   DEV_PRESENT_BIT(MDIO_MMD_DTEXS)
 
#define MDIO_MMDREG_DEVS0_PHYXS   DEV_PRESENT_BIT(MDIO_MMD_PHYXS)
 
#define MDIO_MMDREG_DEVS0_PCS   DEV_PRESENT_BIT(MDIO_MMD_PCS)
 
#define MDIO_MMDREG_DEVS0_WIS   DEV_PRESENT_BIT(MDIO_MMD_WIS)
 
#define MDIO_MMDREG_DEVS0_PMAPMD   DEV_PRESENT_BIT(MDIO_MMD_PMAPMD)
 
#define MDIO_MMDREG_DEVS0_AN   DEV_PRESENT_BIT(MDIO_MMD_AN)
 
#define MDIO_MMDREG_STAT2_PRESENT_VAL   (2)
 
#define MDIO_MMDREG_STAT2_PRESENT_LBN   (14)
 
#define MDIO_MMDREG_STAT2_PRESENT_WIDTH   (2)
 
#define MDIO_PHYXS_LANE_STATE   (0x18)
 
#define MDIO_PHYXS_LANE_ALIGNED_LBN   (12)
 
#define MDIO_PHYXS_LANE_SYNC0_LBN   (0)
 
#define MDIO_PHYXS_LANE_SYNC1_LBN   (1)
 
#define MDIO_PHYXS_LANE_SYNC2_LBN   (2)
 
#define MDIO_PHYXS_LANE_SYNC3_LBN   (3)
 
#define MDIO45_RESET_TRIES   100
 
#define MDIO45_RESET_SPINTIME   10
 
#define FCN_IOM_IND_ADR_REG   0x0
 
#define FCN_IOM_IND_DAT_REG   0x4
 
#define FCN_ADR_REGION_REG_KER   0x00
 
#define FCN_ADR_REGION0_LBN   0
 
#define FCN_ADR_REGION0_WIDTH   18
 
#define FCN_ADR_REGION1_LBN   32
 
#define FCN_ADR_REGION1_WIDTH   18
 
#define FCN_ADR_REGION2_LBN   64
 
#define FCN_ADR_REGION2_WIDTH   18
 
#define FCN_ADR_REGION3_LBN   96
 
#define FCN_ADR_REGION3_WIDTH   18
 
#define FCN_INT_EN_REG_KER   0x0010
 
#define FCN_MEM_PERR_INT_EN_KER_LBN   5
 
#define FCN_MEM_PERR_INT_EN_KER_WIDTH   1
 
#define FCN_KER_INT_CHAR_LBN   4
 
#define FCN_KER_INT_CHAR_WIDTH   1
 
#define FCN_KER_INT_KER_LBN   3
 
#define FCN_KER_INT_KER_WIDTH   1
 
#define FCN_ILL_ADR_ERR_INT_EN_KER_LBN   2
 
#define FCN_ILL_ADR_ERR_INT_EN_KER_WIDTH   1
 
#define FCN_SRM_PERR_INT_EN_KER_LBN   1
 
#define FCN_SRM_PERR_INT_EN_KER_WIDTH   1
 
#define FCN_DRV_INT_EN_KER_LBN   0
 
#define FCN_DRV_INT_EN_KER_WIDTH   1
 
#define FCN_INT_ADR_REG_KER   0x0030
 
#define FCN_INT_ADR_KER_LBN   0
 
#define FCN_INT_ADR_KER_WIDTH   EFAB_DMA_TYPE_WIDTH ( 64 )
 
#define INT_ISR0_B0   0x90
 
#define INT_ISR1_B0   0xA0
 
#define FCN_INT_ACK_KER_REG_A1   0x0050
 
#define INT_ACK_DUMMY_DATA_LBN   0
 
#define INT_ACK_DUMMY_DATA_WIDTH   32
 
#define WORK_AROUND_BROKEN_PCI_READS_REG_KER_A1   0x0070
 
#define FCN_HW_INIT_REG_KER   0x00c0
 
#define FCN_BCSR_TARGET_MASK_LBN   101
 
#define FCN_BCSR_TARGET_MASK_WIDTH   4
 
#define FCN_EE_SPI_HCMD_REG   0x0100
 
#define FCN_EE_SPI_HCMD_CMD_EN_LBN   31
 
#define FCN_EE_SPI_HCMD_CMD_EN_WIDTH   1
 
#define FCN_EE_WR_TIMER_ACTIVE_LBN   28
 
#define FCN_EE_WR_TIMER_ACTIVE_WIDTH   1
 
#define FCN_EE_SPI_HCMD_SF_SEL_LBN   24
 
#define FCN_EE_SPI_HCMD_SF_SEL_WIDTH   1
 
#define FCN_EE_SPI_EEPROM   0
 
#define FCN_EE_SPI_FLASH   1
 
#define FCN_EE_SPI_HCMD_DABCNT_LBN   16
 
#define FCN_EE_SPI_HCMD_DABCNT_WIDTH   5
 
#define FCN_EE_SPI_HCMD_READ_LBN   15
 
#define FCN_EE_SPI_HCMD_READ_WIDTH   1
 
#define FCN_EE_SPI_READ   1
 
#define FCN_EE_SPI_WRITE   0
 
#define FCN_EE_SPI_HCMD_DUBCNT_LBN   12
 
#define FCN_EE_SPI_HCMD_DUBCNT_WIDTH   2
 
#define FCN_EE_SPI_HCMD_ADBCNT_LBN   8
 
#define FCN_EE_SPI_HCMD_ADBCNT_WIDTH   2
 
#define FCN_EE_SPI_HCMD_ENC_LBN   0
 
#define FCN_EE_SPI_HCMD_ENC_WIDTH   8
 
#define FCN_EE_SPI_HADR_REG   0x0110
 
#define FCN_EE_SPI_HADR_DUBYTE_LBN   24
 
#define FCN_EE_SPI_HADR_DUBYTE_WIDTH   8
 
#define FCN_EE_SPI_HADR_ADR_LBN   0
 
#define FCN_EE_SPI_HADR_ADR_WIDTH   24
 
#define FCN_EE_SPI_HDATA_REG   0x0120
 
#define FCN_EE_SPI_HDATA3_LBN   96
 
#define FCN_EE_SPI_HDATA3_WIDTH   32
 
#define FCN_EE_SPI_HDATA2_LBN   64
 
#define FCN_EE_SPI_HDATA2_WIDTH   32
 
#define FCN_EE_SPI_HDATA1_LBN   32
 
#define FCN_EE_SPI_HDATA1_WIDTH   32
 
#define FCN_EE_SPI_HDATA0_LBN   0
 
#define FCN_EE_SPI_HDATA0_WIDTH   32
 
#define FCN_EE_VPD_CFG_REG   0x0140
 
#define FCN_EE_VPD_EN_LBN   0
 
#define FCN_EE_VPD_EN_WIDTH   1
 
#define FCN_EE_VPD_EN_AD9_MODE_LBN   1
 
#define FCN_EE_VPD_EN_AD9_MODE_WIDTH   1
 
#define FCN_EE_EE_CLOCK_DIV_LBN   112
 
#define FCN_EE_EE_CLOCK_DIV_WIDTH   7
 
#define FCN_EE_SF_CLOCK_DIV_LBN   120
 
#define FCN_EE_SF_CLOCK_DIV_WIDTH   7
 
#define FCN_NIC_STAT_REG   0x0200
 
#define FCN_ONCHIP_SRAM_LBN   16
 
#define FCN_ONCHIP_SRAM_WIDTH   1
 
#define FCN_SF_PRST_LBN   9
 
#define FCN_SF_PRST_WIDTH   1
 
#define FCN_EE_PRST_LBN   8
 
#define FCN_EE_PRST_WIDTH   1
 
#define FCN_EE_STRAP_LBN   7
 
#define FCN_EE_STRAP_WIDTH   1
 
#define FCN_PCI_PCIX_MODE_LBN   4
 
#define FCN_PCI_PCIX_MODE_WIDTH   3
 
#define FCN_PCI_PCIX_MODE_PCI33_DECODE   0
 
#define FCN_PCI_PCIX_MODE_PCI66_DECODE   1
 
#define FCN_PCI_PCIX_MODE_PCIX66_DECODE   5
 
#define FCN_PCI_PCIX_MODE_PCIX100_DECODE   6
 
#define FCN_PCI_PCIX_MODE_PCIX133_DECODE   7
 
#define FCN_STRAP_ISCSI_EN_LBN   3
 
#define FCN_STRAP_ISCSI_EN_WIDTH   1
 
#define FCN_STRAP_PINS_LBN   0
 
#define FCN_STRAP_PINS_WIDTH   3
 
#define FCN_STRAP_10G_LBN   2
 
#define FCN_STRAP_10G_WIDTH   1
 
#define FCN_STRAP_DUAL_PORT_LBN   1
 
#define FCN_STRAP_DUAL_PORT_WIDTH   1
 
#define FCN_STRAP_PCIE_LBN   0
 
#define FCN_STRAP_PCIE_WIDTH   1
 
#define FALCON_REV_A0   0
 
#define FALCON_REV_A1   1
 
#define FALCON_REV_B0   2
 
#define FCN_GPIO_CTL_REG_KER   0x0210
 
#define FCN_GPIO_CTL_REG_KER   0x0210
 
#define FCN_GPIO3_OEN_LBN   27
 
#define FCN_GPIO3_OEN_WIDTH   1
 
#define FCN_GPIO2_OEN_LBN   26
 
#define FCN_GPIO2_OEN_WIDTH   1
 
#define FCN_GPIO1_OEN_LBN   25
 
#define FCN_GPIO1_OEN_WIDTH   1
 
#define FCN_GPIO0_OEN_LBN   24
 
#define FCN_GPIO0_OEN_WIDTH   1
 
#define FCN_GPIO3_OUT_LBN   19
 
#define FCN_GPIO3_OUT_WIDTH   1
 
#define FCN_GPIO2_OUT_LBN   18
 
#define FCN_GPIO2_OUT_WIDTH   1
 
#define FCN_GPIO1_OUT_LBN   17
 
#define FCN_GPIO1_OUT_WIDTH   1
 
#define FCN_GPIO0_OUT_LBN   16
 
#define FCN_GPIO0_OUT_WIDTH   1
 
#define FCN_GPIO3_IN_LBN   11
 
#define FCN_GPIO3_IN_WIDTH   1
 
#define FCN_GPIO2_IN_LBN   10
 
#define FCN_GPIO2_IN_WIDTH   1
 
#define FCN_GPIO1_IN_LBN   9
 
#define FCN_GPIO1_IN_WIDTH   1
 
#define FCN_GPIO0_IN_LBN   8
 
#define FCN_GPIO0_IN_WIDTH   1
 
#define FCN_FLASH_PRESENT_LBN   7
 
#define FCN_FLASH_PRESENT_WIDTH   1
 
#define FCN_EEPROM_PRESENT_LBN   6
 
#define FCN_EEPROM_PRESENT_WIDTH   1
 
#define FCN_BOOTED_USING_NVDEVICE_LBN   3
 
#define FCN_BOOTED_USING_NVDEVICE_WIDTH   1
 
#define FCN_NV_MAGIC_NUMBER   0xFA1C
 
#define FCN_GLB_CTL_REG_KER   0x0220
 
#define FCN_EXT_PHY_RST_CTL_LBN   63
 
#define FCN_EXT_PHY_RST_CTL_WIDTH   1
 
#define FCN_PCIE_SD_RST_CTL_LBN   61
 
#define FCN_PCIE_SD_RST_CTL_WIDTH   1
 
#define FCN_PCIE_STCK_RST_CTL_LBN   59
 
#define FCN_PCIE_STCK_RST_CTL_WIDTH   1
 
#define FCN_PCIE_NSTCK_RST_CTL_LBN   58
 
#define FCN_PCIE_NSTCK_RST_CTL_WIDTH   1
 
#define FCN_PCIE_CORE_RST_CTL_LBN   57
 
#define FCN_PCIE_CORE_RST_CTL_WIDTH   1
 
#define FCN_EE_RST_CTL_LBN   49
 
#define FCN_EE_RST_CTL_WIDTH   1
 
#define FCN_RST_EXT_PHY_LBN   31
 
#define FCN_RST_EXT_PHY_WIDTH   1
 
#define FCN_EXT_PHY_RST_DUR_LBN   1
 
#define FCN_EXT_PHY_RST_DUR_WIDTH   3
 
#define FCN_SWRST_LBN   0
 
#define FCN_SWRST_WIDTH   1
 
#define INCLUDE_IN_RESET   0
 
#define EXCLUDE_FROM_RESET   1
 
#define FCN_ALTERA_BUILD_REG_KER   0x0300
 
#define FCN_VER_MAJOR_LBN   24
 
#define FCN_VER_MAJOR_WIDTH   8
 
#define FCN_VER_MINOR_LBN   16
 
#define FCN_VER_MINOR_WIDTH   8
 
#define FCN_VER_BUILD_LBN   0
 
#define FCN_VER_BUILD_WIDTH   16
 
#define FCN_VER_ALL_LBN   0
 
#define FCN_VER_ALL_WIDTH   32
 
#define FCN_SPARE_REG_KER   0x310
 
#define FCN_MEM_PERR_EN_TX_DATA_LBN   72
 
#define FCN_MEM_PERR_EN_TX_DATA_WIDTH   2
 
#define FCN_TIMER_CMD_REG_KER   0x420
 
#define FCN_TIMER_MODE_LBN   12
 
#define FCN_TIMER_MODE_WIDTH   2
 
#define FCN_TIMER_MODE_DIS   0
 
#define FCN_TIMER_MODE_INT_HLDOFF   1
 
#define FCN_TIMER_VAL_LBN   0
 
#define FCN_TIMER_VAL_WIDTH   12
 
#define FCN_RX_CFG_REG_KER   0x800
 
#define FCN_RX_XOFF_EN_LBN   0
 
#define FCN_RX_XOFF_EN_WIDTH   1
 
#define FCN_SRM_RX_DC_CFG_REG_KER   0x610
 
#define FCN_SRM_RX_DC_BASE_ADR_LBN   0
 
#define FCN_SRM_RX_DC_BASE_ADR_WIDTH   21
 
#define FCN_SRM_TX_DC_CFG_REG_KER   0x620
 
#define FCN_SRM_TX_DC_BASE_ADR_LBN   0
 
#define FCN_SRM_TX_DC_BASE_ADR_WIDTH   21
 
#define FCN_SRM_CFG_REG_KER   0x630
 
#define FCN_SRAM_OOB_ADR_INTEN_LBN   5
 
#define FCN_SRAM_OOB_ADR_INTEN_WIDTH   1
 
#define FCN_SRAM_OOB_BUF_INTEN_LBN   4
 
#define FCN_SRAM_OOB_BUF_INTEN_WIDTH   1
 
#define FCN_SRAM_OOB_BT_INIT_EN_LBN   3
 
#define FCN_SRAM_OOB_BT_INIT_EN_WIDTH   1
 
#define FCN_SRM_NUM_BANK_LBN   2
 
#define FCN_SRM_NUM_BANK_WIDTH   1
 
#define FCN_SRM_BANK_SIZE_LBN   0
 
#define FCN_SRM_BANK_SIZE_WIDTH   2
 
#define FCN_SRM_NUM_BANKS_AND_BANK_SIZE_LBN   0
 
#define FCN_SRM_NUM_BANKS_AND_BANK_SIZE_WIDTH   3
 
#define FCN_RX_CFG_REG_KER   0x800
 
#define FCN_RX_INGR_EN_B0_LBN   47
 
#define FCN_RX_INGR_EN_B0_WIDTH   1
 
#define FCN_RX_USR_BUF_SIZE_B0_LBN   19
 
#define FCN_RX_USR_BUF_SIZE_B0_WIDTH   9
 
#define FCN_RX_XON_MAC_TH_B0_LBN   10
 
#define FCN_RX_XON_MAC_TH_B0_WIDTH   9
 
#define FCN_RX_XOFF_MAC_TH_B0_LBN   1
 
#define FCN_RX_XOFF_MAC_TH_B0_WIDTH   9
 
#define FCN_RX_XOFF_MAC_EN_B0_LBN   0
 
#define FCN_RX_XOFF_MAC_EN_B0_WIDTH   1
 
#define FCN_RX_USR_BUF_SIZE_A1_LBN   11
 
#define FCN_RX_USR_BUF_SIZE_A1_WIDTH   9
 
#define FCN_RX_XON_MAC_TH_A1_LBN   6
 
#define FCN_RX_XON_MAC_TH_A1_WIDTH   5
 
#define FCN_RX_XOFF_MAC_TH_A1_LBN   1
 
#define FCN_RX_XOFF_MAC_TH_A1_WIDTH   5
 
#define FCN_RX_XOFF_MAC_EN_A1_LBN   0
 
#define FCN_RX_XOFF_MAC_EN_A1_WIDTH   1
 
#define FCN_RX_USR_BUF_SIZE_A1_LBN   11
 
#define FCN_RX_USR_BUF_SIZE_A1_WIDTH   9
 
#define FCN_RX_XOFF_MAC_EN_A1_LBN   0
 
#define FCN_RX_XOFF_MAC_EN_A1_WIDTH   1
 
#define FCN_RX_FILTER_CTL_REG_KER   0x810
 
#define FCN_UDP_FULL_SRCH_LIMIT_LBN   32
 
#define FCN_UDP_FULL_SRCH_LIMIT_WIDTH   8
 
#define FCN_NUM_KER_LBN   24
 
#define FCN_NUM_KER_WIDTH   2
 
#define FCN_UDP_WILD_SRCH_LIMIT_LBN   16
 
#define FCN_UDP_WILD_SRCH_LIMIT_WIDTH   8
 
#define FCN_TCP_WILD_SRCH_LIMIT_LBN   8
 
#define FCN_TCP_WILD_SRCH_LIMIT_WIDTH   8
 
#define FCN_TCP_FULL_SRCH_LIMIT_LBN   0
 
#define FCN_TCP_FULL_SRCH_LIMIT_WIDTH   8
 
#define FCN_RX_FLUSH_DESCQ_REG_KER   0x0820
 
#define FCN_RX_FLUSH_DESCQ_CMD_LBN   24
 
#define FCN_RX_FLUSH_DESCQ_CMD_WIDTH   1
 
#define FCN_RX_FLUSH_DESCQ_LBN   0
 
#define FCN_RX_FLUSH_DESCQ_WIDTH   12
 
#define FCN_RX_DESC_UPD_REG_KER   0x0830
 
#define FCN_RX_DESC_WPTR_LBN   96
 
#define FCN_RX_DESC_WPTR_WIDTH   12
 
#define FCN_RX_DESC_UPD_REG_KER_DWORD   ( FCN_RX_DESC_UPD_REG_KER + 12 )
 
#define FCN_RX_DESC_WPTR_DWORD_LBN   0
 
#define FCN_RX_DESC_WPTR_DWORD_WIDTH   12
 
#define FCN_RX_DC_CFG_REG_KER   0x840
 
#define FCN_RX_DC_SIZE_LBN   0
 
#define FCN_RX_DC_SIZE_WIDTH   2
 
#define FCN_RX_SELF_RST_REG_KER   0x890
 
#define FCN_RX_ISCSI_DIS_LBN   17
 
#define FCN_RX_ISCSI_DIS_WIDTH   1
 
#define FCN_RX_NODESC_WAIT_DIS_LBN   9
 
#define FCN_RX_NODESC_WAIT_DIS_WIDTH   1
 
#define FCN_RX_RECOVERY_EN_LBN   8
 
#define FCN_RX_RECOVERY_EN_WIDTH   1
 
#define FCN_TX_FLUSH_DESCQ_REG_KER   0x0a00
 
#define FCN_TX_FLUSH_DESCQ_CMD_LBN   12
 
#define FCN_TX_FLUSH_DESCQ_CMD_WIDTH   1
 
#define FCN_TX_FLUSH_DESCQ_LBN   0
 
#define FCN_TX_FLUSH_DESCQ_WIDTH   12
 
#define FCN_TX_CFG2_REG_KER   0xa80
 
#define FCN_TX_DIS_NON_IP_EV_LBN   17
 
#define FCN_TX_DIS_NON_IP_EV_WIDTH   1
 
#define FCN_TX_DESC_UPD_REG_KER   0x0a10
 
#define FCN_TX_DESC_WPTR_LBN   96
 
#define FCN_TX_DESC_WPTR_WIDTH   12
 
#define FCN_TX_DESC_UPD_REG_KER_DWORD   ( FCN_TX_DESC_UPD_REG_KER + 12 )
 
#define FCN_TX_DESC_WPTR_DWORD_LBN   0
 
#define FCN_TX_DESC_WPTR_DWORD_WIDTH   12
 
#define FCN_TX_DC_CFG_REG_KER   0xa20
 
#define FCN_TX_DC_SIZE_LBN   0
 
#define FCN_TX_DC_SIZE_WIDTH   2
 
#define FCN_MD_TXD_REG_KER   0xc00
 
#define FCN_MD_TXD_LBN   0
 
#define FCN_MD_TXD_WIDTH   16
 
#define FCN_MD_RXD_REG_KER   0xc10
 
#define FCN_MD_RXD_LBN   0
 
#define FCN_MD_RXD_WIDTH   16
 
#define FCN_MD_CS_REG_KER   0xc20
 
#define FCN_MD_GC_LBN   4
 
#define FCN_MD_GC_WIDTH   1
 
#define FCN_MD_RIC_LBN   2
 
#define FCN_MD_RIC_WIDTH   1
 
#define FCN_MD_RDC_LBN   1
 
#define FCN_MD_RDC_WIDTH   1
 
#define FCN_MD_WRC_LBN   0
 
#define FCN_MD_WRC_WIDTH   1
 
#define FCN_MD_PHY_ADR_REG_KER   0xc30
 
#define FCN_MD_PHY_ADR_LBN   0
 
#define FCN_MD_PHY_ADR_WIDTH   16
 
#define FCN_MD_ID_REG_KER   0xc40
 
#define FCN_MD_PRT_ADR_LBN   11
 
#define FCN_MD_PRT_ADR_WIDTH   5
 
#define FCN_MD_DEV_ADR_LBN   6
 
#define FCN_MD_DEV_ADR_WIDTH   5
 
#define FCN_MD_STAT_REG_KER   0xc50
 
#define FCN_MD_PINT_LBN   4
 
#define FCN_MD_PINT_WIDTH   1
 
#define FCN_MD_DONE_LBN   3
 
#define FCN_MD_DONE_WIDTH   1
 
#define FCN_MD_BSERR_LBN   2
 
#define FCN_MD_BSERR_WIDTH   1
 
#define FCN_MD_LNFL_LBN   1
 
#define FCN_MD_LNFL_WIDTH   1
 
#define FCN_MD_BSY_LBN   0
 
#define FCN_MD_BSY_WIDTH   1
 
#define FCN_MAC0_CTRL_REG_KER   0xc80
 
#define FCN_MAC1_CTRL_REG_KER   0xc90
 
#define FCN_MAC_XOFF_VAL_LBN   16
 
#define FCN_MAC_XOFF_VAL_WIDTH   16
 
#define FCN_MAC_BCAD_ACPT_LBN   4
 
#define FCN_MAC_BCAD_ACPT_WIDTH   1
 
#define FCN_MAC_UC_PROM_LBN   3
 
#define FCN_MAC_UC_PROM_WIDTH   1
 
#define FCN_MAC_LINK_STATUS_LBN   2
 
#define FCN_MAC_LINK_STATUS_WIDTH   1
 
#define FCN_MAC_SPEED_LBN   0
 
#define FCN_MAC_SPEED_WIDTH   2
 
#define XX_TXDRV_DEQ_DEFAULT   0xe /* deq=.6 */
 
#define XX_TXDRV_DTX_DEFAULT   0x5 /* 1.25 */
 
#define XX_SD_CTL_DRV_DEFAULT   0 /* 20mA */
 
#define FALCON_GMAC_REGBANK   0xe00
 
#define FALCON_GMAC_REGBANK_SIZE   0x200
 
#define FALCON_GMAC_REG_SIZE   0x10
 
#define FALCON_XMAC_REGBANK   0x1200
 
#define FALCON_XMAC_REGBANK_SIZE   0x200
 
#define FALCON_XMAC_REG_SIZE   0x10
 
#define FCN_XM_ADR_LO_REG_MAC   0x00
 
#define FCN_XM_ADR_3_LBN   24
 
#define FCN_XM_ADR_3_WIDTH   8
 
#define FCN_XM_ADR_2_LBN   16
 
#define FCN_XM_ADR_2_WIDTH   8
 
#define FCN_XM_ADR_1_LBN   8
 
#define FCN_XM_ADR_1_WIDTH   8
 
#define FCN_XM_ADR_0_LBN   0
 
#define FCN_XM_ADR_0_WIDTH   8
 
#define FCN_XM_ADR_HI_REG_MAC   0x01
 
#define FCN_XM_ADR_5_LBN   8
 
#define FCN_XM_ADR_5_WIDTH   8
 
#define FCN_XM_ADR_4_LBN   0
 
#define FCN_XM_ADR_4_WIDTH   8
 
#define FCN_XM_GLB_CFG_REG_MAC   0x02
 
#define FCN_XM_RX_STAT_EN_LBN   11
 
#define FCN_XM_RX_STAT_EN_WIDTH   1
 
#define FCN_XM_TX_STAT_EN_LBN   10
 
#define FCN_XM_TX_STAT_EN_WIDTH   1
 
#define FCN_XM_RX_JUMBO_MODE_LBN   6
 
#define FCN_XM_RX_JUMBO_MODE_WIDTH   1
 
#define FCN_XM_CORE_RST_LBN   0
 
#define FCN_XM_CORE_RST_WIDTH   1
 
#define FCN_XM_TX_CFG_REG_MAC   0x03
 
#define FCN_XM_IPG_LBN   16
 
#define FCN_XM_IPG_WIDTH   4
 
#define FCN_XM_FCNTL_LBN   10
 
#define FCN_XM_FCNTL_WIDTH   1
 
#define FCN_XM_TXCRC_LBN   8
 
#define FCN_XM_TXCRC_WIDTH   1
 
#define FCN_XM_AUTO_PAD_LBN   5
 
#define FCN_XM_AUTO_PAD_WIDTH   1
 
#define FCN_XM_TX_PRMBL_LBN   2
 
#define FCN_XM_TX_PRMBL_WIDTH   1
 
#define FCN_XM_TXEN_LBN   1
 
#define FCN_XM_TXEN_WIDTH   1
 
#define FCN_XM_RX_CFG_REG_MAC   0x04
 
#define FCN_XM_PASS_CRC_ERR_LBN   25
 
#define FCN_XM_PASS_CRC_ERR_WIDTH   1
 
#define FCN_XM_AUTO_DEPAD_LBN   8
 
#define FCN_XM_AUTO_DEPAD_WIDTH   1
 
#define FCN_XM_RXEN_LBN   1
 
#define FCN_XM_RXEN_WIDTH   1
 
#define FCN_XM_MGT_INT_MSK_REG_MAC_B0   0x5
 
#define FCN_XM_MSK_PRMBLE_ERR_LBN   2
 
#define FCN_XM_MSK_PRMBLE_ERR_WIDTH   1
 
#define FCN_XM_MSK_RMTFLT_LBN   1
 
#define FCN_XM_MSK_RMTFLT_WIDTH   1
 
#define FCN_XM_MSK_LCLFLT_LBN   0
 
#define FCN_XM_MSK_LCLFLT_WIDTH   1
 
#define FCN_XM_FC_REG_MAC   0x7
 
#define FCN_XM_PAUSE_TIME_LBN   16
 
#define FCN_XM_PAUSE_TIME_WIDTH   16
 
#define FCN_XM_DIS_FCNTL_LBN   0
 
#define FCN_XM_DIS_FCNTL_WIDTH   1
 
#define FCN_XM_TX_PARAM_REG_MAC   0x0d
 
#define FCN_XM_TX_JUMBO_MODE_LBN   31
 
#define FCN_XM_TX_JUMBO_MODE_WIDTH   1
 
#define FCN_XM_MAX_TX_FRM_SIZE_LBN   16
 
#define FCN_XM_MAX_TX_FRM_SIZE_WIDTH   14
 
#define FCN_XM_ACPT_ALL_MCAST_LBN   11
 
#define FCN_XM_ACPT_ALL_MCAST_WIDTH   1
 
#define FCN_XM_RX_PARAM_REG_MAC   0x0e
 
#define FCN_XM_MAX_RX_FRM_SIZE_LBN   0
 
#define FCN_XM_MAX_RX_FRM_SIZE_WIDTH   14
 
#define FCN_XM_MGT_INT_REG_MAC_B0   0x0f
 
#define FCN_XM_PRMBLE_ERR   2
 
#define FCN_XM_PRMBLE_WIDTH   1
 
#define FCN_XM_RMTFLT_LBN   1
 
#define FCN_XM_RMTFLT_WIDTH   1
 
#define FCN_XM_LCLFLT_LBN   0
 
#define FCN_XM_LCLFLT_WIDTH   1
 
#define FCN_XX_ALIGN_DONE_LBN   20
 
#define FCN_XX_ALIGN_DONE_WIDTH   1
 
#define FCN_XX_CORE_STAT_REG_MAC   0x16
 
#define FCN_XX_SYNC_STAT_LBN   16
 
#define FCN_XX_SYNC_STAT_WIDTH   4
 
#define FCN_XX_SYNC_STAT_DECODE_SYNCED   0xf
 
#define FCN_XX_COMMA_DET_LBN   12
 
#define FCN_XX_COMMA_DET_WIDTH   4
 
#define FCN_XX_COMMA_DET_RESET   0xf
 
#define FCN_XX_CHARERR_LBN   4
 
#define FCN_XX_CHARERR_WIDTH   4
 
#define FCN_XX_CHARERR_RESET   0xf
 
#define FCN_XX_DISPERR_LBN   0
 
#define FCN_XX_DISPERR_WIDTH   4
 
#define FCN_XX_DISPERR_RESET   0xf
 
#define FCN_XX_PWR_RST_REG_MAC   0x10
 
#define FCN_XX_PWRDND_EN_LBN   15
 
#define FCN_XX_PWRDND_EN_WIDTH   1
 
#define FCN_XX_PWRDNC_EN_LBN   14
 
#define FCN_XX_PWRDNC_EN_WIDTH   1
 
#define FCN_XX_PWRDNB_EN_LBN   13
 
#define FCN_XX_PWRDNB_EN_WIDTH   1
 
#define FCN_XX_PWRDNA_EN_LBN   12
 
#define FCN_XX_PWRDNA_EN_WIDTH   1
 
#define FCN_XX_RSTPLLCD_EN_LBN   9
 
#define FCN_XX_RSTPLLCD_EN_WIDTH   1
 
#define FCN_XX_RSTPLLAB_EN_LBN   8
 
#define FCN_XX_RSTPLLAB_EN_WIDTH   1
 
#define FCN_XX_RESETD_EN_LBN   7
 
#define FCN_XX_RESETD_EN_WIDTH   1
 
#define FCN_XX_RESETC_EN_LBN   6
 
#define FCN_XX_RESETC_EN_WIDTH   1
 
#define FCN_XX_RESETB_EN_LBN   5
 
#define FCN_XX_RESETB_EN_WIDTH   1
 
#define FCN_XX_RESETA_EN_LBN   4
 
#define FCN_XX_RESETA_EN_WIDTH   1
 
#define FCN_XX_RSTXGXSRX_EN_LBN   2
 
#define FCN_XX_RSTXGXSRX_EN_WIDTH   1
 
#define FCN_XX_RSTXGXSTX_EN_LBN   1
 
#define FCN_XX_RSTXGXSTX_EN_WIDTH   1
 
#define FCN_XX_RST_XX_EN_LBN   0
 
#define FCN_XX_RST_XX_EN_WIDTH   1
 
#define FCN_XX_SD_CTL_REG_MAC   0x11
 
#define FCN_XX_TERMADJ1_LBN   17
 
#define FCN_XX_TERMADJ1_WIDTH   1
 
#define FCN_XX_TERMADJ0_LBN   16
 
#define FCN_XX_TERMADJ0_WIDTH   1
 
#define FCN_XX_HIDRVD_LBN   15
 
#define FCN_XX_HIDRVD_WIDTH   1
 
#define FCN_XX_LODRVD_LBN   14
 
#define FCN_XX_LODRVD_WIDTH   1
 
#define FCN_XX_HIDRVC_LBN   13
 
#define FCN_XX_HIDRVC_WIDTH   1
 
#define FCN_XX_LODRVC_LBN   12
 
#define FCN_XX_LODRVC_WIDTH   1
 
#define FCN_XX_HIDRVB_LBN   11
 
#define FCN_XX_HIDRVB_WIDTH   1
 
#define FCN_XX_LODRVB_LBN   10
 
#define FCN_XX_LODRVB_WIDTH   1
 
#define FCN_XX_HIDRVA_LBN   9
 
#define FCN_XX_HIDRVA_WIDTH   1
 
#define FCN_XX_LODRVA_LBN   8
 
#define FCN_XX_LODRVA_WIDTH   1
 
#define FCN_XX_LPBKD_LBN   3
 
#define FCN_XX_LPBKD_WIDTH   1
 
#define FCN_XX_LPBKC_LBN   2
 
#define FCN_XX_LPBKC_WIDTH   1
 
#define FCN_XX_LPBKB_LBN   1
 
#define FCN_XX_LPBKB_WIDTH   1
 
#define FCN_XX_LPBKA_LBN   0
 
#define FCN_XX_LPBKA_WIDTH   1
 
#define FCN_XX_TXDRV_CTL_REG_MAC   0x12
 
#define FCN_XX_DEQD_LBN   28
 
#define FCN_XX_DEQD_WIDTH   4
 
#define FCN_XX_DEQC_LBN   24
 
#define FCN_XX_DEQC_WIDTH   4
 
#define FCN_XX_DEQB_LBN   20
 
#define FCN_XX_DEQB_WIDTH   4
 
#define FCN_XX_DEQA_LBN   16
 
#define FCN_XX_DEQA_WIDTH   4
 
#define FCN_XX_DTXD_LBN   12
 
#define FCN_XX_DTXD_WIDTH   4
 
#define FCN_XX_DTXC_LBN   8
 
#define FCN_XX_DTXC_WIDTH   4
 
#define FCN_XX_DTXB_LBN   4
 
#define FCN_XX_DTXB_WIDTH   4
 
#define FCN_XX_DTXA_LBN   0
 
#define FCN_XX_DTXA_WIDTH   4
 
#define FCN_RX_FILTER_TBL0   0xF00000
 
#define FCN_RX_DESC_PTR_TBL_KER_A1   0x11800
 
#define FCN_RX_DESC_PTR_TBL_KER_B0   0xF40000
 
#define FCN_RX_ISCSI_DDIG_EN_LBN   88
 
#define FCN_RX_ISCSI_DDIG_EN_WIDTH   1
 
#define FCN_RX_ISCSI_HDIG_EN_LBN   87
 
#define FCN_RX_ISCSI_HDIG_EN_WIDTH   1
 
#define FCN_RX_DESCQ_BUF_BASE_ID_LBN   36
 
#define FCN_RX_DESCQ_BUF_BASE_ID_WIDTH   20
 
#define FCN_RX_DESCQ_EVQ_ID_LBN   24
 
#define FCN_RX_DESCQ_EVQ_ID_WIDTH   12
 
#define FCN_RX_DESCQ_OWNER_ID_LBN   10
 
#define FCN_RX_DESCQ_OWNER_ID_WIDTH   14
 
#define FCN_RX_DESCQ_SIZE_LBN   3
 
#define FCN_RX_DESCQ_SIZE_WIDTH   2
 
#define FCN_RX_DESCQ_SIZE_4K   3
 
#define FCN_RX_DESCQ_SIZE_2K   2
 
#define FCN_RX_DESCQ_SIZE_1K   1
 
#define FCN_RX_DESCQ_SIZE_512   0
 
#define FCN_RX_DESCQ_TYPE_LBN   2
 
#define FCN_RX_DESCQ_TYPE_WIDTH   1
 
#define FCN_RX_DESCQ_JUMBO_LBN   1
 
#define FCN_RX_DESCQ_JUMBO_WIDTH   1
 
#define FCN_RX_DESCQ_EN_LBN   0
 
#define FCN_RX_DESCQ_EN_WIDTH   1
 
#define FCN_TX_DESC_PTR_TBL_KER_A1   0x11900
 
#define FCN_TX_DESC_PTR_TBL_KER_B0   0xF50000
 
#define FCN_TX_NON_IP_DROP_DIS_B0_LBN   91
 
#define FCN_TX_NON_IP_DROP_DIS_B0_WIDTH   1
 
#define FCN_TX_DESCQ_EN_LBN   88
 
#define FCN_TX_DESCQ_EN_WIDTH   1
 
#define FCN_TX_ISCSI_DDIG_EN_LBN   87
 
#define FCN_TX_ISCSI_DDIG_EN_WIDTH   1
 
#define FCN_TX_ISCSI_HDIG_EN_LBN   86
 
#define FCN_TX_ISCSI_HDIG_EN_WIDTH   1
 
#define FCN_TX_DESCQ_BUF_BASE_ID_LBN   36
 
#define FCN_TX_DESCQ_BUF_BASE_ID_WIDTH   20
 
#define FCN_TX_DESCQ_EVQ_ID_LBN   24
 
#define FCN_TX_DESCQ_EVQ_ID_WIDTH   12
 
#define FCN_TX_DESCQ_OWNER_ID_LBN   10
 
#define FCN_TX_DESCQ_OWNER_ID_WIDTH   14
 
#define FCN_TX_DESCQ_SIZE_LBN   3
 
#define FCN_TX_DESCQ_SIZE_WIDTH   2
 
#define FCN_TX_DESCQ_SIZE_4K   3
 
#define FCN_TX_DESCQ_SIZE_2K   2
 
#define FCN_TX_DESCQ_SIZE_1K   1
 
#define FCN_TX_DESCQ_SIZE_512   0
 
#define FCN_TX_DESCQ_TYPE_LBN   1
 
#define FCN_TX_DESCQ_TYPE_WIDTH   2
 
#define FCN_TX_DESCQ_FLUSH_LBN   0
 
#define FCN_TX_DESCQ_FLUSH_WIDTH   1
 
#define FCN_EVQ_PTR_TBL_KER_A1   0x11a00
 
#define FCN_EVQ_PTR_TBL_KER_B0   0xf60000
 
#define FCN_EVQ_EN_LBN   23
 
#define FCN_EVQ_EN_WIDTH   1
 
#define FCN_EVQ_SIZE_LBN   20
 
#define FCN_EVQ_SIZE_WIDTH   3
 
#define FCN_EVQ_SIZE_32K   6
 
#define FCN_EVQ_SIZE_16K   5
 
#define FCN_EVQ_SIZE_8K   4
 
#define FCN_EVQ_SIZE_4K   3
 
#define FCN_EVQ_SIZE_2K   2
 
#define FCN_EVQ_SIZE_1K   1
 
#define FCN_EVQ_SIZE_512   0
 
#define FCN_EVQ_BUF_BASE_ID_LBN   0
 
#define FCN_EVQ_BUF_BASE_ID_WIDTH   20
 
#define FCN_RX_RSS_INDIR_TBL_B0   0xFB0000
 
#define FCN_EVQ_RPTR_REG_KER_A1   0x11b00
 
#define FCN_EVQ_RPTR_REG_KER_B0   0xfa0000
 
#define FCN_EVQ_RPTR_LBN   0
 
#define FCN_EVQ_RPTR_WIDTH   14
 
#define FCN_EVQ_RPTR_REG_KER_DWORD_A1   ( FCN_EVQ_RPTR_REG_KER_A1 + 0 )
 
#define FCN_EVQ_RPTR_REG_KER_DWORD_B0   ( FCN_EVQ_RPTR_REG_KER_B0 + 0 )
 
#define FCN_EVQ_RPTR_DWORD_LBN   0
 
#define FCN_EVQ_RPTR_DWORD_WIDTH   14
 
#define FCN_BUF_FULL_TBL_KER_A1   0x18000
 
#define FCN_BUF_FULL_TBL_KER_B0   0x800000
 
#define FCN_IP_DAT_BUF_SIZE_LBN   50
 
#define FCN_IP_DAT_BUF_SIZE_WIDTH   1
 
#define FCN_IP_DAT_BUF_SIZE_8K   1
 
#define FCN_IP_DAT_BUF_SIZE_4K   0
 
#define FCN_BUF_ADR_FBUF_LBN   14
 
#define FCN_BUF_ADR_FBUF_WIDTH   34
 
#define FCN_BUF_OWNER_ID_FBUF_LBN   0
 
#define FCN_BUF_OWNER_ID_FBUF_WIDTH   14
 
#define FALCON_GMAC_REG(efab, mac_reg)
 Offset of a GMAC register within Falcon. More...
 
#define FALCON_XMAC_REG(efab_port, mac_reg)
 Offset of an XMAC register within Falcon. More...
 
#define FCN_MAC_DATA_LBN   0
 
#define FCN_MAC_DATA_WIDTH   32
 
#define FCN_TX_KER_PORT_LBN   63
 
#define FCN_TX_KER_PORT_WIDTH   1
 
#define FCN_TX_KER_BYTE_CNT_LBN   48
 
#define FCN_TX_KER_BYTE_CNT_WIDTH   14
 
#define FCN_TX_KER_BUF_ADR_LBN   0
 
#define FCN_TX_KER_BUF_ADR_WIDTH   EFAB_DMA_TYPE_WIDTH ( 46 )
 
#define FCN_RX_KER_BUF_SIZE_LBN   48
 
#define FCN_RX_KER_BUF_SIZE_WIDTH   14
 
#define FCN_RX_KER_BUF_ADR_LBN   0
 
#define FCN_RX_KER_BUF_ADR_WIDTH   EFAB_DMA_TYPE_WIDTH ( 46 )
 
#define FCN_EV_CODE_LBN   60
 
#define FCN_EV_CODE_WIDTH   4
 
#define FCN_RX_IP_EV_DECODE   0
 
#define FCN_TX_IP_EV_DECODE   2
 
#define FCN_DRIVER_EV_DECODE   5
 
#define FCN_RX_EV_PKT_OK_LBN   56
 
#define FCN_RX_EV_PKT_OK_WIDTH   1
 
#define FCN_RX_PORT_LBN   30
 
#define FCN_RX_PORT_WIDTH   1
 
#define FCN_RX_EV_BYTE_CNT_LBN   16
 
#define FCN_RX_EV_BYTE_CNT_WIDTH   14
 
#define FCN_RX_EV_DESC_PTR_LBN   0
 
#define FCN_RX_EV_DESC_PTR_WIDTH   12
 
#define FCN_TX_EV_DESC_PTR_LBN   0
 
#define FCN_TX_EV_DESC_PTR_WIDTH   12
 
#define FCN_REVISION_REG(efab, reg)   ( ( efab->pci_revision == FALCON_REV_B0 ) ? reg ## _B0 : reg ## _A1 )
 
#define EFAB_SET_OWORD_FIELD_VER(efab, reg, field, val)
 
#define _falcon_writel(efab, value, reg)   writel ( (value), (efab)->membase + (reg) )
 
#define _falcon_readl(efab, reg)   readl ( (efab)->membase + (reg) )
 
#define FCN_DUMP_REG(efab, _reg)
 
#define FCN_DUMP_MAC_REG(efab, _mac_reg)
 
#define FALCON_SPI_MAX_LEN   16
 Maximum length for a single SPI transaction. More...
 
#define GM_CFG1_REG_MAC   0x00
 
#define GM_SW_RST_LBN   31
 
#define GM_SW_RST_WIDTH   1
 
#define GM_RX_FC_EN_LBN   5
 
#define GM_RX_FC_EN_WIDTH   1
 
#define GM_TX_FC_EN_LBN   4
 
#define GM_TX_FC_EN_WIDTH   1
 
#define GM_RX_EN_LBN   2
 
#define GM_RX_EN_WIDTH   1
 
#define GM_TX_EN_LBN   0
 
#define GM_TX_EN_WIDTH   1
 
#define GM_CFG2_REG_MAC   0x01
 
#define GM_PAMBL_LEN_LBN   12
 
#define GM_PAMBL_LEN_WIDTH   4
 
#define GM_IF_MODE_LBN   8
 
#define GM_IF_MODE_WIDTH   2
 
#define GM_PAD_CRC_EN_LBN   2
 
#define GM_PAD_CRC_EN_WIDTH   1
 
#define GM_FD_LBN   0
 
#define GM_FD_WIDTH   1
 
#define GM_MAX_FLEN_REG_MAC   0x04
 
#define GM_MAX_FLEN_LBN   0
 
#define GM_MAX_FLEN_WIDTH   16
 
#define GM_MII_MGMT_CFG_REG_MAC   0x08
 
#define GM_MGMT_CLK_SEL_LBN   0
 
#define GM_MGMT_CLK_SEL_WIDTH   3
 
#define GM_MII_MGMT_CMD_REG_MAC   0x09
 
#define GM_MGMT_SCAN_CYC_LBN   1
 
#define GM_MGMT_SCAN_CYC_WIDTH   1
 
#define GM_MGMT_RD_CYC_LBN   0
 
#define GM_MGMT_RD_CYC_WIDTH   1
 
#define GM_MII_MGMT_ADR_REG_MAC   0x0a
 
#define GM_MGMT_PHY_ADDR_LBN   8
 
#define GM_MGMT_PHY_ADDR_WIDTH   5
 
#define GM_MGMT_REG_ADDR_LBN   0
 
#define GM_MGMT_REG_ADDR_WIDTH   5
 
#define GM_MII_MGMT_CTL_REG_MAC   0x0b
 
#define GM_MGMT_CTL_LBN   0
 
#define GM_MGMT_CTL_WIDTH   16
 
#define GM_MII_MGMT_STAT_REG_MAC   0x0c
 
#define GM_MGMT_STAT_LBN   0
 
#define GM_MGMT_STAT_WIDTH   16
 
#define GM_MII_MGMT_IND_REG_MAC   0x0d
 
#define GM_MGMT_BUSY_LBN   0
 
#define GM_MGMT_BUSY_WIDTH   1
 
#define GM_ADR1_REG_MAC   0x10
 
#define GM_HWADDR_5_LBN   24
 
#define GM_HWADDR_5_WIDTH   8
 
#define GM_HWADDR_4_LBN   16
 
#define GM_HWADDR_4_WIDTH   8
 
#define GM_HWADDR_3_LBN   8
 
#define GM_HWADDR_3_WIDTH   8
 
#define GM_HWADDR_2_LBN   0
 
#define GM_HWADDR_2_WIDTH   8
 
#define GM_ADR2_REG_MAC   0x11
 
#define GM_HWADDR_1_LBN   24
 
#define GM_HWADDR_1_WIDTH   8
 
#define GM_HWADDR_0_LBN   16
 
#define GM_HWADDR_0_WIDTH   8
 
#define GMF_CFG0_REG_MAC   0x12
 
#define GMF_FTFENREQ_LBN   12
 
#define GMF_FTFENREQ_WIDTH   1
 
#define GMF_STFENREQ_LBN   11
 
#define GMF_STFENREQ_WIDTH   1
 
#define GMF_FRFENREQ_LBN   10
 
#define GMF_FRFENREQ_WIDTH   1
 
#define GMF_SRFENREQ_LBN   9
 
#define GMF_SRFENREQ_WIDTH   1
 
#define GMF_WTMENREQ_LBN   8
 
#define GMF_WTMENREQ_WIDTH   1
 
#define GMF_CFG1_REG_MAC   0x13
 
#define GMF_CFGFRTH_LBN   16
 
#define GMF_CFGFRTH_WIDTH   5
 
#define GMF_CFGXOFFRTX_LBN   0
 
#define GMF_CFGXOFFRTX_WIDTH   16
 
#define GMF_CFG2_REG_MAC   0x14
 
#define GMF_CFGHWM_LBN   16
 
#define GMF_CFGHWM_WIDTH   6
 
#define GMF_CFGLWM_LBN   0
 
#define GMF_CFGLWM_WIDTH   6
 
#define GMF_CFG3_REG_MAC   0x15
 
#define GMF_CFGHWMFT_LBN   16
 
#define GMF_CFGHWMFT_WIDTH   6
 
#define GMF_CFGFTTH_LBN   0
 
#define GMF_CFGFTTH_WIDTH   6
 
#define GMF_CFG4_REG_MAC   0x16
 
#define GMF_HSTFLTRFRM_PAUSE_LBN   12
 
#define GMF_HSTFLTRFRM_PAUSE_WIDTH   12
 
#define GMF_CFG5_REG_MAC   0x17
 
#define GMF_CFGHDPLX_LBN   22
 
#define GMF_CFGHDPLX_WIDTH   1
 
#define GMF_CFGBYTMODE_LBN   19
 
#define GMF_CFGBYTMODE_WIDTH   1
 
#define GMF_HSTDRPLT64_LBN   18
 
#define GMF_HSTDRPLT64_WIDTH   1
 
#define GMF_HSTFLTRFRMDC_PAUSE_LBN   12
 
#define GMF_HSTFLTRFRMDC_PAUSE_WIDTH   1
 
#define XFP_REQUIRED_DEVS
 
#define TXC_GLRGS_GLCMD   (0xc004)
 
#define TXC_GLCMD_LMTSWRST_LBN   (14)
 
#define TXC_ALRGS_ATXAMP0   (0xc041)
 
#define TXC_ALRGS_ATXAMP1   (0xc042)
 
#define TXC_ATXAMP_LANE02_LBN   (3)
 
#define TXC_ATXAMP_LANE13_LBN   (11)
 
#define TXC_ATXAMP_1280_mV   (0)
 
#define TXC_ATXAMP_1200_mV   (8)
 
#define TXC_ATXAMP_1120_mV   (12)
 
#define TXC_ATXAMP_1060_mV   (14)
 
#define TXC_ATXAMP_0820_mV   (25)
 
#define TXC_ATXAMP_0720_mV   (26)
 
#define TXC_ATXAMP_0580_mV   (27)
 
#define TXC_ATXAMP_0440_mV   (28)
 
#define TXC_ATXAMP_0820_BOTH
 
#define TXC_ATXAMP_DEFAULT   (0x6060) /* From databook */
 
#define TXC_ALRGS_ATXPRE0   (0xc043)
 
#define TXC_ALRGS_ATXPRE1   (0xc044)
 
#define TXC_ATXPRE_NONE   (0)
 
#define TXC_ATXPRE_DEFAULT   (0x1010) /* From databook */
 
#define TXC_REQUIRED_DEVS
 
#define TENXPRESS_REQUIRED_DEVS
 
#define PCS_TEST_SELECT_REG   0xd807 /* PRM 10.5.8 */
 
#define CLK312_EN_LBN   3
 
#define CLK312_EN_WIDTH   1
 
#define PCS_CLOCK_CTRL_REG   0xd801
 
#define PLL312_RST_N_LBN   2
 
#define PMA_PMD_EXT_CTRL_REG   49152
 
#define PMA_PMD_EXT_SSR_LBN   15
 
#define PCS_BOOT_STATUS_REG   0xd000
 
#define PCS_BOOT_FATAL_ERR_LBN   0
 
#define PCS_BOOT_PROGRESS_LBN   1
 
#define PCS_BOOT_PROGRESS_WIDTH   2
 
#define PCS_BOOT_COMPLETE_LBN   3
 
#define PCS_SOFT_RST2_REG   0xd806
 
#define SERDES_RST_N_LBN   13
 
#define XGXS_RST_N_LBN   12
 
#define PM8358_REQUIRED_DEVS   (MDIO_MMDREG_DEVS0_DTEXS)
 
#define PMC_MASTER_REG   (0xd000)
 
#define PMC_MASTER_ANLG_CTRL   (1<< 11)
 
#define PMC_MCONF2_REG   (0xd002)
 
#define PMC_MCONF2_TEDGE   (1 << 2)
 
#define PMC_MCONF2_REDGE   (1 << 3)
 
#define PMC_ANALOG_RX_CFG0   (0xd025)
 
#define PMC_ANALOG_RX_CFG1   (0xd02d)
 
#define PMC_ANALOG_RX_CFG2   (0xd035)
 
#define PMC_ANALOG_RX_CFG3   (0xd03d)
 
#define PMC_ANALOG_RX_TERM
 
#define PMC_ANALOG_RX_EQ_MASK   (3 << 8)
 
#define PMC_ANALOG_RX_EQ_NONE   (0 << 8)
 
#define PMC_ANALOG_RX_EQ_HALF   (1 << 8)
 
#define PMC_ANALOG_RX_EQ_FULL   (2 << 8)
 
#define PMC_ANALOG_RX_EQ_RSVD   (3 << 8)
 
#define MAX_TEMP_THRESH   90
 
#define PCA9539   0x74
 
#define P0_IN   0x00
 
#define P0_OUT   0x02
 
#define P0_CONFIG   0x06
 
#define P0_EN_1V0X_LBN   0
 
#define P0_EN_1V0X_WIDTH   1
 
#define P0_EN_1V2_LBN   1
 
#define P0_EN_1V2_WIDTH   1
 
#define P0_EN_2V5_LBN   2
 
#define P0_EN_2V5_WIDTH   1
 
#define P0_EN_3V3X_LBN   3
 
#define P0_EN_3V3X_WIDTH   1
 
#define P0_EN_5V_LBN   4
 
#define P0_EN_5V_WIDTH   1
 
#define P0_X_TRST_LBN   6
 
#define P0_X_TRST_WIDTH   1
 
#define P1_IN   0x01
 
#define P1_CONFIG   0x07
 
#define P1_AFE_PWD_LBN   0
 
#define P1_AFE_PWD_WIDTH   1
 
#define P1_DSP_PWD25_LBN   1
 
#define P1_DSP_PWD25_WIDTH   1
 
#define P1_SPARE_LBN   4
 
#define P1_SPARE_WIDTH   4
 
#define MAX6647   0x4e
 
#define RSL   0x02
 
#define RLHN   0x05
 
#define WLHO   0x0b
 
#define FALCON_MAC_ADDRESS_OFFSET   0x310
 Offset of MAC address within EEPROM or Flash. More...
 
#define SF_NV_CONFIG_BASE   0x300
 
#define SF_NV_CONFIG_EXTRA   0xA0
 
#define BOARD_TYPE(_rev)   (_rev >> 8)
 

Functions

 FILE_LICENCE (GPL_ANY)
 
static void falcon_mdio_write (struct efab_nic *efab, int device, int location, int value)
 
static int falcon_mdio_read (struct efab_nic *efab, int device, int location)
 
static unsigned int gmii_autoneg_advertised (struct efab_nic *efab)
 Retrieve GMII autonegotiation advertised abilities. More...
 
static unsigned int gmii_autoneg_lpa (struct efab_nic *efab)
 Retrieve GMII autonegotiation link partner abilities. More...
 
static unsigned int gmii_nway_result (unsigned int negotiated)
 Calculate GMII autonegotiated link technology. More...
 
static int gmii_link_ok (struct efab_nic *efab)
 Check GMII PHY link status. More...
 
static int mdio_clause45_wait_reset_mmds (struct efab_nic *efab)
 
static int mdio_clause45_reset_mmd (struct efab_nic *efab, int mmd)
 
static int mdio_clause45_links_ok (struct efab_nic *efab)
 
static int mdio_clause45_check_mmds (struct efab_nic *efab)
 
static void falcon_write (struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
 Write to a Falcon register. More...
 
static void falcon_write_sram (struct efab_nic *efab, efab_qword_t *value, unsigned int index)
 Write to Falcon SRAM. More...
 
static void falcon_writel (struct efab_nic *efab, efab_dword_t *value, unsigned int reg)
 Write dword to Falcon register that allows partial writes. More...
 
static void falcon_read (struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
 Read from a Falcon register. More...
 
static void falcon_read_sram (struct efab_nic *efab, efab_qword_t *value, unsigned int index)
 Read from Falcon SRAM. More...
 
static void falcon_readl (struct efab_nic *efab, efab_dword_t *value, unsigned int reg)
 Read dword from a portion of a Falcon register. More...
 
static int falcon_event_present (falcon_event_t *event)
 See if an event is present. More...
 
static void falcon_eventq_read_ack (struct efab_nic *efab, struct efab_ev_queue *ev_queue)
 
static void falcon_interrupts (struct efab_nic *efab, int enabled, int force)
 
static int falcon_spi_wait (struct efab_nic *efab)
 
static int falcon_spi_rw (struct spi_bus *bus, struct spi_device *device, unsigned int command, int address, const void *data_out, void *data_in, size_t len)
 
static void falcon_i2c_bit_write (struct bit_basher *basher, unsigned int bit_id, unsigned long data)
 
static int falcon_i2c_bit_read (struct bit_basher *basher, unsigned int bit_id)
 
static int falcon_gmii_wait (struct efab_nic *efab)
 
static void falcon_reconfigure_mac_wrapper (struct efab_nic *efab)
 
static void falcon_gmac_writel (struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
 
static void falcon_gmac_readl (struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
 
static void mentormac_reset (struct efab_nic *efab)
 
static void mentormac_init (struct efab_nic *efab)
 
static int falcon_init_gmac (struct efab_nic *efab)
 
static void falcon_xmac_writel (struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
 Write dword to a Falcon XMAC register. More...
 
static void falcon_xmac_readl (struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
 Read dword from a Falcon XMAC register. More...
 
static void falcon_setup_xaui (struct efab_nic *efab)
 Configure Falcon XAUI output. More...
 
static int falcon_xgmii_status (struct efab_nic *efab)
 
static void falcon_mask_status_intr (struct efab_nic *efab, int enable)
 
static int falcon_reset_xmac (struct efab_nic *efab)
 Reset 10G MAC connected to port. More...
 
static int falcon_reset_xaui (struct efab_nic *efab)
 
static int falcon_xaui_link_ok (struct efab_nic *efab)
 
static void falcon_reconfigure_xmac (struct efab_nic *efab)
 Initialise XMAC. More...
 
static int falcon_init_xmac (struct efab_nic *efab)
 
static int falcon_xaui_phy_init (struct efab_nic *efab)
 
static int alaska_init (struct efab_nic *efab)
 Initialise Alaska PHY. More...
 
static int falcon_xfp_phy_init (struct efab_nic *efab)
 
static int falcon_txc_logic_reset (struct efab_nic *efab)
 
static int falcon_txc_phy_init (struct efab_nic *efab)
 
static int falcon_tenxpress_check_c11 (struct efab_nic *efab)
 
static int falcon_tenxpress_phy_init (struct efab_nic *efab)
 
static int falcon_pm8358_phy_init (struct efab_nic *efab)
 
static int sfe4001_init (struct efab_nic *efab)
 
static void sfe4001_fini (struct efab_nic *efab)
 
static int sfe4002_init (struct efab_nic *efab)
 
static void sfe4002_fini (struct efab_nic *efab)
 
static int sfe4003_init (struct efab_nic *efab)
 
static void sfe4003_fini (struct efab_nic *efab)
 
static void falcon_free_special_buffer (void *p)
 
static void * falcon_alloc_special_buffer (struct efab_nic *efab, int bytes, struct efab_special_buffer *entry)
 
static void clear_b0_fpga_memories (struct efab_nic *efab)
 
static int falcon_reset (struct efab_nic *efab)
 
static void falcon_probe_nic_variant (struct efab_nic *efab, struct pci_device *pci)
 
static void falcon_init_spi_device (struct efab_nic *efab, struct spi_device *spi)
 
static int falcon_probe_spi (struct efab_nic *efab)
 
static int falcon_probe_nvram (struct efab_nic *efab)
 
static int falcon_init_sram (struct efab_nic *efab)
 
static void falcon_setup_nic (struct efab_nic *efab)
 
static void falcon_init_resources (struct efab_nic *efab)
 
static void falcon_fini_resources (struct efab_nic *efab)
 
static void falcon_build_rx_desc (falcon_rx_desc_t *rxd, struct io_buffer *iob)
 
static void falcon_notify_rx_desc (struct efab_nic *efab, struct efab_rx_queue *rx_queue)
 
static void falcon_build_tx_desc (falcon_tx_desc_t *txd, struct io_buffer *iob)
 
static void falcon_notify_tx_desc (struct efab_nic *efab, struct efab_tx_queue *tx_queue)
 
static int efab_fill_rx_queue (struct efab_nic *efab, struct efab_rx_queue *rx_queue)
 
static void efab_receive (struct efab_nic *efab, unsigned int id, int len, int drop)
 
static int efab_transmit (struct net_device *netdev, struct io_buffer *iob)
 
static int efab_transmit_done (struct efab_nic *efab, int id)
 
static void falcon_clear_interrupts (struct efab_nic *efab)
 
static void falcon_handle_event (struct efab_nic *efab, falcon_event_t *evt)
 
static void efab_poll (struct net_device *netdev)
 
static void efab_irq (struct net_device *netdev, int enable)
 
static void efab_free_resources (struct efab_nic *efab)
 
static int efab_alloc_resources (struct efab_nic *efab)
 
static int efab_init_mac (struct efab_nic *efab)
 
static void efab_close (struct net_device *netdev)
 
static int efab_open (struct net_device *netdev)
 
static void efab_remove (struct pci_device *pci)
 
static int efab_probe (struct pci_device *pci)
 

Variables

int __invalid_queue_size
 
static struct bit_basher_operations falcon_i2c_bit_ops
 
static struct efab_mac_operations falcon_gmac_operations
 
static struct efab_mac_operations falcon_xmac_operations
 
static struct efab_phy_operations falcon_xaui_phy_ops
 
static struct efab_phy_operations falcon_alaska_phy_ops
 
static struct efab_phy_operations falcon_xfp_phy_ops
 
static struct efab_phy_operations falcon_txc_phy_ops
 
static struct efab_phy_operations falcon_tenxpress_phy_ops
 
static struct efab_phy_operations falcon_pm8358_phy_ops
 
static struct i2c_device i2c_pca9539
 
static struct i2c_device i2c_max6647
 
struct efab_board_operations sfe4001_ops
 
struct efab_board_operations sfe4002_ops
 
struct efab_board_operations sfe4003_ops
 
static struct net_device_operations efab_operations
 
static struct pci_device_id efab_nics []
 
struct pci_driver etherfabric_driver __pci_driver
 

Macro Definition Documentation

◆ EFAB_REGDUMP

#define EFAB_REGDUMP (   ...)

Definition at line 46 of file etherfabric.c.

◆ EFAB_TRACE

#define EFAB_TRACE (   ...)    DBGP(__VA_ARGS__)

Definition at line 47 of file etherfabric.c.

◆ EFAB_LOG

#define EFAB_LOG (   ...)    DBG(__VA_ARGS__)

Definition at line 50 of file etherfabric.c.

◆ EFAB_ERR

#define EFAB_ERR (   ...)    DBG(__VA_ARGS__)

Definition at line 51 of file etherfabric.c.

◆ FALCON_USE_IO_BAR

#define FALCON_USE_IO_BAR   0

Definition at line 53 of file etherfabric.c.

◆ HZ

#define HZ   100

Definition at line 55 of file etherfabric.c.

◆ EFAB_BYTE

#define EFAB_BYTE   1

Definition at line 56 of file etherfabric.c.

◆ FQS

#define FQS (   _prefix,
  _x 
)
Value:
( ( (_x) == 512 ) ? _prefix ## _SIZE_512 : \
( ( (_x) == 1024 ) ? _prefix ## _SIZE_1K : \
( ( (_x) == 2048 ) ? _prefix ## _SIZE_2K : \
( ( (_x) == 4096) ? _prefix ## _SIZE_4K : \
__invalid_queue_size ) ) ) )

Definition at line 65 of file etherfabric.c.

◆ EFAB_MAX_FRAME_LEN

#define EFAB_MAX_FRAME_LEN (   mtu)    ( ( ( ( mtu ) + 4/* FCS */ ) + 7 ) & ~7 )

Definition at line 73 of file etherfabric.c.

◆ GMII_PSSR

#define GMII_PSSR   0x11 /* PHY-specific status register */

Definition at line 88 of file etherfabric.c.

◆ LPA_EF_1000FULL

#define LPA_EF_1000FULL   0x00020000

Definition at line 91 of file etherfabric.c.

◆ LPA_EF_1000HALF

#define LPA_EF_1000HALF   0x00010000

Definition at line 92 of file etherfabric.c.

◆ LPA_EF_10000FULL

#define LPA_EF_10000FULL   0x00040000

Definition at line 93 of file etherfabric.c.

◆ LPA_EF_10000HALF

#define LPA_EF_10000HALF   0x00080000

Definition at line 94 of file etherfabric.c.

◆ LPA_EF_1000

#define LPA_EF_1000   ( LPA_EF_1000FULL | LPA_EF_1000HALF )

Definition at line 96 of file etherfabric.c.

◆ LPA_EF_10000

#define LPA_EF_10000   ( LPA_EF_10000FULL | LPA_EF_10000HALF )

Definition at line 97 of file etherfabric.c.

◆ LPA_EF_DUPLEX

#define LPA_EF_DUPLEX
Value:
LPA_EF_10000FULL )
#define LPA_EF_1000FULL
Definition: etherfabric.c:91
#define LPA_100FULL
Definition: mii.h:103
#define LPA_10FULL
Definition: mii.h:99

Definition at line 98 of file etherfabric.c.

◆ LPA_OTHER

#define LPA_OTHER
Value:
LPA_100HALF | LPA_EF_1000FULL | LPA_EF_1000HALF )
#define LPA_10HALF
Definition: mii.h:97
#define LPA_EF_1000HALF
Definition: etherfabric.c:92
#define LPA_EF_1000FULL
Definition: etherfabric.c:91
#define LPA_100FULL
Definition: mii.h:103
#define LPA_10FULL
Definition: mii.h:99

Definition at line 102 of file etherfabric.c.

◆ PSSR_LSTATUS

#define PSSR_LSTATUS   0x0400 /* Bit 10 - link status */

Definition at line 106 of file etherfabric.c.

◆ MDIO_MMD_PMAPMD

#define MDIO_MMD_PMAPMD   (1)

Definition at line 203 of file etherfabric.c.

◆ MDIO_MMD_WIS

#define MDIO_MMD_WIS   (2)

Definition at line 205 of file etherfabric.c.

◆ MDIO_MMD_PCS

#define MDIO_MMD_PCS   (3)

Definition at line 207 of file etherfabric.c.

◆ MDIO_MMD_PHYXS

#define MDIO_MMD_PHYXS   (4)

Definition at line 209 of file etherfabric.c.

◆ MDIO_MMD_DTEXS

#define MDIO_MMD_DTEXS   (5)

Definition at line 211 of file etherfabric.c.

◆ MDIO_MMD_TC

#define MDIO_MMD_TC   (6)

Definition at line 213 of file etherfabric.c.

◆ MDIO_MMD_AN

#define MDIO_MMD_AN   (7)

Definition at line 215 of file etherfabric.c.

◆ MDIO_MMDREG_CTRL1

#define MDIO_MMDREG_CTRL1   (0)

Definition at line 218 of file etherfabric.c.

◆ MDIO_MMDREG_STAT1

#define MDIO_MMDREG_STAT1   (1)

Definition at line 219 of file etherfabric.c.

◆ MDIO_MMDREG_DEVS0

#define MDIO_MMDREG_DEVS0   (5)

Definition at line 220 of file etherfabric.c.

◆ MDIO_MMDREG_STAT2

#define MDIO_MMDREG_STAT2   (8)

Definition at line 221 of file etherfabric.c.

◆ MDIO_MMDREG_CTRL1_RESET_LBN

#define MDIO_MMDREG_CTRL1_RESET_LBN   (15)

Definition at line 225 of file etherfabric.c.

◆ MDIO_MMDREG_CTRL1_RESET_WIDTH

#define MDIO_MMDREG_CTRL1_RESET_WIDTH   (1)

Definition at line 226 of file etherfabric.c.

◆ MDIO_MMDREG_STAT1_FAULT_LBN

#define MDIO_MMDREG_STAT1_FAULT_LBN   (7)

Definition at line 229 of file etherfabric.c.

◆ MDIO_MMDREG_STAT1_FAULT_WIDTH

#define MDIO_MMDREG_STAT1_FAULT_WIDTH   (1)

Definition at line 230 of file etherfabric.c.

◆ MDIO_MMDREG_STAT1_LINK_LBN

#define MDIO_MMDREG_STAT1_LINK_LBN   (2)

Definition at line 233 of file etherfabric.c.

◆ MDIO_MMDREG_STAT1_LINK_WIDTH

#define MDIO_MMDREG_STAT1_LINK_WIDTH   (1)

Definition at line 234 of file etherfabric.c.

◆ DEV_PRESENT_BIT

#define DEV_PRESENT_BIT (   _b)    (1 << _b)

Definition at line 237 of file etherfabric.c.

◆ MDIO_MMDREG_DEVS0_DTEXS

#define MDIO_MMDREG_DEVS0_DTEXS   DEV_PRESENT_BIT(MDIO_MMD_DTEXS)

Definition at line 239 of file etherfabric.c.

◆ MDIO_MMDREG_DEVS0_PHYXS

#define MDIO_MMDREG_DEVS0_PHYXS   DEV_PRESENT_BIT(MDIO_MMD_PHYXS)

Definition at line 240 of file etherfabric.c.

◆ MDIO_MMDREG_DEVS0_PCS

#define MDIO_MMDREG_DEVS0_PCS   DEV_PRESENT_BIT(MDIO_MMD_PCS)

Definition at line 241 of file etherfabric.c.

◆ MDIO_MMDREG_DEVS0_WIS

#define MDIO_MMDREG_DEVS0_WIS   DEV_PRESENT_BIT(MDIO_MMD_WIS)

Definition at line 242 of file etherfabric.c.

◆ MDIO_MMDREG_DEVS0_PMAPMD

#define MDIO_MMDREG_DEVS0_PMAPMD   DEV_PRESENT_BIT(MDIO_MMD_PMAPMD)

Definition at line 243 of file etherfabric.c.

◆ MDIO_MMDREG_DEVS0_AN

#define MDIO_MMDREG_DEVS0_AN   DEV_PRESENT_BIT(MDIO_MMD_AN)

Definition at line 245 of file etherfabric.c.

◆ MDIO_MMDREG_STAT2_PRESENT_VAL

#define MDIO_MMDREG_STAT2_PRESENT_VAL   (2)

Definition at line 248 of file etherfabric.c.

◆ MDIO_MMDREG_STAT2_PRESENT_LBN

#define MDIO_MMDREG_STAT2_PRESENT_LBN   (14)

Definition at line 249 of file etherfabric.c.

◆ MDIO_MMDREG_STAT2_PRESENT_WIDTH

#define MDIO_MMDREG_STAT2_PRESENT_WIDTH   (2)

Definition at line 250 of file etherfabric.c.

◆ MDIO_PHYXS_LANE_STATE

#define MDIO_PHYXS_LANE_STATE   (0x18)

Definition at line 253 of file etherfabric.c.

◆ MDIO_PHYXS_LANE_ALIGNED_LBN

#define MDIO_PHYXS_LANE_ALIGNED_LBN   (12)

Definition at line 254 of file etherfabric.c.

◆ MDIO_PHYXS_LANE_SYNC0_LBN

#define MDIO_PHYXS_LANE_SYNC0_LBN   (0)

Definition at line 255 of file etherfabric.c.

◆ MDIO_PHYXS_LANE_SYNC1_LBN

#define MDIO_PHYXS_LANE_SYNC1_LBN   (1)

Definition at line 256 of file etherfabric.c.

◆ MDIO_PHYXS_LANE_SYNC2_LBN

#define MDIO_PHYXS_LANE_SYNC2_LBN   (2)

Definition at line 257 of file etherfabric.c.

◆ MDIO_PHYXS_LANE_SYNC3_LBN

#define MDIO_PHYXS_LANE_SYNC3_LBN   (3)

Definition at line 258 of file etherfabric.c.

◆ MDIO45_RESET_TRIES

#define MDIO45_RESET_TRIES   100

Definition at line 261 of file etherfabric.c.

◆ MDIO45_RESET_SPINTIME

#define MDIO45_RESET_SPINTIME   10

Definition at line 262 of file etherfabric.c.

◆ FCN_IOM_IND_ADR_REG

#define FCN_IOM_IND_ADR_REG   0x0

Definition at line 394 of file etherfabric.c.

◆ FCN_IOM_IND_DAT_REG

#define FCN_IOM_IND_DAT_REG   0x4

Definition at line 397 of file etherfabric.c.

◆ FCN_ADR_REGION_REG_KER

#define FCN_ADR_REGION_REG_KER   0x00

Definition at line 400 of file etherfabric.c.

◆ FCN_ADR_REGION0_LBN

#define FCN_ADR_REGION0_LBN   0

Definition at line 401 of file etherfabric.c.

◆ FCN_ADR_REGION0_WIDTH

#define FCN_ADR_REGION0_WIDTH   18

Definition at line 402 of file etherfabric.c.

◆ FCN_ADR_REGION1_LBN

#define FCN_ADR_REGION1_LBN   32

Definition at line 403 of file etherfabric.c.

◆ FCN_ADR_REGION1_WIDTH

#define FCN_ADR_REGION1_WIDTH   18

Definition at line 404 of file etherfabric.c.

◆ FCN_ADR_REGION2_LBN

#define FCN_ADR_REGION2_LBN   64

Definition at line 405 of file etherfabric.c.

◆ FCN_ADR_REGION2_WIDTH

#define FCN_ADR_REGION2_WIDTH   18

Definition at line 406 of file etherfabric.c.

◆ FCN_ADR_REGION3_LBN

#define FCN_ADR_REGION3_LBN   96

Definition at line 407 of file etherfabric.c.

◆ FCN_ADR_REGION3_WIDTH

#define FCN_ADR_REGION3_WIDTH   18

Definition at line 408 of file etherfabric.c.

◆ FCN_INT_EN_REG_KER

#define FCN_INT_EN_REG_KER   0x0010

Definition at line 411 of file etherfabric.c.

◆ FCN_MEM_PERR_INT_EN_KER_LBN

#define FCN_MEM_PERR_INT_EN_KER_LBN   5

Definition at line 412 of file etherfabric.c.

◆ FCN_MEM_PERR_INT_EN_KER_WIDTH

#define FCN_MEM_PERR_INT_EN_KER_WIDTH   1

Definition at line 413 of file etherfabric.c.

◆ FCN_KER_INT_CHAR_LBN

#define FCN_KER_INT_CHAR_LBN   4

Definition at line 414 of file etherfabric.c.

◆ FCN_KER_INT_CHAR_WIDTH

#define FCN_KER_INT_CHAR_WIDTH   1

Definition at line 415 of file etherfabric.c.

◆ FCN_KER_INT_KER_LBN

#define FCN_KER_INT_KER_LBN   3

Definition at line 416 of file etherfabric.c.

◆ FCN_KER_INT_KER_WIDTH

#define FCN_KER_INT_KER_WIDTH   1

Definition at line 417 of file etherfabric.c.

◆ FCN_ILL_ADR_ERR_INT_EN_KER_LBN

#define FCN_ILL_ADR_ERR_INT_EN_KER_LBN   2

Definition at line 418 of file etherfabric.c.

◆ FCN_ILL_ADR_ERR_INT_EN_KER_WIDTH

#define FCN_ILL_ADR_ERR_INT_EN_KER_WIDTH   1

Definition at line 419 of file etherfabric.c.

◆ FCN_SRM_PERR_INT_EN_KER_LBN

#define FCN_SRM_PERR_INT_EN_KER_LBN   1

Definition at line 420 of file etherfabric.c.

◆ FCN_SRM_PERR_INT_EN_KER_WIDTH

#define FCN_SRM_PERR_INT_EN_KER_WIDTH   1

Definition at line 421 of file etherfabric.c.

◆ FCN_DRV_INT_EN_KER_LBN

#define FCN_DRV_INT_EN_KER_LBN   0

Definition at line 422 of file etherfabric.c.

◆ FCN_DRV_INT_EN_KER_WIDTH

#define FCN_DRV_INT_EN_KER_WIDTH   1

Definition at line 423 of file etherfabric.c.

◆ FCN_INT_ADR_REG_KER

#define FCN_INT_ADR_REG_KER   0x0030

Definition at line 426 of file etherfabric.c.

◆ FCN_INT_ADR_KER_LBN

#define FCN_INT_ADR_KER_LBN   0

Definition at line 427 of file etherfabric.c.

◆ FCN_INT_ADR_KER_WIDTH

#define FCN_INT_ADR_KER_WIDTH   EFAB_DMA_TYPE_WIDTH ( 64 )

Definition at line 428 of file etherfabric.c.

◆ INT_ISR0_B0

#define INT_ISR0_B0   0x90

Definition at line 431 of file etherfabric.c.

◆ INT_ISR1_B0

#define INT_ISR1_B0   0xA0

Definition at line 432 of file etherfabric.c.

◆ FCN_INT_ACK_KER_REG_A1

#define FCN_INT_ACK_KER_REG_A1   0x0050

Definition at line 435 of file etherfabric.c.

◆ INT_ACK_DUMMY_DATA_LBN

#define INT_ACK_DUMMY_DATA_LBN   0

Definition at line 436 of file etherfabric.c.

◆ INT_ACK_DUMMY_DATA_WIDTH

#define INT_ACK_DUMMY_DATA_WIDTH   32

Definition at line 437 of file etherfabric.c.

◆ WORK_AROUND_BROKEN_PCI_READS_REG_KER_A1

#define WORK_AROUND_BROKEN_PCI_READS_REG_KER_A1   0x0070

Definition at line 440 of file etherfabric.c.

◆ FCN_HW_INIT_REG_KER

#define FCN_HW_INIT_REG_KER   0x00c0

Definition at line 443 of file etherfabric.c.

◆ FCN_BCSR_TARGET_MASK_LBN

#define FCN_BCSR_TARGET_MASK_LBN   101

Definition at line 444 of file etherfabric.c.

◆ FCN_BCSR_TARGET_MASK_WIDTH

#define FCN_BCSR_TARGET_MASK_WIDTH   4

Definition at line 445 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_REG

#define FCN_EE_SPI_HCMD_REG   0x0100

Definition at line 448 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_CMD_EN_LBN

#define FCN_EE_SPI_HCMD_CMD_EN_LBN   31

Definition at line 449 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_CMD_EN_WIDTH

#define FCN_EE_SPI_HCMD_CMD_EN_WIDTH   1

Definition at line 450 of file etherfabric.c.

◆ FCN_EE_WR_TIMER_ACTIVE_LBN

#define FCN_EE_WR_TIMER_ACTIVE_LBN   28

Definition at line 451 of file etherfabric.c.

◆ FCN_EE_WR_TIMER_ACTIVE_WIDTH

#define FCN_EE_WR_TIMER_ACTIVE_WIDTH   1

Definition at line 452 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_SF_SEL_LBN

#define FCN_EE_SPI_HCMD_SF_SEL_LBN   24

Definition at line 453 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_SF_SEL_WIDTH

#define FCN_EE_SPI_HCMD_SF_SEL_WIDTH   1

Definition at line 454 of file etherfabric.c.

◆ FCN_EE_SPI_EEPROM

#define FCN_EE_SPI_EEPROM   0

Definition at line 455 of file etherfabric.c.

◆ FCN_EE_SPI_FLASH

#define FCN_EE_SPI_FLASH   1

Definition at line 456 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_DABCNT_LBN

#define FCN_EE_SPI_HCMD_DABCNT_LBN   16

Definition at line 457 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_DABCNT_WIDTH

#define FCN_EE_SPI_HCMD_DABCNT_WIDTH   5

Definition at line 458 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_READ_LBN

#define FCN_EE_SPI_HCMD_READ_LBN   15

Definition at line 459 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_READ_WIDTH

#define FCN_EE_SPI_HCMD_READ_WIDTH   1

Definition at line 460 of file etherfabric.c.

◆ FCN_EE_SPI_READ

#define FCN_EE_SPI_READ   1

Definition at line 461 of file etherfabric.c.

◆ FCN_EE_SPI_WRITE

#define FCN_EE_SPI_WRITE   0

Definition at line 462 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_DUBCNT_LBN

#define FCN_EE_SPI_HCMD_DUBCNT_LBN   12

Definition at line 463 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_DUBCNT_WIDTH

#define FCN_EE_SPI_HCMD_DUBCNT_WIDTH   2

Definition at line 464 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_ADBCNT_LBN

#define FCN_EE_SPI_HCMD_ADBCNT_LBN   8

Definition at line 465 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_ADBCNT_WIDTH

#define FCN_EE_SPI_HCMD_ADBCNT_WIDTH   2

Definition at line 466 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_ENC_LBN

#define FCN_EE_SPI_HCMD_ENC_LBN   0

Definition at line 467 of file etherfabric.c.

◆ FCN_EE_SPI_HCMD_ENC_WIDTH

#define FCN_EE_SPI_HCMD_ENC_WIDTH   8

Definition at line 468 of file etherfabric.c.

◆ FCN_EE_SPI_HADR_REG

#define FCN_EE_SPI_HADR_REG   0x0110

Definition at line 471 of file etherfabric.c.

◆ FCN_EE_SPI_HADR_DUBYTE_LBN

#define FCN_EE_SPI_HADR_DUBYTE_LBN   24

Definition at line 472 of file etherfabric.c.

◆ FCN_EE_SPI_HADR_DUBYTE_WIDTH

#define FCN_EE_SPI_HADR_DUBYTE_WIDTH   8

Definition at line 473 of file etherfabric.c.

◆ FCN_EE_SPI_HADR_ADR_LBN

#define FCN_EE_SPI_HADR_ADR_LBN   0

Definition at line 474 of file etherfabric.c.

◆ FCN_EE_SPI_HADR_ADR_WIDTH

#define FCN_EE_SPI_HADR_ADR_WIDTH   24

Definition at line 475 of file etherfabric.c.

◆ FCN_EE_SPI_HDATA_REG

#define FCN_EE_SPI_HDATA_REG   0x0120

Definition at line 478 of file etherfabric.c.

◆ FCN_EE_SPI_HDATA3_LBN

#define FCN_EE_SPI_HDATA3_LBN   96

Definition at line 479 of file etherfabric.c.

◆ FCN_EE_SPI_HDATA3_WIDTH

#define FCN_EE_SPI_HDATA3_WIDTH   32

Definition at line 480 of file etherfabric.c.

◆ FCN_EE_SPI_HDATA2_LBN

#define FCN_EE_SPI_HDATA2_LBN   64

Definition at line 481 of file etherfabric.c.

◆ FCN_EE_SPI_HDATA2_WIDTH

#define FCN_EE_SPI_HDATA2_WIDTH   32

Definition at line 482 of file etherfabric.c.

◆ FCN_EE_SPI_HDATA1_LBN

#define FCN_EE_SPI_HDATA1_LBN   32

Definition at line 483 of file etherfabric.c.

◆ FCN_EE_SPI_HDATA1_WIDTH

#define FCN_EE_SPI_HDATA1_WIDTH   32

Definition at line 484 of file etherfabric.c.

◆ FCN_EE_SPI_HDATA0_LBN

#define FCN_EE_SPI_HDATA0_LBN   0

Definition at line 485 of file etherfabric.c.

◆ FCN_EE_SPI_HDATA0_WIDTH

#define FCN_EE_SPI_HDATA0_WIDTH   32

Definition at line 486 of file etherfabric.c.

◆ FCN_EE_VPD_CFG_REG

#define FCN_EE_VPD_CFG_REG   0x0140

Definition at line 489 of file etherfabric.c.

◆ FCN_EE_VPD_EN_LBN

#define FCN_EE_VPD_EN_LBN   0

Definition at line 490 of file etherfabric.c.

◆ FCN_EE_VPD_EN_WIDTH

#define FCN_EE_VPD_EN_WIDTH   1

Definition at line 491 of file etherfabric.c.

◆ FCN_EE_VPD_EN_AD9_MODE_LBN

#define FCN_EE_VPD_EN_AD9_MODE_LBN   1

Definition at line 492 of file etherfabric.c.

◆ FCN_EE_VPD_EN_AD9_MODE_WIDTH

#define FCN_EE_VPD_EN_AD9_MODE_WIDTH   1

Definition at line 493 of file etherfabric.c.

◆ FCN_EE_EE_CLOCK_DIV_LBN

#define FCN_EE_EE_CLOCK_DIV_LBN   112

Definition at line 494 of file etherfabric.c.

◆ FCN_EE_EE_CLOCK_DIV_WIDTH

#define FCN_EE_EE_CLOCK_DIV_WIDTH   7

Definition at line 495 of file etherfabric.c.

◆ FCN_EE_SF_CLOCK_DIV_LBN

#define FCN_EE_SF_CLOCK_DIV_LBN   120

Definition at line 496 of file etherfabric.c.

◆ FCN_EE_SF_CLOCK_DIV_WIDTH

#define FCN_EE_SF_CLOCK_DIV_WIDTH   7

Definition at line 497 of file etherfabric.c.

◆ FCN_NIC_STAT_REG

#define FCN_NIC_STAT_REG   0x0200

Definition at line 501 of file etherfabric.c.

◆ FCN_ONCHIP_SRAM_LBN

#define FCN_ONCHIP_SRAM_LBN   16

Definition at line 502 of file etherfabric.c.

◆ FCN_ONCHIP_SRAM_WIDTH

#define FCN_ONCHIP_SRAM_WIDTH   1

Definition at line 503 of file etherfabric.c.

◆ FCN_SF_PRST_LBN

#define FCN_SF_PRST_LBN   9

Definition at line 504 of file etherfabric.c.

◆ FCN_SF_PRST_WIDTH

#define FCN_SF_PRST_WIDTH   1

Definition at line 505 of file etherfabric.c.

◆ FCN_EE_PRST_LBN

#define FCN_EE_PRST_LBN   8

Definition at line 506 of file etherfabric.c.

◆ FCN_EE_PRST_WIDTH

#define FCN_EE_PRST_WIDTH   1

Definition at line 507 of file etherfabric.c.

◆ FCN_EE_STRAP_LBN

#define FCN_EE_STRAP_LBN   7

Definition at line 508 of file etherfabric.c.

◆ FCN_EE_STRAP_WIDTH

#define FCN_EE_STRAP_WIDTH   1

Definition at line 509 of file etherfabric.c.

◆ FCN_PCI_PCIX_MODE_LBN

#define FCN_PCI_PCIX_MODE_LBN   4

Definition at line 510 of file etherfabric.c.

◆ FCN_PCI_PCIX_MODE_WIDTH

#define FCN_PCI_PCIX_MODE_WIDTH   3

Definition at line 511 of file etherfabric.c.

◆ FCN_PCI_PCIX_MODE_PCI33_DECODE

#define FCN_PCI_PCIX_MODE_PCI33_DECODE   0

Definition at line 512 of file etherfabric.c.

◆ FCN_PCI_PCIX_MODE_PCI66_DECODE

#define FCN_PCI_PCIX_MODE_PCI66_DECODE   1

Definition at line 513 of file etherfabric.c.

◆ FCN_PCI_PCIX_MODE_PCIX66_DECODE

#define FCN_PCI_PCIX_MODE_PCIX66_DECODE   5

Definition at line 514 of file etherfabric.c.

◆ FCN_PCI_PCIX_MODE_PCIX100_DECODE

#define FCN_PCI_PCIX_MODE_PCIX100_DECODE   6

Definition at line 515 of file etherfabric.c.

◆ FCN_PCI_PCIX_MODE_PCIX133_DECODE

#define FCN_PCI_PCIX_MODE_PCIX133_DECODE   7

Definition at line 516 of file etherfabric.c.

◆ FCN_STRAP_ISCSI_EN_LBN

#define FCN_STRAP_ISCSI_EN_LBN   3

Definition at line 517 of file etherfabric.c.

◆ FCN_STRAP_ISCSI_EN_WIDTH

#define FCN_STRAP_ISCSI_EN_WIDTH   1

Definition at line 518 of file etherfabric.c.

◆ FCN_STRAP_PINS_LBN

#define FCN_STRAP_PINS_LBN   0

Definition at line 519 of file etherfabric.c.

◆ FCN_STRAP_PINS_WIDTH

#define FCN_STRAP_PINS_WIDTH   3

Definition at line 520 of file etherfabric.c.

◆ FCN_STRAP_10G_LBN

#define FCN_STRAP_10G_LBN   2

Definition at line 521 of file etherfabric.c.

◆ FCN_STRAP_10G_WIDTH

#define FCN_STRAP_10G_WIDTH   1

Definition at line 522 of file etherfabric.c.

◆ FCN_STRAP_DUAL_PORT_LBN

#define FCN_STRAP_DUAL_PORT_LBN   1

Definition at line 523 of file etherfabric.c.

◆ FCN_STRAP_DUAL_PORT_WIDTH

#define FCN_STRAP_DUAL_PORT_WIDTH   1

Definition at line 524 of file etherfabric.c.

◆ FCN_STRAP_PCIE_LBN

#define FCN_STRAP_PCIE_LBN   0

Definition at line 525 of file etherfabric.c.

◆ FCN_STRAP_PCIE_WIDTH

#define FCN_STRAP_PCIE_WIDTH   1

Definition at line 526 of file etherfabric.c.

◆ FALCON_REV_A0

#define FALCON_REV_A0   0

Definition at line 529 of file etherfabric.c.

◆ FALCON_REV_A1

#define FALCON_REV_A1   1

Definition at line 530 of file etherfabric.c.

◆ FALCON_REV_B0

#define FALCON_REV_B0   2

Definition at line 531 of file etherfabric.c.

◆ FCN_GPIO_CTL_REG_KER [1/2]

#define FCN_GPIO_CTL_REG_KER   0x0210

Definition at line 535 of file etherfabric.c.

◆ FCN_GPIO_CTL_REG_KER [2/2]

#define FCN_GPIO_CTL_REG_KER   0x0210

Definition at line 535 of file etherfabric.c.

◆ FCN_GPIO3_OEN_LBN

#define FCN_GPIO3_OEN_LBN   27

Definition at line 537 of file etherfabric.c.

◆ FCN_GPIO3_OEN_WIDTH

#define FCN_GPIO3_OEN_WIDTH   1

Definition at line 538 of file etherfabric.c.

◆ FCN_GPIO2_OEN_LBN

#define FCN_GPIO2_OEN_LBN   26

Definition at line 539 of file etherfabric.c.

◆ FCN_GPIO2_OEN_WIDTH

#define FCN_GPIO2_OEN_WIDTH   1

Definition at line 540 of file etherfabric.c.

◆ FCN_GPIO1_OEN_LBN

#define FCN_GPIO1_OEN_LBN   25

Definition at line 541 of file etherfabric.c.

◆ FCN_GPIO1_OEN_WIDTH

#define FCN_GPIO1_OEN_WIDTH   1

Definition at line 542 of file etherfabric.c.

◆ FCN_GPIO0_OEN_LBN

#define FCN_GPIO0_OEN_LBN   24

Definition at line 543 of file etherfabric.c.

◆ FCN_GPIO0_OEN_WIDTH

#define FCN_GPIO0_OEN_WIDTH   1

Definition at line 544 of file etherfabric.c.

◆ FCN_GPIO3_OUT_LBN

#define FCN_GPIO3_OUT_LBN   19

Definition at line 546 of file etherfabric.c.

◆ FCN_GPIO3_OUT_WIDTH

#define FCN_GPIO3_OUT_WIDTH   1

Definition at line 547 of file etherfabric.c.

◆ FCN_GPIO2_OUT_LBN

#define FCN_GPIO2_OUT_LBN   18

Definition at line 548 of file etherfabric.c.

◆ FCN_GPIO2_OUT_WIDTH

#define FCN_GPIO2_OUT_WIDTH   1

Definition at line 549 of file etherfabric.c.

◆ FCN_GPIO1_OUT_LBN

#define FCN_GPIO1_OUT_LBN   17

Definition at line 550 of file etherfabric.c.

◆ FCN_GPIO1_OUT_WIDTH

#define FCN_GPIO1_OUT_WIDTH   1

Definition at line 551 of file etherfabric.c.

◆ FCN_GPIO0_OUT_LBN

#define FCN_GPIO0_OUT_LBN   16

Definition at line 552 of file etherfabric.c.

◆ FCN_GPIO0_OUT_WIDTH

#define FCN_GPIO0_OUT_WIDTH   1

Definition at line 553 of file etherfabric.c.

◆ FCN_GPIO3_IN_LBN

#define FCN_GPIO3_IN_LBN   11

Definition at line 555 of file etherfabric.c.

◆ FCN_GPIO3_IN_WIDTH

#define FCN_GPIO3_IN_WIDTH   1

Definition at line 556 of file etherfabric.c.

◆ FCN_GPIO2_IN_LBN

#define FCN_GPIO2_IN_LBN   10

Definition at line 557 of file etherfabric.c.

◆ FCN_GPIO2_IN_WIDTH

#define FCN_GPIO2_IN_WIDTH   1

Definition at line 558 of file etherfabric.c.

◆ FCN_GPIO1_IN_LBN

#define FCN_GPIO1_IN_LBN   9

Definition at line 559 of file etherfabric.c.

◆ FCN_GPIO1_IN_WIDTH

#define FCN_GPIO1_IN_WIDTH   1

Definition at line 560 of file etherfabric.c.

◆ FCN_GPIO0_IN_LBN

#define FCN_GPIO0_IN_LBN   8

Definition at line 561 of file etherfabric.c.

◆ FCN_GPIO0_IN_WIDTH

#define FCN_GPIO0_IN_WIDTH   1

Definition at line 562 of file etherfabric.c.

◆ FCN_FLASH_PRESENT_LBN

#define FCN_FLASH_PRESENT_LBN   7

Definition at line 564 of file etherfabric.c.

◆ FCN_FLASH_PRESENT_WIDTH

#define FCN_FLASH_PRESENT_WIDTH   1

Definition at line 565 of file etherfabric.c.

◆ FCN_EEPROM_PRESENT_LBN

#define FCN_EEPROM_PRESENT_LBN   6

Definition at line 566 of file etherfabric.c.

◆ FCN_EEPROM_PRESENT_WIDTH

#define FCN_EEPROM_PRESENT_WIDTH   1

Definition at line 567 of file etherfabric.c.

◆ FCN_BOOTED_USING_NVDEVICE_LBN

#define FCN_BOOTED_USING_NVDEVICE_LBN   3

Definition at line 568 of file etherfabric.c.

◆ FCN_BOOTED_USING_NVDEVICE_WIDTH

#define FCN_BOOTED_USING_NVDEVICE_WIDTH   1

Definition at line 569 of file etherfabric.c.

◆ FCN_NV_MAGIC_NUMBER

#define FCN_NV_MAGIC_NUMBER   0xFA1C

Definition at line 572 of file etherfabric.c.

◆ FCN_GLB_CTL_REG_KER

#define FCN_GLB_CTL_REG_KER   0x0220

Definition at line 575 of file etherfabric.c.

◆ FCN_EXT_PHY_RST_CTL_LBN

#define FCN_EXT_PHY_RST_CTL_LBN   63

Definition at line 576 of file etherfabric.c.

◆ FCN_EXT_PHY_RST_CTL_WIDTH

#define FCN_EXT_PHY_RST_CTL_WIDTH   1

Definition at line 577 of file etherfabric.c.

◆ FCN_PCIE_SD_RST_CTL_LBN

#define FCN_PCIE_SD_RST_CTL_LBN   61

Definition at line 578 of file etherfabric.c.

◆ FCN_PCIE_SD_RST_CTL_WIDTH

#define FCN_PCIE_SD_RST_CTL_WIDTH   1

Definition at line 579 of file etherfabric.c.

◆ FCN_PCIE_STCK_RST_CTL_LBN

#define FCN_PCIE_STCK_RST_CTL_LBN   59

Definition at line 580 of file etherfabric.c.

◆ FCN_PCIE_STCK_RST_CTL_WIDTH

#define FCN_PCIE_STCK_RST_CTL_WIDTH   1

Definition at line 581 of file etherfabric.c.

◆ FCN_PCIE_NSTCK_RST_CTL_LBN

#define FCN_PCIE_NSTCK_RST_CTL_LBN   58

Definition at line 582 of file etherfabric.c.

◆ FCN_PCIE_NSTCK_RST_CTL_WIDTH

#define FCN_PCIE_NSTCK_RST_CTL_WIDTH   1

Definition at line 583 of file etherfabric.c.

◆ FCN_PCIE_CORE_RST_CTL_LBN

#define FCN_PCIE_CORE_RST_CTL_LBN   57

Definition at line 584 of file etherfabric.c.

◆ FCN_PCIE_CORE_RST_CTL_WIDTH

#define FCN_PCIE_CORE_RST_CTL_WIDTH   1

Definition at line 585 of file etherfabric.c.

◆ FCN_EE_RST_CTL_LBN

#define FCN_EE_RST_CTL_LBN   49

Definition at line 586 of file etherfabric.c.

◆ FCN_EE_RST_CTL_WIDTH

#define FCN_EE_RST_CTL_WIDTH   1

Definition at line 587 of file etherfabric.c.

◆ FCN_RST_EXT_PHY_LBN

#define FCN_RST_EXT_PHY_LBN   31

Definition at line 588 of file etherfabric.c.

◆ FCN_RST_EXT_PHY_WIDTH

#define FCN_RST_EXT_PHY_WIDTH   1

Definition at line 589 of file etherfabric.c.

◆ FCN_EXT_PHY_RST_DUR_LBN

#define FCN_EXT_PHY_RST_DUR_LBN   1

Definition at line 590 of file etherfabric.c.

◆ FCN_EXT_PHY_RST_DUR_WIDTH

#define FCN_EXT_PHY_RST_DUR_WIDTH   3

Definition at line 591 of file etherfabric.c.

◆ FCN_SWRST_LBN

#define FCN_SWRST_LBN   0

Definition at line 592 of file etherfabric.c.

◆ FCN_SWRST_WIDTH

#define FCN_SWRST_WIDTH   1

Definition at line 593 of file etherfabric.c.

◆ INCLUDE_IN_RESET

#define INCLUDE_IN_RESET   0

Definition at line 594 of file etherfabric.c.

◆ EXCLUDE_FROM_RESET

#define EXCLUDE_FROM_RESET   1

Definition at line 595 of file etherfabric.c.

◆ FCN_ALTERA_BUILD_REG_KER

#define FCN_ALTERA_BUILD_REG_KER   0x0300

Definition at line 598 of file etherfabric.c.

◆ FCN_VER_MAJOR_LBN

#define FCN_VER_MAJOR_LBN   24

Definition at line 599 of file etherfabric.c.

◆ FCN_VER_MAJOR_WIDTH

#define FCN_VER_MAJOR_WIDTH   8

Definition at line 600 of file etherfabric.c.

◆ FCN_VER_MINOR_LBN

#define FCN_VER_MINOR_LBN   16

Definition at line 601 of file etherfabric.c.

◆ FCN_VER_MINOR_WIDTH

#define FCN_VER_MINOR_WIDTH   8

Definition at line 602 of file etherfabric.c.

◆ FCN_VER_BUILD_LBN

#define FCN_VER_BUILD_LBN   0

Definition at line 603 of file etherfabric.c.

◆ FCN_VER_BUILD_WIDTH

#define FCN_VER_BUILD_WIDTH   16

Definition at line 604 of file etherfabric.c.

◆ FCN_VER_ALL_LBN

#define FCN_VER_ALL_LBN   0

Definition at line 605 of file etherfabric.c.

◆ FCN_VER_ALL_WIDTH

#define FCN_VER_ALL_WIDTH   32

Definition at line 606 of file etherfabric.c.

◆ FCN_SPARE_REG_KER

#define FCN_SPARE_REG_KER   0x310

Definition at line 609 of file etherfabric.c.

◆ FCN_MEM_PERR_EN_TX_DATA_LBN

#define FCN_MEM_PERR_EN_TX_DATA_LBN   72

Definition at line 610 of file etherfabric.c.

◆ FCN_MEM_PERR_EN_TX_DATA_WIDTH

#define FCN_MEM_PERR_EN_TX_DATA_WIDTH   2

Definition at line 611 of file etherfabric.c.

◆ FCN_TIMER_CMD_REG_KER

#define FCN_TIMER_CMD_REG_KER   0x420

Definition at line 614 of file etherfabric.c.

◆ FCN_TIMER_MODE_LBN

#define FCN_TIMER_MODE_LBN   12

Definition at line 615 of file etherfabric.c.

◆ FCN_TIMER_MODE_WIDTH

#define FCN_TIMER_MODE_WIDTH   2

Definition at line 616 of file etherfabric.c.

◆ FCN_TIMER_MODE_DIS

#define FCN_TIMER_MODE_DIS   0

Definition at line 617 of file etherfabric.c.

◆ FCN_TIMER_MODE_INT_HLDOFF

#define FCN_TIMER_MODE_INT_HLDOFF   1

Definition at line 618 of file etherfabric.c.

◆ FCN_TIMER_VAL_LBN

#define FCN_TIMER_VAL_LBN   0

Definition at line 619 of file etherfabric.c.

◆ FCN_TIMER_VAL_WIDTH

#define FCN_TIMER_VAL_WIDTH   12

Definition at line 620 of file etherfabric.c.

◆ FCN_RX_CFG_REG_KER [1/2]

#define FCN_RX_CFG_REG_KER   0x800

Definition at line 652 of file etherfabric.c.

◆ FCN_RX_XOFF_EN_LBN

#define FCN_RX_XOFF_EN_LBN   0

Definition at line 624 of file etherfabric.c.

◆ FCN_RX_XOFF_EN_WIDTH

#define FCN_RX_XOFF_EN_WIDTH   1

Definition at line 625 of file etherfabric.c.

◆ FCN_SRM_RX_DC_CFG_REG_KER

#define FCN_SRM_RX_DC_CFG_REG_KER   0x610

Definition at line 628 of file etherfabric.c.

◆ FCN_SRM_RX_DC_BASE_ADR_LBN

#define FCN_SRM_RX_DC_BASE_ADR_LBN   0

Definition at line 629 of file etherfabric.c.

◆ FCN_SRM_RX_DC_BASE_ADR_WIDTH

#define FCN_SRM_RX_DC_BASE_ADR_WIDTH   21

Definition at line 630 of file etherfabric.c.

◆ FCN_SRM_TX_DC_CFG_REG_KER

#define FCN_SRM_TX_DC_CFG_REG_KER   0x620

Definition at line 633 of file etherfabric.c.

◆ FCN_SRM_TX_DC_BASE_ADR_LBN

#define FCN_SRM_TX_DC_BASE_ADR_LBN   0

Definition at line 634 of file etherfabric.c.

◆ FCN_SRM_TX_DC_BASE_ADR_WIDTH

#define FCN_SRM_TX_DC_BASE_ADR_WIDTH   21

Definition at line 635 of file etherfabric.c.

◆ FCN_SRM_CFG_REG_KER

#define FCN_SRM_CFG_REG_KER   0x630

Definition at line 638 of file etherfabric.c.

◆ FCN_SRAM_OOB_ADR_INTEN_LBN

#define FCN_SRAM_OOB_ADR_INTEN_LBN   5

Definition at line 639 of file etherfabric.c.

◆ FCN_SRAM_OOB_ADR_INTEN_WIDTH

#define FCN_SRAM_OOB_ADR_INTEN_WIDTH   1

Definition at line 640 of file etherfabric.c.

◆ FCN_SRAM_OOB_BUF_INTEN_LBN

#define FCN_SRAM_OOB_BUF_INTEN_LBN   4

Definition at line 641 of file etherfabric.c.

◆ FCN_SRAM_OOB_BUF_INTEN_WIDTH

#define FCN_SRAM_OOB_BUF_INTEN_WIDTH   1

Definition at line 642 of file etherfabric.c.

◆ FCN_SRAM_OOB_BT_INIT_EN_LBN

#define FCN_SRAM_OOB_BT_INIT_EN_LBN   3

Definition at line 643 of file etherfabric.c.

◆ FCN_SRAM_OOB_BT_INIT_EN_WIDTH

#define FCN_SRAM_OOB_BT_INIT_EN_WIDTH   1

Definition at line 644 of file etherfabric.c.

◆ FCN_SRM_NUM_BANK_LBN

#define FCN_SRM_NUM_BANK_LBN   2

Definition at line 645 of file etherfabric.c.

◆ FCN_SRM_NUM_BANK_WIDTH

#define FCN_SRM_NUM_BANK_WIDTH   1

Definition at line 646 of file etherfabric.c.

◆ FCN_SRM_BANK_SIZE_LBN

#define FCN_SRM_BANK_SIZE_LBN   0

Definition at line 647 of file etherfabric.c.

◆ FCN_SRM_BANK_SIZE_WIDTH

#define FCN_SRM_BANK_SIZE_WIDTH   2

Definition at line 648 of file etherfabric.c.

◆ FCN_SRM_NUM_BANKS_AND_BANK_SIZE_LBN

#define FCN_SRM_NUM_BANKS_AND_BANK_SIZE_LBN   0

Definition at line 649 of file etherfabric.c.

◆ FCN_SRM_NUM_BANKS_AND_BANK_SIZE_WIDTH

#define FCN_SRM_NUM_BANKS_AND_BANK_SIZE_WIDTH   3

Definition at line 650 of file etherfabric.c.

◆ FCN_RX_CFG_REG_KER [2/2]

#define FCN_RX_CFG_REG_KER   0x800

Definition at line 652 of file etherfabric.c.

◆ FCN_RX_INGR_EN_B0_LBN

#define FCN_RX_INGR_EN_B0_LBN   47

Definition at line 653 of file etherfabric.c.

◆ FCN_RX_INGR_EN_B0_WIDTH

#define FCN_RX_INGR_EN_B0_WIDTH   1

Definition at line 654 of file etherfabric.c.

◆ FCN_RX_USR_BUF_SIZE_B0_LBN

#define FCN_RX_USR_BUF_SIZE_B0_LBN   19

Definition at line 655 of file etherfabric.c.

◆ FCN_RX_USR_BUF_SIZE_B0_WIDTH

#define FCN_RX_USR_BUF_SIZE_B0_WIDTH   9

Definition at line 656 of file etherfabric.c.

◆ FCN_RX_XON_MAC_TH_B0_LBN

#define FCN_RX_XON_MAC_TH_B0_LBN   10

Definition at line 657 of file etherfabric.c.

◆ FCN_RX_XON_MAC_TH_B0_WIDTH

#define FCN_RX_XON_MAC_TH_B0_WIDTH   9

Definition at line 658 of file etherfabric.c.

◆ FCN_RX_XOFF_MAC_TH_B0_LBN

#define FCN_RX_XOFF_MAC_TH_B0_LBN   1

Definition at line 659 of file etherfabric.c.

◆ FCN_RX_XOFF_MAC_TH_B0_WIDTH

#define FCN_RX_XOFF_MAC_TH_B0_WIDTH   9

Definition at line 660 of file etherfabric.c.

◆ FCN_RX_XOFF_MAC_EN_B0_LBN

#define FCN_RX_XOFF_MAC_EN_B0_LBN   0

Definition at line 661 of file etherfabric.c.

◆ FCN_RX_XOFF_MAC_EN_B0_WIDTH

#define FCN_RX_XOFF_MAC_EN_B0_WIDTH   1

Definition at line 662 of file etherfabric.c.

◆ FCN_RX_USR_BUF_SIZE_A1_LBN [1/2]

#define FCN_RX_USR_BUF_SIZE_A1_LBN   11

Definition at line 672 of file etherfabric.c.

◆ FCN_RX_USR_BUF_SIZE_A1_WIDTH [1/2]

#define FCN_RX_USR_BUF_SIZE_A1_WIDTH   9

Definition at line 673 of file etherfabric.c.

◆ FCN_RX_XON_MAC_TH_A1_LBN

#define FCN_RX_XON_MAC_TH_A1_LBN   6

Definition at line 665 of file etherfabric.c.

◆ FCN_RX_XON_MAC_TH_A1_WIDTH

#define FCN_RX_XON_MAC_TH_A1_WIDTH   5

Definition at line 666 of file etherfabric.c.

◆ FCN_RX_XOFF_MAC_TH_A1_LBN

#define FCN_RX_XOFF_MAC_TH_A1_LBN   1

Definition at line 667 of file etherfabric.c.

◆ FCN_RX_XOFF_MAC_TH_A1_WIDTH

#define FCN_RX_XOFF_MAC_TH_A1_WIDTH   5

Definition at line 668 of file etherfabric.c.

◆ FCN_RX_XOFF_MAC_EN_A1_LBN [1/2]

#define FCN_RX_XOFF_MAC_EN_A1_LBN   0

Definition at line 674 of file etherfabric.c.

◆ FCN_RX_XOFF_MAC_EN_A1_WIDTH [1/2]

#define FCN_RX_XOFF_MAC_EN_A1_WIDTH   1

Definition at line 675 of file etherfabric.c.

◆ FCN_RX_USR_BUF_SIZE_A1_LBN [2/2]

#define FCN_RX_USR_BUF_SIZE_A1_LBN   11

Definition at line 672 of file etherfabric.c.

◆ FCN_RX_USR_BUF_SIZE_A1_WIDTH [2/2]

#define FCN_RX_USR_BUF_SIZE_A1_WIDTH   9

Definition at line 673 of file etherfabric.c.

◆ FCN_RX_XOFF_MAC_EN_A1_LBN [2/2]

#define FCN_RX_XOFF_MAC_EN_A1_LBN   0

Definition at line 674 of file etherfabric.c.

◆ FCN_RX_XOFF_MAC_EN_A1_WIDTH [2/2]

#define FCN_RX_XOFF_MAC_EN_A1_WIDTH   1

Definition at line 675 of file etherfabric.c.

◆ FCN_RX_FILTER_CTL_REG_KER

#define FCN_RX_FILTER_CTL_REG_KER   0x810

Definition at line 678 of file etherfabric.c.

◆ FCN_UDP_FULL_SRCH_LIMIT_LBN

#define FCN_UDP_FULL_SRCH_LIMIT_LBN   32

Definition at line 679 of file etherfabric.c.

◆ FCN_UDP_FULL_SRCH_LIMIT_WIDTH

#define FCN_UDP_FULL_SRCH_LIMIT_WIDTH   8

Definition at line 680 of file etherfabric.c.

◆ FCN_NUM_KER_LBN

#define FCN_NUM_KER_LBN   24

Definition at line 681 of file etherfabric.c.

◆ FCN_NUM_KER_WIDTH

#define FCN_NUM_KER_WIDTH   2

Definition at line 682 of file etherfabric.c.

◆ FCN_UDP_WILD_SRCH_LIMIT_LBN

#define FCN_UDP_WILD_SRCH_LIMIT_LBN   16

Definition at line 683 of file etherfabric.c.

◆ FCN_UDP_WILD_SRCH_LIMIT_WIDTH

#define FCN_UDP_WILD_SRCH_LIMIT_WIDTH   8

Definition at line 684 of file etherfabric.c.

◆ FCN_TCP_WILD_SRCH_LIMIT_LBN

#define FCN_TCP_WILD_SRCH_LIMIT_LBN   8

Definition at line 685 of file etherfabric.c.

◆ FCN_TCP_WILD_SRCH_LIMIT_WIDTH

#define FCN_TCP_WILD_SRCH_LIMIT_WIDTH   8

Definition at line 686 of file etherfabric.c.

◆ FCN_TCP_FULL_SRCH_LIMIT_LBN

#define FCN_TCP_FULL_SRCH_LIMIT_LBN   0

Definition at line 687 of file etherfabric.c.

◆ FCN_TCP_FULL_SRCH_LIMIT_WIDTH

#define FCN_TCP_FULL_SRCH_LIMIT_WIDTH   8

Definition at line 688 of file etherfabric.c.

◆ FCN_RX_FLUSH_DESCQ_REG_KER

#define FCN_RX_FLUSH_DESCQ_REG_KER   0x0820

Definition at line 691 of file etherfabric.c.

◆ FCN_RX_FLUSH_DESCQ_CMD_LBN

#define FCN_RX_FLUSH_DESCQ_CMD_LBN   24

Definition at line 692 of file etherfabric.c.

◆ FCN_RX_FLUSH_DESCQ_CMD_WIDTH

#define FCN_RX_FLUSH_DESCQ_CMD_WIDTH   1

Definition at line 693 of file etherfabric.c.

◆ FCN_RX_FLUSH_DESCQ_LBN

#define FCN_RX_FLUSH_DESCQ_LBN   0

Definition at line 694 of file etherfabric.c.

◆ FCN_RX_FLUSH_DESCQ_WIDTH

#define FCN_RX_FLUSH_DESCQ_WIDTH   12

Definition at line 695 of file etherfabric.c.

◆ FCN_RX_DESC_UPD_REG_KER

#define FCN_RX_DESC_UPD_REG_KER   0x0830

Definition at line 698 of file etherfabric.c.

◆ FCN_RX_DESC_WPTR_LBN

#define FCN_RX_DESC_WPTR_LBN   96

Definition at line 699 of file etherfabric.c.

◆ FCN_RX_DESC_WPTR_WIDTH

#define FCN_RX_DESC_WPTR_WIDTH   12

Definition at line 700 of file etherfabric.c.

◆ FCN_RX_DESC_UPD_REG_KER_DWORD

#define FCN_RX_DESC_UPD_REG_KER_DWORD   ( FCN_RX_DESC_UPD_REG_KER + 12 )

Definition at line 701 of file etherfabric.c.

◆ FCN_RX_DESC_WPTR_DWORD_LBN

#define FCN_RX_DESC_WPTR_DWORD_LBN   0

Definition at line 702 of file etherfabric.c.

◆ FCN_RX_DESC_WPTR_DWORD_WIDTH

#define FCN_RX_DESC_WPTR_DWORD_WIDTH   12

Definition at line 703 of file etherfabric.c.

◆ FCN_RX_DC_CFG_REG_KER

#define FCN_RX_DC_CFG_REG_KER   0x840

Definition at line 706 of file etherfabric.c.

◆ FCN_RX_DC_SIZE_LBN

#define FCN_RX_DC_SIZE_LBN   0

Definition at line 707 of file etherfabric.c.

◆ FCN_RX_DC_SIZE_WIDTH

#define FCN_RX_DC_SIZE_WIDTH   2

Definition at line 708 of file etherfabric.c.

◆ FCN_RX_SELF_RST_REG_KER

#define FCN_RX_SELF_RST_REG_KER   0x890

Definition at line 710 of file etherfabric.c.

◆ FCN_RX_ISCSI_DIS_LBN

#define FCN_RX_ISCSI_DIS_LBN   17

Definition at line 711 of file etherfabric.c.

◆ FCN_RX_ISCSI_DIS_WIDTH

#define FCN_RX_ISCSI_DIS_WIDTH   1

Definition at line 712 of file etherfabric.c.

◆ FCN_RX_NODESC_WAIT_DIS_LBN

#define FCN_RX_NODESC_WAIT_DIS_LBN   9

Definition at line 713 of file etherfabric.c.

◆ FCN_RX_NODESC_WAIT_DIS_WIDTH

#define FCN_RX_NODESC_WAIT_DIS_WIDTH   1

Definition at line 714 of file etherfabric.c.

◆ FCN_RX_RECOVERY_EN_LBN

#define FCN_RX_RECOVERY_EN_LBN   8

Definition at line 715 of file etherfabric.c.

◆ FCN_RX_RECOVERY_EN_WIDTH

#define FCN_RX_RECOVERY_EN_WIDTH   1

Definition at line 716 of file etherfabric.c.

◆ FCN_TX_FLUSH_DESCQ_REG_KER

#define FCN_TX_FLUSH_DESCQ_REG_KER   0x0a00

Definition at line 719 of file etherfabric.c.

◆ FCN_TX_FLUSH_DESCQ_CMD_LBN

#define FCN_TX_FLUSH_DESCQ_CMD_LBN   12

Definition at line 720 of file etherfabric.c.

◆ FCN_TX_FLUSH_DESCQ_CMD_WIDTH

#define FCN_TX_FLUSH_DESCQ_CMD_WIDTH   1

Definition at line 721 of file etherfabric.c.

◆ FCN_TX_FLUSH_DESCQ_LBN

#define FCN_TX_FLUSH_DESCQ_LBN   0

Definition at line 722 of file etherfabric.c.

◆ FCN_TX_FLUSH_DESCQ_WIDTH

#define FCN_TX_FLUSH_DESCQ_WIDTH   12

Definition at line 723 of file etherfabric.c.

◆ FCN_TX_CFG2_REG_KER

#define FCN_TX_CFG2_REG_KER   0xa80

Definition at line 726 of file etherfabric.c.

◆ FCN_TX_DIS_NON_IP_EV_LBN

#define FCN_TX_DIS_NON_IP_EV_LBN   17

Definition at line 727 of file etherfabric.c.

◆ FCN_TX_DIS_NON_IP_EV_WIDTH

#define FCN_TX_DIS_NON_IP_EV_WIDTH   1

Definition at line 728 of file etherfabric.c.

◆ FCN_TX_DESC_UPD_REG_KER

#define FCN_TX_DESC_UPD_REG_KER   0x0a10

Definition at line 731 of file etherfabric.c.

◆ FCN_TX_DESC_WPTR_LBN

#define FCN_TX_DESC_WPTR_LBN   96

Definition at line 732 of file etherfabric.c.

◆ FCN_TX_DESC_WPTR_WIDTH

#define FCN_TX_DESC_WPTR_WIDTH   12

Definition at line 733 of file etherfabric.c.

◆ FCN_TX_DESC_UPD_REG_KER_DWORD

#define FCN_TX_DESC_UPD_REG_KER_DWORD   ( FCN_TX_DESC_UPD_REG_KER + 12 )

Definition at line 734 of file etherfabric.c.

◆ FCN_TX_DESC_WPTR_DWORD_LBN

#define FCN_TX_DESC_WPTR_DWORD_LBN   0

Definition at line 735 of file etherfabric.c.

◆ FCN_TX_DESC_WPTR_DWORD_WIDTH

#define FCN_TX_DESC_WPTR_DWORD_WIDTH   12

Definition at line 736 of file etherfabric.c.

◆ FCN_TX_DC_CFG_REG_KER

#define FCN_TX_DC_CFG_REG_KER   0xa20

Definition at line 739 of file etherfabric.c.

◆ FCN_TX_DC_SIZE_LBN

#define FCN_TX_DC_SIZE_LBN   0

Definition at line 740 of file etherfabric.c.

◆ FCN_TX_DC_SIZE_WIDTH

#define FCN_TX_DC_SIZE_WIDTH   2

Definition at line 741 of file etherfabric.c.

◆ FCN_MD_TXD_REG_KER

#define FCN_MD_TXD_REG_KER   0xc00

Definition at line 744 of file etherfabric.c.

◆ FCN_MD_TXD_LBN

#define FCN_MD_TXD_LBN   0

Definition at line 745 of file etherfabric.c.

◆ FCN_MD_TXD_WIDTH

#define FCN_MD_TXD_WIDTH   16

Definition at line 746 of file etherfabric.c.

◆ FCN_MD_RXD_REG_KER

#define FCN_MD_RXD_REG_KER   0xc10

Definition at line 749 of file etherfabric.c.

◆ FCN_MD_RXD_LBN

#define FCN_MD_RXD_LBN   0

Definition at line 750 of file etherfabric.c.

◆ FCN_MD_RXD_WIDTH

#define FCN_MD_RXD_WIDTH   16

Definition at line 751 of file etherfabric.c.

◆ FCN_MD_CS_REG_KER

#define FCN_MD_CS_REG_KER   0xc20

Definition at line 754 of file etherfabric.c.

◆ FCN_MD_GC_LBN

#define FCN_MD_GC_LBN   4

Definition at line 755 of file etherfabric.c.

◆ FCN_MD_GC_WIDTH

#define FCN_MD_GC_WIDTH   1

Definition at line 756 of file etherfabric.c.

◆ FCN_MD_RIC_LBN

#define FCN_MD_RIC_LBN   2

Definition at line 757 of file etherfabric.c.

◆ FCN_MD_RIC_WIDTH

#define FCN_MD_RIC_WIDTH   1

Definition at line 758 of file etherfabric.c.

◆ FCN_MD_RDC_LBN

#define FCN_MD_RDC_LBN   1

Definition at line 759 of file etherfabric.c.

◆ FCN_MD_RDC_WIDTH

#define FCN_MD_RDC_WIDTH   1

Definition at line 760 of file etherfabric.c.

◆ FCN_MD_WRC_LBN

#define FCN_MD_WRC_LBN   0

Definition at line 761 of file etherfabric.c.

◆ FCN_MD_WRC_WIDTH

#define FCN_MD_WRC_WIDTH   1

Definition at line 762 of file etherfabric.c.

◆ FCN_MD_PHY_ADR_REG_KER

#define FCN_MD_PHY_ADR_REG_KER   0xc30

Definition at line 765 of file etherfabric.c.

◆ FCN_MD_PHY_ADR_LBN

#define FCN_MD_PHY_ADR_LBN   0

Definition at line 766 of file etherfabric.c.

◆ FCN_MD_PHY_ADR_WIDTH

#define FCN_MD_PHY_ADR_WIDTH   16

Definition at line 767 of file etherfabric.c.

◆ FCN_MD_ID_REG_KER

#define FCN_MD_ID_REG_KER   0xc40

Definition at line 770 of file etherfabric.c.

◆ FCN_MD_PRT_ADR_LBN

#define FCN_MD_PRT_ADR_LBN   11

Definition at line 771 of file etherfabric.c.

◆ FCN_MD_PRT_ADR_WIDTH

#define FCN_MD_PRT_ADR_WIDTH   5

Definition at line 772 of file etherfabric.c.

◆ FCN_MD_DEV_ADR_LBN

#define FCN_MD_DEV_ADR_LBN   6

Definition at line 773 of file etherfabric.c.

◆ FCN_MD_DEV_ADR_WIDTH

#define FCN_MD_DEV_ADR_WIDTH   5

Definition at line 774 of file etherfabric.c.

◆ FCN_MD_STAT_REG_KER

#define FCN_MD_STAT_REG_KER   0xc50

Definition at line 777 of file etherfabric.c.

◆ FCN_MD_PINT_LBN

#define FCN_MD_PINT_LBN   4

Definition at line 778 of file etherfabric.c.

◆ FCN_MD_PINT_WIDTH

#define FCN_MD_PINT_WIDTH   1

Definition at line 779 of file etherfabric.c.

◆ FCN_MD_DONE_LBN

#define FCN_MD_DONE_LBN   3

Definition at line 780 of file etherfabric.c.

◆ FCN_MD_DONE_WIDTH

#define FCN_MD_DONE_WIDTH   1

Definition at line 781 of file etherfabric.c.

◆ FCN_MD_BSERR_LBN

#define FCN_MD_BSERR_LBN   2

Definition at line 782 of file etherfabric.c.

◆ FCN_MD_BSERR_WIDTH

#define FCN_MD_BSERR_WIDTH   1

Definition at line 783 of file etherfabric.c.

◆ FCN_MD_LNFL_LBN

#define FCN_MD_LNFL_LBN   1

Definition at line 784 of file etherfabric.c.

◆ FCN_MD_LNFL_WIDTH

#define FCN_MD_LNFL_WIDTH   1

Definition at line 785 of file etherfabric.c.

◆ FCN_MD_BSY_LBN

#define FCN_MD_BSY_LBN   0

Definition at line 786 of file etherfabric.c.

◆ FCN_MD_BSY_WIDTH

#define FCN_MD_BSY_WIDTH   1

Definition at line 787 of file etherfabric.c.

◆ FCN_MAC0_CTRL_REG_KER

#define FCN_MAC0_CTRL_REG_KER   0xc80

Definition at line 790 of file etherfabric.c.

◆ FCN_MAC1_CTRL_REG_KER

#define FCN_MAC1_CTRL_REG_KER   0xc90

Definition at line 791 of file etherfabric.c.

◆ FCN_MAC_XOFF_VAL_LBN

#define FCN_MAC_XOFF_VAL_LBN   16

Definition at line 792 of file etherfabric.c.

◆ FCN_MAC_XOFF_VAL_WIDTH

#define FCN_MAC_XOFF_VAL_WIDTH   16

Definition at line 793 of file etherfabric.c.

◆ FCN_MAC_BCAD_ACPT_LBN

#define FCN_MAC_BCAD_ACPT_LBN   4

Definition at line 794 of file etherfabric.c.

◆ FCN_MAC_BCAD_ACPT_WIDTH

#define FCN_MAC_BCAD_ACPT_WIDTH   1

Definition at line 795 of file etherfabric.c.

◆ FCN_MAC_UC_PROM_LBN

#define FCN_MAC_UC_PROM_LBN   3

Definition at line 796 of file etherfabric.c.

◆ FCN_MAC_UC_PROM_WIDTH

#define FCN_MAC_UC_PROM_WIDTH   1

Definition at line 797 of file etherfabric.c.

◆ FCN_MAC_LINK_STATUS_LBN

#define FCN_MAC_LINK_STATUS_LBN   2

Definition at line 798 of file etherfabric.c.

◆ FCN_MAC_LINK_STATUS_WIDTH

#define FCN_MAC_LINK_STATUS_WIDTH   1

Definition at line 799 of file etherfabric.c.

◆ FCN_MAC_SPEED_LBN

#define FCN_MAC_SPEED_LBN   0

Definition at line 800 of file etherfabric.c.

◆ FCN_MAC_SPEED_WIDTH

#define FCN_MAC_SPEED_WIDTH   2

Definition at line 801 of file etherfabric.c.

◆ XX_TXDRV_DEQ_DEFAULT

#define XX_TXDRV_DEQ_DEFAULT   0xe /* deq=.6 */

Definition at line 804 of file etherfabric.c.

◆ XX_TXDRV_DTX_DEFAULT

#define XX_TXDRV_DTX_DEFAULT   0x5 /* 1.25 */

Definition at line 805 of file etherfabric.c.

◆ XX_SD_CTL_DRV_DEFAULT

#define XX_SD_CTL_DRV_DEFAULT   0 /* 20mA */

Definition at line 806 of file etherfabric.c.

◆ FALCON_GMAC_REGBANK

#define FALCON_GMAC_REGBANK   0xe00

Definition at line 809 of file etherfabric.c.

◆ FALCON_GMAC_REGBANK_SIZE

#define FALCON_GMAC_REGBANK_SIZE   0x200

Definition at line 810 of file etherfabric.c.

◆ FALCON_GMAC_REG_SIZE

#define FALCON_GMAC_REG_SIZE   0x10

Definition at line 811 of file etherfabric.c.

◆ FALCON_XMAC_REGBANK

#define FALCON_XMAC_REGBANK   0x1200

Definition at line 814 of file etherfabric.c.

◆ FALCON_XMAC_REGBANK_SIZE

#define FALCON_XMAC_REGBANK_SIZE   0x200

Definition at line 815 of file etherfabric.c.

◆ FALCON_XMAC_REG_SIZE

#define FALCON_XMAC_REG_SIZE   0x10

Definition at line 816 of file etherfabric.c.

◆ FCN_XM_ADR_LO_REG_MAC

#define FCN_XM_ADR_LO_REG_MAC   0x00

Definition at line 819 of file etherfabric.c.

◆ FCN_XM_ADR_3_LBN

#define FCN_XM_ADR_3_LBN   24

Definition at line 820 of file etherfabric.c.

◆ FCN_XM_ADR_3_WIDTH

#define FCN_XM_ADR_3_WIDTH   8

Definition at line 821 of file etherfabric.c.

◆ FCN_XM_ADR_2_LBN

#define FCN_XM_ADR_2_LBN   16

Definition at line 822 of file etherfabric.c.

◆ FCN_XM_ADR_2_WIDTH

#define FCN_XM_ADR_2_WIDTH   8

Definition at line 823 of file etherfabric.c.

◆ FCN_XM_ADR_1_LBN

#define FCN_XM_ADR_1_LBN   8

Definition at line 824 of file etherfabric.c.

◆ FCN_XM_ADR_1_WIDTH

#define FCN_XM_ADR_1_WIDTH   8

Definition at line 825 of file etherfabric.c.

◆ FCN_XM_ADR_0_LBN

#define FCN_XM_ADR_0_LBN   0

Definition at line 826 of file etherfabric.c.

◆ FCN_XM_ADR_0_WIDTH

#define FCN_XM_ADR_0_WIDTH   8

Definition at line 827 of file etherfabric.c.

◆ FCN_XM_ADR_HI_REG_MAC

#define FCN_XM_ADR_HI_REG_MAC   0x01

Definition at line 830 of file etherfabric.c.

◆ FCN_XM_ADR_5_LBN

#define FCN_XM_ADR_5_LBN   8

Definition at line 831 of file etherfabric.c.

◆ FCN_XM_ADR_5_WIDTH

#define FCN_XM_ADR_5_WIDTH   8

Definition at line 832 of file etherfabric.c.

◆ FCN_XM_ADR_4_LBN

#define FCN_XM_ADR_4_LBN   0

Definition at line 833 of file etherfabric.c.

◆ FCN_XM_ADR_4_WIDTH

#define FCN_XM_ADR_4_WIDTH   8

Definition at line 834 of file etherfabric.c.

◆ FCN_XM_GLB_CFG_REG_MAC

#define FCN_XM_GLB_CFG_REG_MAC   0x02

Definition at line 837 of file etherfabric.c.

◆ FCN_XM_RX_STAT_EN_LBN

#define FCN_XM_RX_STAT_EN_LBN   11

Definition at line 838 of file etherfabric.c.

◆ FCN_XM_RX_STAT_EN_WIDTH

#define FCN_XM_RX_STAT_EN_WIDTH   1

Definition at line 839 of file etherfabric.c.

◆ FCN_XM_TX_STAT_EN_LBN

#define FCN_XM_TX_STAT_EN_LBN   10

Definition at line 840 of file etherfabric.c.

◆ FCN_XM_TX_STAT_EN_WIDTH

#define FCN_XM_TX_STAT_EN_WIDTH   1

Definition at line 841 of file etherfabric.c.

◆ FCN_XM_RX_JUMBO_MODE_LBN

#define FCN_XM_RX_JUMBO_MODE_LBN   6

Definition at line 842 of file etherfabric.c.

◆ FCN_XM_RX_JUMBO_MODE_WIDTH

#define FCN_XM_RX_JUMBO_MODE_WIDTH   1

Definition at line 843 of file etherfabric.c.

◆ FCN_XM_CORE_RST_LBN

#define FCN_XM_CORE_RST_LBN   0

Definition at line 844 of file etherfabric.c.

◆ FCN_XM_CORE_RST_WIDTH

#define FCN_XM_CORE_RST_WIDTH   1

Definition at line 845 of file etherfabric.c.

◆ FCN_XM_TX_CFG_REG_MAC

#define FCN_XM_TX_CFG_REG_MAC   0x03

Definition at line 848 of file etherfabric.c.

◆ FCN_XM_IPG_LBN

#define FCN_XM_IPG_LBN   16

Definition at line 849 of file etherfabric.c.

◆ FCN_XM_IPG_WIDTH

#define FCN_XM_IPG_WIDTH   4

Definition at line 850 of file etherfabric.c.

◆ FCN_XM_FCNTL_LBN

#define FCN_XM_FCNTL_LBN   10

Definition at line 851 of file etherfabric.c.

◆ FCN_XM_FCNTL_WIDTH

#define FCN_XM_FCNTL_WIDTH   1

Definition at line 852 of file etherfabric.c.

◆ FCN_XM_TXCRC_LBN

#define FCN_XM_TXCRC_LBN   8

Definition at line 853 of file etherfabric.c.

◆ FCN_XM_TXCRC_WIDTH

#define FCN_XM_TXCRC_WIDTH   1

Definition at line 854 of file etherfabric.c.

◆ FCN_XM_AUTO_PAD_LBN

#define FCN_XM_AUTO_PAD_LBN   5

Definition at line 855 of file etherfabric.c.

◆ FCN_XM_AUTO_PAD_WIDTH

#define FCN_XM_AUTO_PAD_WIDTH   1

Definition at line 856 of file etherfabric.c.

◆ FCN_XM_TX_PRMBL_LBN

#define FCN_XM_TX_PRMBL_LBN   2

Definition at line 857 of file etherfabric.c.

◆ FCN_XM_TX_PRMBL_WIDTH

#define FCN_XM_TX_PRMBL_WIDTH   1

Definition at line 858 of file etherfabric.c.

◆ FCN_XM_TXEN_LBN

#define FCN_XM_TXEN_LBN   1

Definition at line 859 of file etherfabric.c.

◆ FCN_XM_TXEN_WIDTH

#define FCN_XM_TXEN_WIDTH   1

Definition at line 860 of file etherfabric.c.

◆ FCN_XM_RX_CFG_REG_MAC

#define FCN_XM_RX_CFG_REG_MAC   0x04

Definition at line 863 of file etherfabric.c.

◆ FCN_XM_PASS_CRC_ERR_LBN

#define FCN_XM_PASS_CRC_ERR_LBN   25

Definition at line 864 of file etherfabric.c.

◆ FCN_XM_PASS_CRC_ERR_WIDTH

#define FCN_XM_PASS_CRC_ERR_WIDTH   1

Definition at line 865 of file etherfabric.c.

◆ FCN_XM_AUTO_DEPAD_LBN

#define FCN_XM_AUTO_DEPAD_LBN   8

Definition at line 866 of file etherfabric.c.

◆ FCN_XM_AUTO_DEPAD_WIDTH

#define FCN_XM_AUTO_DEPAD_WIDTH   1

Definition at line 867 of file etherfabric.c.

◆ FCN_XM_RXEN_LBN

#define FCN_XM_RXEN_LBN   1

Definition at line 868 of file etherfabric.c.

◆ FCN_XM_RXEN_WIDTH

#define FCN_XM_RXEN_WIDTH   1

Definition at line 869 of file etherfabric.c.

◆ FCN_XM_MGT_INT_MSK_REG_MAC_B0

#define FCN_XM_MGT_INT_MSK_REG_MAC_B0   0x5

Definition at line 872 of file etherfabric.c.

◆ FCN_XM_MSK_PRMBLE_ERR_LBN

#define FCN_XM_MSK_PRMBLE_ERR_LBN   2

Definition at line 873 of file etherfabric.c.

◆ FCN_XM_MSK_PRMBLE_ERR_WIDTH

#define FCN_XM_MSK_PRMBLE_ERR_WIDTH   1

Definition at line 874 of file etherfabric.c.

◆ FCN_XM_MSK_RMTFLT_LBN

#define FCN_XM_MSK_RMTFLT_LBN   1

Definition at line 875 of file etherfabric.c.

◆ FCN_XM_MSK_RMTFLT_WIDTH

#define FCN_XM_MSK_RMTFLT_WIDTH   1

Definition at line 876 of file etherfabric.c.

◆ FCN_XM_MSK_LCLFLT_LBN

#define FCN_XM_MSK_LCLFLT_LBN   0

Definition at line 877 of file etherfabric.c.

◆ FCN_XM_MSK_LCLFLT_WIDTH

#define FCN_XM_MSK_LCLFLT_WIDTH   1

Definition at line 878 of file etherfabric.c.

◆ FCN_XM_FC_REG_MAC

#define FCN_XM_FC_REG_MAC   0x7

Definition at line 881 of file etherfabric.c.

◆ FCN_XM_PAUSE_TIME_LBN

#define FCN_XM_PAUSE_TIME_LBN   16

Definition at line 882 of file etherfabric.c.

◆ FCN_XM_PAUSE_TIME_WIDTH

#define FCN_XM_PAUSE_TIME_WIDTH   16

Definition at line 883 of file etherfabric.c.

◆ FCN_XM_DIS_FCNTL_LBN

#define FCN_XM_DIS_FCNTL_LBN   0

Definition at line 884 of file etherfabric.c.

◆ FCN_XM_DIS_FCNTL_WIDTH

#define FCN_XM_DIS_FCNTL_WIDTH   1

Definition at line 885 of file etherfabric.c.

◆ FCN_XM_TX_PARAM_REG_MAC

#define FCN_XM_TX_PARAM_REG_MAC   0x0d

Definition at line 888 of file etherfabric.c.

◆ FCN_XM_TX_JUMBO_MODE_LBN

#define FCN_XM_TX_JUMBO_MODE_LBN   31

Definition at line 889 of file etherfabric.c.

◆ FCN_XM_TX_JUMBO_MODE_WIDTH

#define FCN_XM_TX_JUMBO_MODE_WIDTH   1

Definition at line 890 of file etherfabric.c.

◆ FCN_XM_MAX_TX_FRM_SIZE_LBN

#define FCN_XM_MAX_TX_FRM_SIZE_LBN   16

Definition at line 891 of file etherfabric.c.

◆ FCN_XM_MAX_TX_FRM_SIZE_WIDTH

#define FCN_XM_MAX_TX_FRM_SIZE_WIDTH   14

Definition at line 892 of file etherfabric.c.

◆ FCN_XM_ACPT_ALL_MCAST_LBN

#define FCN_XM_ACPT_ALL_MCAST_LBN   11

Definition at line 893 of file etherfabric.c.

◆ FCN_XM_ACPT_ALL_MCAST_WIDTH

#define FCN_XM_ACPT_ALL_MCAST_WIDTH   1

Definition at line 894 of file etherfabric.c.

◆ FCN_XM_RX_PARAM_REG_MAC

#define FCN_XM_RX_PARAM_REG_MAC   0x0e

Definition at line 897 of file etherfabric.c.

◆ FCN_XM_MAX_RX_FRM_SIZE_LBN

#define FCN_XM_MAX_RX_FRM_SIZE_LBN   0

Definition at line 898 of file etherfabric.c.

◆ FCN_XM_MAX_RX_FRM_SIZE_WIDTH

#define FCN_XM_MAX_RX_FRM_SIZE_WIDTH   14

Definition at line 899 of file etherfabric.c.

◆ FCN_XM_MGT_INT_REG_MAC_B0

#define FCN_XM_MGT_INT_REG_MAC_B0   0x0f

Definition at line 902 of file etherfabric.c.

◆ FCN_XM_PRMBLE_ERR

#define FCN_XM_PRMBLE_ERR   2

Definition at line 903 of file etherfabric.c.

◆ FCN_XM_PRMBLE_WIDTH

#define FCN_XM_PRMBLE_WIDTH   1

Definition at line 904 of file etherfabric.c.

◆ FCN_XM_RMTFLT_LBN

#define FCN_XM_RMTFLT_LBN   1

Definition at line 905 of file etherfabric.c.

◆ FCN_XM_RMTFLT_WIDTH

#define FCN_XM_RMTFLT_WIDTH   1

Definition at line 906 of file etherfabric.c.

◆ FCN_XM_LCLFLT_LBN

#define FCN_XM_LCLFLT_LBN   0

Definition at line 907 of file etherfabric.c.

◆ FCN_XM_LCLFLT_WIDTH

#define FCN_XM_LCLFLT_WIDTH   1

Definition at line 908 of file etherfabric.c.

◆ FCN_XX_ALIGN_DONE_LBN

#define FCN_XX_ALIGN_DONE_LBN   20

Definition at line 911 of file etherfabric.c.

◆ FCN_XX_ALIGN_DONE_WIDTH

#define FCN_XX_ALIGN_DONE_WIDTH   1

Definition at line 912 of file etherfabric.c.

◆ FCN_XX_CORE_STAT_REG_MAC

#define FCN_XX_CORE_STAT_REG_MAC   0x16

Definition at line 913 of file etherfabric.c.

◆ FCN_XX_SYNC_STAT_LBN

#define FCN_XX_SYNC_STAT_LBN   16

Definition at line 914 of file etherfabric.c.

◆ FCN_XX_SYNC_STAT_WIDTH

#define FCN_XX_SYNC_STAT_WIDTH   4

Definition at line 915 of file etherfabric.c.

◆ FCN_XX_SYNC_STAT_DECODE_SYNCED

#define FCN_XX_SYNC_STAT_DECODE_SYNCED   0xf

Definition at line 916 of file etherfabric.c.

◆ FCN_XX_COMMA_DET_LBN

#define FCN_XX_COMMA_DET_LBN   12

Definition at line 917 of file etherfabric.c.

◆ FCN_XX_COMMA_DET_WIDTH

#define FCN_XX_COMMA_DET_WIDTH   4

Definition at line 918 of file etherfabric.c.

◆ FCN_XX_COMMA_DET_RESET

#define FCN_XX_COMMA_DET_RESET   0xf

Definition at line 919 of file etherfabric.c.

◆ FCN_XX_CHARERR_LBN

#define FCN_XX_CHARERR_LBN   4

Definition at line 920 of file etherfabric.c.

◆ FCN_XX_CHARERR_WIDTH

#define FCN_XX_CHARERR_WIDTH   4

Definition at line 921 of file etherfabric.c.

◆ FCN_XX_CHARERR_RESET

#define FCN_XX_CHARERR_RESET   0xf

Definition at line 922 of file etherfabric.c.

◆ FCN_XX_DISPERR_LBN

#define FCN_XX_DISPERR_LBN   0

Definition at line 923 of file etherfabric.c.

◆ FCN_XX_DISPERR_WIDTH

#define FCN_XX_DISPERR_WIDTH   4

Definition at line 924 of file etherfabric.c.

◆ FCN_XX_DISPERR_RESET

#define FCN_XX_DISPERR_RESET   0xf

Definition at line 925 of file etherfabric.c.

◆ FCN_XX_PWR_RST_REG_MAC

#define FCN_XX_PWR_RST_REG_MAC   0x10

Definition at line 928 of file etherfabric.c.

◆ FCN_XX_PWRDND_EN_LBN

#define FCN_XX_PWRDND_EN_LBN   15

Definition at line 929 of file etherfabric.c.

◆ FCN_XX_PWRDND_EN_WIDTH

#define FCN_XX_PWRDND_EN_WIDTH   1

Definition at line 930 of file etherfabric.c.

◆ FCN_XX_PWRDNC_EN_LBN

#define FCN_XX_PWRDNC_EN_LBN   14

Definition at line 931 of file etherfabric.c.

◆ FCN_XX_PWRDNC_EN_WIDTH

#define FCN_XX_PWRDNC_EN_WIDTH   1

Definition at line 932 of file etherfabric.c.

◆ FCN_XX_PWRDNB_EN_LBN

#define FCN_XX_PWRDNB_EN_LBN   13

Definition at line 933 of file etherfabric.c.

◆ FCN_XX_PWRDNB_EN_WIDTH

#define FCN_XX_PWRDNB_EN_WIDTH   1

Definition at line 934 of file etherfabric.c.

◆ FCN_XX_PWRDNA_EN_LBN

#define FCN_XX_PWRDNA_EN_LBN   12

Definition at line 935 of file etherfabric.c.

◆ FCN_XX_PWRDNA_EN_WIDTH

#define FCN_XX_PWRDNA_EN_WIDTH   1

Definition at line 936 of file etherfabric.c.

◆ FCN_XX_RSTPLLCD_EN_LBN

#define FCN_XX_RSTPLLCD_EN_LBN   9

Definition at line 937 of file etherfabric.c.

◆ FCN_XX_RSTPLLCD_EN_WIDTH

#define FCN_XX_RSTPLLCD_EN_WIDTH   1

Definition at line 938 of file etherfabric.c.

◆ FCN_XX_RSTPLLAB_EN_LBN

#define FCN_XX_RSTPLLAB_EN_LBN   8

Definition at line 939 of file etherfabric.c.

◆ FCN_XX_RSTPLLAB_EN_WIDTH

#define FCN_XX_RSTPLLAB_EN_WIDTH   1

Definition at line 940 of file etherfabric.c.

◆ FCN_XX_RESETD_EN_LBN

#define FCN_XX_RESETD_EN_LBN   7

Definition at line 941 of file etherfabric.c.

◆ FCN_XX_RESETD_EN_WIDTH

#define FCN_XX_RESETD_EN_WIDTH   1

Definition at line 942 of file etherfabric.c.

◆ FCN_XX_RESETC_EN_LBN

#define FCN_XX_RESETC_EN_LBN   6

Definition at line 943 of file etherfabric.c.

◆ FCN_XX_RESETC_EN_WIDTH

#define FCN_XX_RESETC_EN_WIDTH   1

Definition at line 944 of file etherfabric.c.

◆ FCN_XX_RESETB_EN_LBN

#define FCN_XX_RESETB_EN_LBN   5

Definition at line 945 of file etherfabric.c.

◆ FCN_XX_RESETB_EN_WIDTH

#define FCN_XX_RESETB_EN_WIDTH   1

Definition at line 946 of file etherfabric.c.

◆ FCN_XX_RESETA_EN_LBN

#define FCN_XX_RESETA_EN_LBN   4

Definition at line 947 of file etherfabric.c.

◆ FCN_XX_RESETA_EN_WIDTH

#define FCN_XX_RESETA_EN_WIDTH   1

Definition at line 948 of file etherfabric.c.

◆ FCN_XX_RSTXGXSRX_EN_LBN

#define FCN_XX_RSTXGXSRX_EN_LBN   2

Definition at line 949 of file etherfabric.c.

◆ FCN_XX_RSTXGXSRX_EN_WIDTH

#define FCN_XX_RSTXGXSRX_EN_WIDTH   1

Definition at line 950 of file etherfabric.c.

◆ FCN_XX_RSTXGXSTX_EN_LBN

#define FCN_XX_RSTXGXSTX_EN_LBN   1

Definition at line 951 of file etherfabric.c.

◆ FCN_XX_RSTXGXSTX_EN_WIDTH

#define FCN_XX_RSTXGXSTX_EN_WIDTH   1

Definition at line 952 of file etherfabric.c.

◆ FCN_XX_RST_XX_EN_LBN

#define FCN_XX_RST_XX_EN_LBN   0

Definition at line 953 of file etherfabric.c.

◆ FCN_XX_RST_XX_EN_WIDTH

#define FCN_XX_RST_XX_EN_WIDTH   1

Definition at line 954 of file etherfabric.c.

◆ FCN_XX_SD_CTL_REG_MAC

#define FCN_XX_SD_CTL_REG_MAC   0x11

Definition at line 958 of file etherfabric.c.

◆ FCN_XX_TERMADJ1_LBN

#define FCN_XX_TERMADJ1_LBN   17

Definition at line 959 of file etherfabric.c.

◆ FCN_XX_TERMADJ1_WIDTH

#define FCN_XX_TERMADJ1_WIDTH   1

Definition at line 960 of file etherfabric.c.

◆ FCN_XX_TERMADJ0_LBN

#define FCN_XX_TERMADJ0_LBN   16

Definition at line 961 of file etherfabric.c.

◆ FCN_XX_TERMADJ0_WIDTH

#define FCN_XX_TERMADJ0_WIDTH   1

Definition at line 962 of file etherfabric.c.

◆ FCN_XX_HIDRVD_LBN

#define FCN_XX_HIDRVD_LBN   15

Definition at line 963 of file etherfabric.c.

◆ FCN_XX_HIDRVD_WIDTH

#define FCN_XX_HIDRVD_WIDTH   1

Definition at line 964 of file etherfabric.c.

◆ FCN_XX_LODRVD_LBN

#define FCN_XX_LODRVD_LBN   14

Definition at line 965 of file etherfabric.c.

◆ FCN_XX_LODRVD_WIDTH

#define FCN_XX_LODRVD_WIDTH   1

Definition at line 966 of file etherfabric.c.

◆ FCN_XX_HIDRVC_LBN

#define FCN_XX_HIDRVC_LBN   13

Definition at line 967 of file etherfabric.c.

◆ FCN_XX_HIDRVC_WIDTH

#define FCN_XX_HIDRVC_WIDTH   1

Definition at line 968 of file etherfabric.c.

◆ FCN_XX_LODRVC_LBN

#define FCN_XX_LODRVC_LBN   12

Definition at line 969 of file etherfabric.c.

◆ FCN_XX_LODRVC_WIDTH

#define FCN_XX_LODRVC_WIDTH   1

Definition at line 970 of file etherfabric.c.

◆ FCN_XX_HIDRVB_LBN

#define FCN_XX_HIDRVB_LBN   11

Definition at line 971 of file etherfabric.c.

◆ FCN_XX_HIDRVB_WIDTH

#define FCN_XX_HIDRVB_WIDTH   1

Definition at line 972 of file etherfabric.c.

◆ FCN_XX_LODRVB_LBN

#define FCN_XX_LODRVB_LBN   10

Definition at line 973 of file etherfabric.c.

◆ FCN_XX_LODRVB_WIDTH

#define FCN_XX_LODRVB_WIDTH   1

Definition at line 974 of file etherfabric.c.

◆ FCN_XX_HIDRVA_LBN

#define FCN_XX_HIDRVA_LBN   9

Definition at line 975 of file etherfabric.c.

◆ FCN_XX_HIDRVA_WIDTH

#define FCN_XX_HIDRVA_WIDTH   1

Definition at line 976 of file etherfabric.c.

◆ FCN_XX_LODRVA_LBN

#define FCN_XX_LODRVA_LBN   8

Definition at line 977 of file etherfabric.c.

◆ FCN_XX_LODRVA_WIDTH

#define FCN_XX_LODRVA_WIDTH   1

Definition at line 978 of file etherfabric.c.

◆ FCN_XX_LPBKD_LBN

#define FCN_XX_LPBKD_LBN   3

Definition at line 979 of file etherfabric.c.

◆ FCN_XX_LPBKD_WIDTH

#define FCN_XX_LPBKD_WIDTH   1

Definition at line 980 of file etherfabric.c.

◆ FCN_XX_LPBKC_LBN

#define FCN_XX_LPBKC_LBN   2

Definition at line 981 of file etherfabric.c.

◆ FCN_XX_LPBKC_WIDTH

#define FCN_XX_LPBKC_WIDTH   1

Definition at line 982 of file etherfabric.c.

◆ FCN_XX_LPBKB_LBN

#define FCN_XX_LPBKB_LBN   1

Definition at line 983 of file etherfabric.c.

◆ FCN_XX_LPBKB_WIDTH

#define FCN_XX_LPBKB_WIDTH   1

Definition at line 984 of file etherfabric.c.

◆ FCN_XX_LPBKA_LBN

#define FCN_XX_LPBKA_LBN   0

Definition at line 985 of file etherfabric.c.

◆ FCN_XX_LPBKA_WIDTH

#define FCN_XX_LPBKA_WIDTH   1

Definition at line 986 of file etherfabric.c.

◆ FCN_XX_TXDRV_CTL_REG_MAC

#define FCN_XX_TXDRV_CTL_REG_MAC   0x12

Definition at line 988 of file etherfabric.c.

◆ FCN_XX_DEQD_LBN

#define FCN_XX_DEQD_LBN   28

Definition at line 989 of file etherfabric.c.

◆ FCN_XX_DEQD_WIDTH

#define FCN_XX_DEQD_WIDTH   4

Definition at line 990 of file etherfabric.c.

◆ FCN_XX_DEQC_LBN

#define FCN_XX_DEQC_LBN   24

Definition at line 991 of file etherfabric.c.

◆ FCN_XX_DEQC_WIDTH

#define FCN_XX_DEQC_WIDTH   4

Definition at line 992 of file etherfabric.c.

◆ FCN_XX_DEQB_LBN

#define FCN_XX_DEQB_LBN   20

Definition at line 993 of file etherfabric.c.

◆ FCN_XX_DEQB_WIDTH

#define FCN_XX_DEQB_WIDTH   4

Definition at line 994 of file etherfabric.c.

◆ FCN_XX_DEQA_LBN

#define FCN_XX_DEQA_LBN   16

Definition at line 995 of file etherfabric.c.

◆ FCN_XX_DEQA_WIDTH

#define FCN_XX_DEQA_WIDTH   4

Definition at line 996 of file etherfabric.c.

◆ FCN_XX_DTXD_LBN

#define FCN_XX_DTXD_LBN   12

Definition at line 997 of file etherfabric.c.

◆ FCN_XX_DTXD_WIDTH

#define FCN_XX_DTXD_WIDTH   4

Definition at line 998 of file etherfabric.c.

◆ FCN_XX_DTXC_LBN

#define FCN_XX_DTXC_LBN   8

Definition at line 999 of file etherfabric.c.

◆ FCN_XX_DTXC_WIDTH

#define FCN_XX_DTXC_WIDTH   4

Definition at line 1000 of file etherfabric.c.

◆ FCN_XX_DTXB_LBN

#define FCN_XX_DTXB_LBN   4

Definition at line 1001 of file etherfabric.c.

◆ FCN_XX_DTXB_WIDTH

#define FCN_XX_DTXB_WIDTH   4

Definition at line 1002 of file etherfabric.c.

◆ FCN_XX_DTXA_LBN

#define FCN_XX_DTXA_LBN   0

Definition at line 1003 of file etherfabric.c.

◆ FCN_XX_DTXA_WIDTH

#define FCN_XX_DTXA_WIDTH   4

Definition at line 1004 of file etherfabric.c.

◆ FCN_RX_FILTER_TBL0

#define FCN_RX_FILTER_TBL0   0xF00000

Definition at line 1007 of file etherfabric.c.

◆ FCN_RX_DESC_PTR_TBL_KER_A1

#define FCN_RX_DESC_PTR_TBL_KER_A1   0x11800

Definition at line 1010 of file etherfabric.c.

◆ FCN_RX_DESC_PTR_TBL_KER_B0

#define FCN_RX_DESC_PTR_TBL_KER_B0   0xF40000

Definition at line 1011 of file etherfabric.c.

◆ FCN_RX_ISCSI_DDIG_EN_LBN

#define FCN_RX_ISCSI_DDIG_EN_LBN   88

Definition at line 1012 of file etherfabric.c.

◆ FCN_RX_ISCSI_DDIG_EN_WIDTH

#define FCN_RX_ISCSI_DDIG_EN_WIDTH   1

Definition at line 1013 of file etherfabric.c.

◆ FCN_RX_ISCSI_HDIG_EN_LBN

#define FCN_RX_ISCSI_HDIG_EN_LBN   87

Definition at line 1014 of file etherfabric.c.

◆ FCN_RX_ISCSI_HDIG_EN_WIDTH

#define FCN_RX_ISCSI_HDIG_EN_WIDTH   1

Definition at line 1015 of file etherfabric.c.

◆ FCN_RX_DESCQ_BUF_BASE_ID_LBN

#define FCN_RX_DESCQ_BUF_BASE_ID_LBN   36

Definition at line 1016 of file etherfabric.c.

◆ FCN_RX_DESCQ_BUF_BASE_ID_WIDTH

#define FCN_RX_DESCQ_BUF_BASE_ID_WIDTH   20

Definition at line 1017 of file etherfabric.c.

◆ FCN_RX_DESCQ_EVQ_ID_LBN

#define FCN_RX_DESCQ_EVQ_ID_LBN   24

Definition at line 1018 of file etherfabric.c.

◆ FCN_RX_DESCQ_EVQ_ID_WIDTH

#define FCN_RX_DESCQ_EVQ_ID_WIDTH   12

Definition at line 1019 of file etherfabric.c.

◆ FCN_RX_DESCQ_OWNER_ID_LBN

#define FCN_RX_DESCQ_OWNER_ID_LBN   10

Definition at line 1020 of file etherfabric.c.

◆ FCN_RX_DESCQ_OWNER_ID_WIDTH

#define FCN_RX_DESCQ_OWNER_ID_WIDTH   14

Definition at line 1021 of file etherfabric.c.

◆ FCN_RX_DESCQ_SIZE_LBN

#define FCN_RX_DESCQ_SIZE_LBN   3

Definition at line 1022 of file etherfabric.c.

◆ FCN_RX_DESCQ_SIZE_WIDTH

#define FCN_RX_DESCQ_SIZE_WIDTH   2

Definition at line 1023 of file etherfabric.c.

◆ FCN_RX_DESCQ_SIZE_4K

#define FCN_RX_DESCQ_SIZE_4K   3

Definition at line 1024 of file etherfabric.c.

◆ FCN_RX_DESCQ_SIZE_2K

#define FCN_RX_DESCQ_SIZE_2K   2

Definition at line 1025 of file etherfabric.c.

◆ FCN_RX_DESCQ_SIZE_1K

#define FCN_RX_DESCQ_SIZE_1K   1

Definition at line 1026 of file etherfabric.c.

◆ FCN_RX_DESCQ_SIZE_512

#define FCN_RX_DESCQ_SIZE_512   0

Definition at line 1027 of file etherfabric.c.

◆ FCN_RX_DESCQ_TYPE_LBN

#define FCN_RX_DESCQ_TYPE_LBN   2

Definition at line 1028 of file etherfabric.c.

◆ FCN_RX_DESCQ_TYPE_WIDTH

#define FCN_RX_DESCQ_TYPE_WIDTH   1

Definition at line 1029 of file etherfabric.c.

◆ FCN_RX_DESCQ_JUMBO_LBN

#define FCN_RX_DESCQ_JUMBO_LBN   1

Definition at line 1030 of file etherfabric.c.

◆ FCN_RX_DESCQ_JUMBO_WIDTH

#define FCN_RX_DESCQ_JUMBO_WIDTH   1

Definition at line 1031 of file etherfabric.c.

◆ FCN_RX_DESCQ_EN_LBN

#define FCN_RX_DESCQ_EN_LBN   0

Definition at line 1032 of file etherfabric.c.

◆ FCN_RX_DESCQ_EN_WIDTH

#define FCN_RX_DESCQ_EN_WIDTH   1

Definition at line 1033 of file etherfabric.c.

◆ FCN_TX_DESC_PTR_TBL_KER_A1

#define FCN_TX_DESC_PTR_TBL_KER_A1   0x11900

Definition at line 1036 of file etherfabric.c.

◆ FCN_TX_DESC_PTR_TBL_KER_B0

#define FCN_TX_DESC_PTR_TBL_KER_B0   0xF50000

Definition at line 1037 of file etherfabric.c.

◆ FCN_TX_NON_IP_DROP_DIS_B0_LBN

#define FCN_TX_NON_IP_DROP_DIS_B0_LBN   91

Definition at line 1038 of file etherfabric.c.

◆ FCN_TX_NON_IP_DROP_DIS_B0_WIDTH

#define FCN_TX_NON_IP_DROP_DIS_B0_WIDTH   1

Definition at line 1039 of file etherfabric.c.

◆ FCN_TX_DESCQ_EN_LBN

#define FCN_TX_DESCQ_EN_LBN   88

Definition at line 1040 of file etherfabric.c.

◆ FCN_TX_DESCQ_EN_WIDTH

#define FCN_TX_DESCQ_EN_WIDTH   1

Definition at line 1041 of file etherfabric.c.

◆ FCN_TX_ISCSI_DDIG_EN_LBN

#define FCN_TX_ISCSI_DDIG_EN_LBN   87

Definition at line 1042 of file etherfabric.c.

◆ FCN_TX_ISCSI_DDIG_EN_WIDTH

#define FCN_TX_ISCSI_DDIG_EN_WIDTH   1

Definition at line 1043 of file etherfabric.c.

◆ FCN_TX_ISCSI_HDIG_EN_LBN

#define FCN_TX_ISCSI_HDIG_EN_LBN   86

Definition at line 1044 of file etherfabric.c.

◆ FCN_TX_ISCSI_HDIG_EN_WIDTH

#define FCN_TX_ISCSI_HDIG_EN_WIDTH   1

Definition at line 1045 of file etherfabric.c.

◆ FCN_TX_DESCQ_BUF_BASE_ID_LBN

#define FCN_TX_DESCQ_BUF_BASE_ID_LBN   36

Definition at line 1046 of file etherfabric.c.

◆ FCN_TX_DESCQ_BUF_BASE_ID_WIDTH

#define FCN_TX_DESCQ_BUF_BASE_ID_WIDTH   20

Definition at line 1047 of file etherfabric.c.

◆ FCN_TX_DESCQ_EVQ_ID_LBN

#define FCN_TX_DESCQ_EVQ_ID_LBN   24

Definition at line 1048 of file etherfabric.c.

◆ FCN_TX_DESCQ_EVQ_ID_WIDTH

#define FCN_TX_DESCQ_EVQ_ID_WIDTH   12

Definition at line 1049 of file etherfabric.c.

◆ FCN_TX_DESCQ_OWNER_ID_LBN

#define FCN_TX_DESCQ_OWNER_ID_LBN   10

Definition at line 1050 of file etherfabric.c.

◆ FCN_TX_DESCQ_OWNER_ID_WIDTH

#define FCN_TX_DESCQ_OWNER_ID_WIDTH   14

Definition at line 1051 of file etherfabric.c.

◆ FCN_TX_DESCQ_SIZE_LBN

#define FCN_TX_DESCQ_SIZE_LBN   3

Definition at line 1052 of file etherfabric.c.

◆ FCN_TX_DESCQ_SIZE_WIDTH

#define FCN_TX_DESCQ_SIZE_WIDTH   2

Definition at line 1053 of file etherfabric.c.

◆ FCN_TX_DESCQ_SIZE_4K

#define FCN_TX_DESCQ_SIZE_4K   3

Definition at line 1054 of file etherfabric.c.

◆ FCN_TX_DESCQ_SIZE_2K

#define FCN_TX_DESCQ_SIZE_2K   2

Definition at line 1055 of file etherfabric.c.

◆ FCN_TX_DESCQ_SIZE_1K

#define FCN_TX_DESCQ_SIZE_1K   1

Definition at line 1056 of file etherfabric.c.

◆ FCN_TX_DESCQ_SIZE_512

#define FCN_TX_DESCQ_SIZE_512   0

Definition at line 1057 of file etherfabric.c.

◆ FCN_TX_DESCQ_TYPE_LBN

#define FCN_TX_DESCQ_TYPE_LBN   1

Definition at line 1058 of file etherfabric.c.

◆ FCN_TX_DESCQ_TYPE_WIDTH

#define FCN_TX_DESCQ_TYPE_WIDTH   2

Definition at line 1059 of file etherfabric.c.

◆ FCN_TX_DESCQ_FLUSH_LBN

#define FCN_TX_DESCQ_FLUSH_LBN   0

Definition at line 1060 of file etherfabric.c.

◆ FCN_TX_DESCQ_FLUSH_WIDTH

#define FCN_TX_DESCQ_FLUSH_WIDTH   1

Definition at line 1061 of file etherfabric.c.

◆ FCN_EVQ_PTR_TBL_KER_A1

#define FCN_EVQ_PTR_TBL_KER_A1   0x11a00

Definition at line 1064 of file etherfabric.c.

◆ FCN_EVQ_PTR_TBL_KER_B0

#define FCN_EVQ_PTR_TBL_KER_B0   0xf60000

Definition at line 1065 of file etherfabric.c.

◆ FCN_EVQ_EN_LBN

#define FCN_EVQ_EN_LBN   23

Definition at line 1066 of file etherfabric.c.

◆ FCN_EVQ_EN_WIDTH

#define FCN_EVQ_EN_WIDTH   1

Definition at line 1067 of file etherfabric.c.

◆ FCN_EVQ_SIZE_LBN

#define FCN_EVQ_SIZE_LBN   20

Definition at line 1068 of file etherfabric.c.

◆ FCN_EVQ_SIZE_WIDTH

#define FCN_EVQ_SIZE_WIDTH   3

Definition at line 1069 of file etherfabric.c.

◆ FCN_EVQ_SIZE_32K

#define FCN_EVQ_SIZE_32K   6

Definition at line 1070 of file etherfabric.c.

◆ FCN_EVQ_SIZE_16K

#define FCN_EVQ_SIZE_16K   5

Definition at line 1071 of file etherfabric.c.

◆ FCN_EVQ_SIZE_8K

#define FCN_EVQ_SIZE_8K   4

Definition at line 1072 of file etherfabric.c.

◆ FCN_EVQ_SIZE_4K

#define FCN_EVQ_SIZE_4K   3

Definition at line 1073 of file etherfabric.c.

◆ FCN_EVQ_SIZE_2K

#define FCN_EVQ_SIZE_2K   2

Definition at line 1074 of file etherfabric.c.

◆ FCN_EVQ_SIZE_1K

#define FCN_EVQ_SIZE_1K   1

Definition at line 1075 of file etherfabric.c.

◆ FCN_EVQ_SIZE_512

#define FCN_EVQ_SIZE_512   0

Definition at line 1076 of file etherfabric.c.

◆ FCN_EVQ_BUF_BASE_ID_LBN

#define FCN_EVQ_BUF_BASE_ID_LBN   0

Definition at line 1077 of file etherfabric.c.

◆ FCN_EVQ_BUF_BASE_ID_WIDTH

#define FCN_EVQ_BUF_BASE_ID_WIDTH   20

Definition at line 1078 of file etherfabric.c.

◆ FCN_RX_RSS_INDIR_TBL_B0

#define FCN_RX_RSS_INDIR_TBL_B0   0xFB0000

Definition at line 1081 of file etherfabric.c.

◆ FCN_EVQ_RPTR_REG_KER_A1

#define FCN_EVQ_RPTR_REG_KER_A1   0x11b00

Definition at line 1084 of file etherfabric.c.

◆ FCN_EVQ_RPTR_REG_KER_B0

#define FCN_EVQ_RPTR_REG_KER_B0   0xfa0000

Definition at line 1085 of file etherfabric.c.

◆ FCN_EVQ_RPTR_LBN

#define FCN_EVQ_RPTR_LBN   0

Definition at line 1086 of file etherfabric.c.

◆ FCN_EVQ_RPTR_WIDTH

#define FCN_EVQ_RPTR_WIDTH   14

Definition at line 1087 of file etherfabric.c.

◆ FCN_EVQ_RPTR_REG_KER_DWORD_A1

#define FCN_EVQ_RPTR_REG_KER_DWORD_A1   ( FCN_EVQ_RPTR_REG_KER_A1 + 0 )

Definition at line 1088 of file etherfabric.c.

◆ FCN_EVQ_RPTR_REG_KER_DWORD_B0

#define FCN_EVQ_RPTR_REG_KER_DWORD_B0   ( FCN_EVQ_RPTR_REG_KER_B0 + 0 )

Definition at line 1089 of file etherfabric.c.

◆ FCN_EVQ_RPTR_DWORD_LBN

#define FCN_EVQ_RPTR_DWORD_LBN   0

Definition at line 1090 of file etherfabric.c.

◆ FCN_EVQ_RPTR_DWORD_WIDTH

#define FCN_EVQ_RPTR_DWORD_WIDTH   14

Definition at line 1091 of file etherfabric.c.

◆ FCN_BUF_FULL_TBL_KER_A1

#define FCN_BUF_FULL_TBL_KER_A1   0x18000

Definition at line 1094 of file etherfabric.c.

◆ FCN_BUF_FULL_TBL_KER_B0

#define FCN_BUF_FULL_TBL_KER_B0   0x800000

Definition at line 1095 of file etherfabric.c.

◆ FCN_IP_DAT_BUF_SIZE_LBN

#define FCN_IP_DAT_BUF_SIZE_LBN   50

Definition at line 1096 of file etherfabric.c.

◆ FCN_IP_DAT_BUF_SIZE_WIDTH

#define FCN_IP_DAT_BUF_SIZE_WIDTH   1

Definition at line 1097 of file etherfabric.c.

◆ FCN_IP_DAT_BUF_SIZE_8K

#define FCN_IP_DAT_BUF_SIZE_8K   1

Definition at line 1098 of file etherfabric.c.

◆ FCN_IP_DAT_BUF_SIZE_4K

#define FCN_IP_DAT_BUF_SIZE_4K   0

Definition at line 1099 of file etherfabric.c.

◆ FCN_BUF_ADR_FBUF_LBN

#define FCN_BUF_ADR_FBUF_LBN   14

Definition at line 1100 of file etherfabric.c.

◆ FCN_BUF_ADR_FBUF_WIDTH

#define FCN_BUF_ADR_FBUF_WIDTH   34

Definition at line 1101 of file etherfabric.c.

◆ FCN_BUF_OWNER_ID_FBUF_LBN

#define FCN_BUF_OWNER_ID_FBUF_LBN   0

Definition at line 1102 of file etherfabric.c.

◆ FCN_BUF_OWNER_ID_FBUF_WIDTH

#define FCN_BUF_OWNER_ID_FBUF_WIDTH   14

Definition at line 1103 of file etherfabric.c.

◆ FALCON_GMAC_REG

#define FALCON_GMAC_REG (   efab,
  mac_reg 
)
Value:
( (mac_reg) * FALCON_GMAC_REG_SIZE ) )
#define FALCON_GMAC_REG_SIZE
Definition: etherfabric.c:811
#define FALCON_GMAC_REGBANK
Definition: etherfabric.c:809

Offset of a GMAC register within Falcon.

Definition at line 1106 of file etherfabric.c.

◆ FALCON_XMAC_REG

#define FALCON_XMAC_REG (   efab_port,
  mac_reg 
)
Value:
( (mac_reg) * FALCON_XMAC_REG_SIZE ) )
#define FALCON_XMAC_REG_SIZE
Definition: etherfabric.c:816
#define FALCON_XMAC_REGBANK
Definition: etherfabric.c:814

Offset of an XMAC register within Falcon.

Definition at line 1111 of file etherfabric.c.

◆ FCN_MAC_DATA_LBN

#define FCN_MAC_DATA_LBN   0

Definition at line 1115 of file etherfabric.c.

◆ FCN_MAC_DATA_WIDTH

#define FCN_MAC_DATA_WIDTH   32

Definition at line 1116 of file etherfabric.c.

◆ FCN_TX_KER_PORT_LBN

#define FCN_TX_KER_PORT_LBN   63

Definition at line 1119 of file etherfabric.c.

◆ FCN_TX_KER_PORT_WIDTH

#define FCN_TX_KER_PORT_WIDTH   1

Definition at line 1120 of file etherfabric.c.

◆ FCN_TX_KER_BYTE_CNT_LBN

#define FCN_TX_KER_BYTE_CNT_LBN   48

Definition at line 1121 of file etherfabric.c.

◆ FCN_TX_KER_BYTE_CNT_WIDTH

#define FCN_TX_KER_BYTE_CNT_WIDTH   14

Definition at line 1122 of file etherfabric.c.

◆ FCN_TX_KER_BUF_ADR_LBN

#define FCN_TX_KER_BUF_ADR_LBN   0

Definition at line 1123 of file etherfabric.c.

◆ FCN_TX_KER_BUF_ADR_WIDTH

#define FCN_TX_KER_BUF_ADR_WIDTH   EFAB_DMA_TYPE_WIDTH ( 46 )

Definition at line 1124 of file etherfabric.c.

◆ FCN_RX_KER_BUF_SIZE_LBN

#define FCN_RX_KER_BUF_SIZE_LBN   48

Definition at line 1128 of file etherfabric.c.

◆ FCN_RX_KER_BUF_SIZE_WIDTH

#define FCN_RX_KER_BUF_SIZE_WIDTH   14

Definition at line 1129 of file etherfabric.c.

◆ FCN_RX_KER_BUF_ADR_LBN

#define FCN_RX_KER_BUF_ADR_LBN   0

Definition at line 1130 of file etherfabric.c.

◆ FCN_RX_KER_BUF_ADR_WIDTH

#define FCN_RX_KER_BUF_ADR_WIDTH   EFAB_DMA_TYPE_WIDTH ( 46 )

Definition at line 1131 of file etherfabric.c.

◆ FCN_EV_CODE_LBN

#define FCN_EV_CODE_LBN   60

Definition at line 1134 of file etherfabric.c.

◆ FCN_EV_CODE_WIDTH

#define FCN_EV_CODE_WIDTH   4

Definition at line 1135 of file etherfabric.c.

◆ FCN_RX_IP_EV_DECODE

#define FCN_RX_IP_EV_DECODE   0

Definition at line 1136 of file etherfabric.c.

◆ FCN_TX_IP_EV_DECODE

#define FCN_TX_IP_EV_DECODE   2

Definition at line 1137 of file etherfabric.c.

◆ FCN_DRIVER_EV_DECODE

#define FCN_DRIVER_EV_DECODE   5

Definition at line 1138 of file etherfabric.c.

◆ FCN_RX_EV_PKT_OK_LBN

#define FCN_RX_EV_PKT_OK_LBN   56

Definition at line 1141 of file etherfabric.c.

◆ FCN_RX_EV_PKT_OK_WIDTH

#define FCN_RX_EV_PKT_OK_WIDTH   1

Definition at line 1142 of file etherfabric.c.

◆ FCN_RX_PORT_LBN

#define FCN_RX_PORT_LBN   30

Definition at line 1143 of file etherfabric.c.

◆ FCN_RX_PORT_WIDTH

#define FCN_RX_PORT_WIDTH   1

Definition at line 1144 of file etherfabric.c.

◆ FCN_RX_EV_BYTE_CNT_LBN

#define FCN_RX_EV_BYTE_CNT_LBN   16

Definition at line 1145 of file etherfabric.c.

◆ FCN_RX_EV_BYTE_CNT_WIDTH

#define FCN_RX_EV_BYTE_CNT_WIDTH   14

Definition at line 1146 of file etherfabric.c.

◆ FCN_RX_EV_DESC_PTR_LBN

#define FCN_RX_EV_DESC_PTR_LBN   0

Definition at line 1147 of file etherfabric.c.

◆ FCN_RX_EV_DESC_PTR_WIDTH

#define FCN_RX_EV_DESC_PTR_WIDTH   12

Definition at line 1148 of file etherfabric.c.

◆ FCN_TX_EV_DESC_PTR_LBN

#define FCN_TX_EV_DESC_PTR_LBN   0

Definition at line 1151 of file etherfabric.c.

◆ FCN_TX_EV_DESC_PTR_WIDTH

#define FCN_TX_EV_DESC_PTR_WIDTH   12

Definition at line 1152 of file etherfabric.c.

◆ FCN_REVISION_REG

#define FCN_REVISION_REG (   efab,
  reg 
)    ( ( efab->pci_revision == FALCON_REV_B0 ) ? reg ## _B0 : reg ## _A1 )

Definition at line 1162 of file etherfabric.c.

◆ EFAB_SET_OWORD_FIELD_VER

#define EFAB_SET_OWORD_FIELD_VER (   efab,
  reg,
  field,
  val 
)
Value:
if ( efab->pci_revision == FALCON_REV_B0 ) \
EFAB_SET_OWORD_FIELD ( reg, field ## _B0, val ); \
EFAB_SET_OWORD_FIELD ( reg, field ## _A1, val );
static unsigned int unsigned int reg
Definition: myson.h:162
void __asmcall int val
Definition: setjmp.h:12
#define FALCON_REV_B0
Definition: etherfabric.c:531
#define EFAB_SET_OWORD_FIELD
Definition: etherfabric.h:531

Definition at line 1165 of file etherfabric.c.

◆ _falcon_writel

#define _falcon_writel (   efab,
  value,
  reg 
)    writel ( (value), (efab)->membase + (reg) )

Definition at line 1189 of file etherfabric.c.

◆ _falcon_readl

#define _falcon_readl (   efab,
  reg 
)    readl ( (efab)->membase + (reg) )

Definition at line 1191 of file etherfabric.c.

◆ FCN_DUMP_REG

#define FCN_DUMP_REG (   efab,
  _reg 
)
Value:
do { \
efab_oword_t reg; \
falcon_read ( efab, &reg, _reg ); \
EFAB_LOG ( #_reg " = " EFAB_OWORD_FMT "\n", \
} while ( 0 );
static unsigned int unsigned int reg
Definition: myson.h:162
#define EFAB_OWORD_VAL(oword)
printk parameters for printing an efab_oword_t
Definition: etherfabric.h:148
#define EFAB_OWORD_FMT
Format string for printing an efab_oword_t.
Definition: etherfabric.h:136

Definition at line 1291 of file etherfabric.c.

◆ FCN_DUMP_MAC_REG

#define FCN_DUMP_MAC_REG (   efab,
  _mac_reg 
)
Value:
do { \
efab_dword_t reg; \
efab->mac_op->mac_readl ( efab, &reg, _mac_reg ); \
EFAB_LOG ( #_mac_reg " = " EFAB_DWORD_FMT "\n", \
} while ( 0 );
static unsigned int unsigned int reg
Definition: myson.h:162
#define EFAB_DWORD_VAL(dword)
printk parameters for printing an efab_dword_t
Definition: etherfabric.h:139
#define EFAB_DWORD_FMT
Format string for printing an efab_dword_t.
Definition: etherfabric.h:130

Definition at line 1298 of file etherfabric.c.

◆ FALCON_SPI_MAX_LEN

#define FALCON_SPI_MAX_LEN   16

Maximum length for a single SPI transaction.

Definition at line 1397 of file etherfabric.c.

◆ GM_CFG1_REG_MAC

#define GM_CFG1_REG_MAC   0x00

Definition at line 1749 of file etherfabric.c.

◆ GM_SW_RST_LBN

#define GM_SW_RST_LBN   31

Definition at line 1750 of file etherfabric.c.

◆ GM_SW_RST_WIDTH

#define GM_SW_RST_WIDTH   1

Definition at line 1751 of file etherfabric.c.

◆ GM_RX_FC_EN_LBN

#define GM_RX_FC_EN_LBN   5

Definition at line 1752 of file etherfabric.c.

◆ GM_RX_FC_EN_WIDTH

#define GM_RX_FC_EN_WIDTH   1

Definition at line 1753 of file etherfabric.c.

◆ GM_TX_FC_EN_LBN

#define GM_TX_FC_EN_LBN   4

Definition at line 1754 of file etherfabric.c.

◆ GM_TX_FC_EN_WIDTH

#define GM_TX_FC_EN_WIDTH   1

Definition at line 1755 of file etherfabric.c.

◆ GM_RX_EN_LBN

#define GM_RX_EN_LBN   2

Definition at line 1756 of file etherfabric.c.

◆ GM_RX_EN_WIDTH

#define GM_RX_EN_WIDTH   1

Definition at line 1757 of file etherfabric.c.

◆ GM_TX_EN_LBN

#define GM_TX_EN_LBN   0

Definition at line 1758 of file etherfabric.c.

◆ GM_TX_EN_WIDTH

#define GM_TX_EN_WIDTH   1

Definition at line 1759 of file etherfabric.c.

◆ GM_CFG2_REG_MAC

#define GM_CFG2_REG_MAC   0x01

Definition at line 1762 of file etherfabric.c.

◆ GM_PAMBL_LEN_LBN

#define GM_PAMBL_LEN_LBN   12

Definition at line 1763 of file etherfabric.c.

◆ GM_PAMBL_LEN_WIDTH

#define GM_PAMBL_LEN_WIDTH   4

Definition at line 1764 of file etherfabric.c.

◆ GM_IF_MODE_LBN

#define GM_IF_MODE_LBN   8

Definition at line 1765 of file etherfabric.c.

◆ GM_IF_MODE_WIDTH

#define GM_IF_MODE_WIDTH   2

Definition at line 1766 of file etherfabric.c.

◆ GM_PAD_CRC_EN_LBN

#define GM_PAD_CRC_EN_LBN   2

Definition at line 1767 of file etherfabric.c.

◆ GM_PAD_CRC_EN_WIDTH

#define GM_PAD_CRC_EN_WIDTH   1

Definition at line 1768 of file etherfabric.c.

◆ GM_FD_LBN

#define GM_FD_LBN   0

Definition at line 1769 of file etherfabric.c.

◆ GM_FD_WIDTH

#define GM_FD_WIDTH   1

Definition at line 1770 of file etherfabric.c.

◆ GM_MAX_FLEN_REG_MAC

#define GM_MAX_FLEN_REG_MAC   0x04

Definition at line 1773 of file etherfabric.c.

◆ GM_MAX_FLEN_LBN

#define GM_MAX_FLEN_LBN   0

Definition at line 1774 of file etherfabric.c.

◆ GM_MAX_FLEN_WIDTH

#define GM_MAX_FLEN_WIDTH   16

Definition at line 1775 of file etherfabric.c.

◆ GM_MII_MGMT_CFG_REG_MAC

#define GM_MII_MGMT_CFG_REG_MAC   0x08

Definition at line 1778 of file etherfabric.c.

◆ GM_MGMT_CLK_SEL_LBN

#define GM_MGMT_CLK_SEL_LBN   0

Definition at line 1779 of file etherfabric.c.

◆ GM_MGMT_CLK_SEL_WIDTH

#define GM_MGMT_CLK_SEL_WIDTH   3

Definition at line 1780 of file etherfabric.c.

◆ GM_MII_MGMT_CMD_REG_MAC

#define GM_MII_MGMT_CMD_REG_MAC   0x09

Definition at line 1783 of file etherfabric.c.

◆ GM_MGMT_SCAN_CYC_LBN

#define GM_MGMT_SCAN_CYC_LBN   1

Definition at line 1784 of file etherfabric.c.

◆ GM_MGMT_SCAN_CYC_WIDTH

#define GM_MGMT_SCAN_CYC_WIDTH   1

Definition at line 1785 of file etherfabric.c.

◆ GM_MGMT_RD_CYC_LBN

#define GM_MGMT_RD_CYC_LBN   0

Definition at line 1786 of file etherfabric.c.

◆ GM_MGMT_RD_CYC_WIDTH

#define GM_MGMT_RD_CYC_WIDTH   1

Definition at line 1787 of file etherfabric.c.

◆ GM_MII_MGMT_ADR_REG_MAC

#define GM_MII_MGMT_ADR_REG_MAC   0x0a

Definition at line 1790 of file etherfabric.c.

◆ GM_MGMT_PHY_ADDR_LBN

#define GM_MGMT_PHY_ADDR_LBN   8

Definition at line 1791 of file etherfabric.c.

◆ GM_MGMT_PHY_ADDR_WIDTH

#define GM_MGMT_PHY_ADDR_WIDTH   5

Definition at line 1792 of file etherfabric.c.

◆ GM_MGMT_REG_ADDR_LBN

#define GM_MGMT_REG_ADDR_LBN   0

Definition at line 1793 of file etherfabric.c.

◆ GM_MGMT_REG_ADDR_WIDTH

#define GM_MGMT_REG_ADDR_WIDTH   5

Definition at line 1794 of file etherfabric.c.

◆ GM_MII_MGMT_CTL_REG_MAC

#define GM_MII_MGMT_CTL_REG_MAC   0x0b

Definition at line 1797 of file etherfabric.c.

◆ GM_MGMT_CTL_LBN

#define GM_MGMT_CTL_LBN   0

Definition at line 1798 of file etherfabric.c.

◆ GM_MGMT_CTL_WIDTH

#define GM_MGMT_CTL_WIDTH   16

Definition at line 1799 of file etherfabric.c.

◆ GM_MII_MGMT_STAT_REG_MAC

#define GM_MII_MGMT_STAT_REG_MAC   0x0c

Definition at line 1802 of file etherfabric.c.

◆ GM_MGMT_STAT_LBN

#define GM_MGMT_STAT_LBN   0

Definition at line 1803 of file etherfabric.c.

◆ GM_MGMT_STAT_WIDTH

#define GM_MGMT_STAT_WIDTH   16

Definition at line 1804 of file etherfabric.c.

◆ GM_MII_MGMT_IND_REG_MAC

#define GM_MII_MGMT_IND_REG_MAC   0x0d

Definition at line 1807 of file etherfabric.c.

◆ GM_MGMT_BUSY_LBN

#define GM_MGMT_BUSY_LBN   0

Definition at line 1808 of file etherfabric.c.

◆ GM_MGMT_BUSY_WIDTH

#define GM_MGMT_BUSY_WIDTH   1

Definition at line 1809 of file etherfabric.c.

◆ GM_ADR1_REG_MAC

#define GM_ADR1_REG_MAC   0x10

Definition at line 1812 of file etherfabric.c.

◆ GM_HWADDR_5_LBN

#define GM_HWADDR_5_LBN   24

Definition at line 1813 of file etherfabric.c.

◆ GM_HWADDR_5_WIDTH

#define GM_HWADDR_5_WIDTH   8

Definition at line 1814 of file etherfabric.c.

◆ GM_HWADDR_4_LBN

#define GM_HWADDR_4_LBN   16

Definition at line 1815 of file etherfabric.c.

◆ GM_HWADDR_4_WIDTH

#define GM_HWADDR_4_WIDTH   8

Definition at line 1816 of file etherfabric.c.

◆ GM_HWADDR_3_LBN

#define GM_HWADDR_3_LBN   8

Definition at line 1817 of file etherfabric.c.

◆ GM_HWADDR_3_WIDTH

#define GM_HWADDR_3_WIDTH   8

Definition at line 1818 of file etherfabric.c.

◆ GM_HWADDR_2_LBN

#define GM_HWADDR_2_LBN   0

Definition at line 1819 of file etherfabric.c.

◆ GM_HWADDR_2_WIDTH

#define GM_HWADDR_2_WIDTH   8

Definition at line 1820 of file etherfabric.c.

◆ GM_ADR2_REG_MAC

#define GM_ADR2_REG_MAC   0x11

Definition at line 1823 of file etherfabric.c.

◆ GM_HWADDR_1_LBN

#define GM_HWADDR_1_LBN   24

Definition at line 1824 of file etherfabric.c.

◆ GM_HWADDR_1_WIDTH

#define GM_HWADDR_1_WIDTH   8

Definition at line 1825 of file etherfabric.c.

◆ GM_HWADDR_0_LBN

#define GM_HWADDR_0_LBN   16

Definition at line 1826 of file etherfabric.c.

◆ GM_HWADDR_0_WIDTH

#define GM_HWADDR_0_WIDTH   8

Definition at line 1827 of file etherfabric.c.

◆ GMF_CFG0_REG_MAC

#define GMF_CFG0_REG_MAC   0x12

Definition at line 1830 of file etherfabric.c.

◆ GMF_FTFENREQ_LBN

#define GMF_FTFENREQ_LBN   12

Definition at line 1831 of file etherfabric.c.

◆ GMF_FTFENREQ_WIDTH

#define GMF_FTFENREQ_WIDTH   1

Definition at line 1832 of file etherfabric.c.

◆ GMF_STFENREQ_LBN

#define GMF_STFENREQ_LBN   11

Definition at line 1833 of file etherfabric.c.

◆ GMF_STFENREQ_WIDTH

#define GMF_STFENREQ_WIDTH   1

Definition at line 1834 of file etherfabric.c.

◆ GMF_FRFENREQ_LBN

#define GMF_FRFENREQ_LBN   10

Definition at line 1835 of file etherfabric.c.

◆ GMF_FRFENREQ_WIDTH

#define GMF_FRFENREQ_WIDTH   1

Definition at line 1836 of file etherfabric.c.

◆ GMF_SRFENREQ_LBN

#define GMF_SRFENREQ_LBN   9

Definition at line 1837 of file etherfabric.c.

◆ GMF_SRFENREQ_WIDTH

#define GMF_SRFENREQ_WIDTH   1

Definition at line 1838 of file etherfabric.c.

◆ GMF_WTMENREQ_LBN

#define GMF_WTMENREQ_LBN   8

Definition at line 1839 of file etherfabric.c.

◆ GMF_WTMENREQ_WIDTH

#define GMF_WTMENREQ_WIDTH   1

Definition at line 1840 of file etherfabric.c.

◆ GMF_CFG1_REG_MAC

#define GMF_CFG1_REG_MAC   0x13

Definition at line 1843 of file etherfabric.c.

◆ GMF_CFGFRTH_LBN

#define GMF_CFGFRTH_LBN   16

Definition at line 1844 of file etherfabric.c.

◆ GMF_CFGFRTH_WIDTH

#define GMF_CFGFRTH_WIDTH   5

Definition at line 1845 of file etherfabric.c.

◆ GMF_CFGXOFFRTX_LBN

#define GMF_CFGXOFFRTX_LBN   0

Definition at line 1846 of file etherfabric.c.

◆ GMF_CFGXOFFRTX_WIDTH

#define GMF_CFGXOFFRTX_WIDTH   16

Definition at line 1847 of file etherfabric.c.

◆ GMF_CFG2_REG_MAC

#define GMF_CFG2_REG_MAC   0x14

Definition at line 1850 of file etherfabric.c.

◆ GMF_CFGHWM_LBN

#define GMF_CFGHWM_LBN   16

Definition at line 1851 of file etherfabric.c.

◆ GMF_CFGHWM_WIDTH

#define GMF_CFGHWM_WIDTH   6

Definition at line 1852 of file etherfabric.c.

◆ GMF_CFGLWM_LBN

#define GMF_CFGLWM_LBN   0

Definition at line 1853 of file etherfabric.c.

◆ GMF_CFGLWM_WIDTH

#define GMF_CFGLWM_WIDTH   6

Definition at line 1854 of file etherfabric.c.

◆ GMF_CFG3_REG_MAC

#define GMF_CFG3_REG_MAC   0x15

Definition at line 1857 of file etherfabric.c.

◆ GMF_CFGHWMFT_LBN

#define GMF_CFGHWMFT_LBN   16

Definition at line 1858 of file etherfabric.c.

◆ GMF_CFGHWMFT_WIDTH

#define GMF_CFGHWMFT_WIDTH   6

Definition at line 1859 of file etherfabric.c.

◆ GMF_CFGFTTH_LBN

#define GMF_CFGFTTH_LBN   0

Definition at line 1860 of file etherfabric.c.

◆ GMF_CFGFTTH_WIDTH

#define GMF_CFGFTTH_WIDTH   6

Definition at line 1861 of file etherfabric.c.

◆ GMF_CFG4_REG_MAC

#define GMF_CFG4_REG_MAC   0x16

Definition at line 1864 of file etherfabric.c.

◆ GMF_HSTFLTRFRM_PAUSE_LBN

#define GMF_HSTFLTRFRM_PAUSE_LBN   12

Definition at line 1865 of file etherfabric.c.

◆ GMF_HSTFLTRFRM_PAUSE_WIDTH

#define GMF_HSTFLTRFRM_PAUSE_WIDTH   12

Definition at line 1866 of file etherfabric.c.

◆ GMF_CFG5_REG_MAC

#define GMF_CFG5_REG_MAC   0x17

Definition at line 1869 of file etherfabric.c.

◆ GMF_CFGHDPLX_LBN

#define GMF_CFGHDPLX_LBN   22

Definition at line 1870 of file etherfabric.c.

◆ GMF_CFGHDPLX_WIDTH

#define GMF_CFGHDPLX_WIDTH   1

Definition at line 1871 of file etherfabric.c.

◆ GMF_CFGBYTMODE_LBN

#define GMF_CFGBYTMODE_LBN   19

Definition at line 1872 of file etherfabric.c.

◆ GMF_CFGBYTMODE_WIDTH

#define GMF_CFGBYTMODE_WIDTH   1

Definition at line 1873 of file etherfabric.c.

◆ GMF_HSTDRPLT64_LBN

#define GMF_HSTDRPLT64_LBN   18

Definition at line 1874 of file etherfabric.c.

◆ GMF_HSTDRPLT64_WIDTH

#define GMF_HSTDRPLT64_WIDTH   1

Definition at line 1875 of file etherfabric.c.

◆ GMF_HSTFLTRFRMDC_PAUSE_LBN

#define GMF_HSTFLTRFRMDC_PAUSE_LBN   12

Definition at line 1876 of file etherfabric.c.

◆ GMF_HSTFLTRFRMDC_PAUSE_WIDTH

#define GMF_HSTFLTRFRMDC_PAUSE_WIDTH   1

Definition at line 1877 of file etherfabric.c.

◆ XFP_REQUIRED_DEVS

#define XFP_REQUIRED_DEVS
Value:
MDIO_MMDREG_DEVS0_PMAPMD | \
MDIO_MMDREG_DEVS0_PHYXS )
#define MDIO_MMDREG_DEVS0_PCS
Definition: etherfabric.c:241

Definition at line 2454 of file etherfabric.c.

◆ TXC_GLRGS_GLCMD

#define TXC_GLRGS_GLCMD   (0xc004)

Definition at line 2488 of file etherfabric.c.

◆ TXC_GLCMD_LMTSWRST_LBN

#define TXC_GLCMD_LMTSWRST_LBN   (14)

Definition at line 2489 of file etherfabric.c.

◆ TXC_ALRGS_ATXAMP0

#define TXC_ALRGS_ATXAMP0   (0xc041)

Definition at line 2492 of file etherfabric.c.

◆ TXC_ALRGS_ATXAMP1

#define TXC_ALRGS_ATXAMP1   (0xc042)

Definition at line 2493 of file etherfabric.c.

◆ TXC_ATXAMP_LANE02_LBN

#define TXC_ATXAMP_LANE02_LBN   (3)

Definition at line 2495 of file etherfabric.c.

◆ TXC_ATXAMP_LANE13_LBN

#define TXC_ATXAMP_LANE13_LBN   (11)

Definition at line 2496 of file etherfabric.c.

◆ TXC_ATXAMP_1280_mV

#define TXC_ATXAMP_1280_mV   (0)

Definition at line 2498 of file etherfabric.c.

◆ TXC_ATXAMP_1200_mV

#define TXC_ATXAMP_1200_mV   (8)

Definition at line 2499 of file etherfabric.c.

◆ TXC_ATXAMP_1120_mV

#define TXC_ATXAMP_1120_mV   (12)

Definition at line 2500 of file etherfabric.c.

◆ TXC_ATXAMP_1060_mV

#define TXC_ATXAMP_1060_mV   (14)

Definition at line 2501 of file etherfabric.c.

◆ TXC_ATXAMP_0820_mV

#define TXC_ATXAMP_0820_mV   (25)

Definition at line 2502 of file etherfabric.c.

◆ TXC_ATXAMP_0720_mV

#define TXC_ATXAMP_0720_mV   (26)

Definition at line 2503 of file etherfabric.c.

◆ TXC_ATXAMP_0580_mV

#define TXC_ATXAMP_0580_mV   (27)

Definition at line 2504 of file etherfabric.c.

◆ TXC_ATXAMP_0440_mV

#define TXC_ATXAMP_0440_mV   (28)

Definition at line 2505 of file etherfabric.c.

◆ TXC_ATXAMP_0820_BOTH

#define TXC_ATXAMP_0820_BOTH
Value:
#define TXC_ATXAMP_LANE13_LBN
Definition: etherfabric.c:2496
#define TXC_ATXAMP_LANE02_LBN
Definition: etherfabric.c:2495
#define TXC_ATXAMP_0820_mV
Definition: etherfabric.c:2502

Definition at line 2507 of file etherfabric.c.

◆ TXC_ATXAMP_DEFAULT

#define TXC_ATXAMP_DEFAULT   (0x6060) /* From databook */

Definition at line 2510 of file etherfabric.c.

◆ TXC_ALRGS_ATXPRE0

#define TXC_ALRGS_ATXPRE0   (0xc043)

Definition at line 2513 of file etherfabric.c.

◆ TXC_ALRGS_ATXPRE1

#define TXC_ALRGS_ATXPRE1   (0xc044)

Definition at line 2514 of file etherfabric.c.

◆ TXC_ATXPRE_NONE

#define TXC_ATXPRE_NONE   (0)

Definition at line 2516 of file etherfabric.c.

◆ TXC_ATXPRE_DEFAULT

#define TXC_ATXPRE_DEFAULT   (0x1010) /* From databook */

Definition at line 2517 of file etherfabric.c.

◆ TXC_REQUIRED_DEVS

#define TXC_REQUIRED_DEVS
Value:
MDIO_MMDREG_DEVS0_PMAPMD | \
MDIO_MMDREG_DEVS0_PHYXS )
#define MDIO_MMDREG_DEVS0_PCS
Definition: etherfabric.c:241

Definition at line 2519 of file etherfabric.c.

◆ TENXPRESS_REQUIRED_DEVS

#define TENXPRESS_REQUIRED_DEVS
Value:
MDIO_MMDREG_DEVS0_PCS | \
MDIO_MMDREG_DEVS0_PHYXS )
#define MDIO_MMDREG_DEVS0_PMAPMD
Definition: etherfabric.c:243

Definition at line 2617 of file etherfabric.c.

◆ PCS_TEST_SELECT_REG

#define PCS_TEST_SELECT_REG   0xd807 /* PRM 10.5.8 */

Definition at line 2621 of file etherfabric.c.

◆ CLK312_EN_LBN

#define CLK312_EN_LBN   3

Definition at line 2622 of file etherfabric.c.

◆ CLK312_EN_WIDTH

#define CLK312_EN_WIDTH   1

Definition at line 2623 of file etherfabric.c.

◆ PCS_CLOCK_CTRL_REG

#define PCS_CLOCK_CTRL_REG   0xd801

Definition at line 2625 of file etherfabric.c.

◆ PLL312_RST_N_LBN

#define PLL312_RST_N_LBN   2

Definition at line 2626 of file etherfabric.c.

◆ PMA_PMD_EXT_CTRL_REG

#define PMA_PMD_EXT_CTRL_REG   49152

Definition at line 2629 of file etherfabric.c.

◆ PMA_PMD_EXT_SSR_LBN

#define PMA_PMD_EXT_SSR_LBN   15

Definition at line 2630 of file etherfabric.c.

◆ PCS_BOOT_STATUS_REG

#define PCS_BOOT_STATUS_REG   0xd000

Definition at line 2633 of file etherfabric.c.

◆ PCS_BOOT_FATAL_ERR_LBN

#define PCS_BOOT_FATAL_ERR_LBN   0

Definition at line 2634 of file etherfabric.c.

◆ PCS_BOOT_PROGRESS_LBN

#define PCS_BOOT_PROGRESS_LBN   1

Definition at line 2635 of file etherfabric.c.

◆ PCS_BOOT_PROGRESS_WIDTH

#define PCS_BOOT_PROGRESS_WIDTH   2

Definition at line 2636 of file etherfabric.c.

◆ PCS_BOOT_COMPLETE_LBN

#define PCS_BOOT_COMPLETE_LBN   3

Definition at line 2637 of file etherfabric.c.

◆ PCS_SOFT_RST2_REG

#define PCS_SOFT_RST2_REG   0xd806

Definition at line 2639 of file etherfabric.c.

◆ SERDES_RST_N_LBN

#define SERDES_RST_N_LBN   13

Definition at line 2640 of file etherfabric.c.

◆ XGXS_RST_N_LBN

#define XGXS_RST_N_LBN   12

Definition at line 2641 of file etherfabric.c.

◆ PM8358_REQUIRED_DEVS

#define PM8358_REQUIRED_DEVS   (MDIO_MMDREG_DEVS0_DTEXS)

Definition at line 2713 of file etherfabric.c.

◆ PMC_MASTER_REG

#define PMC_MASTER_REG   (0xd000)

Definition at line 2717 of file etherfabric.c.

◆ PMC_MASTER_ANLG_CTRL

#define PMC_MASTER_ANLG_CTRL   (1<< 11)

Definition at line 2719 of file etherfabric.c.

◆ PMC_MCONF2_REG

#define PMC_MCONF2_REG   (0xd002)

Definition at line 2722 of file etherfabric.c.

◆ PMC_MCONF2_TEDGE

#define PMC_MCONF2_TEDGE   (1 << 2)

Definition at line 2724 of file etherfabric.c.

◆ PMC_MCONF2_REDGE

#define PMC_MCONF2_REDGE   (1 << 3)

Definition at line 2726 of file etherfabric.c.

◆ PMC_ANALOG_RX_CFG0

#define PMC_ANALOG_RX_CFG0   (0xd025)

Definition at line 2729 of file etherfabric.c.

◆ PMC_ANALOG_RX_CFG1

#define PMC_ANALOG_RX_CFG1   (0xd02d)

Definition at line 2730 of file etherfabric.c.

◆ PMC_ANALOG_RX_CFG2

#define PMC_ANALOG_RX_CFG2   (0xd035)

Definition at line 2731 of file etherfabric.c.

◆ PMC_ANALOG_RX_CFG3

#define PMC_ANALOG_RX_CFG3   (0xd03d)

Definition at line 2732 of file etherfabric.c.

◆ PMC_ANALOG_RX_TERM

#define PMC_ANALOG_RX_TERM
Value:
(1 << 15) /* Bit 15 of RX CFG: 0 for 100 ohms float,
1 for 50 to 1.2V */

Definition at line 2735 of file etherfabric.c.

◆ PMC_ANALOG_RX_EQ_MASK

#define PMC_ANALOG_RX_EQ_MASK   (3 << 8)

Definition at line 2737 of file etherfabric.c.

◆ PMC_ANALOG_RX_EQ_NONE

#define PMC_ANALOG_RX_EQ_NONE   (0 << 8)

Definition at line 2738 of file etherfabric.c.

◆ PMC_ANALOG_RX_EQ_HALF

#define PMC_ANALOG_RX_EQ_HALF   (1 << 8)

Definition at line 2739 of file etherfabric.c.

◆ PMC_ANALOG_RX_EQ_FULL

#define PMC_ANALOG_RX_EQ_FULL   (2 << 8)

Definition at line 2740 of file etherfabric.c.

◆ PMC_ANALOG_RX_EQ_RSVD

#define PMC_ANALOG_RX_EQ_RSVD   (3 << 8)

Definition at line 2741 of file etherfabric.c.

◆ MAX_TEMP_THRESH

#define MAX_TEMP_THRESH   90

Definition at line 2790 of file etherfabric.c.

◆ PCA9539

#define PCA9539   0x74

Definition at line 2793 of file etherfabric.c.

◆ P0_IN

#define P0_IN   0x00

Definition at line 2795 of file etherfabric.c.

◆ P0_OUT

#define P0_OUT   0x02

Definition at line 2796 of file etherfabric.c.

◆ P0_CONFIG

#define P0_CONFIG   0x06

Definition at line 2797 of file etherfabric.c.

◆ P0_EN_1V0X_LBN

#define P0_EN_1V0X_LBN   0

Definition at line 2799 of file etherfabric.c.

◆ P0_EN_1V0X_WIDTH

#define P0_EN_1V0X_WIDTH   1

Definition at line 2800 of file etherfabric.c.

◆ P0_EN_1V2_LBN

#define P0_EN_1V2_LBN   1

Definition at line 2801 of file etherfabric.c.

◆ P0_EN_1V2_WIDTH

#define P0_EN_1V2_WIDTH   1

Definition at line 2802 of file etherfabric.c.

◆ P0_EN_2V5_LBN

#define P0_EN_2V5_LBN   2

Definition at line 2803 of file etherfabric.c.

◆ P0_EN_2V5_WIDTH

#define P0_EN_2V5_WIDTH   1

Definition at line 2804 of file etherfabric.c.

◆ P0_EN_3V3X_LBN

#define P0_EN_3V3X_LBN   3

Definition at line 2805 of file etherfabric.c.

◆ P0_EN_3V3X_WIDTH

#define P0_EN_3V3X_WIDTH   1

Definition at line 2806 of file etherfabric.c.

◆ P0_EN_5V_LBN

#define P0_EN_5V_LBN   4

Definition at line 2807 of file etherfabric.c.

◆ P0_EN_5V_WIDTH

#define P0_EN_5V_WIDTH   1

Definition at line 2808 of file etherfabric.c.

◆ P0_X_TRST_LBN

#define P0_X_TRST_LBN   6

Definition at line 2809 of file etherfabric.c.

◆ P0_X_TRST_WIDTH

#define P0_X_TRST_WIDTH   1

Definition at line 2810 of file etherfabric.c.

◆ P1_IN

#define P1_IN   0x01

Definition at line 2812 of file etherfabric.c.

◆ P1_CONFIG

#define P1_CONFIG   0x07

Definition at line 2813 of file etherfabric.c.

◆ P1_AFE_PWD_LBN

#define P1_AFE_PWD_LBN   0

Definition at line 2815 of file etherfabric.c.

◆ P1_AFE_PWD_WIDTH

#define P1_AFE_PWD_WIDTH   1

Definition at line 2816 of file etherfabric.c.

◆ P1_DSP_PWD25_LBN

#define P1_DSP_PWD25_LBN   1

Definition at line 2817 of file etherfabric.c.

◆ P1_DSP_PWD25_WIDTH

#define P1_DSP_PWD25_WIDTH   1

Definition at line 2818 of file etherfabric.c.

◆ P1_SPARE_LBN

#define P1_SPARE_LBN   4

Definition at line 2819 of file etherfabric.c.

◆ P1_SPARE_WIDTH

#define P1_SPARE_WIDTH   4

Definition at line 2820 of file etherfabric.c.

◆ MAX6647

#define MAX6647   0x4e

Definition at line 2823 of file etherfabric.c.

◆ RSL

#define RSL   0x02

Definition at line 2825 of file etherfabric.c.

◆ RLHN

#define RLHN   0x05

Definition at line 2826 of file etherfabric.c.

◆ WLHO

#define WLHO   0x0b

Definition at line 2827 of file etherfabric.c.

◆ FALCON_MAC_ADDRESS_OFFSET

#define FALCON_MAC_ADDRESS_OFFSET   0x310

Offset of MAC address within EEPROM or Flash.

Definition at line 3144 of file etherfabric.c.

◆ SF_NV_CONFIG_BASE

#define SF_NV_CONFIG_BASE   0x300

Definition at line 3149 of file etherfabric.c.

◆ SF_NV_CONFIG_EXTRA

#define SF_NV_CONFIG_EXTRA   0xA0

Definition at line 3150 of file etherfabric.c.

◆ BOARD_TYPE

#define BOARD_TYPE (   _rev)    (_rev >> 8)

Definition at line 3172 of file etherfabric.c.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL_ANY  )

◆ falcon_mdio_write()

static void falcon_mdio_write ( struct efab_nic efab,
int  device,
int  location,
int  value 
)
static

Definition at line 1590 of file etherfabric.c.

1592 {
1593  efab_oword_t reg;
1594 
1595  EFAB_TRACE ( "Writing GMII %d register %02x with %04x\n",
1596  device, location, value );
1597 
1598  /* Check MII not currently being accessed */
1599  if ( falcon_gmii_wait ( efab ) )
1600  return;
1601 
1602  /* Write the address/ID register */
1603  EFAB_POPULATE_OWORD_1 ( reg, FCN_MD_PHY_ADR, location );
1605 
1606  if ( efab->phy_10g ) {
1607  /* clause45 */
1609  FCN_MD_PRT_ADR, efab->phy_addr,
1610  FCN_MD_DEV_ADR, device );
1611  }
1612  else {
1613  /* clause22 */
1614  assert ( device == 0 );
1615 
1617  FCN_MD_PRT_ADR, efab->phy_addr,
1618  FCN_MD_DEV_ADR, location );
1619  }
1620  falcon_write ( efab, &reg, FCN_MD_ID_REG_KER );
1621 
1622 
1623  /* Write data */
1624  EFAB_POPULATE_OWORD_1 ( reg, FCN_MD_TXD, value );
1625  falcon_write ( efab, &reg, FCN_MD_TXD_REG_KER );
1626 
1628  FCN_MD_WRC, 1,
1629  FCN_MD_GC, ( efab->phy_10g ? 0 : 1 ) );
1630  falcon_write ( efab, &reg, FCN_MD_CS_REG_KER );
1631 
1632  /* Wait for data to be written */
1633  if ( falcon_gmii_wait ( efab ) ) {
1634  /* Abort the write operation */
1636  FCN_MD_WRC, 0,
1637  FCN_MD_GC, 1);
1638  falcon_write ( efab, &reg, FCN_MD_CS_REG_KER );
1639  udelay(10);
1640  }
1641 }
#define FCN_MD_TXD_REG_KER
Definition: etherfabric.c:744
static unsigned int unsigned int reg
Definition: myson.h:162
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
#define EFAB_POPULATE_OWORD_2(oword,...)
Definition: etherfabric.h:399
A hardware device.
Definition: device.h:73
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
#define FCN_MD_CS_REG_KER
Definition: etherfabric.c:754
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
#define EFAB_POPULATE_OWORD_1(oword,...)
Definition: etherfabric.h:401
#define FCN_MD_PHY_ADR_REG_KER
Definition: etherfabric.c:765
An octword (eight-word, i.e.
Definition: etherfabric.h:122
static int falcon_gmii_wait(struct efab_nic *efab)
Definition: etherfabric.c:1564
#define FCN_MD_ID_REG_KER
Definition: etherfabric.c:770

References assert(), EFAB_POPULATE_OWORD_1, EFAB_POPULATE_OWORD_2, EFAB_TRACE, falcon_gmii_wait(), falcon_write(), FCN_MD_CS_REG_KER, FCN_MD_ID_REG_KER, FCN_MD_PHY_ADR_REG_KER, FCN_MD_TXD_REG_KER, efab_nic::phy_10g, efab_nic::phy_addr, reg, udelay(), and value.

Referenced by falcon_pm8358_phy_init(), falcon_tenxpress_phy_init(), falcon_txc_logic_reset(), falcon_txc_phy_init(), and mdio_clause45_reset_mmd().

◆ falcon_mdio_read()

static int falcon_mdio_read ( struct efab_nic efab,
int  device,
int  location 
)
static

Definition at line 1644 of file etherfabric.c.

1645 {
1646  efab_oword_t reg;
1647  int value;
1648 
1649  /* Check MII not currently being accessed */
1650  if ( falcon_gmii_wait ( efab ) )
1651  return -1;
1652 
1653  if ( efab->phy_10g ) {
1654  /* clause45 */
1655  EFAB_POPULATE_OWORD_1 ( reg, FCN_MD_PHY_ADR, location );
1657 
1659  FCN_MD_PRT_ADR, efab->phy_addr,
1660  FCN_MD_DEV_ADR, device );
1661  falcon_write ( efab, &reg, FCN_MD_ID_REG_KER);
1662 
1663  /* request data to be read */
1665  FCN_MD_RDC, 1,
1666  FCN_MD_GC, 0 );
1667  }
1668  else {
1669  /* clause22 */
1670  assert ( device == 0 );
1671 
1673  FCN_MD_PRT_ADR, efab->phy_addr,
1674  FCN_MD_DEV_ADR, location );
1675  falcon_write ( efab, &reg, FCN_MD_ID_REG_KER );
1676 
1677  /* Request data to be read */
1679  FCN_MD_RIC, 1,
1680  FCN_MD_GC, 1 );
1681  }
1682 
1683  falcon_write ( efab, &reg, FCN_MD_CS_REG_KER );
1684 
1685  /* Wait for data to become available */
1686  if ( falcon_gmii_wait ( efab ) ) {
1687  /* Abort the read operation */
1689  FCN_MD_RIC, 0,
1690  FCN_MD_GC, 1 );
1691  falcon_write ( efab, &reg, FCN_MD_CS_REG_KER );
1692  udelay ( 10 );
1693  value = -1;
1694  }
1695  else {
1696  /* Read the data */
1697  falcon_read ( efab, &reg, FCN_MD_RXD_REG_KER );
1698  value = EFAB_OWORD_FIELD ( reg, FCN_MD_RXD );
1699  }
1700 
1701  EFAB_TRACE ( "Read from GMII %d register %02x, got %04x\n",
1702  device, location, value );
1703 
1704  return value;
1705 }
#define EFAB_OWORD_FIELD
Definition: etherfabric.h:274
static unsigned int unsigned int reg
Definition: myson.h:162
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
#define EFAB_POPULATE_OWORD_2(oword,...)
Definition: etherfabric.h:399
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
A hardware device.
Definition: device.h:73
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
#define FCN_MD_CS_REG_KER
Definition: etherfabric.c:754
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
#define EFAB_POPULATE_OWORD_1(oword,...)
Definition: etherfabric.h:401
#define FCN_MD_PHY_ADR_REG_KER
Definition: etherfabric.c:765
An octword (eight-word, i.e.
Definition: etherfabric.h:122
static int falcon_gmii_wait(struct efab_nic *efab)
Definition: etherfabric.c:1564
#define FCN_MD_ID_REG_KER
Definition: etherfabric.c:770
#define FCN_MD_RXD_REG_KER
Definition: etherfabric.c:749

References assert(), EFAB_OWORD_FIELD, EFAB_POPULATE_OWORD_1, EFAB_POPULATE_OWORD_2, EFAB_TRACE, falcon_gmii_wait(), falcon_read(), falcon_write(), FCN_MD_CS_REG_KER, FCN_MD_ID_REG_KER, FCN_MD_PHY_ADR_REG_KER, FCN_MD_RXD_REG_KER, efab_nic::phy_10g, efab_nic::phy_addr, reg, udelay(), and value.

Referenced by falcon_pm8358_phy_init(), falcon_tenxpress_check_c11(), falcon_txc_logic_reset(), falcon_xaui_link_ok(), gmii_autoneg_advertised(), gmii_autoneg_lpa(), gmii_link_ok(), mdio_clause45_check_mmds(), mdio_clause45_links_ok(), mdio_clause45_reset_mmd(), and mdio_clause45_wait_reset_mmds().

◆ gmii_autoneg_advertised()

static unsigned int gmii_autoneg_advertised ( struct efab_nic efab)
static

Retrieve GMII autonegotiation advertised abilities.

Definition at line 113 of file etherfabric.c.

114 {
115  unsigned int mii_advertise;
116  unsigned int gmii_advertise;
117 
118  /* Extended bits are in bits 8 and 9 of MII_CTRL1000 */
119  mii_advertise = falcon_mdio_read ( efab, 0, MII_ADVERTISE );
120  gmii_advertise = ( ( falcon_mdio_read ( efab, 0, MII_CTRL1000 ) >> 8 )
121  & 0x03 );
122  return ( ( gmii_advertise << 16 ) | mii_advertise );
123 }
#define MII_ADVERTISE
Definition: atl1e.h:875
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
#define MII_CTRL1000
Definition: mii.h:24

References falcon_mdio_read(), MII_ADVERTISE, and MII_CTRL1000.

Referenced by alaska_init().

◆ gmii_autoneg_lpa()

static unsigned int gmii_autoneg_lpa ( struct efab_nic efab)
static

Retrieve GMII autonegotiation link partner abilities.

Definition at line 130 of file etherfabric.c.

131 {
132  unsigned int mii_lpa;
133  unsigned int gmii_lpa;
134 
135  /* Extended bits are in bits 10 and 11 of MII_STAT1000 */
136  mii_lpa = falcon_mdio_read ( efab, 0, MII_LPA );
137  gmii_lpa = ( falcon_mdio_read ( efab, 0, MII_STAT1000 ) >> 10 ) & 0x03;
138  return ( ( gmii_lpa << 16 ) | mii_lpa );
139 }
#define MII_LPA
Definition: atl1e.h:876
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
#define MII_STAT1000
Definition: mii.h:25

References falcon_mdio_read(), MII_LPA, and MII_STAT1000.

Referenced by alaska_init().

◆ gmii_nway_result()

static unsigned int gmii_nway_result ( unsigned int  negotiated)
static

Calculate GMII autonegotiated link technology.

Definition at line 146 of file etherfabric.c.

147 {
148  unsigned int other_bits;
149 
150  /* Mask out the speed and duplexity bits */
151  other_bits = negotiated & LPA_OTHER;
152 
153  if ( negotiated & LPA_EF_1000FULL )
154  return ( other_bits | LPA_EF_1000FULL );
155  else if ( negotiated & LPA_EF_1000HALF )
156  return ( other_bits | LPA_EF_1000HALF );
157  else if ( negotiated & LPA_100FULL )
158  return ( other_bits | LPA_100FULL );
159  else if ( negotiated & LPA_100BASE4 )
160  return ( other_bits | LPA_100BASE4 );
161  else if ( negotiated & LPA_100HALF )
162  return ( other_bits | LPA_100HALF );
163  else if ( negotiated & LPA_10FULL )
164  return ( other_bits | LPA_10FULL );
165  else return ( other_bits | LPA_10HALF );
166 }
#define LPA_10HALF
Definition: mii.h:97
#define LPA_OTHER
Definition: etherfabric.c:102
#define LPA_100HALF
Definition: mii.h:101
#define LPA_EF_1000HALF
Definition: etherfabric.c:92
#define LPA_EF_1000FULL
Definition: etherfabric.c:91
#define LPA_100FULL
Definition: mii.h:103
#define LPA_10FULL
Definition: mii.h:99
#define LPA_100BASE4
Definition: mii.h:105

References LPA_100BASE4, LPA_100FULL, LPA_100HALF, LPA_10FULL, LPA_10HALF, LPA_EF_1000FULL, LPA_EF_1000HALF, and LPA_OTHER.

Referenced by alaska_init().

◆ gmii_link_ok()

static int gmii_link_ok ( struct efab_nic efab)
static

Check GMII PHY link status.

Definition at line 173 of file etherfabric.c.

174 {
175  int status;
176  int phy_status;
177 
178  /* BMSR is latching - it returns "link down" if the link has
179  * been down at any point since the last read. To get a
180  * real-time status, we therefore read the register twice and
181  * use the result of the second read.
182  */
183  (void) falcon_mdio_read ( efab, 0, MII_BMSR );
184  status = falcon_mdio_read ( efab, 0, MII_BMSR );
185 
186  /* Read the PHY-specific Status Register. This is
187  * non-latching, so we need do only a single read.
188  */
189  phy_status = falcon_mdio_read ( efab, 0, GMII_PSSR );
190 
191  return ( ( status & BMSR_LSTATUS ) && ( phy_status & PSSR_LSTATUS ) );
192 }
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
#define GMII_PSSR
Definition: etherfabric.c:88
#define BMSR_LSTATUS
Definition: mii.h:57
#define PSSR_LSTATUS
Definition: etherfabric.c:106
uint8_t status
Status.
Definition: ena.h:16
#define MII_BMSR
Definition: atl1e.h:872

References BMSR_LSTATUS, falcon_mdio_read(), GMII_PSSR, MII_BMSR, PSSR_LSTATUS, and status.

Referenced by alaska_init().

◆ mdio_clause45_wait_reset_mmds()

static int mdio_clause45_wait_reset_mmds ( struct efab_nic efab)
static

Definition at line 265 of file etherfabric.c.

266 {
267  int tries = MDIO45_RESET_TRIES;
268  int in_reset;
269 
270  while(tries) {
271  int mask = efab->phy_op->mmds;
272  int mmd = 0;
273  in_reset = 0;
274  while(mask) {
275  if (mask & 1) {
276  int stat = falcon_mdio_read ( efab, mmd,
278  if (stat < 0) {
279  EFAB_ERR("Failed to read status of MMD %d\n",
280  mmd );
281  in_reset = 1;
282  break;
283  }
284  if (stat & (1 << MDIO_MMDREG_CTRL1_RESET_LBN))
285  in_reset |= (1 << mmd);
286  }
287  mask = mask >> 1;
288  mmd++;
289  }
290  if (!in_reset)
291  break;
292  tries--;
294  }
295  if (in_reset != 0) {
296  EFAB_ERR("Not all MMDs came out of reset in time. MMDs "
297  "still in reset: %x\n", in_reset);
298  return -ETIMEDOUT;
299  }
300  return 0;
301 }
#define MDIO45_RESET_TRIES
Definition: etherfabric.c:261
struct efab_phy_operations * phy_op
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
#define MDIO_MMDREG_CTRL1
Definition: etherfabric.c:218
void mdelay(unsigned long msecs)
Delay for a fixed number of milliseconds.
Definition: timer.c:78
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define MDIO_MMDREG_CTRL1_RESET_LBN
Definition: etherfabric.c:225
#define MDIO45_RESET_SPINTIME
Definition: etherfabric.c:262
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669

References EFAB_ERR, ETIMEDOUT, falcon_mdio_read(), mdelay(), MDIO45_RESET_SPINTIME, MDIO45_RESET_TRIES, MDIO_MMDREG_CTRL1, MDIO_MMDREG_CTRL1_RESET_LBN, efab_phy_operations::mmds, and efab_nic::phy_op.

Referenced by falcon_tenxpress_phy_init().

◆ mdio_clause45_reset_mmd()

static int mdio_clause45_reset_mmd ( struct efab_nic efab,
int  mmd 
)
static

Definition at line 304 of file etherfabric.c.

305 {
306  int tries = MDIO45_RESET_TRIES;
307  int ctrl;
308 
310  ( 1 << MDIO_MMDREG_CTRL1_RESET_LBN ) );
311 
312  /* Wait for the reset bit to clear. */
313  do {
315 
316  ctrl = falcon_mdio_read ( efab, mmd, MDIO_MMDREG_CTRL1 );
317  if ( ~ctrl & ( 1 << MDIO_MMDREG_CTRL1_RESET_LBN ) )
318  return 0;
319  } while ( --tries );
320 
321  EFAB_ERR ( "Failed to reset mmd %d\n", mmd );
322 
323  return -ETIMEDOUT;
324 }
#define MDIO45_RESET_TRIES
Definition: etherfabric.c:261
static void falcon_mdio_write(struct efab_nic *efab, int device, int location, int value)
Definition: etherfabric.c:1590
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
#define MDIO_MMDREG_CTRL1
Definition: etherfabric.c:218
void mdelay(unsigned long msecs)
Delay for a fixed number of milliseconds.
Definition: timer.c:78
u8 ctrl
Definition: sky2.h:10
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define MDIO_MMDREG_CTRL1_RESET_LBN
Definition: etherfabric.c:225
#define MDIO45_RESET_SPINTIME
Definition: etherfabric.c:262
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669

References ctrl, EFAB_ERR, ETIMEDOUT, falcon_mdio_read(), falcon_mdio_write(), mdelay(), MDIO45_RESET_SPINTIME, MDIO45_RESET_TRIES, MDIO_MMDREG_CTRL1, and MDIO_MMDREG_CTRL1_RESET_LBN.

Referenced by falcon_pm8358_phy_init(), falcon_txc_phy_init(), and falcon_xfp_phy_init().

◆ mdio_clause45_links_ok()

static int mdio_clause45_links_ok ( struct efab_nic efab)
static

Definition at line 327 of file etherfabric.c.

328 {
329  int status, good;
330  int ok = 1;
331  int mmd = 0;
332  int mmd_mask = efab->phy_op->mmds;
333 
334  while (mmd_mask) {
335  if (mmd_mask & 1) {
336  /* Double reads because link state is latched, and a
337  * read moves the current state into the register */
338  status = falcon_mdio_read ( efab, mmd,
340  status = falcon_mdio_read ( efab, mmd,
342 
343  good = status & (1 << MDIO_MMDREG_STAT1_LINK_LBN);
344  ok = ok && good;
345  }
346  mmd_mask = (mmd_mask >> 1);
347  mmd++;
348  }
349  return ok;
350 }
struct efab_phy_operations * phy_op
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
uint8_t status
Status.
Definition: ena.h:16
#define MDIO_MMDREG_STAT1
Definition: etherfabric.c:219
#define ok(success)
Definition: test.h:46
#define MDIO_MMDREG_STAT1_LINK_LBN
Definition: etherfabric.c:233

References falcon_mdio_read(), MDIO_MMDREG_STAT1, MDIO_MMDREG_STAT1_LINK_LBN, efab_phy_operations::mmds, ok, efab_nic::phy_op, and status.

Referenced by falcon_init_xmac().

◆ mdio_clause45_check_mmds()

static int mdio_clause45_check_mmds ( struct efab_nic efab)
static

Definition at line 353 of file etherfabric.c.

354 {
355  int mmd = 0;
356  int devices = falcon_mdio_read ( efab, MDIO_MMD_PHYXS,
358  int mmd_mask = efab->phy_op->mmds;
359 
360  /* Check all the expected MMDs are present */
361  if ( devices < 0 ) {
362  EFAB_ERR ( "Failed to read devices present\n" );
363  return -EIO;
364  }
365  if ( ( devices & mmd_mask ) != mmd_mask ) {
366  EFAB_ERR ( "required MMDs not present: got %x, wanted %x\n",
367  devices, mmd_mask );
368  return -EIO;
369  }
370 
371  /* Check all required MMDs are responding and happy. */
372  while ( mmd_mask ) {
373  if ( mmd_mask & 1 ) {
375  int status;
376  reg.opaque = falcon_mdio_read ( efab, mmd,
379  MDIO_MMDREG_STAT2_PRESENT );
381 
382 
383  return -EIO;
384  }
385  }
386  mmd_mask >>= 1;
387  mmd++;
388  }
389 
390  return 0;
391 }
static unsigned int unsigned int reg
Definition: myson.h:162
struct efab_phy_operations * phy_op
A doubleword (i.e.
Definition: etherfabric.h:102
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
#define MDIO_MMDREG_STAT2
Definition: etherfabric.c:221
#define MDIO_MMD_PHYXS
Definition: etherfabric.c:209
#define MDIO_MMDREG_STAT2_PRESENT_VAL
Definition: etherfabric.c:248
uint8_t status
Status.
Definition: ena.h:16
#define MDIO_MMDREG_DEVS0
Definition: etherfabric.c:220
#define EIO
Input/output error.
Definition: errno.h:433
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define EFAB_DWORD_FIELD(dword, field)
Definition: etherfabric.h:229

References EFAB_DWORD_FIELD, EFAB_ERR, EIO, falcon_mdio_read(), MDIO_MMD_PHYXS, MDIO_MMDREG_DEVS0, MDIO_MMDREG_STAT2, MDIO_MMDREG_STAT2_PRESENT_VAL, efab_phy_operations::mmds, efab_nic::phy_op, reg, and status.

Referenced by falcon_tenxpress_phy_init(), and falcon_txc_phy_init().

◆ falcon_write()

static void falcon_write ( struct efab_nic efab,
efab_oword_t value,
unsigned int  reg 
)
inlinestatic

Write to a Falcon register.

Definition at line 1200 of file etherfabric.c.

1201 {
1202 
1203  EFAB_REGDUMP ( "Writing register %x with " EFAB_OWORD_FMT "\n",
1204  reg, EFAB_OWORD_VAL ( *value ) );
1205 
1206  _falcon_writel ( efab, value->u32[0], reg + 0 );
1207  _falcon_writel ( efab, value->u32[1], reg + 4 );
1208  _falcon_writel ( efab, value->u32[2], reg + 8 );
1209  wmb();
1210  _falcon_writel ( efab, value->u32[3], reg + 12 );
1211  wmb();
1212 }
wmb()
static unsigned int unsigned int reg
Definition: myson.h:162
#define EFAB_REGDUMP(...)
Definition: etherfabric.c:46
#define EFAB_OWORD_VAL(oword)
printk parameters for printing an efab_oword_t
Definition: etherfabric.h:148
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
#define _falcon_writel(efab, value, reg)
Definition: etherfabric.c:1189
#define EFAB_OWORD_FMT
Format string for printing an efab_oword_t.
Definition: etherfabric.h:136

References _falcon_writel, EFAB_OWORD_FMT, EFAB_OWORD_VAL, EFAB_REGDUMP, reg, value, and wmb().

Referenced by clear_b0_fpga_memories(), falcon_fini_resources(), falcon_gmac_writel(), falcon_i2c_bit_write(), falcon_init_resources(), falcon_init_sram(), falcon_interrupts(), falcon_mdio_read(), falcon_mdio_write(), falcon_reconfigure_mac_wrapper(), falcon_reset(), falcon_setup_nic(), falcon_spi_rw(), and falcon_xmac_writel().

◆ falcon_write_sram()

static void falcon_write_sram ( struct efab_nic efab,
efab_qword_t value,
unsigned int  index 
)
inlinestatic

Write to Falcon SRAM.

Definition at line 1219 of file etherfabric.c.

1221 {
1222  unsigned int reg = ( FCN_REVISION_REG ( efab, FCN_BUF_FULL_TBL_KER ) +
1223  ( index * sizeof ( *value ) ) );
1224 
1225  EFAB_REGDUMP ( "Writing SRAM register %x with " EFAB_QWORD_FMT "\n",
1226  reg, EFAB_QWORD_VAL ( *value ) );
1227 
1228  _falcon_writel ( efab, value->u32[0], reg + 0 );
1229  _falcon_writel ( efab, value->u32[1], reg + 4 );
1230  wmb();
1231 }
wmb()
static unsigned int unsigned int reg
Definition: myson.h:162
#define EFAB_REGDUMP(...)
Definition: etherfabric.c:46
long index
Definition: bigint.h:62
#define EFAB_QWORD_FMT
Format string for printing an efab_qword_t.
Definition: etherfabric.h:133
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
#define _falcon_writel(efab, value, reg)
Definition: etherfabric.c:1189
#define FCN_REVISION_REG(efab, reg)
Definition: etherfabric.c:1162
#define EFAB_QWORD_VAL(qword)
printk parameters for printing an efab_qword_t
Definition: etherfabric.h:143

References _falcon_writel, EFAB_QWORD_FMT, EFAB_QWORD_VAL, EFAB_REGDUMP, FCN_REVISION_REG, index, reg, value, and wmb().

Referenced by falcon_alloc_special_buffer().

◆ falcon_writel()

static void falcon_writel ( struct efab_nic efab,
efab_dword_t value,
unsigned int  reg 
)
inlinestatic

Write dword to Falcon register that allows partial writes.

Definition at line 1238 of file etherfabric.c.

1239 {
1240  EFAB_REGDUMP ( "Writing partial register %x with " EFAB_DWORD_FMT "\n",
1241  reg, EFAB_DWORD_VAL ( *value ) );
1242  _falcon_writel ( efab, value->u32[0], reg );
1243 }
static unsigned int unsigned int reg
Definition: myson.h:162
#define EFAB_REGDUMP(...)
Definition: etherfabric.c:46
#define EFAB_DWORD_VAL(dword)
printk parameters for printing an efab_dword_t
Definition: etherfabric.h:139
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
#define _falcon_writel(efab, value, reg)
Definition: etherfabric.c:1189
#define EFAB_DWORD_FMT
Format string for printing an efab_dword_t.
Definition: etherfabric.h:130

References _falcon_writel, EFAB_DWORD_FMT, EFAB_DWORD_VAL, EFAB_REGDUMP, reg, and value.

Referenced by falcon_clear_interrupts(), falcon_eventq_read_ack(), falcon_notify_rx_desc(), falcon_notify_tx_desc(), and falcon_setup_nic().

◆ falcon_read()

static void falcon_read ( struct efab_nic efab,
efab_oword_t value,
unsigned int  reg 
)
inlinestatic

Read from a Falcon register.

Definition at line 1250 of file etherfabric.c.

1251 {
1252  value->u32[0] = _falcon_readl ( efab, reg + 0 );
1253  wmb();
1254  value->u32[1] = _falcon_readl ( efab, reg + 4 );
1255  value->u32[2] = _falcon_readl ( efab, reg + 8 );
1256  value->u32[3] = _falcon_readl ( efab, reg + 12 );
1257 
1258  EFAB_REGDUMP ( "Read from register %x, got " EFAB_OWORD_FMT "\n",
1259  reg, EFAB_OWORD_VAL ( *value ) );
1260 }
wmb()
static unsigned int unsigned int reg
Definition: myson.h:162
#define EFAB_REGDUMP(...)
Definition: etherfabric.c:46
#define EFAB_OWORD_VAL(oword)
printk parameters for printing an efab_oword_t
Definition: etherfabric.h:148
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
#define _falcon_readl(efab, reg)
Definition: etherfabric.c:1191
#define EFAB_OWORD_FMT
Format string for printing an efab_oword_t.
Definition: etherfabric.h:136

References _falcon_readl, EFAB_OWORD_FMT, EFAB_OWORD_VAL, EFAB_REGDUMP, reg, value, and wmb().

Referenced by falcon_gmac_readl(), falcon_i2c_bit_read(), falcon_i2c_bit_write(), falcon_init_sram(), falcon_mdio_read(), falcon_probe_nic_variant(), falcon_probe_spi(), falcon_reset(), falcon_setup_nic(), falcon_spi_rw(), falcon_spi_wait(), and falcon_xmac_readl().

◆ falcon_read_sram()

static void falcon_read_sram ( struct efab_nic efab,
efab_qword_t value,
unsigned int  index 
)
inlinestatic

Read from Falcon SRAM.

Definition at line 1267 of file etherfabric.c.

1269 {
1270  unsigned int reg = ( FCN_REVISION_REG ( efab, FCN_BUF_FULL_TBL_KER ) +
1271  ( index * sizeof ( *value ) ) );
1272 
1273  value->u32[0] = _falcon_readl ( efab, reg + 0 );
1274  value->u32[1] = _falcon_readl ( efab, reg + 4 );
1275  EFAB_REGDUMP ( "Read from SRAM register %x, got " EFAB_QWORD_FMT "\n",
1276  reg, EFAB_QWORD_VAL ( *value ) );
1277 }
static unsigned int unsigned int reg
Definition: myson.h:162
#define EFAB_REGDUMP(...)
Definition: etherfabric.c:46
long index
Definition: bigint.h:62
#define EFAB_QWORD_FMT
Format string for printing an efab_qword_t.
Definition: etherfabric.h:133
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
#define FCN_REVISION_REG(efab, reg)
Definition: etherfabric.c:1162
#define _falcon_readl(efab, reg)
Definition: etherfabric.c:1191
#define EFAB_QWORD_VAL(qword)
printk parameters for printing an efab_qword_t
Definition: etherfabric.h:143

References _falcon_readl, EFAB_QWORD_FMT, EFAB_QWORD_VAL, EFAB_REGDUMP, FCN_REVISION_REG, index, reg, and value.

◆ falcon_readl()

static void falcon_readl ( struct efab_nic efab,
efab_dword_t value,
unsigned int  reg 
)
inlinestatic

Read dword from a portion of a Falcon register.

Definition at line 1284 of file etherfabric.c.

1285 {
1286  value->u32[0] = _falcon_readl ( efab, reg );
1287  EFAB_REGDUMP ( "Read from register %x, got " EFAB_DWORD_FMT "\n",
1288  reg, EFAB_DWORD_VAL ( *value ) );
1289 }
static unsigned int unsigned int reg
Definition: myson.h:162
#define EFAB_REGDUMP(...)
Definition: etherfabric.c:46
#define EFAB_DWORD_VAL(dword)
printk parameters for printing an efab_dword_t
Definition: etherfabric.h:139
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
#define EFAB_DWORD_FMT
Format string for printing an efab_dword_t.
Definition: etherfabric.h:130
#define _falcon_readl(efab, reg)
Definition: etherfabric.c:1191

References _falcon_readl, EFAB_DWORD_FMT, EFAB_DWORD_VAL, EFAB_REGDUMP, reg, and value.

Referenced by falcon_clear_interrupts(), and falcon_gmii_wait().

◆ falcon_event_present()

static int falcon_event_present ( falcon_event_t event)
inlinestatic

See if an event is present.

Parameters
eventFalcon event structure
Return values
TrueAn event is pending
FalseNo event is pending

We check both the high and low dword of the event for all ones. We wrote all ones when we cleared the event, and no valid event can have all ones in either its high or low dwords. This approach is robust against reordering.

Note that using a single 64-bit comparison is incorrect; even though the CPU read will be atomic, the DMA write may not be.

Definition at line 1321 of file etherfabric.c.

1322 {
1323  return ( ! ( EFAB_DWORD_IS_ALL_ONES ( event->dword[0] ) |
1324  EFAB_DWORD_IS_ALL_ONES ( event->dword[1] ) ) );
1325 }
#define EFAB_DWORD_IS_ALL_ONES(dword)
Definition: etherfabric.h:263
efab_dword_t dword[2]
Definition: etherfabric.h:114

References efab_qword::dword, and EFAB_DWORD_IS_ALL_ONES.

Referenced by efab_poll().

◆ falcon_eventq_read_ack()

static void falcon_eventq_read_ack ( struct efab_nic efab,
struct efab_ev_queue ev_queue 
)
static

Definition at line 1328 of file etherfabric.c.

1329 {
1330  efab_dword_t reg;
1331 
1332  EFAB_POPULATE_DWORD_1 ( reg, FCN_EVQ_RPTR_DWORD, ev_queue->read_ptr );
1333  falcon_writel ( efab, &reg,
1334  FCN_REVISION_REG ( efab, FCN_EVQ_RPTR_REG_KER_DWORD ) );
1335 }
static unsigned int unsigned int reg
Definition: myson.h:162
A doubleword (i.e.
Definition: etherfabric.h:102
static void falcon_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int reg)
Write dword to Falcon register that allows partial writes.
Definition: etherfabric.c:1238
#define FCN_REVISION_REG(efab, reg)
Definition: etherfabric.c:1162
unsigned int read_ptr
#define EFAB_POPULATE_DWORD_1(dword,...)
Definition: etherfabric.h:457

References EFAB_POPULATE_DWORD_1, falcon_writel(), FCN_REVISION_REG, efab_ev_queue::read_ptr, and reg.

Referenced by efab_irq(), efab_poll(), and falcon_init_resources().

◆ falcon_interrupts()

static void falcon_interrupts ( struct efab_nic efab,
int  enabled,
int  force 
)
static

Definition at line 1377 of file etherfabric.c.

1378 {
1379  efab_oword_t int_en_reg_ker;
1380 
1381  EFAB_POPULATE_OWORD_2 ( int_en_reg_ker,
1382  FCN_KER_INT_KER, force,
1383  FCN_DRV_INT_EN_KER, enabled );
1384  falcon_write ( efab, &int_en_reg_ker, FCN_INT_EN_REG_KER );
1385 }
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
#define FCN_INT_EN_REG_KER
Definition: etherfabric.c:411
uint32_t enabled
Bitmask of enabled AENQ groups (host -> device)
Definition: ena.h:14
#define EFAB_POPULATE_OWORD_2(oword,...)
Definition: etherfabric.h:399
An octword (eight-word, i.e.
Definition: etherfabric.h:122

References EFAB_POPULATE_OWORD_2, enabled, falcon_write(), and FCN_INT_EN_REG_KER.

Referenced by efab_irq(), and falcon_fini_resources().

◆ falcon_spi_wait()

static int falcon_spi_wait ( struct efab_nic efab)
static

Definition at line 1400 of file etherfabric.c.

1401 {
1402  efab_oword_t reg;
1403  int count;
1404 
1405  count = 0;
1406  do {
1407  udelay ( 100 );
1408  falcon_read ( efab, &reg, FCN_EE_SPI_HCMD_REG );
1409  if ( EFAB_OWORD_FIELD ( reg, FCN_EE_SPI_HCMD_CMD_EN ) == 0 )
1410  return 0;
1411  } while ( ++count < 1000 );
1412 
1413  EFAB_ERR ( "Timed out waiting for SPI\n" );
1414  return -ETIMEDOUT;
1415 }
#define EFAB_OWORD_FIELD
Definition: etherfabric.h:274
static unsigned int unsigned int reg
Definition: myson.h:162
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
uint16_t count
Number of entries.
Definition: ena.h:22
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define FCN_EE_SPI_HCMD_REG
Definition: etherfabric.c:448
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669

References count, EFAB_ERR, EFAB_OWORD_FIELD, ETIMEDOUT, falcon_read(), FCN_EE_SPI_HCMD_REG, reg, and udelay().

Referenced by falcon_spi_rw().

◆ falcon_spi_rw()

static int falcon_spi_rw ( struct spi_bus bus,
struct spi_device device,
unsigned int  command,
int  address,
const void *  data_out,
void *  data_in,
size_t  len 
)
static

Definition at line 1418 of file etherfabric.c.

1421 {
1422  struct efab_nic *efab = container_of ( bus, struct efab_nic, spi_bus );
1424  efab_oword_t reg;
1425 
1426  /* falcon_init_spi_device() should have reduced the block size
1427  * down so this constraint holds */
1428  assert ( len <= FALCON_SPI_MAX_LEN );
1429 
1430  /* Is this the FLASH or EEPROM device? */
1431  if ( device == &efab->spi_flash )
1433  else if ( device == &efab->spi_eeprom )
1435  else {
1436  EFAB_ERR ( "Unknown device %p\n", device );
1437  return -EINVAL;
1438  }
1439 
1440  EFAB_TRACE ( "Executing spi command %d on device %d at %d for %zd bytes\n",
1442 
1443  /* The bus must be idle */
1444  rc = falcon_spi_wait ( efab );
1445  if ( rc )
1446  goto fail1;
1447 
1448  /* Copy data out */
1449  if ( data_out ) {
1450  memcpy ( &reg, data_out, len );
1452  }
1453 
1454  /* Program address register */
1455  if ( address >= 0 ) {
1456  EFAB_POPULATE_OWORD_1 ( reg, FCN_EE_SPI_HADR_ADR, address );
1457  falcon_write ( efab, &reg, FCN_EE_SPI_HADR_REG );
1458  }
1459 
1460  /* Issue command */
1461  address_len = ( address >= 0 ) ? device->address_len / 8 : 0;
1462  read_cmd = ( data_in ? FCN_EE_SPI_READ : FCN_EE_SPI_WRITE );
1464  FCN_EE_SPI_HCMD_CMD_EN, 1,
1465  FCN_EE_SPI_HCMD_SF_SEL, device_id,
1466  FCN_EE_SPI_HCMD_DABCNT, len,
1467  FCN_EE_SPI_HCMD_READ, read_cmd,
1468  FCN_EE_SPI_HCMD_DUBCNT, 0,
1469  FCN_EE_SPI_HCMD_ADBCNT, address_len,
1470  FCN_EE_SPI_HCMD_ENC, command );
1471  falcon_write ( efab, &reg, FCN_EE_SPI_HCMD_REG );
1472 
1473  /* Wait for the command to complete */
1474  rc = falcon_spi_wait ( efab );
1475  if ( rc )
1476  goto fail2;
1477 
1478  /* Copy data in */
1479  if ( data_in ) {
1480  falcon_read ( efab, &reg, FCN_EE_SPI_HDATA_REG );
1481  memcpy ( data_in, &reg, len );
1482  }
1483 
1484  return 0;
1485 
1486 fail2:
1487 fail1:
1488  EFAB_ERR ( "Failed SPI command %d to device %d address 0x%x len 0x%zx\n",
1490 
1491  return rc;
1492 }
#define EINVAL
Invalid argument.
Definition: errno.h:428
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
#define FALCON_SPI_MAX_LEN
Maximum length for a single SPI transaction.
Definition: etherfabric.c:1397
static int falcon_spi_wait(struct efab_nic *efab)
Definition: etherfabric.c:1400
#define FCN_EE_SPI_HADR_REG
Definition: etherfabric.c:471
static unsigned int unsigned int reg
Definition: myson.h:162
uint16_t device_id
Definition: ib_mad.h:19
A command-line command.
Definition: command.h:9
uint64_t address
Base address.
Definition: ena.h:24
#define FCN_EE_SPI_READ
Definition: etherfabric.c:461
An SPI bus.
Definition: spi.h:126
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
#define FCN_EE_SPI_FLASH
Definition: etherfabric.c:456
device address_len
Definition: threewire.h:73
struct spi_device spi_eeprom
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
A hardware device.
Definition: device.h:73
void * memcpy(void *dest, const void *src, size_t len) __nonnull
#define FCN_EE_SPI_HDATA_REG
Definition: etherfabric.c:478
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
#define container_of(ptr, type, field)
Get containing structure.
Definition: stddef.h:35
#define EFAB_POPULATE_OWORD_7(oword,...)
Definition: etherfabric.h:389
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
#define EFAB_POPULATE_OWORD_1(oword,...)
Definition: etherfabric.h:401
struct spi_device spi_flash
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define FCN_EE_SPI_WRITE
Definition: etherfabric.c:462
#define FCN_EE_SPI_EEPROM
Definition: etherfabric.c:455
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define FCN_EE_SPI_HCMD_REG
Definition: etherfabric.c:448
static struct command_descriptor read_cmd
"read" command descriptor
Definition: nvo_cmd.c:134
uint32_t len
Length.
Definition: ena.h:14
uint8_t bus
Bus.
Definition: edd.h:14

References address, address_len, assert(), bus, container_of, device_id, EFAB_ERR, EFAB_POPULATE_OWORD_1, EFAB_POPULATE_OWORD_7, EFAB_TRACE, EINVAL, falcon_read(), FALCON_SPI_MAX_LEN, falcon_spi_wait(), falcon_write(), FCN_EE_SPI_EEPROM, FCN_EE_SPI_FLASH, FCN_EE_SPI_HADR_REG, FCN_EE_SPI_HCMD_REG, FCN_EE_SPI_HDATA_REG, FCN_EE_SPI_READ, FCN_EE_SPI_WRITE, len, memcpy(), rc, read_cmd, reg, efab_nic::spi_eeprom, and efab_nic::spi_flash.

Referenced by falcon_probe_spi().

◆ falcon_i2c_bit_write()

static void falcon_i2c_bit_write ( struct bit_basher basher,
unsigned int  bit_id,
unsigned long  data 
)
static

Definition at line 1503 of file etherfabric.c.

1505 {
1506  struct efab_nic *efab = container_of ( basher, struct efab_nic,
1507  i2c_bb.basher );
1508  efab_oword_t reg;
1509 
1510  falcon_read ( efab, &reg, FCN_GPIO_CTL_REG_KER );
1511  switch ( bit_id ) {
1512  case I2C_BIT_SCL:
1513  EFAB_SET_OWORD_FIELD ( reg, FCN_GPIO0_OEN, ( data ? 0 : 1 ) );
1514  break;
1515  case I2C_BIT_SDA:
1516  EFAB_SET_OWORD_FIELD ( reg, FCN_GPIO3_OEN, ( data ? 0 : 1 ) );
1517  break;
1518  default:
1519  EFAB_ERR ( "%s bit=%d\n", __func__, bit_id );
1520  break;
1521  }
1522 
1524 }
static unsigned int unsigned int reg
Definition: myson.h:162
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
#define EFAB_SET_OWORD_FIELD
Definition: etherfabric.h:531
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
#define container_of(ptr, type, field)
Get containing structure.
Definition: stddef.h:35
struct bit_basher basher
Bit-bashing interface.
Definition: i2c.h:95
Serial data.
Definition: i2c.h:116
Serial clock.
Definition: i2c.h:114
An octword (eight-word, i.e.
Definition: etherfabric.h:122
uint8_t data[48]
Additional event data.
Definition: ena.h:22
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define FCN_GPIO_CTL_REG_KER
Definition: etherfabric.c:535
struct i2c_bit_basher i2c_bb

References i2c_bit_basher::basher, container_of, data, EFAB_ERR, EFAB_SET_OWORD_FIELD, falcon_read(), falcon_write(), FCN_GPIO_CTL_REG_KER, efab_nic::i2c_bb, I2C_BIT_SCL, I2C_BIT_SDA, and reg.

◆ falcon_i2c_bit_read()

static int falcon_i2c_bit_read ( struct bit_basher basher,
unsigned int  bit_id 
)
static

Definition at line 1527 of file etherfabric.c.

1528 {
1529  struct efab_nic *efab = container_of ( basher, struct efab_nic,
1530  i2c_bb.basher );
1531  efab_oword_t reg;
1532 
1533  falcon_read ( efab, &reg, FCN_GPIO_CTL_REG_KER );
1534  switch ( bit_id ) {
1535  case I2C_BIT_SCL:
1536  return EFAB_OWORD_FIELD ( reg, FCN_GPIO0_IN );
1537  break;
1538  case I2C_BIT_SDA:
1539  return EFAB_OWORD_FIELD ( reg, FCN_GPIO3_IN );
1540  break;
1541  default:
1542  EFAB_ERR ( "%s bit=%d\n", __func__, bit_id );
1543  break;
1544  }
1545 
1546  return -1;
1547 }
#define EFAB_OWORD_FIELD
Definition: etherfabric.h:274
static unsigned int unsigned int reg
Definition: myson.h:162
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
#define container_of(ptr, type, field)
Get containing structure.
Definition: stddef.h:35
struct bit_basher basher
Bit-bashing interface.
Definition: i2c.h:95
Serial data.
Definition: i2c.h:116
Serial clock.
Definition: i2c.h:114
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define FCN_GPIO_CTL_REG_KER
Definition: etherfabric.c:535
struct i2c_bit_basher i2c_bb

References i2c_bit_basher::basher, container_of, EFAB_ERR, EFAB_OWORD_FIELD, falcon_read(), FCN_GPIO_CTL_REG_KER, efab_nic::i2c_bb, I2C_BIT_SCL, I2C_BIT_SDA, and reg.

◆ falcon_gmii_wait()

static int falcon_gmii_wait ( struct efab_nic efab)
static

Definition at line 1564 of file etherfabric.c.

1565 {
1566  efab_dword_t md_stat;
1567  int count;
1568 
1569  /* wait up to 10ms */
1570  for (count = 0; count < 1000; count++) {
1571  falcon_readl ( efab, &md_stat, FCN_MD_STAT_REG_KER );
1572  if ( EFAB_DWORD_FIELD ( md_stat, FCN_MD_BSY ) == 0 ) {
1573  if ( EFAB_DWORD_FIELD ( md_stat, FCN_MD_LNFL ) != 0 ||
1574  EFAB_DWORD_FIELD ( md_stat, FCN_MD_BSERR ) != 0 ) {
1575  EFAB_ERR ( "Error from GMII access "
1576  EFAB_DWORD_FMT"\n",
1577  EFAB_DWORD_VAL ( md_stat ));
1578  return -EIO;
1579  }
1580  return 0;
1581  }
1582  udelay(10);
1583  }
1584 
1585  EFAB_ERR ( "Timed out waiting for GMII\n" );
1586  return -ETIMEDOUT;
1587 }
static void falcon_readl(struct efab_nic *efab, efab_dword_t *value, unsigned int reg)
Read dword from a portion of a Falcon register.
Definition: etherfabric.c:1284
A doubleword (i.e.
Definition: etherfabric.h:102
#define FCN_MD_STAT_REG_KER
Definition: etherfabric.c:777
#define EFAB_DWORD_VAL(dword)
printk parameters for printing an efab_dword_t
Definition: etherfabric.h:139
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
uint16_t count
Number of entries.
Definition: ena.h:22
#define EFAB_DWORD_FMT
Format string for printing an efab_dword_t.
Definition: etherfabric.h:130
#define EIO
Input/output error.
Definition: errno.h:433
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669
#define EFAB_DWORD_FIELD(dword, field)
Definition: etherfabric.h:229

References count, EFAB_DWORD_FIELD, EFAB_DWORD_FMT, EFAB_DWORD_VAL, EFAB_ERR, EIO, ETIMEDOUT, falcon_readl(), FCN_MD_STAT_REG_KER, and udelay().

Referenced by falcon_mdio_read(), and falcon_mdio_write().

◆ falcon_reconfigure_mac_wrapper()

static void falcon_reconfigure_mac_wrapper ( struct efab_nic efab)
static

Definition at line 1716 of file etherfabric.c.

1717 {
1718  efab_oword_t reg;
1719  int link_speed;
1720 
1721  if ( efab->link_options & LPA_EF_10000 ) {
1722  link_speed = 0x3;
1723  } else if ( efab->link_options & LPA_EF_1000 ) {
1724  link_speed = 0x2;
1725  } else if ( efab->link_options & LPA_100 ) {
1726  link_speed = 0x1;
1727  } else {
1728  link_speed = 0x0;
1729  }
1731  FCN_MAC_XOFF_VAL, 0xffff /* datasheet */,
1732  FCN_MAC_BCAD_ACPT, 1,
1733  FCN_MAC_UC_PROM, 0,
1734  FCN_MAC_LINK_STATUS, 1,
1735  FCN_MAC_SPEED, link_speed );
1736 
1738 }
static unsigned int unsigned int reg
Definition: myson.h:162
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
#define LPA_EF_1000
Definition: etherfabric.c:96
#define LPA_100
Definition: mii.h:114
unsigned int link_options
GMII link options.
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define FCN_MAC0_CTRL_REG_KER
Definition: etherfabric.c:790
#define LPA_EF_10000
Definition: etherfabric.c:97
#define EFAB_POPULATE_OWORD_5(oword,...)
Definition: etherfabric.h:393

References EFAB_POPULATE_OWORD_5, falcon_write(), FCN_MAC0_CTRL_REG_KER, efab_nic::link_options, LPA_100, LPA_EF_1000, LPA_EF_10000, and reg.

Referenced by falcon_init_gmac(), and falcon_init_xmac().

◆ falcon_gmac_writel()

static void falcon_gmac_writel ( struct efab_nic efab,
efab_dword_t value,
unsigned int  mac_reg 
)
static

Definition at line 1880 of file etherfabric.c.

1882 {
1883  efab_oword_t temp;
1884 
1885  EFAB_POPULATE_OWORD_1 ( temp, FCN_MAC_DATA,
1886  EFAB_DWORD_FIELD ( *value, FCN_MAC_DATA ) );
1887  falcon_write ( efab, &temp, FALCON_GMAC_REG ( efab, mac_reg ) );
1888 }
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
#define EFAB_POPULATE_OWORD_1(oword,...)
Definition: etherfabric.h:401
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define FALCON_GMAC_REG(efab, mac_reg)
Offset of a GMAC register within Falcon.
Definition: etherfabric.c:1106
#define EFAB_DWORD_FIELD(dword, field)
Definition: etherfabric.h:229

References EFAB_DWORD_FIELD, EFAB_POPULATE_OWORD_1, FALCON_GMAC_REG, falcon_write(), and value.

Referenced by mentormac_init(), and mentormac_reset().

◆ falcon_gmac_readl()

static void falcon_gmac_readl ( struct efab_nic efab,
efab_dword_t value,
unsigned int  mac_reg 
)
static

Definition at line 1891 of file etherfabric.c.

1893 {
1894  efab_oword_t temp;
1895 
1896  falcon_read ( efab, &temp, FALCON_GMAC_REG ( efab, mac_reg ) );
1897  EFAB_POPULATE_DWORD_1 ( *value, FCN_MAC_DATA,
1898  EFAB_OWORD_FIELD ( temp, FCN_MAC_DATA ) );
1899 }
#define EFAB_OWORD_FIELD
Definition: etherfabric.h:274
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define FALCON_GMAC_REG(efab, mac_reg)
Offset of a GMAC register within Falcon.
Definition: etherfabric.c:1106
#define EFAB_POPULATE_DWORD_1(dword,...)
Definition: etherfabric.h:457

References EFAB_OWORD_FIELD, EFAB_POPULATE_DWORD_1, FALCON_GMAC_REG, falcon_read(), and value.

Referenced by mentormac_init().

◆ mentormac_reset()

static void mentormac_reset ( struct efab_nic efab)
static

Definition at line 1902 of file etherfabric.c.

1903 {
1904  efab_dword_t reg;
1905 
1906  /* Take into reset */
1907  EFAB_POPULATE_DWORD_1 ( reg, GM_SW_RST, 1 );
1909  udelay ( 1000 );
1910 
1911  /* Take out of reset */
1912  EFAB_POPULATE_DWORD_1 ( reg, GM_SW_RST, 0 );
1914  udelay ( 1000 );
1915 
1916  /* Configure GMII interface so PHY is accessible. Note that
1917  * GMII interface is connected only to port 0, and that on
1918  * Falcon this is a no-op.
1919  */
1920  EFAB_POPULATE_DWORD_1 ( reg, GM_MGMT_CLK_SEL, 0x4 );
1922  udelay ( 10 );
1923 }
static unsigned int unsigned int reg
Definition: myson.h:162
A doubleword (i.e.
Definition: etherfabric.h:102
static void falcon_gmac_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Definition: etherfabric.c:1880
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
#define GM_CFG1_REG_MAC
Definition: etherfabric.c:1749
#define EFAB_POPULATE_DWORD_1(dword,...)
Definition: etherfabric.h:457
#define GM_MII_MGMT_CFG_REG_MAC
Definition: etherfabric.c:1778

References EFAB_POPULATE_DWORD_1, falcon_gmac_writel(), GM_CFG1_REG_MAC, GM_MII_MGMT_CFG_REG_MAC, reg, and udelay().

Referenced by falcon_init_gmac().

◆ mentormac_init()

static void mentormac_init ( struct efab_nic efab)
static

Definition at line 1926 of file etherfabric.c.

1927 {
1928  int pause, if_mode, full_duplex, bytemode, half_duplex;
1929  efab_dword_t reg;
1930 
1931  /* Configuration register 1 */
1932  pause = ( efab->link_options & LPA_PAUSE_CAP ) ? 1 : 0;
1933  if ( ! ( efab->link_options & LPA_EF_DUPLEX ) ) {
1934  /* Half-duplex operation requires TX flow control */
1935  pause = 1;
1936  }
1938  GM_TX_EN, 1,
1939  GM_TX_FC_EN, pause,
1940  GM_RX_EN, 1,
1941  GM_RX_FC_EN, 1 );
1943  udelay ( 10 );
1944 
1945  /* Configuration register 2 */
1946  if_mode = ( efab->link_options & LPA_EF_1000 ) ? 2 : 1;
1947  full_duplex = ( efab->link_options & LPA_EF_DUPLEX ) ? 1 : 0;
1949  GM_IF_MODE, if_mode,
1950  GM_PAD_CRC_EN, 1,
1951  GM_FD, full_duplex,
1952  GM_PAMBL_LEN, 0x7 /* ? */ );
1954  udelay ( 10 );
1955 
1956  /* Max frame len register */
1957  EFAB_POPULATE_DWORD_1 ( reg, GM_MAX_FLEN,
1960  udelay ( 10 );
1961 
1962  /* FIFO configuration register 0 */
1964  GMF_FTFENREQ, 1,
1965  GMF_STFENREQ, 1,
1966  GMF_FRFENREQ, 1,
1967  GMF_SRFENREQ, 1,
1968  GMF_WTMENREQ, 1 );
1970  udelay ( 10 );
1971 
1972  /* FIFO configuration register 1 */
1974  GMF_CFGFRTH, 0x12,
1975  GMF_CFGXOFFRTX, 0xffff );
1977  udelay ( 10 );
1978 
1979  /* FIFO configuration register 2 */
1981  GMF_CFGHWM, 0x3f,
1982  GMF_CFGLWM, 0xa );
1984  udelay ( 10 );
1985 
1986  /* FIFO configuration register 3 */
1988  GMF_CFGHWMFT, 0x1c,
1989  GMF_CFGFTTH, 0x08 );
1991  udelay ( 10 );
1992 
1993  /* FIFO configuration register 4 */
1994  EFAB_POPULATE_DWORD_1 ( reg, GMF_HSTFLTRFRM_PAUSE, 1 );
1996  udelay ( 10 );
1997 
1998  /* FIFO configuration register 5 */
1999  bytemode = ( efab->link_options & LPA_EF_1000 ) ? 1 : 0;
2000  half_duplex = ( efab->link_options & LPA_EF_DUPLEX ) ? 0 : 1;
2002  EFAB_SET_DWORD_FIELD ( reg, GMF_CFGBYTMODE, bytemode );
2003  EFAB_SET_DWORD_FIELD ( reg, GMF_CFGHDPLX, half_duplex );
2004  EFAB_SET_DWORD_FIELD ( reg, GMF_HSTDRPLT64, half_duplex );
2005  EFAB_SET_DWORD_FIELD ( reg, GMF_HSTFLTRFRMDC_PAUSE, 0 );
2007  udelay ( 10 );
2008 
2009  /* MAC address */
2011  GM_HWADDR_5, efab->mac_addr[5],
2012  GM_HWADDR_4, efab->mac_addr[4],
2013  GM_HWADDR_3, efab->mac_addr[3],
2014  GM_HWADDR_2, efab->mac_addr[2] );
2016  udelay ( 10 );
2018  GM_HWADDR_1, efab->mac_addr[1],
2019  GM_HWADDR_0, efab->mac_addr[0] );
2021  udelay ( 10 );
2022 }
#define LPA_PAUSE_CAP
Definition: mii.h:106
uint8_t mac_addr[ETH_ALEN]
MAC address.
static unsigned int unsigned int reg
Definition: myson.h:162
#define EFAB_POPULATE_DWORD_5(dword,...)
Definition: etherfabric.h:449
A doubleword (i.e.
Definition: etherfabric.h:102
#define EFAB_SET_DWORD_FIELD(dword, field, value)
Definition: etherfabric.h:521
#define GM_MAX_FLEN_REG_MAC
Definition: etherfabric.c:1773
#define LPA_EF_1000
Definition: etherfabric.c:96
static void falcon_gmac_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Definition: etherfabric.c:1880
#define EFAB_MAX_FRAME_LEN(mtu)
Definition: etherfabric.c:73
#define GMF_CFG5_REG_MAC
Definition: etherfabric.c:1869
#define ETH_FRAME_LEN
Definition: if_ether.h:11
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
#define GM_ADR2_REG_MAC
Definition: etherfabric.c:1823
#define GMF_CFG1_REG_MAC
Definition: etherfabric.c:1843
#define EFAB_POPULATE_DWORD_2(dword,...)
Definition: etherfabric.h:455
unsigned int link_options
GMII link options.
#define GMF_CFG4_REG_MAC
Definition: etherfabric.c:1864
#define GM_CFG1_REG_MAC
Definition: etherfabric.c:1749
#define GMF_CFG3_REG_MAC
Definition: etherfabric.c:1857
static void falcon_gmac_readl(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Definition: etherfabric.c:1891
#define EFAB_POPULATE_DWORD_4(dword,...)
Definition: etherfabric.h:451
#define GMF_CFG2_REG_MAC
Definition: etherfabric.c:1850
#define EFAB_POPULATE_DWORD_1(dword,...)
Definition: etherfabric.h:457
#define GMF_CFG0_REG_MAC
Definition: etherfabric.c:1830
#define GM_ADR1_REG_MAC
Definition: etherfabric.c:1812
#define LPA_EF_DUPLEX
Definition: etherfabric.c:98
#define GM_CFG2_REG_MAC
Definition: etherfabric.c:1762

References EFAB_MAX_FRAME_LEN, EFAB_POPULATE_DWORD_1, EFAB_POPULATE_DWORD_2, EFAB_POPULATE_DWORD_4, EFAB_POPULATE_DWORD_5, EFAB_SET_DWORD_FIELD, ETH_FRAME_LEN, falcon_gmac_readl(), falcon_gmac_writel(), GM_ADR1_REG_MAC, GM_ADR2_REG_MAC, GM_CFG1_REG_MAC, GM_CFG2_REG_MAC, GM_MAX_FLEN_REG_MAC, GMF_CFG0_REG_MAC, GMF_CFG1_REG_MAC, GMF_CFG2_REG_MAC, GMF_CFG3_REG_MAC, GMF_CFG4_REG_MAC, GMF_CFG5_REG_MAC, efab_nic::link_options, LPA_EF_1000, LPA_EF_DUPLEX, LPA_PAUSE_CAP, efab_nic::mac_addr, reg, and udelay().

Referenced by falcon_init_gmac().

◆ falcon_init_gmac()

static int falcon_init_gmac ( struct efab_nic efab)
static

Definition at line 2025 of file etherfabric.c.

2026 {
2027  /* Reset the MAC */
2028  mentormac_reset ( efab );
2029 
2030  /* Initialise PHY */
2031  efab->phy_op->init ( efab );
2032 
2033  /* check the link is up */
2034  if ( !efab->link_up )
2035  return -EAGAIN;
2036 
2037  /* Initialise MAC */
2038  mentormac_init ( efab );
2039 
2040  /* reconfigure the MAC wrapper */
2042 
2043  return 0;
2044 }
static void falcon_reconfigure_mac_wrapper(struct efab_nic *efab)
Definition: etherfabric.c:1716
static void mentormac_reset(struct efab_nic *efab)
Definition: etherfabric.c:1902
struct efab_phy_operations * phy_op
int link_up
Link status.
#define EAGAIN
Resource temporarily unavailable.
Definition: errno.h:318
static void mentormac_init(struct efab_nic *efab)
Definition: etherfabric.c:1926
int(* init)(struct efab_nic *efab)

References EAGAIN, falcon_reconfigure_mac_wrapper(), efab_phy_operations::init, efab_nic::link_up, mentormac_init(), mentormac_reset(), and efab_nic::phy_op.

◆ falcon_xmac_writel()

static void falcon_xmac_writel ( struct efab_nic efab,
efab_dword_t value,
unsigned int  mac_reg 
)
static

Write dword to a Falcon XMAC register.

Definition at line 2064 of file etherfabric.c.

2066 {
2067  efab_oword_t temp;
2068 
2069  EFAB_POPULATE_OWORD_1 ( temp, FCN_MAC_DATA,
2070  EFAB_DWORD_FIELD ( *value, FCN_MAC_DATA ) );
2071  falcon_write ( efab, &temp,
2072  FALCON_XMAC_REG ( efab, mac_reg ) );
2073 }
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
#define EFAB_POPULATE_OWORD_1(oword,...)
Definition: etherfabric.h:401
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define FALCON_XMAC_REG(efab_port, mac_reg)
Offset of an XMAC register within Falcon.
Definition: etherfabric.c:1111
#define EFAB_DWORD_FIELD(dword, field)
Definition: etherfabric.h:229

References EFAB_DWORD_FIELD, EFAB_POPULATE_OWORD_1, falcon_write(), FALCON_XMAC_REG, and value.

Referenced by falcon_reconfigure_xmac(), falcon_reset_xaui(), falcon_reset_xmac(), falcon_setup_xaui(), falcon_xaui_link_ok(), and sfe4001_init().

◆ falcon_xmac_readl()

static void falcon_xmac_readl ( struct efab_nic efab,
efab_dword_t value,
unsigned int  mac_reg 
)
static

Read dword from a Falcon XMAC register.

Definition at line 2080 of file etherfabric.c.

2082 {
2083  efab_oword_t temp;
2084 
2085  falcon_read ( efab, &temp,
2086  FALCON_XMAC_REG ( efab, mac_reg ) );
2087  EFAB_POPULATE_DWORD_1 ( *value, FCN_MAC_DATA,
2088  EFAB_OWORD_FIELD ( temp, FCN_MAC_DATA ) );
2089 }
#define EFAB_OWORD_FIELD
Definition: etherfabric.h:274
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define FALCON_XMAC_REG(efab_port, mac_reg)
Offset of an XMAC register within Falcon.
Definition: etherfabric.c:1111
#define EFAB_POPULATE_DWORD_1(dword,...)
Definition: etherfabric.h:457

References EFAB_OWORD_FIELD, EFAB_POPULATE_DWORD_1, falcon_read(), FALCON_XMAC_REG, and value.

Referenced by falcon_mask_status_intr(), falcon_reset_xaui(), falcon_reset_xmac(), falcon_setup_xaui(), falcon_xaui_link_ok(), and falcon_xgmii_status().

◆ falcon_setup_xaui()

static void falcon_setup_xaui ( struct efab_nic efab)
static

Configure Falcon XAUI output.

Definition at line 2095 of file etherfabric.c.

2096 {
2097  efab_dword_t sdctl, txdrv;
2098 
2099  falcon_xmac_readl ( efab, &sdctl, FCN_XX_SD_CTL_REG_MAC );
2100  EFAB_SET_DWORD_FIELD ( sdctl, FCN_XX_HIDRVD, XX_SD_CTL_DRV_DEFAULT );
2101  EFAB_SET_DWORD_FIELD ( sdctl, FCN_XX_LODRVD, XX_SD_CTL_DRV_DEFAULT );
2102  EFAB_SET_DWORD_FIELD ( sdctl, FCN_XX_HIDRVC, XX_SD_CTL_DRV_DEFAULT );
2103  EFAB_SET_DWORD_FIELD ( sdctl, FCN_XX_LODRVC, XX_SD_CTL_DRV_DEFAULT );
2104  EFAB_SET_DWORD_FIELD ( sdctl, FCN_XX_HIDRVB, XX_SD_CTL_DRV_DEFAULT );
2105  EFAB_SET_DWORD_FIELD ( sdctl, FCN_XX_LODRVB, XX_SD_CTL_DRV_DEFAULT );
2106  EFAB_SET_DWORD_FIELD ( sdctl, FCN_XX_HIDRVA, XX_SD_CTL_DRV_DEFAULT );
2107  EFAB_SET_DWORD_FIELD ( sdctl, FCN_XX_LODRVA, XX_SD_CTL_DRV_DEFAULT );
2108  falcon_xmac_writel ( efab, &sdctl, FCN_XX_SD_CTL_REG_MAC );
2109 
2110  EFAB_POPULATE_DWORD_8 ( txdrv,
2111  FCN_XX_DEQD, XX_TXDRV_DEQ_DEFAULT,
2112  FCN_XX_DEQC, XX_TXDRV_DEQ_DEFAULT,
2113  FCN_XX_DEQB, XX_TXDRV_DEQ_DEFAULT,
2114  FCN_XX_DEQA, XX_TXDRV_DEQ_DEFAULT,
2115  FCN_XX_DTXD, XX_TXDRV_DTX_DEFAULT,
2116  FCN_XX_DTXC, XX_TXDRV_DTX_DEFAULT,
2117  FCN_XX_DTXB, XX_TXDRV_DTX_DEFAULT,
2118  FCN_XX_DTXA, XX_TXDRV_DTX_DEFAULT);
2120 }
#define XX_TXDRV_DEQ_DEFAULT
Definition: etherfabric.c:804
#define FCN_XX_SD_CTL_REG_MAC
Definition: etherfabric.c:958
static void falcon_xmac_readl(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Read dword from a Falcon XMAC register.
Definition: etherfabric.c:2080
#define XX_SD_CTL_DRV_DEFAULT
Definition: etherfabric.c:806
#define XX_TXDRV_DTX_DEFAULT
Definition: etherfabric.c:805
A doubleword (i.e.
Definition: etherfabric.h:102
#define EFAB_SET_DWORD_FIELD(dword, field, value)
Definition: etherfabric.h:521
#define FCN_XX_TXDRV_CTL_REG_MAC
Definition: etherfabric.c:988
static void falcon_xmac_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Write dword to a Falcon XMAC register.
Definition: etherfabric.c:2064
#define EFAB_POPULATE_DWORD_8(dword,...)
Definition: etherfabric.h:443

References EFAB_POPULATE_DWORD_8, EFAB_SET_DWORD_FIELD, falcon_xmac_readl(), falcon_xmac_writel(), FCN_XX_SD_CTL_REG_MAC, FCN_XX_TXDRV_CTL_REG_MAC, XX_SD_CTL_DRV_DEFAULT, XX_TXDRV_DEQ_DEFAULT, and XX_TXDRV_DTX_DEFAULT.

Referenced by falcon_reset_xaui().

◆ falcon_xgmii_status()

static int falcon_xgmii_status ( struct efab_nic efab)
static

Definition at line 2123 of file etherfabric.c.

2124 {
2125  efab_dword_t reg;
2126 
2127  if ( efab->pci_revision < FALCON_REV_B0 )
2128  return 1;
2129  /* The ISR latches, so clear it and re-read */
2132 
2133  if ( EFAB_DWORD_FIELD ( reg, FCN_XM_LCLFLT ) ||
2134  EFAB_DWORD_FIELD ( reg, FCN_XM_RMTFLT ) ) {
2135  EFAB_TRACE ( "MGT_INT: "EFAB_DWORD_FMT"\n",
2136  EFAB_DWORD_VAL ( reg ) );
2137  return 0;
2138  }
2139 
2140  return 1;
2141 }
static void falcon_xmac_readl(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Read dword from a Falcon XMAC register.
Definition: etherfabric.c:2080
static unsigned int unsigned int reg
Definition: myson.h:162
#define FCN_XM_MGT_INT_REG_MAC_B0
Definition: etherfabric.c:902
#define FALCON_REV_B0
Definition: etherfabric.c:531
A doubleword (i.e.
Definition: etherfabric.h:102
#define EFAB_DWORD_VAL(dword)
printk parameters for printing an efab_dword_t
Definition: etherfabric.h:139
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
#define EFAB_DWORD_FMT
Format string for printing an efab_dword_t.
Definition: etherfabric.h:130
#define EFAB_DWORD_FIELD(dword, field)
Definition: etherfabric.h:229

References EFAB_DWORD_FIELD, EFAB_DWORD_FMT, EFAB_DWORD_VAL, EFAB_TRACE, FALCON_REV_B0, falcon_xmac_readl(), FCN_XM_MGT_INT_REG_MAC_B0, efab_nic::pci_revision, and reg.

Referenced by falcon_init_xmac().

◆ falcon_mask_status_intr()

static void falcon_mask_status_intr ( struct efab_nic efab,
int  enable 
)
static

Definition at line 2144 of file etherfabric.c.

2145 {
2146  efab_dword_t reg;
2147 
2148  if ( efab->pci_revision < FALCON_REV_B0 )
2149  return;
2150 
2151  /* Flush the ISR */
2152  if ( enable )
2154 
2156  FCN_XM_MSK_RMTFLT, !enable,
2157  FCN_XM_MSK_LCLFLT, !enable);
2159 }
static void falcon_xmac_readl(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Read dword from a Falcon XMAC register.
Definition: etherfabric.c:2080
static unsigned int unsigned int reg
Definition: myson.h:162
#define FCN_XM_MGT_INT_REG_MAC_B0
Definition: etherfabric.c:902
#define FALCON_REV_B0
Definition: etherfabric.c:531
#define FCN_XM_MGT_INT_MSK_REG_MAC_B0
Definition: etherfabric.c:872
A doubleword (i.e.
Definition: etherfabric.h:102
#define EFAB_POPULATE_DWORD_2(dword,...)
Definition: etherfabric.h:455

References EFAB_POPULATE_DWORD_2, FALCON_REV_B0, falcon_xmac_readl(), FCN_XM_MGT_INT_MSK_REG_MAC_B0, FCN_XM_MGT_INT_REG_MAC_B0, efab_nic::pci_revision, and reg.

Referenced by falcon_init_xmac().

◆ falcon_reset_xmac()

static int falcon_reset_xmac ( struct efab_nic efab)
static

Reset 10G MAC connected to port.

Definition at line 2166 of file etherfabric.c.

2167 {
2168  efab_dword_t reg;
2169  int count;
2170 
2171  EFAB_POPULATE_DWORD_1 ( reg, FCN_XM_CORE_RST, 1 );
2173 
2174  for ( count = 0 ; count < 1000 ; count++ ) {
2175  udelay ( 10 );
2176  falcon_xmac_readl ( efab, &reg,
2178  if ( EFAB_DWORD_FIELD ( reg, FCN_XM_CORE_RST ) == 0 )
2179  return 0;
2180  }
2181  return -ETIMEDOUT;
2182 }
static void falcon_xmac_readl(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Read dword from a Falcon XMAC register.
Definition: etherfabric.c:2080
static unsigned int unsigned int reg
Definition: myson.h:162
A doubleword (i.e.
Definition: etherfabric.h:102
#define FCN_XM_GLB_CFG_REG_MAC
Definition: etherfabric.c:837
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
uint16_t count
Number of entries.
Definition: ena.h:22
static void falcon_xmac_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Write dword to a Falcon XMAC register.
Definition: etherfabric.c:2064
#define EFAB_POPULATE_DWORD_1(dword,...)
Definition: etherfabric.h:457
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669
#define EFAB_DWORD_FIELD(dword, field)
Definition: etherfabric.h:229

References count, EFAB_DWORD_FIELD, EFAB_POPULATE_DWORD_1, ETIMEDOUT, falcon_xmac_readl(), falcon_xmac_writel(), FCN_XM_GLB_CFG_REG_MAC, reg, and udelay().

Referenced by falcon_init_xmac().

◆ falcon_reset_xaui()

static int falcon_reset_xaui ( struct efab_nic efab)
static

Definition at line 2186 of file etherfabric.c.

2187 {
2188  efab_dword_t reg;
2189  int count;
2190 
2191  if (!efab->is_asic)
2192  return 0;
2193 
2194  EFAB_POPULATE_DWORD_1 ( reg, FCN_XX_RST_XX_EN, 1 );
2196 
2197  /* Give some time for the link to establish */
2198  for (count = 0; count < 1000; count++) { /* wait up to 10ms */
2200  if ( EFAB_DWORD_FIELD ( reg, FCN_XX_RST_XX_EN ) == 0 ) {
2201  falcon_setup_xaui ( efab );
2202  return 0;
2203  }
2204  udelay(10);
2205  }
2206  EFAB_ERR ( "timed out waiting for XAUI/XGXS reset\n" );
2207  return -ETIMEDOUT;
2208 }
static void falcon_xmac_readl(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Read dword from a Falcon XMAC register.
Definition: etherfabric.c:2080
#define FCN_XX_PWR_RST_REG_MAC
Definition: etherfabric.c:928
static unsigned int unsigned int reg
Definition: myson.h:162
A doubleword (i.e.
Definition: etherfabric.h:102
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
uint16_t count
Number of entries.
Definition: ena.h:22
static void falcon_xmac_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Write dword to a Falcon XMAC register.
Definition: etherfabric.c:2064
static void falcon_setup_xaui(struct efab_nic *efab)
Configure Falcon XAUI output.
Definition: etherfabric.c:2095
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define EFAB_POPULATE_DWORD_1(dword,...)
Definition: etherfabric.h:457
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669
#define EFAB_DWORD_FIELD(dword, field)
Definition: etherfabric.h:229

References count, EFAB_DWORD_FIELD, EFAB_ERR, EFAB_POPULATE_DWORD_1, ETIMEDOUT, falcon_setup_xaui(), falcon_xmac_readl(), falcon_xmac_writel(), FCN_XX_PWR_RST_REG_MAC, efab_nic::is_asic, reg, and udelay().

Referenced by falcon_init_xmac().

◆ falcon_xaui_link_ok()

static int falcon_xaui_link_ok ( struct efab_nic efab)
static

Definition at line 2211 of file etherfabric.c.

2212 {
2213  efab_dword_t reg;
2214  int align_done, lane_status, sync;
2215  int has_phyxs;
2216  int link_ok = 1;
2217 
2218  /* Read Falcon XAUI side */
2219  if ( efab->is_asic ) {
2220  /* Read link status */
2222  align_done = EFAB_DWORD_FIELD ( reg, FCN_XX_ALIGN_DONE );
2223 
2224  sync = EFAB_DWORD_FIELD ( reg, FCN_XX_SYNC_STAT );
2226 
2227  link_ok = align_done && sync;
2228 
2229  /* Clear link status ready for next read */
2230  EFAB_SET_DWORD_FIELD ( reg, FCN_XX_COMMA_DET,
2232  EFAB_SET_DWORD_FIELD ( reg, FCN_XX_CHARERR,
2234  EFAB_SET_DWORD_FIELD ( reg, FCN_XX_DISPERR,
2237  }
2238 
2239  has_phyxs = ( efab->phy_op->mmds & ( 1 << MDIO_MMD_PHYXS ) );
2240  if ( link_ok && has_phyxs ) {
2241  lane_status = falcon_mdio_read ( efab, MDIO_MMD_PHYXS,
2243  link_ok = ( lane_status & ( 1 << MDIO_PHYXS_LANE_ALIGNED_LBN ) );
2244 
2245  if (!link_ok )
2246  EFAB_LOG ( "XGXS lane status: %x\n", lane_status );
2247  }
2248 
2249  return link_ok;
2250 }
static void falcon_xmac_readl(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Read dword from a Falcon XMAC register.
Definition: etherfabric.c:2080
static unsigned int unsigned int reg
Definition: myson.h:162
#define FCN_XX_CHARERR_RESET
Definition: etherfabric.c:922
struct efab_phy_operations * phy_op
#define FCN_XX_SYNC_STAT_DECODE_SYNCED
Definition: etherfabric.c:916
A doubleword (i.e.
Definition: etherfabric.h:102
#define EFAB_SET_DWORD_FIELD(dword, field, value)
Definition: etherfabric.h:521
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
#define MDIO_PHYXS_LANE_STATE
Definition: etherfabric.c:253
int sync(unsigned long timeout)
Wait for pending operations to complete.
Definition: sync.c:73
#define MDIO_MMD_PHYXS
Definition: etherfabric.c:209
#define MDIO_PHYXS_LANE_ALIGNED_LBN
Definition: etherfabric.c:254
#define FCN_XX_COMMA_DET_RESET
Definition: etherfabric.c:919
#define FCN_XX_CORE_STAT_REG_MAC
Definition: etherfabric.c:913
static void falcon_xmac_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Write dword to a Falcon XMAC register.
Definition: etherfabric.c:2064
#define EFAB_LOG(...)
Definition: etherfabric.c:50
#define FCN_XX_DISPERR_RESET
Definition: etherfabric.c:925
#define EFAB_DWORD_FIELD(dword, field)
Definition: etherfabric.h:229

References EFAB_DWORD_FIELD, EFAB_LOG, EFAB_SET_DWORD_FIELD, falcon_mdio_read(), falcon_xmac_readl(), falcon_xmac_writel(), FCN_XX_CHARERR_RESET, FCN_XX_COMMA_DET_RESET, FCN_XX_CORE_STAT_REG_MAC, FCN_XX_DISPERR_RESET, FCN_XX_SYNC_STAT_DECODE_SYNCED, efab_nic::is_asic, MDIO_MMD_PHYXS, MDIO_PHYXS_LANE_ALIGNED_LBN, MDIO_PHYXS_LANE_STATE, efab_phy_operations::mmds, efab_nic::phy_op, reg, and sync().

Referenced by falcon_init_xmac().

◆ falcon_reconfigure_xmac()

static void falcon_reconfigure_xmac ( struct efab_nic efab)
static

Initialise XMAC.

Definition at line 2257 of file etherfabric.c.

2258 {
2259  efab_dword_t reg;
2260  int max_frame_len;
2261 
2262  /* Configure MAC - cut-thru mode is hard wired on */
2264  FCN_XM_RX_JUMBO_MODE, 1,
2265  FCN_XM_TX_STAT_EN, 1,
2266  FCN_XM_RX_STAT_EN, 1);
2268 
2269  /* Configure TX */
2271  FCN_XM_TXEN, 1,
2272  FCN_XM_TX_PRMBL, 1,
2273  FCN_XM_AUTO_PAD, 1,
2274  FCN_XM_TXCRC, 1,
2275  FCN_XM_FCNTL, 1,
2276  FCN_XM_IPG, 0x3 );
2278 
2279  /* Configure RX */
2281  FCN_XM_RXEN, 1,
2282  FCN_XM_AUTO_DEPAD, 0,
2283  FCN_XM_ACPT_ALL_MCAST, 1,
2284  FCN_XM_PASS_CRC_ERR, 1 );
2286 
2287  /* Set frame length */
2288  max_frame_len = EFAB_MAX_FRAME_LEN ( ETH_FRAME_LEN );
2290  FCN_XM_MAX_RX_FRM_SIZE, max_frame_len );
2293  FCN_XM_MAX_TX_FRM_SIZE, max_frame_len,
2294  FCN_XM_TX_JUMBO_MODE, 1 );
2296 
2297  /* Enable flow control receipt */
2299  FCN_XM_PAUSE_TIME, 0xfffe,
2300  FCN_XM_DIS_FCNTL, 0 );
2302 
2303  /* Set MAC address */
2305  FCN_XM_ADR_0, efab->mac_addr[0],
2306  FCN_XM_ADR_1, efab->mac_addr[1],
2307  FCN_XM_ADR_2, efab->mac_addr[2],
2308  FCN_XM_ADR_3, efab->mac_addr[3] );
2311  FCN_XM_ADR_4, efab->mac_addr[4],
2312  FCN_XM_ADR_5, efab->mac_addr[5] );
2314 }
uint8_t mac_addr[ETH_ALEN]
MAC address.
static unsigned int unsigned int reg
Definition: myson.h:162
#define FCN_XM_ADR_HI_REG_MAC
Definition: etherfabric.c:830
#define FCN_XM_RX_PARAM_REG_MAC
Definition: etherfabric.c:897
#define FCN_XM_RX_CFG_REG_MAC
Definition: etherfabric.c:863
#define EFAB_POPULATE_DWORD_3(dword,...)
Definition: etherfabric.h:453
A doubleword (i.e.
Definition: etherfabric.h:102
#define FCN_XM_GLB_CFG_REG_MAC
Definition: etherfabric.c:837
#define EFAB_MAX_FRAME_LEN(mtu)
Definition: etherfabric.c:73
#define ETH_FRAME_LEN
Definition: if_ether.h:11
#define EFAB_POPULATE_DWORD_2(dword,...)
Definition: etherfabric.h:455
#define FCN_XM_TX_CFG_REG_MAC
Definition: etherfabric.c:848
static void falcon_xmac_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Write dword to a Falcon XMAC register.
Definition: etherfabric.c:2064
#define FCN_XM_FC_REG_MAC
Definition: etherfabric.c:881
#define EFAB_POPULATE_DWORD_4(dword,...)
Definition: etherfabric.h:451
#define EFAB_POPULATE_DWORD_1(dword,...)
Definition: etherfabric.h:457
#define EFAB_POPULATE_DWORD_6(dword,...)
Definition: etherfabric.h:447
#define FCN_XM_TX_PARAM_REG_MAC
Definition: etherfabric.c:888
#define FCN_XM_ADR_LO_REG_MAC
Definition: etherfabric.c:819

References EFAB_MAX_FRAME_LEN, EFAB_POPULATE_DWORD_1, EFAB_POPULATE_DWORD_2, EFAB_POPULATE_DWORD_3, EFAB_POPULATE_DWORD_4, EFAB_POPULATE_DWORD_6, ETH_FRAME_LEN, falcon_xmac_writel(), FCN_XM_ADR_HI_REG_MAC, FCN_XM_ADR_LO_REG_MAC, FCN_XM_FC_REG_MAC, FCN_XM_GLB_CFG_REG_MAC, FCN_XM_RX_CFG_REG_MAC, FCN_XM_RX_PARAM_REG_MAC, FCN_XM_TX_CFG_REG_MAC, FCN_XM_TX_PARAM_REG_MAC, efab_nic::mac_addr, and reg.

Referenced by falcon_init_xmac().

◆ falcon_init_xmac()

static int falcon_init_xmac ( struct efab_nic efab)
static

Now wait for the link to come up. This may take a while for some slower PHY's.

Definition at line 2317 of file etherfabric.c.

2318 {
2319  int count, rc;
2320 
2321  /* Mask the PHY management interrupt */
2322  falcon_mask_status_intr ( efab, 0 );
2323 
2324  /* Initialise the PHY to instantiate the clock. */
2325  rc = efab->phy_op->init ( efab );
2326  if ( rc ) {
2327  EFAB_ERR ( "unable to initialise PHY\n" );
2328  goto fail1;
2329  }
2330 
2331  falcon_reset_xaui ( efab );
2332 
2333  /* Give the PHY and MAC time to faff */
2334  mdelay ( 100 );
2335 
2336  /* Reset and reconfigure the XMAC */
2337  rc = falcon_reset_xmac ( efab );
2338  if ( rc )
2339  goto fail2;
2340  falcon_reconfigure_xmac ( efab );
2342  /**
2343  * Now wait for the link to come up. This may take a while
2344  * for some slower PHY's.
2345  */
2346  for (count=0; count<50; count++) {
2347  int link_ok = 1;
2348 
2349  /* Wait a while for the link to come up. */
2350  mdelay ( 100 );
2351  if ((count % 5) == 0)
2352  putchar ( '.' );
2353 
2354  /* Does the PHY think the wire-side link is up? */
2355  link_ok = mdio_clause45_links_ok ( efab );
2356  /* Ensure the XAUI link to the PHY is good */
2357  if ( link_ok ) {
2358  link_ok = falcon_xaui_link_ok ( efab );
2359  if ( !link_ok )
2360  falcon_reset_xaui ( efab );
2361  }
2362 
2363  /* Check fault indication */
2364  if ( link_ok )
2365  link_ok = falcon_xgmii_status ( efab );
2366 
2367  efab->link_up = link_ok;
2368  if ( link_ok ) {
2369  /* unmask the status interrupt */
2370  falcon_mask_status_intr ( efab, 1 );
2371  return 0;
2372  }
2373  }
2374 
2375  /* Link failed to come up, but initialisation was fine. */
2376  rc = -ETIMEDOUT;
2377 
2378 fail2:
2379 fail1:
2380  return rc;
2381 }
static void falcon_reconfigure_mac_wrapper(struct efab_nic *efab)
Definition: etherfabric.c:1716
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
static int falcon_reset_xaui(struct efab_nic *efab)
Definition: etherfabric.c:2186
struct efab_phy_operations * phy_op
static void falcon_reconfigure_xmac(struct efab_nic *efab)
Initialise XMAC.
Definition: etherfabric.c:2257
static int mdio_clause45_links_ok(struct efab_nic *efab)
Definition: etherfabric.c:327
uint16_t count
Number of entries.
Definition: ena.h:22
int link_up
Link status.
void mdelay(unsigned long msecs)
Delay for a fixed number of milliseconds.
Definition: timer.c:78
static int falcon_reset_xmac(struct efab_nic *efab)
Reset 10G MAC connected to port.
Definition: etherfabric.c:2166
static int falcon_xaui_link_ok(struct efab_nic *efab)
Definition: etherfabric.c:2211
static void falcon_mask_status_intr(struct efab_nic *efab, int enable)
Definition: etherfabric.c:2144
static int falcon_xgmii_status(struct efab_nic *efab)
Definition: etherfabric.c:2123
#define EFAB_ERR(...)
Definition: etherfabric.c:51
int(* init)(struct efab_nic *efab)
int putchar(int character)
Write a single character to each console device.
Definition: console.c:28
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669

References count, EFAB_ERR, ETIMEDOUT, falcon_mask_status_intr(), falcon_reconfigure_mac_wrapper(), falcon_reconfigure_xmac(), falcon_reset_xaui(), falcon_reset_xmac(), falcon_xaui_link_ok(), falcon_xgmii_status(), efab_phy_operations::init, efab_nic::link_up, mdelay(), mdio_clause45_links_ok(), efab_nic::phy_op, putchar(), and rc.

◆ falcon_xaui_phy_init()

static int falcon_xaui_phy_init ( struct efab_nic efab)
static

Definition at line 2396 of file etherfabric.c.

2397 {
2398  /* CX4 is always 10000FD only */
2400 
2401  /* There is no PHY! */
2402  return 0;
2403 }
unsigned int link_options
GMII link options.
#define LPA_EF_10000FULL
Definition: etherfabric.c:93

References efab_nic::link_options, and LPA_EF_10000FULL.

◆ alaska_init()

static int alaska_init ( struct efab_nic efab)
static

Initialise Alaska PHY.

Definition at line 2424 of file etherfabric.c.

2425 {
2426  unsigned int advertised, lpa;
2427 
2428  /* Read link up status */
2429  efab->link_up = gmii_link_ok ( efab );
2430 
2431  if ( ! efab->link_up )
2432  return -EIO;
2433 
2434  /* Determine link options from PHY. */
2435  advertised = gmii_autoneg_advertised ( efab );
2436  lpa = gmii_autoneg_lpa ( efab );
2437  efab->link_options = gmii_nway_result ( advertised & lpa );
2438 
2439  return 0;
2440 }
static unsigned int gmii_autoneg_lpa(struct efab_nic *efab)
Retrieve GMII autonegotiation link partner abilities.
Definition: etherfabric.c:130
static unsigned int gmii_autoneg_advertised(struct efab_nic *efab)
Retrieve GMII autonegotiation advertised abilities.
Definition: etherfabric.c:113
static int gmii_link_ok(struct efab_nic *efab)
Check GMII PHY link status.
Definition: etherfabric.c:173
unsigned int link_options
GMII link options.
int link_up
Link status.
static unsigned int gmii_nway_result(unsigned int negotiated)
Calculate GMII autonegotiated link technology.
Definition: etherfabric.c:146
#define EIO
Input/output error.
Definition: errno.h:433

References EIO, gmii_autoneg_advertised(), gmii_autoneg_lpa(), gmii_link_ok(), gmii_nway_result(), efab_nic::link_options, and efab_nic::link_up.

◆ falcon_xfp_phy_init()

static int falcon_xfp_phy_init ( struct efab_nic efab)
static

Definition at line 2459 of file etherfabric.c.

2460 {
2461  int rc;
2462 
2463  /* Optical link is always 10000FD only */
2465 
2466  /* Reset the PHY */
2468  if ( rc )
2469  return rc;
2470 
2471  return 0;
2472 }
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
static int mdio_clause45_reset_mmd(struct efab_nic *efab, int mmd)
Definition: etherfabric.c:304
#define MDIO_MMD_PHYXS
Definition: etherfabric.c:209
unsigned int link_options
GMII link options.
#define LPA_EF_10000FULL
Definition: etherfabric.c:93

References efab_nic::link_options, LPA_EF_10000FULL, mdio_clause45_reset_mmd(), MDIO_MMD_PHYXS, and rc.

◆ falcon_txc_logic_reset()

static int falcon_txc_logic_reset ( struct efab_nic efab)
static

Definition at line 2524 of file etherfabric.c.

2525 {
2526  int val;
2527  int tries = 50;
2528 
2530  val |= (1 << TXC_GLCMD_LMTSWRST_LBN);
2532 
2533  while ( tries--) {
2535  if ( ~val & ( 1 << TXC_GLCMD_LMTSWRST_LBN ) )
2536  return 0;
2537  udelay(1);
2538  }
2539 
2540  EFAB_ERR ( "logic reset failed\n" );
2541 
2542  return -ETIMEDOUT;
2543 }
void __asmcall int val
Definition: setjmp.h:12
#define TXC_GLRGS_GLCMD
Definition: etherfabric.c:2488
static void falcon_mdio_write(struct efab_nic *efab, int device, int location, int value)
Definition: etherfabric.c:1590
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
#define MDIO_MMD_PCS
Definition: etherfabric.c:207
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define TXC_GLCMD_LMTSWRST_LBN
Definition: etherfabric.c:2489
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669

References EFAB_ERR, ETIMEDOUT, falcon_mdio_read(), falcon_mdio_write(), MDIO_MMD_PCS, TXC_GLCMD_LMTSWRST_LBN, TXC_GLRGS_GLCMD, udelay(), and val.

Referenced by falcon_txc_phy_init().

◆ falcon_txc_phy_init()

static int falcon_txc_phy_init ( struct efab_nic efab)
static

Definition at line 2546 of file etherfabric.c.

2547 {
2548  int rc;
2549 
2550  /* CX4 is always 10000FD only */
2552 
2553  /* reset the phy */
2555  if ( rc )
2556  goto fail1;
2557 
2558  rc = mdio_clause45_check_mmds ( efab );
2559  if ( rc )
2560  goto fail2;
2561 
2562  /* Turn amplitude down and preemphasis off on the host side
2563  * (PHY<->MAC) as this is believed less likely to upset falcon
2564  * and no adverse effects have been noted. It probably also
2565  * saves a picowatt or two */
2566 
2567  /* Turn off preemphasis */
2569  TXC_ATXPRE_NONE );
2571  TXC_ATXPRE_NONE );
2572 
2573  /* Turn down the amplitude */
2578 
2579  /* Set the line side amplitude and preemphasis to the databook
2580  * defaults as an erratum causes them to be 0 on at least some
2581  * PHY rev.s */
2590 
2591  rc = falcon_txc_logic_reset ( efab );
2592  if ( rc )
2593  goto fail3;
2594 
2595  return 0;
2596 
2597 fail3:
2598 fail2:
2599 fail1:
2600  return rc;
2601 }
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
#define TXC_ALRGS_ATXAMP0
Definition: etherfabric.c:2492
#define TXC_ALRGS_ATXPRE1
Definition: etherfabric.c:2514
#define TXC_ALRGS_ATXAMP1
Definition: etherfabric.c:2493
#define TXC_ATXAMP_0820_BOTH
Definition: etherfabric.c:2507
static void falcon_mdio_write(struct efab_nic *efab, int device, int location, int value)
Definition: etherfabric.c:1590
#define TXC_ATXPRE_DEFAULT
Definition: etherfabric.c:2517
static int falcon_txc_logic_reset(struct efab_nic *efab)
Definition: etherfabric.c:2524
static int mdio_clause45_reset_mmd(struct efab_nic *efab, int mmd)
Definition: etherfabric.c:304
#define MDIO_MMD_PHYXS
Definition: etherfabric.c:209
unsigned int link_options
GMII link options.
static int mdio_clause45_check_mmds(struct efab_nic *efab)
Definition: etherfabric.c:353
#define TXC_ALRGS_ATXPRE0
Definition: etherfabric.c:2513
#define MDIO_MMD_PMAPMD
Definition: etherfabric.c:203
#define TXC_ATXAMP_DEFAULT
Definition: etherfabric.c:2510
#define LPA_EF_10000FULL
Definition: etherfabric.c:93
#define TXC_ATXPRE_NONE
Definition: etherfabric.c:2516

References falcon_mdio_write(), falcon_txc_logic_reset(), efab_nic::link_options, LPA_EF_10000FULL, mdio_clause45_check_mmds(), mdio_clause45_reset_mmd(), MDIO_MMD_PHYXS, MDIO_MMD_PMAPMD, rc, TXC_ALRGS_ATXAMP0, TXC_ALRGS_ATXAMP1, TXC_ALRGS_ATXPRE0, TXC_ALRGS_ATXPRE1, TXC_ATXAMP_0820_BOTH, TXC_ATXAMP_DEFAULT, TXC_ATXPRE_DEFAULT, and TXC_ATXPRE_NONE.

◆ falcon_tenxpress_check_c11()

static int falcon_tenxpress_check_c11 ( struct efab_nic efab)
static

Definition at line 2644 of file etherfabric.c.

2645 {
2646  int count;
2647  uint32_t boot_stat;
2648 
2649  /* Check that the C11 CPU has booted */
2650  for (count=0; count<10; count++) {
2651  boot_stat = falcon_mdio_read ( efab, MDIO_MMD_PCS,
2653  if ( boot_stat & ( 1 << PCS_BOOT_COMPLETE_LBN ) )
2654  return 0;
2655 
2656  udelay(10);
2657  }
2658 
2659  EFAB_ERR ( "C11 failed to boot\n" );
2660  return -ETIMEDOUT;
2661 }
#define PCS_BOOT_STATUS_REG
Definition: etherfabric.c:2633
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
uint16_t count
Number of entries.
Definition: ena.h:22
#define PCS_BOOT_COMPLETE_LBN
Definition: etherfabric.c:2637
#define MDIO_MMD_PCS
Definition: etherfabric.c:207
unsigned int uint32_t
Definition: stdint.h:12
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669

References count, EFAB_ERR, ETIMEDOUT, falcon_mdio_read(), MDIO_MMD_PCS, PCS_BOOT_COMPLETE_LBN, PCS_BOOT_STATUS_REG, and udelay().

Referenced by falcon_tenxpress_phy_init().

◆ falcon_tenxpress_phy_init()

static int falcon_tenxpress_phy_init ( struct efab_nic efab)
static

Definition at line 2664 of file etherfabric.c.

2665 {
2666  int rc, reg;
2667 
2668  /* 10XPRESS is always 10000FD (at the moment) */
2670 
2671  /* Wait for the blocks to come out of reset */
2672  rc = mdio_clause45_wait_reset_mmds ( efab );
2673  if ( rc )
2674  goto fail1;
2675 
2676  rc = mdio_clause45_check_mmds ( efab );
2677  if ( rc )
2678  goto fail2;
2679 
2680  /* Turn on the clock */
2681  reg = (1 << CLK312_EN_LBN);
2683 
2684  /* Wait 200ms for the PHY to boot */
2685  mdelay(200);
2686 
2687  rc = falcon_tenxpress_check_c11 ( efab );
2688  if ( rc )
2689  goto fail3;
2690 
2691  return 0;
2692 
2693 fail3:
2694 fail2:
2695 fail1:
2696  return rc;
2697 }
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
static int falcon_tenxpress_check_c11(struct efab_nic *efab)
Definition: etherfabric.c:2644
static unsigned int unsigned int reg
Definition: myson.h:162
static void falcon_mdio_write(struct efab_nic *efab, int device, int location, int value)
Definition: etherfabric.c:1590
#define PCS_TEST_SELECT_REG
Definition: etherfabric.c:2621
unsigned int link_options
GMII link options.
#define CLK312_EN_LBN
Definition: etherfabric.c:2622
#define MDIO_MMD_PCS
Definition: etherfabric.c:207
static int mdio_clause45_check_mmds(struct efab_nic *efab)
Definition: etherfabric.c:353
static int mdio_clause45_wait_reset_mmds(struct efab_nic *efab)
Definition: etherfabric.c:265
void mdelay(unsigned long msecs)
Delay for a fixed number of milliseconds.
Definition: timer.c:78
#define LPA_EF_10000FULL
Definition: etherfabric.c:93

References CLK312_EN_LBN, falcon_mdio_write(), falcon_tenxpress_check_c11(), efab_nic::link_options, LPA_EF_10000FULL, mdelay(), mdio_clause45_check_mmds(), mdio_clause45_wait_reset_mmds(), MDIO_MMD_PCS, PCS_TEST_SELECT_REG, rc, and reg.

◆ falcon_pm8358_phy_init()

static int falcon_pm8358_phy_init ( struct efab_nic efab)
static

Definition at line 2744 of file etherfabric.c.

2745 {
2746  int rc, reg, i;
2747 
2748  /* This is a XAUI retimer part */
2750 
2752  if ( rc )
2753  return rc;
2754 
2755  /* Enable software control of analogue settings */
2759 
2760  /* Turn rx eq on for all channels */
2761  for (i=0; i< 3; i++) {
2762  /* The analog CFG registers are evenly spaced 8 apart */
2764  reg = falcon_mdio_read ( efab, MDIO_MMD_DTEXS, addr );
2767  }
2768 
2769  /* Set TEDGE, clear REDGE */
2773 
2774  return 0;
2775 }
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
unsigned short uint16_t
Definition: stdint.h:11
#define MDIO_MMD_DTEXS
Definition: etherfabric.c:211
static unsigned int unsigned int reg
Definition: myson.h:162
#define PMC_MCONF2_REDGE
Definition: etherfabric.c:2726
#define PMC_ANALOG_RX_CFG0
Definition: etherfabric.c:2729
#define MDIO_MMDREG_DEVS0_DTEXS
Definition: etherfabric.c:239
#define PMC_MCONF2_REG
Definition: etherfabric.c:2722
#define PMC_MASTER_REG
Definition: etherfabric.c:2717
static void falcon_mdio_write(struct efab_nic *efab, int device, int location, int value)
Definition: etherfabric.c:1590
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
static int mdio_clause45_reset_mmd(struct efab_nic *efab, int mmd)
Definition: etherfabric.c:304
unsigned int link_options
GMII link options.
#define PMC_MASTER_ANLG_CTRL
Definition: etherfabric.c:2719
#define PMC_ANALOG_RX_EQ_FULL
Definition: etherfabric.c:2740
u32 addr
Definition: sky2.h:8
#define PMC_MCONF2_TEDGE
Definition: etherfabric.c:2724
#define LPA_EF_10000FULL
Definition: etherfabric.c:93
#define PMC_ANALOG_RX_EQ_MASK
Definition: etherfabric.c:2737

References addr, falcon_mdio_read(), falcon_mdio_write(), efab_nic::link_options, LPA_EF_10000FULL, mdio_clause45_reset_mmd(), MDIO_MMD_DTEXS, MDIO_MMDREG_DEVS0_DTEXS, PMC_ANALOG_RX_CFG0, PMC_ANALOG_RX_EQ_FULL, PMC_ANALOG_RX_EQ_MASK, PMC_MASTER_ANLG_CTRL, PMC_MASTER_REG, PMC_MCONF2_REDGE, PMC_MCONF2_REG, PMC_MCONF2_TEDGE, rc, and reg.

◆ sfe4001_init()

static int sfe4001_init ( struct efab_nic efab)
static

Definition at line 2843 of file etherfabric.c.

2844 {
2845  struct i2c_interface *i2c = &efab->i2c_bb.i2c;
2846  efab_dword_t reg;
2847  uint8_t in, cfg, out;
2848  int count, rc;
2849 
2850  EFAB_LOG ( "Initialise SFE4001 board\n" );
2851 
2852  /* Ensure XGXS and XAUI SerDes are held in reset */
2854  FCN_XX_PWRDNA_EN, 1,
2855  FCN_XX_PWRDNB_EN, 1,
2856  FCN_XX_RSTPLLAB_EN, 1,
2857  FCN_XX_RESETA_EN, 1,
2858  FCN_XX_RESETB_EN, 1,
2859  FCN_XX_RSTXGXSRX_EN, 1,
2860  FCN_XX_RSTXGXSTX_EN, 1 );
2862  udelay(10);
2863 
2864  /* Set DSP over-temperature alert threshold */
2865  cfg = MAX_TEMP_THRESH;
2866  rc = i2c->write ( i2c, &i2c_max6647, WLHO, &cfg, EFAB_BYTE );
2867  if ( rc )
2868  goto fail1;
2869 
2870  /* Read it back and verify */
2871  rc = i2c->read ( i2c, &i2c_max6647, RLHN, &in, EFAB_BYTE );
2872  if ( rc )
2873  goto fail2;
2874 
2875  if ( in != MAX_TEMP_THRESH ) {
2876  EFAB_ERR ( "Unable to verify MAX6647 limit (requested=%d "
2877  "confirmed=%d)\n", cfg, in );
2878  rc = -EIO;
2879  goto fail3;
2880  }
2881 
2882  /* Clear any previous over-temperature alert */
2883  rc = i2c->read ( i2c, &i2c_max6647, RSL, &in, EFAB_BYTE );
2884  if ( rc )
2885  goto fail4;
2886 
2887  /* Enable port 0 and 1 outputs on IO expander */
2888  cfg = 0x00;
2889  rc = i2c->write ( i2c, &i2c_pca9539, P0_CONFIG, &cfg, EFAB_BYTE );
2890  if ( rc )
2891  goto fail5;
2892  cfg = 0xff & ~(1 << P1_SPARE_LBN);
2893  rc = i2c->write ( i2c, &i2c_pca9539, P1_CONFIG, &cfg, EFAB_BYTE );
2894  if ( rc )
2895  goto fail6;
2896 
2897  /* Turn all power off then wait 1 sec. This ensures PHY is reset */
2898  out = 0xff & ~((0 << P0_EN_1V2_LBN) | (0 << P0_EN_2V5_LBN) |
2899  (0 << P0_EN_3V3X_LBN) | (0 << P0_EN_5V_LBN) |
2900  (0 << P0_EN_1V0X_LBN));
2901 
2902  rc = i2c->write ( i2c, &i2c_pca9539, P0_OUT, &out, EFAB_BYTE );
2903  if ( rc )
2904  goto fail7;
2905 
2906  mdelay(1000);
2907 
2908  for (count=0; count<20; count++) {
2909  /* Turn on 1.2V, 2.5V, 3.3V and 5V power rails */
2910  out = 0xff & ~( (1 << P0_EN_1V2_LBN) | (1 << P0_EN_2V5_LBN) |
2911  (1 << P0_EN_3V3X_LBN) | (1 << P0_EN_5V_LBN) |
2912  (1 << P0_X_TRST_LBN) );
2913 
2914  rc = i2c->write ( i2c, &i2c_pca9539, P0_OUT, &out, EFAB_BYTE );
2915  if ( rc )
2916  goto fail8;
2917 
2918  mdelay ( 10 );
2919 
2920  /* Turn on the 1V power rail */
2921  out &= ~( 1 << P0_EN_1V0X_LBN );
2922  rc = i2c->write ( i2c, &i2c_pca9539, P0_OUT, &out, EFAB_BYTE );
2923  if ( rc )
2924  goto fail9;
2925 
2926  EFAB_LOG ( "Waiting for power...(attempt %d)\n", count);
2927  mdelay ( 1000 );
2928 
2929  /* Check DSP is powered */
2930  rc = i2c->read ( i2c, &i2c_pca9539, P1_IN, &in, EFAB_BYTE );
2931  if ( rc )
2932  goto fail10;
2933 
2934  if ( in & ( 1 << P1_AFE_PWD_LBN ) )
2935  return 0;
2936  }
2937 
2938  rc = -ETIMEDOUT;
2939 
2940 fail10:
2941 fail9:
2942 fail8:
2943 fail7:
2944  /* Turn off power rails */
2945  out = 0xff;
2946  (void) i2c->write ( i2c, &i2c_pca9539, P0_OUT, &out, EFAB_BYTE );
2947  /* Disable port 1 outputs on IO expander */
2948  out = 0xff;
2949  (void) i2c->write ( i2c, &i2c_pca9539, P1_CONFIG, &out, EFAB_BYTE );
2950 fail6:
2951  /* Disable port 0 outputs */
2952  out = 0xff;
2953  (void) i2c->write ( i2c, &i2c_pca9539, P1_CONFIG, &out, EFAB_BYTE );
2954 fail5:
2955 fail4:
2956 fail3:
2957 fail2:
2958 fail1:
2959  EFAB_ERR ( "Failed initialising SFE4001 board\n" );
2960  return rc;
2961 }
#define P1_IN
Definition: etherfabric.c:2812
#define P0_EN_3V3X_LBN
Definition: etherfabric.c:2805
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
#define FCN_XX_PWR_RST_REG_MAC
Definition: etherfabric.c:928
static unsigned int unsigned int reg
Definition: myson.h:162
__be32 in[4]
Definition: CIB_PRM.h:35
int(* write)(struct i2c_interface *i2c, struct i2c_device *i2cdev, unsigned int offset, const uint8_t *data, unsigned int len)
Write data to I2C device.
Definition: i2c.h:81
#define P0_CONFIG
Definition: etherfabric.c:2797
#define MAX_TEMP_THRESH
Definition: etherfabric.c:2790
#define P0_EN_1V0X_LBN
Definition: etherfabric.c:2799
static struct i2c_device i2c_pca9539
Definition: etherfabric.c:2829
A doubleword (i.e.
Definition: etherfabric.h:102
An I2C interface.
Definition: i2c.h:57
__be32 out[4]
Definition: CIB_PRM.h:36
#define EFAB_BYTE
Definition: etherfabric.c:56
#define EFAB_POPULATE_DWORD_7(dword,...)
Definition: etherfabric.h:445
#define RLHN
Definition: etherfabric.c:2826
#define P0_X_TRST_LBN
Definition: etherfabric.c:2809
struct i2c_interface i2c
I2C interface.
Definition: i2c.h:93
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
uint16_t count
Number of entries.
Definition: ena.h:22
#define P0_EN_5V_LBN
Definition: etherfabric.c:2807
unsigned char uint8_t
Definition: stdint.h:10
static void falcon_xmac_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int mac_reg)
Write dword to a Falcon XMAC register.
Definition: etherfabric.c:2064
int(* read)(struct i2c_interface *i2c, struct i2c_device *i2cdev, unsigned int offset, uint8_t *data, unsigned int len)
Read data from I2C device.
Definition: i2c.h:68
#define P1_SPARE_LBN
Definition: etherfabric.c:2819
#define P0_EN_1V2_LBN
Definition: etherfabric.c:2801
static struct i2c_device i2c_max6647
Definition: etherfabric.c:2836
#define P0_EN_2V5_LBN
Definition: etherfabric.c:2803
#define EFAB_LOG(...)
Definition: etherfabric.c:50
void mdelay(unsigned long msecs)
Delay for a fixed number of milliseconds.
Definition: timer.c:78
Definition: sis900.h:23
#define P1_AFE_PWD_LBN
Definition: etherfabric.c:2815
#define WLHO
Definition: etherfabric.c:2827
#define P1_CONFIG
Definition: etherfabric.c:2813
#define EIO
Input/output error.
Definition: errno.h:433
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define P0_OUT
Definition: etherfabric.c:2796
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669
#define RSL
Definition: etherfabric.c:2825
struct i2c_bit_basher i2c_bb

References cfg, count, EFAB_BYTE, EFAB_ERR, EFAB_LOG, EFAB_POPULATE_DWORD_7, EIO, ETIMEDOUT, falcon_xmac_writel(), FCN_XX_PWR_RST_REG_MAC, i2c_bit_basher::i2c, efab_nic::i2c_bb, i2c_max6647, i2c_pca9539, in, MAX_TEMP_THRESH, mdelay(), out, P0_CONFIG, P0_EN_1V0X_LBN, P0_EN_1V2_LBN, P0_EN_2V5_LBN, P0_EN_3V3X_LBN, P0_EN_5V_LBN, P0_OUT, P0_X_TRST_LBN, P1_AFE_PWD_LBN, P1_CONFIG, P1_IN, P1_SPARE_LBN, rc, i2c_interface::read, reg, RLHN, RSL, udelay(), WLHO, and i2c_interface::write.

◆ sfe4001_fini()

static void sfe4001_fini ( struct efab_nic efab)
static

Definition at line 2964 of file etherfabric.c.

2965 {
2966  struct i2c_interface *i2c = &efab->i2c_bb.i2c;
2967  uint8_t in, cfg, out;
2968 
2969  EFAB_ERR ( "Turning off SFE4001\n" );
2970 
2971  /* Turn off all power rails */
2972  out = 0xff;
2973  (void) i2c->write ( i2c, &i2c_pca9539, P0_OUT, &out, EFAB_BYTE );
2974 
2975  /* Disable port 1 outputs on IO expander */
2976  cfg = 0xff;
2977  (void) i2c->write ( i2c, &i2c_pca9539, P1_CONFIG, &cfg, EFAB_BYTE );
2978 
2979  /* Disable port 0 outputs on IO expander */
2980  cfg = 0xff;
2981  (void) i2c->write ( i2c, &i2c_pca9539, P0_CONFIG, &cfg, EFAB_BYTE );
2982 
2983  /* Clear any over-temperature alert */
2984  (void) i2c->read ( i2c, &i2c_max6647, RSL, &in, EFAB_BYTE );
2985 }
__be32 in[4]
Definition: CIB_PRM.h:35
int(* write)(struct i2c_interface *i2c, struct i2c_device *i2cdev, unsigned int offset, const uint8_t *data, unsigned int len)
Write data to I2C device.
Definition: i2c.h:81
#define P0_CONFIG
Definition: etherfabric.c:2797
static struct i2c_device i2c_pca9539
Definition: etherfabric.c:2829
An I2C interface.
Definition: i2c.h:57
__be32 out[4]
Definition: CIB_PRM.h:36
#define EFAB_BYTE
Definition: etherfabric.c:56
struct i2c_interface i2c
I2C interface.
Definition: i2c.h:93
unsigned char uint8_t
Definition: stdint.h:10
int(* read)(struct i2c_interface *i2c, struct i2c_device *i2cdev, unsigned int offset, uint8_t *data, unsigned int len)
Read data from I2C device.
Definition: i2c.h:68
static struct i2c_device i2c_max6647
Definition: etherfabric.c:2836
Definition: sis900.h:23
#define P1_CONFIG
Definition: etherfabric.c:2813
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define P0_OUT
Definition: etherfabric.c:2796
#define RSL
Definition: etherfabric.c:2825
struct i2c_bit_basher i2c_bb

References cfg, EFAB_BYTE, EFAB_ERR, i2c_bit_basher::i2c, efab_nic::i2c_bb, i2c_max6647, i2c_pca9539, in, out, P0_CONFIG, P0_OUT, P1_CONFIG, i2c_interface::read, RSL, and i2c_interface::write.

◆ sfe4002_init()

static int sfe4002_init ( struct efab_nic efab)
static

Definition at line 2992 of file etherfabric.c.

2993 {
2994  return 0;
2995 }

◆ sfe4002_fini()

static void sfe4002_fini ( struct efab_nic efab)
static

Definition at line 2996 of file etherfabric.c.

2997 {
2998 }

◆ sfe4003_init()

static int sfe4003_init ( struct efab_nic efab)
static

Definition at line 3005 of file etherfabric.c.

3006 {
3007  return 0;
3008 }

◆ sfe4003_fini()

static void sfe4003_fini ( struct efab_nic efab)
static

Definition at line 3009 of file etherfabric.c.

3010 {
3011 }

◆ falcon_free_special_buffer()

static void falcon_free_special_buffer ( void *  p)
static

Definition at line 3027 of file etherfabric.c.

3028 {
3029  /* We don't bother cleaning up the buffer table entries -
3030  * we're hardly limited */
3031  free_phys ( p, EFAB_BUF_ALIGN );
3032 }
#define EFAB_BUF_ALIGN
static void free_phys(void *ptr, size_t size)
Free memory allocated with malloc_phys()
Definition: malloc.h:76

References EFAB_BUF_ALIGN, and free_phys().

Referenced by efab_alloc_resources(), and efab_free_resources().

◆ falcon_alloc_special_buffer()

static void* falcon_alloc_special_buffer ( struct efab_nic efab,
int  bytes,
struct efab_special_buffer entry 
)
static

Definition at line 3035 of file etherfabric.c.

3037 {
3038  void* buffer;
3039  int remaining;
3040  efab_qword_t buf_desc;
3041  unsigned long dma_addr;
3042 
3043  /* Allocate the buffer, aligned on a buffer address boundary */
3045  if ( ! buffer )
3046  return NULL;
3047 
3048  /* Push buffer table entries to back the buffer */
3049  entry->id = efab->buffer_head;
3050  entry->dma_addr = dma_addr = virt_to_bus ( buffer );
3051  assert ( ( dma_addr & ( EFAB_BUF_ALIGN - 1 ) ) == 0 );
3052 
3053  remaining = bytes;
3054  while ( remaining > 0 ) {
3055  EFAB_POPULATE_QWORD_3 ( buf_desc,
3056  FCN_IP_DAT_BUF_SIZE, FCN_IP_DAT_BUF_SIZE_4K,
3057  FCN_BUF_ADR_FBUF, ( dma_addr >> 12 ),
3058  FCN_BUF_OWNER_ID_FBUF, 0 );
3059 
3060  falcon_write_sram ( efab, &buf_desc, efab->buffer_head );
3061 
3062  ++efab->buffer_head;
3063  dma_addr += EFAB_BUF_ALIGN;
3064  remaining -= EFAB_BUF_ALIGN;
3065  }
3066 
3067  EFAB_TRACE ( "Allocated 0x%x bytes at %p backed by buffer table "
3068  "entries 0x%x..0x%x\n", bytes, buffer, entry->id,
3069  efab->buffer_head - 1 );
3070 
3071  return buffer;
3072 }
A quadword (i.e.
Definition: etherfabric.h:111
#define FCN_IP_DAT_BUF_SIZE_4K
Definition: etherfabric.c:1099
static void *__malloc malloc_phys(size_t size, size_t phys_align)
Allocate memory with specified physical alignment.
Definition: malloc.h:61
uint32_t buffer
Buffer index (or NETVSC_RNDIS_NO_BUFFER)
Definition: netvsc.h:16
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
Definition: io.h:183
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
#define EFAB_POPULATE_QWORD_3(qword,...)
Definition: etherfabric.h:426
#define EFAB_BUF_ALIGN
static void falcon_write_sram(struct efab_nic *efab, efab_qword_t *value, unsigned int index)
Write to Falcon SRAM.
Definition: etherfabric.c:1219
uint8_t bytes[64]
Definition: ib_mad.h:16
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321

References assert(), buffer, efab_nic::buffer_head, bytes, efab_special_buffer::dma_addr, EFAB_BUF_ALIGN, EFAB_POPULATE_QWORD_3, EFAB_TRACE, falcon_write_sram(), FCN_IP_DAT_BUF_SIZE_4K, efab_special_buffer::id, malloc_phys(), NULL, and virt_to_bus().

Referenced by efab_alloc_resources().

◆ clear_b0_fpga_memories()

static void clear_b0_fpga_memories ( struct efab_nic efab)
static

Definition at line 3075 of file etherfabric.c.

3076 {
3077  efab_oword_t blanko, temp;
3078  int offset;
3079 
3080  EFAB_ZERO_OWORD ( blanko );
3081 
3082  /* Clear the address region register */
3083  EFAB_POPULATE_OWORD_4 ( temp,
3084  FCN_ADR_REGION0, 0,
3085  FCN_ADR_REGION1, ( 1 << 16 ),
3086  FCN_ADR_REGION2, ( 2 << 16 ),
3087  FCN_ADR_REGION3, ( 3 << 16 ) );
3088  falcon_write ( efab, &temp, FCN_ADR_REGION_REG_KER );
3089 
3090  EFAB_TRACE ( "Clearing filter and RSS tables\n" );
3091 
3092  for ( offset = FCN_RX_FILTER_TBL0 ;
3094  offset += 0x10 ) {
3095  falcon_write ( efab, &blanko, offset );
3096  }
3097 
3098  EFAB_TRACE ( "Wiping buffer tables\n" );
3099 
3100  /* Notice the 8 byte access mode */
3101  for ( offset = 0x2800000 ;
3102  offset < 0x3000000 ;
3103  offset += 0x8) {
3104  _falcon_writel ( efab, 0, offset );
3105  _falcon_writel ( efab, 0, offset + 4 );
3106  wmb();
3107  }
3108 }
wmb()
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
#define FCN_RX_FILTER_TBL0
Definition: etherfabric.c:1007
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
#define EFAB_POPULATE_OWORD_4(oword,...)
Definition: etherfabric.h:395
#define _falcon_writel(efab, value, reg)
Definition: etherfabric.c:1189
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define FCN_ADR_REGION_REG_KER
Definition: etherfabric.c:400
#define EFAB_ZERO_OWORD(oword)
Definition: etherfabric.h:403
uint16_t offset
Offset to command line.
Definition: bzimage.h:8
#define FCN_RX_RSS_INDIR_TBL_B0
Definition: etherfabric.c:1081

References _falcon_writel, EFAB_POPULATE_OWORD_4, EFAB_TRACE, EFAB_ZERO_OWORD, falcon_write(), FCN_ADR_REGION_REG_KER, FCN_RX_FILTER_TBL0, FCN_RX_RSS_INDIR_TBL_B0, offset, and wmb().

Referenced by falcon_reset().

◆ falcon_reset()

static int falcon_reset ( struct efab_nic efab)
static

Definition at line 3111 of file etherfabric.c.

3112 {
3113  efab_oword_t glb_ctl_reg_ker;
3114 
3115  /* Initiate software reset */
3116  EFAB_POPULATE_OWORD_6 ( glb_ctl_reg_ker,
3117  FCN_PCIE_CORE_RST_CTL, EXCLUDE_FROM_RESET,
3118  FCN_PCIE_NSTCK_RST_CTL, EXCLUDE_FROM_RESET,
3119  FCN_PCIE_SD_RST_CTL, EXCLUDE_FROM_RESET,
3120  FCN_EE_RST_CTL, EXCLUDE_FROM_RESET,
3121  FCN_EXT_PHY_RST_DUR, 0x7, /* 10ms */
3122  FCN_SWRST, 1 );
3123 
3124  falcon_write ( efab, &glb_ctl_reg_ker, FCN_GLB_CTL_REG_KER );
3125 
3126  /* Allow 50ms for reset */
3127  mdelay ( 50 );
3128 
3129  /* Check for device reset complete */
3130  falcon_read ( efab, &glb_ctl_reg_ker, FCN_GLB_CTL_REG_KER );
3131  if ( EFAB_OWORD_FIELD ( glb_ctl_reg_ker, FCN_SWRST ) != 0 ) {
3132  EFAB_ERR ( "Reset failed\n" );
3133  return -ETIMEDOUT;
3134  }
3135 
3136  if ( ( efab->pci_revision == FALCON_REV_B0 ) && !efab->is_asic ) {
3137  clear_b0_fpga_memories ( efab );
3138  }
3139 
3140  return 0;
3141 }
#define EFAB_OWORD_FIELD
Definition: etherfabric.h:274
#define FALCON_REV_B0
Definition: etherfabric.c:531
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
#define FCN_GLB_CTL_REG_KER
Definition: etherfabric.c:575
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
#define EXCLUDE_FROM_RESET
Definition: etherfabric.c:595
An octword (eight-word, i.e.
Definition: etherfabric.h:122
void mdelay(unsigned long msecs)
Delay for a fixed number of milliseconds.
Definition: timer.c:78
#define EFAB_ERR(...)
Definition: etherfabric.c:51
static void clear_b0_fpga_memories(struct efab_nic *efab)
Definition: etherfabric.c:3075
#define EFAB_POPULATE_OWORD_6(oword,...)
Definition: etherfabric.h:391
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669

References clear_b0_fpga_memories(), EFAB_ERR, EFAB_OWORD_FIELD, EFAB_POPULATE_OWORD_6, ETIMEDOUT, EXCLUDE_FROM_RESET, falcon_read(), FALCON_REV_B0, falcon_write(), FCN_GLB_CTL_REG_KER, efab_nic::is_asic, mdelay(), and efab_nic::pci_revision.

Referenced by efab_close(), efab_open(), and efab_remove().

◆ falcon_probe_nic_variant()

static void falcon_probe_nic_variant ( struct efab_nic efab,
struct pci_device pci 
)
static

Definition at line 3175 of file etherfabric.c.

3176 {
3177  efab_oword_t altera_build, nic_stat;
3178  int fpga_version;
3179  uint8_t revision;
3180 
3181  /* PCI revision */
3183  efab->pci_revision = revision;
3184 
3185  /* Asic vs FPGA */
3186  falcon_read ( efab, &altera_build, FCN_ALTERA_BUILD_REG_KER );
3187  fpga_version = EFAB_OWORD_FIELD ( altera_build, FCN_VER_ALL );
3188  efab->is_asic = (fpga_version == 0);
3189 
3190  /* MAC and PCI type */
3191  falcon_read ( efab, &nic_stat, FCN_NIC_STAT_REG );
3192  if ( efab->pci_revision == FALCON_REV_B0 ) {
3193  efab->phy_10g = EFAB_OWORD_FIELD ( nic_stat, FCN_STRAP_10G );
3194  }
3195  else if ( efab->is_asic ) {
3196  efab->phy_10g = EFAB_OWORD_FIELD ( nic_stat, FCN_STRAP_10G );
3197  }
3198  else {
3199  int minor = EFAB_OWORD_FIELD ( altera_build, FCN_VER_MINOR );
3200  efab->phy_10g = ( minor == 0x14 );
3201  }
3202 }
#define EFAB_OWORD_FIELD
Definition: etherfabric.h:274
#define FALCON_REV_B0
Definition: etherfabric.c:531
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
uint32_t minor
Minor version.
Definition: netvsc.h:16
uint32_t revision
Entry point revision.
Definition: ib_mad.h:20
unsigned char uint8_t
Definition: stdint.h:10
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define PCI_REVISION
PCI revision.
Definition: pci.h:44
#define FCN_ALTERA_BUILD_REG_KER
Definition: etherfabric.c:598
#define FCN_NIC_STAT_REG
Definition: etherfabric.c:501
int pci_read_config_byte(struct pci_device *pci, unsigned int where, uint8_t *value)
Read byte from PCI configuration space.

References EFAB_OWORD_FIELD, falcon_read(), FALCON_REV_B0, FCN_ALTERA_BUILD_REG_KER, FCN_NIC_STAT_REG, efab_nic::is_asic, minor, pci_read_config_byte(), PCI_REVISION, efab_nic::pci_revision, efab_nic::phy_10g, and revision.

Referenced by efab_probe().

◆ falcon_init_spi_device()

static void falcon_init_spi_device ( struct efab_nic efab,
struct spi_device spi 
)
static

Definition at line 3205 of file etherfabric.c.

3206 {
3207  /* Falcon's SPI interface only supports reads/writes of up to 16 bytes.
3208  * Reduce the nvs block size down to satisfy this - which means callers
3209  * should use the nvs_* functions rather than spi_*. */
3210  if ( spi->nvs.block_size > FALCON_SPI_MAX_LEN )
3212 
3213  spi->bus = &efab->spi_bus;
3214  efab->spi = spi;
3215 }
#define FALCON_SPI_MAX_LEN
Maximum length for a single SPI transaction.
Definition: etherfabric.c:1397
unsigned int block_size
Data block size (in words)
Definition: nvs.h:36
struct spi_bus spi_bus
SPI bus and devices, and the user visible NVO area.
struct spi_device * spi
struct nvs_device nvs
NVS device.
Definition: spi.h:88
struct spi_bus * bus
SPI bus to which device is attached.
Definition: spi.h:90

References nvs_device::block_size, spi_device::bus, FALCON_SPI_MAX_LEN, spi_device::nvs, efab_nic::spi, and efab_nic::spi_bus.

Referenced by falcon_probe_spi().

◆ falcon_probe_spi()

static int falcon_probe_spi ( struct efab_nic efab)
static

Definition at line 3218 of file etherfabric.c.

3219 {
3220  efab_oword_t nic_stat, gpio_ctl, ee_vpd_cfg;
3221  int has_flash, has_eeprom, ad9bit;
3222 
3223  falcon_read ( efab, &nic_stat, FCN_NIC_STAT_REG );
3224  falcon_read ( efab, &gpio_ctl, FCN_GPIO_CTL_REG_KER );
3225  falcon_read ( efab, &ee_vpd_cfg, FCN_EE_VPD_CFG_REG );
3226 
3227  /* determine if FLASH / EEPROM is present */
3228  if ( ( efab->pci_revision >= FALCON_REV_B0 ) || efab->is_asic ) {
3229  has_flash = EFAB_OWORD_FIELD ( nic_stat, FCN_SF_PRST );
3230  has_eeprom = EFAB_OWORD_FIELD ( nic_stat, FCN_EE_PRST );
3231  } else {
3232  has_flash = EFAB_OWORD_FIELD ( gpio_ctl, FCN_FLASH_PRESENT );
3233  has_eeprom = EFAB_OWORD_FIELD ( gpio_ctl, FCN_EEPROM_PRESENT );
3234  }
3235  ad9bit = EFAB_OWORD_FIELD ( ee_vpd_cfg, FCN_EE_VPD_EN_AD9_MODE );
3236 
3237  /* Configure the SPI and I2C bus */
3238  efab->spi_bus.rw = falcon_spi_rw;
3240 
3241  /* Configure the EEPROM SPI device. Generally, an Atmel 25040
3242  * (or similar) is used, but this is only possible if there is also
3243  * a flash device present to store the boot-time chip configuration.
3244  */
3245  if ( has_eeprom ) {
3246  if ( has_flash && ad9bit )
3247  init_at25040 ( &efab->spi_eeprom );
3248  else
3249  init_mc25xx640 ( &efab->spi_eeprom );
3250  falcon_init_spi_device ( efab, &efab->spi_eeprom );
3251  }
3252 
3253  /* Configure the FLASH SPI device */
3254  if ( has_flash ) {
3255  init_at25f1024 ( &efab->spi_flash );
3256  falcon_init_spi_device ( efab, &efab->spi_flash );
3257  }
3258 
3259  EFAB_LOG ( "flash is %s, EEPROM is %s%s\n",
3260  ( has_flash ? "present" : "absent" ),
3261  ( has_eeprom ? "present " : "absent" ),
3262  ( has_eeprom ? (ad9bit ? "(9bit)" : "(16bit)") : "") );
3263 
3264  /* The device MUST have flash or eeprom */
3265  if ( ! efab->spi ) {
3266  EFAB_ERR ( "Device appears to have no flash or eeprom\n" );
3267  return -EIO;
3268  }
3269 
3270  /* If the device has EEPROM attached, then advertise NVO space */
3271  if ( has_eeprom ) {
3272  nvo_init ( &efab->nvo, &efab->spi_eeprom.nvs, 0x100, 0xf0,
3273  NULL, &efab->netdev->refcnt );
3274  }
3275 
3276  return 0;
3277 }
struct nvo_block nvo
#define FCN_EE_VPD_CFG_REG
Definition: etherfabric.c:489
int(* rw)(struct spi_bus *bus, struct spi_device *device, unsigned int command, int address, const void *data_out, void *data_in, size_t len)
Read/write data via SPI bus.
Definition: spi.h:152
#define EFAB_OWORD_FIELD
Definition: etherfabric.h:274
#define FALCON_REV_B0
Definition: etherfabric.c:531
struct net_device * netdev
static void falcon_init_spi_device(struct efab_nic *efab, struct spi_device *spi)
Definition: etherfabric.c:3205
struct spi_device spi_eeprom
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
static int falcon_spi_rw(struct spi_bus *bus, struct spi_device *device, unsigned int command, int address, const void *data_out, void *data_in, size_t len)
Definition: etherfabric.c:1418
static struct bit_basher_operations falcon_i2c_bit_ops
Definition: etherfabric.c:1549
struct spi_bus spi_bus
SPI bus and devices, and the user visible NVO area.
struct refcnt refcnt
Reference counter.
Definition: netdevice.h:354
void nvo_init(struct nvo_block *nvo, struct nvs_device *nvs, size_t address, size_t len, int(*resize)(struct nvo_block *nvo, size_t len), struct refcnt *refcnt)
Initialise non-volatile stored options.
Definition: nvo.c:273
struct spi_device spi_flash
struct spi_device * spi
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define EFAB_LOG(...)
Definition: etherfabric.c:50
struct nvs_device nvs
NVS device.
Definition: spi.h:88
#define EIO
Input/output error.
Definition: errno.h:433
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define FCN_GPIO_CTL_REG_KER
Definition: etherfabric.c:535
int init_i2c_bit_basher(struct i2c_bit_basher *i2cbit, struct bit_basher_operations *bash_op)
Initialise I2C bit-bashing interface.
Definition: i2c_bit.c:387
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
#define FCN_NIC_STAT_REG
Definition: etherfabric.c:501
struct i2c_bit_basher i2c_bb

References EFAB_ERR, EFAB_LOG, EFAB_OWORD_FIELD, EIO, falcon_i2c_bit_ops, falcon_init_spi_device(), falcon_read(), FALCON_REV_B0, falcon_spi_rw(), FCN_EE_VPD_CFG_REG, FCN_GPIO_CTL_REG_KER, FCN_NIC_STAT_REG, efab_nic::i2c_bb, init_i2c_bit_basher(), efab_nic::is_asic, efab_nic::netdev, NULL, efab_nic::nvo, nvo_init(), spi_device::nvs, efab_nic::pci_revision, net_device::refcnt, spi_bus::rw, efab_nic::spi, efab_nic::spi_bus, efab_nic::spi_eeprom, and efab_nic::spi_flash.

Referenced by efab_probe().

◆ falcon_probe_nvram()

static int falcon_probe_nvram ( struct efab_nic efab)
static

Definition at line 3280 of file etherfabric.c.

3281 {
3282  struct nvs_device *nvs = &efab->spi->nvs;
3283  struct falcon_nv_extra nv;
3284  int rc, board_revision;
3285 
3286  /* Read the MAC address */
3288  efab->mac_addr, ETH_ALEN );
3289  if ( rc )
3290  return rc;
3291 
3292  /* Poke through the NVRAM structure for the PHY type. */
3294  &nv, sizeof ( nv ) );
3295  if ( rc )
3296  return rc;
3297 
3298  /* Handle each supported NVRAM version */
3299  if ( ( le16_to_cpu ( nv.magicnumber ) == FCN_NV_MAGIC_NUMBER ) &&
3300  ( le16_to_cpu ( nv.structure_version ) >= 2 ) ) {
3301  struct falcon_nv_config_ver2* ver2 = &nv.ver_specific.ver2;
3302 
3303  /* Get the PHY type */
3304  efab->phy_addr = le16_to_cpu ( ver2->port0_phy_addr );
3305  efab->phy_type = le16_to_cpu ( ver2->port0_phy_type );
3307  }
3308  else {
3309  EFAB_ERR ( "NVram is not recognised\n" );
3310  return -EINVAL;
3311  }
3312 
3313  efab->board_type = BOARD_TYPE ( board_revision );
3314 
3315  EFAB_TRACE ( "Falcon board %d phy %d @ addr %d\n",
3316  efab->board_type, efab->phy_type, efab->phy_addr );
3317 
3318  /* Patch in the board operations */
3319  switch ( efab->board_type ) {
3320  case EFAB_BOARD_SFE4001:
3321  efab->board_op = &sfe4001_ops;
3322  break;
3323  case EFAB_BOARD_SFE4002:
3324  efab->board_op = &sfe4002_ops;
3325  break;
3326  case EFAB_BOARD_SFE4003:
3327  efab->board_op = &sfe4003_ops;
3328  break;
3329  default:
3330  EFAB_ERR ( "Unrecognised board type\n" );
3331  return -EINVAL;
3332  }
3333 
3334  /* Patch in MAC operations */
3335  if ( efab->phy_10g )
3336  efab->mac_op = &falcon_xmac_operations;
3337  else
3338  efab->mac_op = &falcon_gmac_operations;
3339 
3340  /* Hook in the PHY ops */
3341  switch ( efab->phy_type ) {
3342  case PHY_TYPE_10XPRESS:
3344  break;
3345  case PHY_TYPE_CX4:
3346  efab->phy_op = &falcon_xaui_phy_ops;
3347  break;
3348  case PHY_TYPE_XFP:
3349  efab->phy_op = &falcon_xfp_phy_ops;
3350  break;
3351  case PHY_TYPE_CX4_RTMR:
3352  efab->phy_op = &falcon_txc_phy_ops;
3353  break;
3354  case PHY_TYPE_PM8358:
3355  efab->phy_op = &falcon_pm8358_phy_ops;
3356  break;
3357  case PHY_TYPE_1GIG_ALASKA:
3358  efab->phy_op = &falcon_alaska_phy_ops;
3359  break;
3360  default:
3361  EFAB_ERR ( "Unknown PHY type: %d\n", efab->phy_type );
3362  return -EINVAL;
3363  }
3364 
3365  return 0;
3366 }
#define EINVAL
Invalid argument.
Definition: errno.h:428
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
#define FALCON_MAC_ADDRESS_OFFSET
Offset of MAC address within EEPROM or Flash.
Definition: etherfabric.c:3144
static struct efab_mac_operations falcon_gmac_operations
Definition: etherfabric.c:2046
uint8_t mac_addr[ETH_ALEN]
MAC address.
static struct efab_phy_operations falcon_xaui_phy_ops
Definition: etherfabric.c:2405
A non-volatile storage device.
Definition: nvs.h:15
struct efab_phy_operations * phy_op
static struct efab_phy_operations falcon_alaska_phy_ops
Definition: etherfabric.c:2442
static struct efab_mac_operations falcon_xmac_operations
Definition: etherfabric.c:2383
static struct efab_phy_operations falcon_pm8358_phy_ops
Definition: etherfabric.c:2777
static struct efab_phy_operations falcon_tenxpress_phy_ops
Definition: etherfabric.c:2699
#define FCN_NV_MAGIC_NUMBER
Definition: etherfabric.c:572
static struct efab_phy_operations falcon_txc_phy_ops
Definition: etherfabric.c:2603
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
struct efab_mac_operations * mac_op
struct efab_board_operations sfe4002_ops
Definition: etherfabric.c:3000
#define SF_NV_CONFIG_EXTRA
Definition: etherfabric.c:3150
#define ETH_ALEN
Definition: if_ether.h:8
#define le16_to_cpu(value)
Definition: byteswap.h:112
struct efab_board_operations sfe4003_ops
Definition: etherfabric.c:3013
struct spi_device * spi
struct efab_board_operations * board_op
Board, MAC, and PHY operations tables.
struct nvs_device nvs
NVS device.
Definition: spi.h:88
struct efab_board_operations sfe4001_ops
Definition: etherfabric.c:2987
#define SF_NV_CONFIG_BASE
Definition: etherfabric.c:3149
#define BOARD_TYPE(_rev)
Definition: etherfabric.c:3172
#define EFAB_ERR(...)
Definition: etherfabric.c:51
int nvs_read(struct nvs_device *nvs, unsigned int address, void *data, size_t len)
Read from non-volatile storage device.
Definition: nvs.c:75
static struct efab_phy_operations falcon_xfp_phy_ops
Definition: etherfabric.c:2474

References efab_nic::board_op, falcon_nv_config_ver2::board_revision, efab_nic::board_type, BOARD_TYPE, EFAB_BOARD_SFE4001, EFAB_BOARD_SFE4002, EFAB_BOARD_SFE4003, EFAB_ERR, EFAB_TRACE, EINVAL, ETH_ALEN, falcon_alaska_phy_ops, falcon_gmac_operations, FALCON_MAC_ADDRESS_OFFSET, falcon_pm8358_phy_ops, falcon_tenxpress_phy_ops, falcon_txc_phy_ops, falcon_xaui_phy_ops, falcon_xfp_phy_ops, falcon_xmac_operations, FCN_NV_MAGIC_NUMBER, le16_to_cpu, efab_nic::mac_addr, efab_nic::mac_op, falcon_nv_extra::magicnumber, spi_device::nvs, nvs_read(), efab_nic::phy_10g, efab_nic::phy_addr, efab_nic::phy_op, efab_nic::phy_type, PHY_TYPE_10XPRESS, PHY_TYPE_1GIG_ALASKA, PHY_TYPE_CX4, PHY_TYPE_CX4_RTMR, PHY_TYPE_PM8358, PHY_TYPE_XFP, falcon_nv_config_ver2::port0_phy_addr, falcon_nv_config_ver2::port0_phy_type, rc, SF_NV_CONFIG_BASE, SF_NV_CONFIG_EXTRA, sfe4001_ops, sfe4002_ops, sfe4003_ops, efab_nic::spi, falcon_nv_extra::structure_version, falcon_nv_extra::ver2, and falcon_nv_extra::ver_specific.

Referenced by efab_probe().

◆ falcon_init_sram()

static int falcon_init_sram ( struct efab_nic efab)
static

Definition at line 3369 of file etherfabric.c.

3370 {
3371  efab_oword_t reg;
3372  int count;
3373 
3374  /* use card in internal SRAM mode */
3375  falcon_read ( efab, &reg, FCN_NIC_STAT_REG );
3376  EFAB_SET_OWORD_FIELD ( reg, FCN_ONCHIP_SRAM, 1 );
3377  falcon_write ( efab, &reg, FCN_NIC_STAT_REG );
3378 
3379  /* Deactivate any external SRAM that might be present */
3381  FCN_GPIO1_OEN, 1,
3382  FCN_GPIO1_OUT, 1 );
3384 
3385  /* Initiate SRAM reset */
3387  FCN_SRAM_OOB_BT_INIT_EN, 1,
3388  FCN_SRM_NUM_BANKS_AND_BANK_SIZE, 0 );
3389  falcon_write ( efab, &reg, FCN_SRM_CFG_REG_KER );
3390 
3391  /* Wait for SRAM reset to complete */
3392  count = 0;
3393  do {
3394  /* SRAM reset is slow; expect around 16ms */
3395  mdelay ( 20 );
3396 
3397  /* Check for reset complete */
3398  falcon_read ( efab, &reg, FCN_SRM_CFG_REG_KER );
3399  if ( !EFAB_OWORD_FIELD ( reg, FCN_SRAM_OOB_BT_INIT_EN ) )
3400  return 0;
3401  } while (++count < 20); /* wait up to 0.4 sec */
3402 
3403  EFAB_ERR ( "timed out waiting for SRAM reset\n");
3404  return -ETIMEDOUT;
3405 }
#define FCN_SRM_CFG_REG_KER
Definition: etherfabric.c:638
#define EFAB_OWORD_FIELD
Definition: etherfabric.h:274
static unsigned int unsigned int reg
Definition: myson.h:162
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
#define EFAB_SET_OWORD_FIELD
Definition: etherfabric.h:531
#define EFAB_POPULATE_OWORD_2(oword,...)
Definition: etherfabric.h:399
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
uint16_t count
Number of entries.
Definition: ena.h:22
An octword (eight-word, i.e.
Definition: etherfabric.h:122
void mdelay(unsigned long msecs)
Delay for a fixed number of milliseconds.
Definition: timer.c:78
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define FCN_GPIO_CTL_REG_KER
Definition: etherfabric.c:535
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669
#define FCN_NIC_STAT_REG
Definition: etherfabric.c:501

References count, EFAB_ERR, EFAB_OWORD_FIELD, EFAB_POPULATE_OWORD_2, EFAB_SET_OWORD_FIELD, ETIMEDOUT, falcon_read(), falcon_write(), FCN_GPIO_CTL_REG_KER, FCN_NIC_STAT_REG, FCN_SRM_CFG_REG_KER, mdelay(), and reg.

Referenced by efab_open().

◆ falcon_setup_nic()

static void falcon_setup_nic ( struct efab_nic efab)
static

Definition at line 3408 of file etherfabric.c.

3409 {
3410  efab_dword_t timer_cmd;
3411  efab_oword_t reg;
3412  int tx_fc, xoff_thresh, xon_thresh;
3413 
3414  /* bug5129: Clear the parity enables on the TX data fifos as
3415  * they produce false parity errors because of timing issues
3416  */
3417  falcon_read ( efab, &reg, FCN_SPARE_REG_KER );
3418  EFAB_SET_OWORD_FIELD ( reg, FCN_MEM_PERR_EN_TX_DATA, 0 );
3419  falcon_write ( efab, &reg, FCN_SPARE_REG_KER );
3420 
3421  /* Set up TX and RX descriptor caches in SRAM */
3422  EFAB_POPULATE_OWORD_1 ( reg, FCN_SRM_TX_DC_BASE_ADR, 0x130000 );
3424  EFAB_POPULATE_OWORD_1 ( reg, FCN_TX_DC_SIZE, 1 /* 16 descriptors */ );
3426  EFAB_POPULATE_OWORD_1 ( reg, FCN_SRM_RX_DC_BASE_ADR, 0x100000 );
3428  EFAB_POPULATE_OWORD_1 ( reg, FCN_RX_DC_SIZE, 2 /* 32 descriptors */ );
3430 
3431  /* Set number of RSS CPUs
3432  * bug7244: Increase filter depth to reduce RX_RESET likelihood
3433  */
3435  FCN_NUM_KER, 0,
3436  FCN_UDP_FULL_SRCH_LIMIT, 8,
3437  FCN_UDP_WILD_SRCH_LIMIT, 8,
3438  FCN_TCP_WILD_SRCH_LIMIT, 8,
3439  FCN_TCP_FULL_SRCH_LIMIT, 8);
3441  udelay ( 1000 );
3442 
3443  /* Setup RX. Wait for descriptor is broken and must
3444  * be disabled. RXDP recovery shouldn't be needed, but is.
3445  * disable ISCSI parsing because we don't need it
3446  */
3448  EFAB_SET_OWORD_FIELD ( reg, FCN_RX_NODESC_WAIT_DIS, 1 );
3449  EFAB_SET_OWORD_FIELD ( reg, FCN_RX_RECOVERY_EN, 1 );
3450  EFAB_SET_OWORD_FIELD ( reg, FCN_RX_ISCSI_DIS, 1 );
3452 
3453  /* Determine recommended flow control settings. *
3454  * Flow control is qualified on B0 and A1/1G, not on A1/10G */
3455  if ( efab->pci_revision == FALCON_REV_B0 ) {
3456  tx_fc = 1;
3457  xoff_thresh = 54272; /* ~80Kb - 3*max MTU */
3458  xon_thresh = 27648; /* ~3*max MTU */
3459  }
3460  else if ( !efab->phy_10g ) {
3461  tx_fc = 1;
3462  xoff_thresh = 2048;
3463  xon_thresh = 512;
3464  }
3465  else {
3466  tx_fc = xoff_thresh = xon_thresh = 0;
3467  }
3468 
3469  /* Setup TX and RX */
3470  falcon_read ( efab, &reg, FCN_TX_CFG2_REG_KER );
3471  EFAB_SET_OWORD_FIELD ( reg, FCN_TX_DIS_NON_IP_EV, 1 );
3472  falcon_write ( efab, &reg, FCN_TX_CFG2_REG_KER );
3473 
3474  falcon_read ( efab, &reg, FCN_RX_CFG_REG_KER );
3475  EFAB_SET_OWORD_FIELD_VER ( efab, reg, FCN_RX_USR_BUF_SIZE,
3476  (3*4096) / 32 );
3477  if ( efab->pci_revision == FALCON_REV_B0)
3478  EFAB_SET_OWORD_FIELD ( reg, FCN_RX_INGR_EN_B0, 1 );
3479  EFAB_SET_OWORD_FIELD_VER ( efab, reg, FCN_RX_XON_MAC_TH,
3480  xon_thresh / 256);
3481  EFAB_SET_OWORD_FIELD_VER ( efab, reg, FCN_RX_XOFF_MAC_TH,
3482  xoff_thresh / 256);
3483  EFAB_SET_OWORD_FIELD_VER ( efab, reg, FCN_RX_XOFF_MAC_EN, tx_fc);
3484  falcon_write ( efab, &reg, FCN_RX_CFG_REG_KER );
3485 
3486  /* Set timer register */
3487  EFAB_POPULATE_DWORD_2 ( timer_cmd,
3488  FCN_TIMER_MODE, FCN_TIMER_MODE_DIS,
3489  FCN_TIMER_VAL, 0 );
3490  falcon_writel ( efab, &timer_cmd, FCN_TIMER_CMD_REG_KER );
3491 }
#define FCN_RX_CFG_REG_KER
Definition: etherfabric.c:652
static unsigned int unsigned int reg
Definition: myson.h:162
#define FCN_SRM_RX_DC_CFG_REG_KER
Definition: etherfabric.c:628
#define FALCON_REV_B0
Definition: etherfabric.c:531
#define EFAB_SET_OWORD_FIELD_VER(efab, reg, field, val)
Definition: etherfabric.c:1165
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
#define EFAB_SET_OWORD_FIELD
Definition: etherfabric.h:531
A doubleword (i.e.
Definition: etherfabric.h:102
#define FCN_TIMER_CMD_REG_KER
Definition: etherfabric.c:614
static void falcon_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int reg)
Write dword to Falcon register that allows partial writes.
Definition: etherfabric.c:1238
#define FCN_TX_CFG2_REG_KER
Definition: etherfabric.c:726
static void falcon_read(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Read from a Falcon register.
Definition: etherfabric.c:1250
#define FCN_RX_SELF_RST_REG_KER
Definition: etherfabric.c:710
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
#define EFAB_POPULATE_DWORD_2(dword,...)
Definition: etherfabric.h:455
#define FCN_TX_DC_CFG_REG_KER
Definition: etherfabric.c:739
#define FCN_RX_DC_CFG_REG_KER
Definition: etherfabric.c:706
#define FCN_RX_FILTER_CTL_REG_KER
Definition: etherfabric.c:678
#define EFAB_POPULATE_OWORD_1(oword,...)
Definition: etherfabric.h:401
#define FCN_SRM_TX_DC_CFG_REG_KER
Definition: etherfabric.c:633
An octword (eight-word, i.e.
Definition: etherfabric.h:122
#define FCN_TIMER_MODE_DIS
Definition: etherfabric.c:617
#define FCN_SPARE_REG_KER
Definition: etherfabric.c:609
#define EFAB_POPULATE_OWORD_5(oword,...)
Definition: etherfabric.h:393

References EFAB_POPULATE_DWORD_2, EFAB_POPULATE_OWORD_1, EFAB_POPULATE_OWORD_5, EFAB_SET_OWORD_FIELD, EFAB_SET_OWORD_FIELD_VER, falcon_read(), FALCON_REV_B0, falcon_write(), falcon_writel(), FCN_RX_CFG_REG_KER, FCN_RX_DC_CFG_REG_KER, FCN_RX_FILTER_CTL_REG_KER, FCN_RX_SELF_RST_REG_KER, FCN_SPARE_REG_KER, FCN_SRM_RX_DC_CFG_REG_KER, FCN_SRM_TX_DC_CFG_REG_KER, FCN_TIMER_CMD_REG_KER, FCN_TIMER_MODE_DIS, FCN_TX_CFG2_REG_KER, FCN_TX_DC_CFG_REG_KER, efab_nic::pci_revision, efab_nic::phy_10g, reg, and udelay().

Referenced by efab_open().

◆ falcon_init_resources()

static void falcon_init_resources ( struct efab_nic efab)
static

Definition at line 3494 of file etherfabric.c.

3495 {
3496  struct efab_ev_queue *ev_queue = &efab->ev_queue;
3497  struct efab_rx_queue *rx_queue = &efab->rx_queue;
3498  struct efab_tx_queue *tx_queue = &efab->tx_queue;
3499 
3500  efab_oword_t reg;
3501  int jumbo;
3502 
3503  /* Initialise the ptrs */
3504  tx_queue->read_ptr = tx_queue->write_ptr = 0;
3505  rx_queue->read_ptr = rx_queue->write_ptr = 0;
3506  ev_queue->read_ptr = 0;
3507 
3508  /* Push the event queue to the hardware */
3510  FCN_EVQ_EN, 1,
3511  FCN_EVQ_SIZE, FQS(FCN_EVQ, EFAB_EVQ_SIZE),
3512  FCN_EVQ_BUF_BASE_ID, ev_queue->entry.id );
3513  falcon_write ( efab, &reg,
3514  FCN_REVISION_REG ( efab, FCN_EVQ_PTR_TBL_KER ) );
3515 
3516  /* Push the tx queue to the hardware */
3518  FCN_TX_DESCQ_EN, 1,
3519  FCN_TX_ISCSI_DDIG_EN, 0,
3520  FCN_TX_ISCSI_DDIG_EN, 0,
3521  FCN_TX_DESCQ_BUF_BASE_ID, tx_queue->entry.id,
3522  FCN_TX_DESCQ_EVQ_ID, 0,
3523  FCN_TX_DESCQ_SIZE, FQS(FCN_TX_DESCQ, EFAB_TXD_SIZE),
3524  FCN_TX_DESCQ_TYPE, 0 /* kernel queue */,
3525  FCN_TX_NON_IP_DROP_DIS_B0, 1 );
3526  falcon_write ( efab, &reg,
3527  FCN_REVISION_REG ( efab, FCN_TX_DESC_PTR_TBL_KER ) );
3528 
3529  /* Push the rx queue to the hardware */
3530  jumbo = ( efab->pci_revision == FALCON_REV_B0 ) ? 0 : 1;
3532  FCN_RX_ISCSI_DDIG_EN, 0,
3533  FCN_RX_ISCSI_HDIG_EN, 0,
3534  FCN_RX_DESCQ_BUF_BASE_ID, rx_queue->entry.id,
3535  FCN_RX_DESCQ_EVQ_ID, 0,
3536  FCN_RX_DESCQ_SIZE, FQS(FCN_RX_DESCQ, EFAB_RXD_SIZE),
3537  FCN_RX_DESCQ_TYPE, 0 /* kernel queue */,
3538  FCN_RX_DESCQ_JUMBO, jumbo,
3539  FCN_RX_DESCQ_EN, 1 );
3540  falcon_write ( efab, &reg,
3541  FCN_REVISION_REG ( efab, FCN_RX_DESC_PTR_TBL_KER ) );
3542 
3543  /* Program INT_ADR_REG_KER */
3545  FCN_INT_ADR_KER, virt_to_bus ( &efab->int_ker ) );
3546  falcon_write ( efab, &reg, FCN_INT_ADR_REG_KER );
3547 
3548  /* Ack the event queue */
3549  falcon_eventq_read_ack ( efab, ev_queue );
3550 }
struct efab_special_buffer entry
struct efab_ev_queue ev_queue
static unsigned int unsigned int reg
Definition: myson.h:162
struct efab_special_buffer entry
#define FALCON_REV_B0
Definition: etherfabric.c:531
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
unsigned int write_ptr
unsigned int write_ptr
#define EFAB_RXD_SIZE
unsigned int read_ptr
efab_oword_t int_ker
INT_REG_KER.
struct efab_tx_queue tx_queue
#define FQS(_prefix, _x)
Definition: etherfabric.c:65
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
Definition: io.h:183
#define EFAB_EVQ_SIZE
#define EFAB_POPULATE_OWORD_1(oword,...)
Definition: etherfabric.h:401
static void falcon_eventq_read_ack(struct efab_nic *efab, struct efab_ev_queue *ev_queue)
Definition: etherfabric.c:1328
#define FCN_INT_ADR_REG_KER
Definition: etherfabric.c:426
#define FCN_REVISION_REG(efab, reg)
Definition: etherfabric.c:1162
An octword (eight-word, i.e.
Definition: etherfabric.h:122
unsigned int read_ptr
#define EFAB_POPULATE_OWORD_8(oword,...)
Definition: etherfabric.h:387
struct efab_special_buffer entry
unsigned int read_ptr
#define EFAB_POPULATE_OWORD_3(oword,...)
Definition: etherfabric.h:397
struct efab_rx_queue rx_queue
#define EFAB_TXD_SIZE

References EFAB_EVQ_SIZE, EFAB_POPULATE_OWORD_1, EFAB_POPULATE_OWORD_3, EFAB_POPULATE_OWORD_8, EFAB_RXD_SIZE, EFAB_TXD_SIZE, efab_tx_queue::entry, efab_rx_queue::entry, efab_ev_queue::entry, efab_nic::ev_queue, falcon_eventq_read_ack(), FALCON_REV_B0, falcon_write(), FCN_INT_ADR_REG_KER, FCN_REVISION_REG, FQS, efab_special_buffer::id, efab_nic::int_ker, efab_nic::pci_revision, efab_tx_queue::read_ptr, efab_rx_queue::read_ptr, efab_ev_queue::read_ptr, reg, efab_nic::rx_queue, efab_nic::tx_queue, virt_to_bus(), efab_tx_queue::write_ptr, and efab_rx_queue::write_ptr.

Referenced by efab_open().

◆ falcon_fini_resources()

static void falcon_fini_resources ( struct efab_nic efab)
static

Definition at line 3553 of file etherfabric.c.

3554 {
3555  efab_oword_t cmd;
3556 
3557  /* Disable interrupts */
3558  falcon_interrupts ( efab, 0, 0 );
3559 
3560  /* Flush the dma queues */
3562  FCN_TX_FLUSH_DESCQ_CMD, 1,
3563  FCN_TX_FLUSH_DESCQ, 0 );
3564  falcon_write ( efab, &cmd,
3565  FCN_REVISION_REG ( efab, FCN_TX_DESC_PTR_TBL_KER ) );
3566 
3568  FCN_RX_FLUSH_DESCQ_CMD, 1,
3569  FCN_RX_FLUSH_DESCQ, 0 );
3570  falcon_write ( efab, &cmd,
3571  FCN_REVISION_REG ( efab, FCN_RX_DESC_PTR_TBL_KER ) );
3572 
3573  mdelay ( 100 );
3574 
3575  /* Remove descriptor rings from card */
3576  EFAB_ZERO_OWORD ( cmd );
3577  falcon_write ( efab, &cmd,
3578  FCN_REVISION_REG ( efab, FCN_TX_DESC_PTR_TBL_KER ) );
3579  falcon_write ( efab, &cmd,
3580  FCN_REVISION_REG ( efab, FCN_RX_DESC_PTR_TBL_KER ) );
3581  falcon_write ( efab, &cmd,
3582  FCN_REVISION_REG ( efab, FCN_EVQ_PTR_TBL_KER ) );
3583 }
static void falcon_write(struct efab_nic *efab, efab_oword_t *value, unsigned int reg)
Write to a Falcon register.
Definition: etherfabric.c:1200
#define EFAB_POPULATE_OWORD_2(oword,...)
Definition: etherfabric.h:399
static void falcon_interrupts(struct efab_nic *efab, int enabled, int force)
Definition: etherfabric.c:1377
#define FCN_REVISION_REG(efab, reg)
Definition: etherfabric.c:1162
An octword (eight-word, i.e.
Definition: etherfabric.h:122
void mdelay(unsigned long msecs)
Delay for a fixed number of milliseconds.
Definition: timer.c:78
#define EFAB_ZERO_OWORD(oword)
Definition: etherfabric.h:403
struct golan_eqe_cmd cmd
Definition: CIB_PRM.h:29

References cmd, EFAB_POPULATE_OWORD_2, EFAB_ZERO_OWORD, falcon_interrupts(), falcon_write(), FCN_REVISION_REG, and mdelay().

Referenced by efab_close().

◆ falcon_build_rx_desc()

static void falcon_build_rx_desc ( falcon_rx_desc_t rxd,
struct io_buffer iob 
)
static

Definition at line 3594 of file etherfabric.c.

3595 {
3597  FCN_RX_KER_BUF_SIZE, EFAB_RX_BUF_SIZE,
3598  FCN_RX_KER_BUF_ADR, virt_to_bus ( iob->data ) );
3599 }
#define EFAB_RX_BUF_SIZE
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
Definition: io.h:183
#define EFAB_POPULATE_QWORD_2(qword,...)
Definition: etherfabric.h:428
void * data
Start of data.
Definition: iobuf.h:48
#define rxd
Definition: davicom.c:145

References io_buffer::data, EFAB_POPULATE_QWORD_2, EFAB_RX_BUF_SIZE, rxd, and virt_to_bus().

Referenced by efab_fill_rx_queue().

◆ falcon_notify_rx_desc()

static void falcon_notify_rx_desc ( struct efab_nic efab,
struct efab_rx_queue rx_queue 
)
static

Definition at line 3602 of file etherfabric.c.

3603 {
3604  efab_dword_t reg;
3605  int ptr = rx_queue->write_ptr % EFAB_RXD_SIZE;
3606 
3607  EFAB_POPULATE_DWORD_1 ( reg, FCN_RX_DESC_WPTR_DWORD, ptr );
3609 }
#define FCN_RX_DESC_UPD_REG_KER_DWORD
Definition: etherfabric.c:701
static unsigned int unsigned int reg
Definition: myson.h:162
unsigned int write_ptr
A doubleword (i.e.
Definition: etherfabric.h:102
#define EFAB_RXD_SIZE
static void falcon_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int reg)
Write dword to Falcon register that allows partial writes.
Definition: etherfabric.c:1238
#define EFAB_POPULATE_DWORD_1(dword,...)
Definition: etherfabric.h:457

References EFAB_POPULATE_DWORD_1, EFAB_RXD_SIZE, falcon_writel(), FCN_RX_DESC_UPD_REG_KER_DWORD, reg, and efab_rx_queue::write_ptr.

Referenced by efab_fill_rx_queue().

◆ falcon_build_tx_desc()

static void falcon_build_tx_desc ( falcon_tx_desc_t txd,
struct io_buffer iob 
)
static

Definition at line 3621 of file etherfabric.c.

3622 {
3624  FCN_TX_KER_BYTE_CNT, iob_len ( iob ),
3625  FCN_TX_KER_BUF_ADR, virt_to_bus ( iob->data ) );
3626 }
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
Definition: io.h:183
#define txd
Definition: davicom.c:143
static size_t iob_len(struct io_buffer *iobuf)
Calculate length of data in an I/O buffer.
Definition: iobuf.h:155
#define EFAB_POPULATE_QWORD_2(qword,...)
Definition: etherfabric.h:428
void * data
Start of data.
Definition: iobuf.h:48

References io_buffer::data, EFAB_POPULATE_QWORD_2, iob_len(), txd, and virt_to_bus().

Referenced by efab_transmit().

◆ falcon_notify_tx_desc()

static void falcon_notify_tx_desc ( struct efab_nic efab,
struct efab_tx_queue tx_queue 
)
static

Definition at line 3629 of file etherfabric.c.

3631 {
3632  efab_dword_t reg;
3633  int ptr = tx_queue->write_ptr % EFAB_TXD_SIZE;
3634 
3635  EFAB_POPULATE_DWORD_1 ( reg, FCN_TX_DESC_WPTR_DWORD, ptr );
3637 }
static unsigned int unsigned int reg
Definition: myson.h:162
unsigned int write_ptr
A doubleword (i.e.
Definition: etherfabric.h:102
static void falcon_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int reg)
Write dword to Falcon register that allows partial writes.
Definition: etherfabric.c:1238
#define FCN_TX_DESC_UPD_REG_KER_DWORD
Definition: etherfabric.c:734
#define EFAB_POPULATE_DWORD_1(dword,...)
Definition: etherfabric.h:457
#define EFAB_TXD_SIZE

References EFAB_POPULATE_DWORD_1, EFAB_TXD_SIZE, falcon_writel(), FCN_TX_DESC_UPD_REG_KER_DWORD, reg, and efab_tx_queue::write_ptr.

Referenced by efab_transmit().

◆ efab_fill_rx_queue()

static int efab_fill_rx_queue ( struct efab_nic efab,
struct efab_rx_queue rx_queue 
)
static

Definition at line 3649 of file etherfabric.c.

3651 {
3652  int fill_level = rx_queue->write_ptr - rx_queue->read_ptr;
3653  int space = EFAB_NUM_RX_DESC - fill_level - 1;
3654  int pushed = 0;
3655 
3656  while ( space ) {
3657  int buf_id = rx_queue->write_ptr % EFAB_NUM_RX_DESC;
3658  int desc_id = rx_queue->write_ptr % EFAB_RXD_SIZE;
3659  struct io_buffer *iob;
3661 
3662  assert ( rx_queue->buf[buf_id] == NULL );
3663  iob = alloc_iob ( EFAB_RX_BUF_SIZE );
3664  if ( !iob )
3665  break;
3666 
3667  EFAB_TRACE ( "pushing rx_buf[%d] iob %p data %p\n",
3668  buf_id, iob, iob->data );
3669 
3670  rx_queue->buf[buf_id] = iob;
3671  rxd = rx_queue->ring + desc_id;
3672  falcon_build_rx_desc ( rxd, iob );
3673  ++rx_queue->write_ptr;
3674  ++pushed;
3675  --space;
3676  }
3677 
3678  if ( pushed ) {
3679  /* Push the ptr to hardware */
3680  falcon_notify_rx_desc ( efab, rx_queue );
3681 
3682  fill_level = rx_queue->write_ptr - rx_queue->read_ptr;
3683  EFAB_TRACE ( "pushed %d rx buffers to fill level %d\n",
3684  pushed, fill_level );
3685  }
3686 
3687  if ( fill_level == 0 )
3688  return -ENOMEM;
3689  return 0;
3690 }
A quadword (i.e.
Definition: etherfabric.h:111
#define EFAB_RX_BUF_SIZE
static void falcon_notify_rx_desc(struct efab_nic *efab, struct efab_rx_queue *rx_queue)
Definition: etherfabric.c:3602
unsigned int write_ptr
struct io_buffer * alloc_iob(size_t len)
Allocate I/O buffer.
Definition: iobuf.c:129
#define EFAB_RXD_SIZE
#define ENOMEM
Not enough space.
Definition: errno.h:534
falcon_rx_desc_t * ring
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
static void falcon_build_rx_desc(falcon_rx_desc_t *rxd, struct io_buffer *iob)
Definition: etherfabric.c:3594
#define EFAB_NUM_RX_DESC
void * data
Start of data.
Definition: iobuf.h:48
unsigned int read_ptr
struct io_buffer * buf[EFAB_NUM_RX_DESC]
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
#define rxd
Definition: davicom.c:145
A persistent I/O buffer.
Definition: iobuf.h:33

References alloc_iob(), assert(), efab_rx_queue::buf, io_buffer::data, EFAB_NUM_RX_DESC, EFAB_RX_BUF_SIZE, EFAB_RXD_SIZE, EFAB_TRACE, ENOMEM, falcon_build_rx_desc(), falcon_notify_rx_desc(), NULL, efab_rx_queue::read_ptr, efab_rx_queue::ring, rxd, and efab_rx_queue::write_ptr.

Referenced by efab_open(), and efab_poll().

◆ efab_receive()

static void efab_receive ( struct efab_nic efab,
unsigned int  id,
int  len,
int  drop 
)
static

Definition at line 3693 of file etherfabric.c.

3694 {
3695  struct efab_rx_queue *rx_queue = &efab->rx_queue;
3696  struct io_buffer *iob;
3697  unsigned int read_ptr = rx_queue->read_ptr % EFAB_RXD_SIZE;
3698  unsigned int buf_ptr = rx_queue->read_ptr % EFAB_NUM_RX_DESC;
3699 
3700  assert ( id == read_ptr );
3701 
3702  /* Pop this rx buffer out of the software ring */
3703  iob = rx_queue->buf[buf_ptr];
3704  rx_queue->buf[buf_ptr] = NULL;
3705 
3706  EFAB_TRACE ( "popping rx_buf[%d] iob %p data %p with %d bytes %s\n",
3707  id, iob, iob->data, len, drop ? "bad" : "ok" );
3708 
3709  /* Pass the packet up if required */
3710  if ( drop )
3711  free_iob ( iob );
3712  else {
3713  iob_put ( iob, len );
3714  netdev_rx ( efab->netdev, iob );
3715  }
3716 
3717  ++rx_queue->read_ptr;
3718 }
#define iob_put(iobuf, len)
Definition: iobuf.h:120
void free_iob(struct io_buffer *iobuf)
Free I/O buffer.
Definition: iobuf.c:146
struct net_device * netdev
#define EFAB_RXD_SIZE
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
#define EFAB_NUM_RX_DESC
void netdev_rx(struct net_device *netdev, struct io_buffer *iobuf)
Add packet to receive queue.
Definition: netdevice.c:548
void * data
Start of data.
Definition: iobuf.h:48
unsigned int read_ptr
struct efab_rx_queue rx_queue
struct io_buffer * buf[EFAB_NUM_RX_DESC]
uint32_t len
Length.
Definition: ena.h:14
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
A persistent I/O buffer.
Definition: iobuf.h:33

References assert(), efab_rx_queue::buf, io_buffer::data, EFAB_NUM_RX_DESC, EFAB_RXD_SIZE, EFAB_TRACE, free_iob(), iob_put, len, efab_nic::netdev, netdev_rx(), NULL, efab_rx_queue::read_ptr, and efab_nic::rx_queue.

Referenced by falcon_handle_event().

◆ efab_transmit()

static int efab_transmit ( struct net_device netdev,
struct io_buffer iob 
)
static

Definition at line 3729 of file etherfabric.c.

3730 {
3731  struct efab_nic *efab = netdev->priv;
3732  struct efab_tx_queue *tx_queue = &efab->tx_queue;
3733  int fill_level, space;
3735  int buf_id;
3736 
3737  fill_level = tx_queue->write_ptr - tx_queue->read_ptr;
3738  space = EFAB_TXD_SIZE - fill_level - 1;
3739  if ( space < 1 )
3740  return -ENOBUFS;
3741 
3742  /* Save the iobuffer for later completion */
3743  buf_id = tx_queue->write_ptr % EFAB_TXD_SIZE;
3744  assert ( tx_queue->buf[buf_id] == NULL );
3745  tx_queue->buf[buf_id] = iob;
3746 
3747  EFAB_TRACE ( "tx_buf[%d] for iob %p data %p len %zd\n",
3748  buf_id, iob, iob->data, iob_len ( iob ) );
3749 
3750  /* Form the descriptor, and push it to hardware */
3751  txd = tx_queue->ring + buf_id;
3752  falcon_build_tx_desc ( txd, iob );
3753  ++tx_queue->write_ptr;
3754  falcon_notify_tx_desc ( efab, tx_queue );
3755 
3756  return 0;
3757 }
A quadword (i.e.
Definition: etherfabric.h:111
unsigned int write_ptr
static void falcon_build_tx_desc(falcon_tx_desc_t *txd, struct io_buffer *iob)
Definition: etherfabric.c:3621
struct io_buffer * buf[EFAB_TXD_SIZE]
unsigned int read_ptr
static void falcon_notify_tx_desc(struct efab_nic *efab, struct efab_tx_queue *tx_queue)
Definition: etherfabric.c:3629
struct efab_tx_queue tx_queue
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
void * priv
Driver private data.
Definition: netdevice.h:431
static struct net_device * netdev
Definition: gdbudp.c:52
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
#define txd
Definition: davicom.c:143
static size_t iob_len(struct io_buffer *iobuf)
Calculate length of data in an I/O buffer.
Definition: iobuf.h:155
falcon_tx_desc_t * ring
#define ENOBUFS
No buffer space available.
Definition: errno.h:498
void * data
Start of data.
Definition: iobuf.h:48
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
#define EFAB_TXD_SIZE

References assert(), efab_tx_queue::buf, io_buffer::data, EFAB_TRACE, EFAB_TXD_SIZE, ENOBUFS, falcon_build_tx_desc(), falcon_notify_tx_desc(), iob_len(), netdev, NULL, net_device::priv, efab_tx_queue::read_ptr, efab_tx_queue::ring, efab_nic::tx_queue, txd, and efab_tx_queue::write_ptr.

◆ efab_transmit_done()

static int efab_transmit_done ( struct efab_nic efab,
int  id 
)
static

Definition at line 3760 of file etherfabric.c.

3761 {
3762  struct efab_tx_queue *tx_queue = &efab->tx_queue;
3763  unsigned int read_ptr, stop;
3764 
3765  /* Complete all buffers from read_ptr up to and including id */
3766  read_ptr = tx_queue->read_ptr % EFAB_TXD_SIZE;
3767  stop = ( id + 1 ) % EFAB_TXD_SIZE;
3768 
3769  while ( read_ptr != stop ) {
3770  struct io_buffer *iob = tx_queue->buf[read_ptr];
3771  assert ( iob );
3772 
3773  /* Complete the tx buffer */
3774  if ( iob )
3775  netdev_tx_complete ( efab->netdev, iob );
3776  tx_queue->buf[read_ptr] = NULL;
3777 
3778  ++tx_queue->read_ptr;
3779  read_ptr = tx_queue->read_ptr % EFAB_TXD_SIZE;
3780  }
3781 
3782  return 0;
3783 }
static void netdev_tx_complete(struct net_device *netdev, struct io_buffer *iobuf)
Complete network transmission.
Definition: netdevice.h:752
struct net_device * netdev
struct io_buffer * buf[EFAB_TXD_SIZE]
unsigned int read_ptr
struct efab_tx_queue tx_queue
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
#define EFAB_TXD_SIZE
A persistent I/O buffer.
Definition: iobuf.h:33

References assert(), efab_tx_queue::buf, EFAB_TXD_SIZE, efab_nic::netdev, netdev_tx_complete(), NULL, efab_tx_queue::read_ptr, and efab_nic::tx_queue.

Referenced by falcon_handle_event().

◆ falcon_clear_interrupts()

static void falcon_clear_interrupts ( struct efab_nic efab)
static

Definition at line 3794 of file etherfabric.c.

3795 {
3796  efab_dword_t reg;
3797 
3798  if ( efab->pci_revision == FALCON_REV_B0 ) {
3799  /* read the ISR */
3800  falcon_readl( efab, &reg, INT_ISR0_B0 );
3801  }
3802  else {
3803  /* write to the INT_ACK register */
3804  EFAB_ZERO_DWORD ( reg );
3806  mb();
3807  falcon_readl ( efab, &reg,
3809  }
3810 }
static void falcon_readl(struct efab_nic *efab, efab_dword_t *value, unsigned int reg)
Read dword from a portion of a Falcon register.
Definition: etherfabric.c:1284
static unsigned int unsigned int reg
Definition: myson.h:162
#define INT_ISR0_B0
Definition: etherfabric.c:431
#define FALCON_REV_B0
Definition: etherfabric.c:531
A doubleword (i.e.
Definition: etherfabric.h:102
static void falcon_writel(struct efab_nic *efab, efab_dword_t *value, unsigned int reg)
Write dword to Falcon register that allows partial writes.
Definition: etherfabric.c:1238
#define EFAB_ZERO_DWORD(dword)
Definition: etherfabric.h:459
#define WORK_AROUND_BROKEN_PCI_READS_REG_KER_A1
Definition: etherfabric.c:440
void mb(void)
Memory barrier.
#define FCN_INT_ACK_KER_REG_A1
Definition: etherfabric.c:435

References EFAB_ZERO_DWORD, falcon_readl(), FALCON_REV_B0, falcon_writel(), FCN_INT_ACK_KER_REG_A1, INT_ISR0_B0, mb(), efab_nic::pci_revision, reg, and WORK_AROUND_BROKEN_PCI_READS_REG_KER_A1.

Referenced by efab_poll().

◆ falcon_handle_event()

static void falcon_handle_event ( struct efab_nic efab,
falcon_event_t evt 
)
static

Definition at line 3813 of file etherfabric.c.

3814 {
3815  int ev_code, desc_ptr, len, drop;
3816 
3817  /* Decode event */
3818  ev_code = EFAB_QWORD_FIELD ( *evt, FCN_EV_CODE );
3819  switch ( ev_code ) {
3820  case FCN_TX_IP_EV_DECODE:
3821  desc_ptr = EFAB_QWORD_FIELD ( *evt, FCN_TX_EV_DESC_PTR );
3822  efab_transmit_done ( efab, desc_ptr );
3823  break;
3824 
3825  case FCN_RX_IP_EV_DECODE:
3826  desc_ptr = EFAB_QWORD_FIELD ( *evt, FCN_RX_EV_DESC_PTR );
3827  len = EFAB_QWORD_FIELD ( *evt, FCN_RX_EV_BYTE_CNT );
3828  drop = !EFAB_QWORD_FIELD ( *evt, FCN_RX_EV_PKT_OK );
3829 
3830  efab_receive ( efab, desc_ptr, len, drop );
3831  break;
3832 
3833  default:
3834  EFAB_TRACE ( "Unknown event type %d\n", ev_code );
3835  break;
3836  }
3837 }
#define FCN_TX_IP_EV_DECODE
Definition: etherfabric.c:1137
#define FCN_RX_IP_EV_DECODE
Definition: etherfabric.c:1136
#define EFAB_QWORD_FIELD
Definition: etherfabric.h:275
static void efab_receive(struct efab_nic *efab, unsigned int id, int len, int drop)
Definition: etherfabric.c:3693
static int efab_transmit_done(struct efab_nic *efab, int id)
Definition: etherfabric.c:3760
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
uint32_t len
Length.
Definition: ena.h:14

References EFAB_QWORD_FIELD, efab_receive(), EFAB_TRACE, efab_transmit_done(), FCN_RX_IP_EV_DECODE, FCN_TX_IP_EV_DECODE, and len.

Referenced by efab_poll().

◆ efab_poll()

static void efab_poll ( struct net_device netdev)
static

Definition at line 3848 of file etherfabric.c.

3849 {
3850  struct efab_nic *efab = netdev->priv;
3851  struct efab_ev_queue *ev_queue = &efab->ev_queue;
3852  struct efab_rx_queue *rx_queue = &efab->rx_queue;
3853  falcon_event_t *evt;
3854 
3855  /* Read the event queue by directly looking for events
3856  * (we don't even bother to read the eventq write ptr) */
3857  evt = ev_queue->ring + ev_queue->read_ptr;
3858  while ( falcon_event_present ( evt ) ) {
3859 
3860  EFAB_TRACE ( "Event at index 0x%x address %p is "
3861  EFAB_QWORD_FMT "\n", ev_queue->read_ptr,
3862  evt, EFAB_QWORD_VAL ( *evt ) );
3863 
3864  falcon_handle_event ( efab, evt );
3865 
3866  /* Clear the event */
3867  EFAB_SET_QWORD ( *evt );
3868 
3869  /* Move to the next event. We don't ack the event
3870  * queue until the end */
3871  ev_queue->read_ptr = ( ( ev_queue->read_ptr + 1 ) %
3872  EFAB_EVQ_SIZE );
3873  evt = ev_queue->ring + ev_queue->read_ptr;
3874  }
3875 
3876  /* Push more buffers if needed */
3877  (void) efab_fill_rx_queue ( efab, rx_queue );
3878 
3879  /* Clear any pending interrupts */
3880  falcon_clear_interrupts ( efab );
3881 
3882  /* Ack the event queue */
3883  falcon_eventq_read_ack ( efab, ev_queue );
3884 }
struct efab_ev_queue ev_queue
A quadword (i.e.
Definition: etherfabric.h:111
static void falcon_clear_interrupts(struct efab_nic *efab)
Definition: etherfabric.c:3794
#define EFAB_QWORD_FMT
Format string for printing an efab_qword_t.
Definition: etherfabric.h:133
void * priv
Driver private data.
Definition: netdevice.h:431
static struct net_device * netdev
Definition: gdbudp.c:52
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
#define EFAB_EVQ_SIZE
#define EFAB_SET_QWORD(qword)
Definition: etherfabric.h:434
static void falcon_eventq_read_ack(struct efab_nic *efab, struct efab_ev_queue *ev_queue)
Definition: etherfabric.c:1328
static void falcon_handle_event(struct efab_nic *efab, falcon_event_t *evt)
Definition: etherfabric.c:3813
unsigned int read_ptr
static int efab_fill_rx_queue(struct efab_nic *efab, struct efab_rx_queue *rx_queue)
Definition: etherfabric.c:3649
falcon_event_t * ring
struct efab_rx_queue rx_queue
#define EFAB_QWORD_VAL(qword)
printk parameters for printing an efab_qword_t
Definition: etherfabric.h:143
static int falcon_event_present(falcon_event_t *event)
See if an event is present.
Definition: etherfabric.c:1321

References EFAB_EVQ_SIZE, efab_fill_rx_queue(), EFAB_QWORD_FMT, EFAB_QWORD_VAL, EFAB_SET_QWORD, EFAB_TRACE, efab_nic::ev_queue, falcon_clear_interrupts(), falcon_event_present(), falcon_eventq_read_ack(), falcon_handle_event(), netdev, net_device::priv, efab_ev_queue::read_ptr, efab_ev_queue::ring, and efab_nic::rx_queue.

◆ efab_irq()

static void efab_irq ( struct net_device netdev,
int  enable 
)
static

Definition at line 3887 of file etherfabric.c.

3888 {
3889  struct efab_nic *efab = netdev->priv;
3890  struct efab_ev_queue *ev_queue = &efab->ev_queue;
3891 
3892  switch ( enable ) {
3893  case 0:
3894  falcon_interrupts ( efab, 0, 0 );
3895  break;
3896  case 1:
3897  falcon_interrupts ( efab, 1, 0 );
3898  falcon_eventq_read_ack ( efab, ev_queue );
3899  break;
3900  case 2:
3901  falcon_interrupts ( efab, 1, 1 );
3902  break;
3903  }
3904 }
struct efab_ev_queue ev_queue
static void falcon_interrupts(struct efab_nic *efab, int enabled, int force)
Definition: etherfabric.c:1377
void * priv
Driver private data.
Definition: netdevice.h:431
static struct net_device * netdev
Definition: gdbudp.c:52
static void falcon_eventq_read_ack(struct efab_nic *efab, struct efab_ev_queue *ev_queue)
Definition: etherfabric.c:1328

References efab_nic::ev_queue, falcon_eventq_read_ack(), falcon_interrupts(), netdev, and net_device::priv.

◆ efab_free_resources()

static void efab_free_resources ( struct efab_nic efab)
static

Definition at line 3915 of file etherfabric.c.

3916 {
3917  struct efab_ev_queue *ev_queue = &efab->ev_queue;
3918  struct efab_rx_queue *rx_queue = &efab->rx_queue;
3919  struct efab_tx_queue *tx_queue = &efab->tx_queue;
3920  int i;
3921 
3922  for ( i = 0; i < EFAB_NUM_RX_DESC; i++ ) {
3923  if ( rx_queue->buf[i] )
3924  free_iob ( rx_queue->buf[i] );
3925  }
3926 
3927  for ( i = 0; i < EFAB_TXD_SIZE; i++ ) {
3928  if ( tx_queue->buf[i] )
3929  netdev_tx_complete ( efab->netdev, tx_queue->buf[i] );
3930  }
3931 
3932  if ( rx_queue->ring )
3933  falcon_free_special_buffer ( rx_queue->ring );
3934 
3935  if ( tx_queue->ring )
3936  falcon_free_special_buffer ( tx_queue->ring );
3937 
3938  if ( ev_queue->ring )
3939  falcon_free_special_buffer ( ev_queue->ring );
3940 
3941  memset ( rx_queue, 0, sizeof ( *rx_queue ) );
3942  memset ( tx_queue, 0, sizeof ( *tx_queue ) );
3943  memset ( ev_queue, 0, sizeof ( *ev_queue ) );
3944 
3945  /* Ensure subsequent buffer allocations start at id 0 */
3946  efab->buffer_head = 0;
3947 }
static void netdev_tx_complete(struct net_device *netdev, struct io_buffer *iobuf)
Complete network transmission.
Definition: netdevice.h:752
struct efab_ev_queue ev_queue
void free_iob(struct io_buffer *iobuf)
Free I/O buffer.
Definition: iobuf.c:146
struct net_device * netdev
struct io_buffer * buf[EFAB_TXD_SIZE]
struct efab_tx_queue tx_queue
falcon_rx_desc_t * ring
falcon_tx_desc_t * ring
#define EFAB_NUM_RX_DESC
static void falcon_free_special_buffer(void *p)
Definition: etherfabric.c:3027
falcon_event_t * ring
struct efab_rx_queue rx_queue
struct io_buffer * buf[EFAB_NUM_RX_DESC]
#define EFAB_TXD_SIZE
void * memset(void *dest, int character, size_t len) __nonnull

References efab_tx_queue::buf, efab_rx_queue::buf, efab_nic::buffer_head, EFAB_NUM_RX_DESC, EFAB_TXD_SIZE, efab_nic::ev_queue, falcon_free_special_buffer(), free_iob(), memset(), efab_nic::netdev, netdev_tx_complete(), efab_tx_queue::ring, efab_rx_queue::ring, efab_ev_queue::ring, efab_nic::rx_queue, and efab_nic::tx_queue.

Referenced by efab_close(), and efab_open().

◆ efab_alloc_resources()

static int efab_alloc_resources ( struct efab_nic efab)
static

Definition at line 3950 of file etherfabric.c.

3951 {
3952  struct efab_ev_queue *ev_queue = &efab->ev_queue;
3953  struct efab_rx_queue *rx_queue = &efab->rx_queue;
3954  struct efab_tx_queue *tx_queue = &efab->tx_queue;
3955  size_t bytes;
3956 
3957  /* Allocate the hardware event queue */
3958  bytes = sizeof ( falcon_event_t ) * EFAB_TXD_SIZE;
3959  ev_queue->ring = falcon_alloc_special_buffer ( efab, bytes,
3960  &ev_queue->entry );
3961  if ( !ev_queue->ring )
3962  goto fail1;
3963 
3964  /* Initialise the hardware event queue */
3965  memset ( ev_queue->ring, 0xff, bytes );
3966 
3967  /* Allocate the hardware tx queue */
3968  bytes = sizeof ( falcon_tx_desc_t ) * EFAB_TXD_SIZE;
3969  tx_queue->ring = falcon_alloc_special_buffer ( efab, bytes,
3970  &tx_queue->entry );
3971  if ( ! tx_queue->ring )
3972  goto fail2;
3973 
3974  /* Allocate the hardware rx queue */
3975  bytes = sizeof ( falcon_rx_desc_t ) * EFAB_RXD_SIZE;
3976  rx_queue->ring = falcon_alloc_special_buffer ( efab, bytes,
3977  &rx_queue->entry );
3978  if ( ! rx_queue->ring )
3979  goto fail3;
3980 
3981  return 0;
3982 
3983 fail3:
3984  falcon_free_special_buffer ( tx_queue->ring );
3985  tx_queue->ring = NULL;
3986 fail2:
3987  falcon_free_special_buffer ( ev_queue->ring );
3988  ev_queue->ring = NULL;
3989 fail1:
3990  return -ENOMEM;
3991 }
struct efab_special_buffer entry
struct efab_ev_queue ev_queue
struct efab_special_buffer entry
efab_qword_t falcon_rx_desc_t
static void * falcon_alloc_special_buffer(struct efab_nic *efab, int bytes, struct efab_special_buffer *entry)
Definition: etherfabric.c:3035
#define EFAB_RXD_SIZE
struct efab_tx_queue tx_queue
#define ENOMEM
Not enough space.
Definition: errno.h:534
falcon_rx_desc_t * ring
falcon_tx_desc_t * ring
static void falcon_free_special_buffer(void *p)
Definition: etherfabric.c:3027
falcon_event_t * ring
efab_qword_t falcon_tx_desc_t
struct efab_special_buffer entry
uint8_t bytes[64]
Definition: ib_mad.h:16
struct efab_rx_queue rx_queue
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
#define EFAB_TXD_SIZE
void * memset(void *dest, int character, size_t len) __nonnull
efab_qword_t falcon_event_t

References bytes, EFAB_RXD_SIZE, EFAB_TXD_SIZE, ENOMEM, efab_tx_queue::entry, efab_rx_queue::entry, efab_ev_queue::entry, efab_nic::ev_queue, falcon_alloc_special_buffer(), falcon_free_special_buffer(), memset(), NULL, efab_tx_queue::ring, efab_rx_queue::ring, efab_ev_queue::ring, efab_nic::rx_queue, and efab_nic::tx_queue.

Referenced by efab_open().

◆ efab_init_mac()

static int efab_init_mac ( struct efab_nic efab)
static

Definition at line 3994 of file etherfabric.c.

3995 {
3996  int count, rc;
3997 
3998  /* This can take several seconds */
3999  EFAB_LOG ( "Waiting for link..\n" );
4000  for ( count=0; count<5; count++ ) {
4001  rc = efab->mac_op->init ( efab );
4002  if ( rc ) {
4003  EFAB_ERR ( "Failed reinitialising MAC, error %s\n",
4004  strerror ( rc ));
4005  return rc;
4006  }
4007 
4008  /* Sleep for 2s to wait for the link to settle, either
4009  * because we want to use it, or because we're about
4010  * to reset the mac anyway
4011  */
4012  mdelay ( 2000 );
4013 
4014  if ( ! efab->link_up ) {
4015  EFAB_ERR ( "!\n" );
4016  continue;
4017  }
4018 
4019  EFAB_LOG ( "\n%dMbps %s-duplex\n",
4020  ( efab->link_options & LPA_EF_10000 ? 10000 :
4021  ( efab->link_options & LPA_EF_1000 ? 1000 :
4022  ( efab->link_options & LPA_100 ? 100 : 10 ) ) ),
4023  ( efab->link_options & LPA_EF_DUPLEX ?
4024  "full" : "half" ) );
4025 
4026  /* TODO: Move link state handling to the poll() routine */
4027  netdev_link_up ( efab->netdev );
4028  return 0;
4029  }
4030 
4031  EFAB_ERR ( "timed initialising MAC\n" );
4032  return -ETIMEDOUT;
4033 }
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
struct net_device * netdev
#define LPA_EF_1000
Definition: etherfabric.c:96
static void netdev_link_up(struct net_device *netdev)
Mark network device as having link up.
Definition: netdevice.h:774
#define LPA_100
Definition: mii.h:114
uint16_t count
Number of entries.
Definition: ena.h:22
struct efab_mac_operations * mac_op
char * strerror(int errno)
Retrieve string representation of error number.
Definition: strerror.c:78
unsigned int link_options
GMII link options.
int link_up
Link status.
#define EFAB_LOG(...)
Definition: etherfabric.c:50
void mdelay(unsigned long msecs)
Delay for a fixed number of milliseconds.
Definition: timer.c:78
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define LPA_EF_DUPLEX
Definition: etherfabric.c:98
int(* init)(struct efab_nic *efab)
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669
#define LPA_EF_10000
Definition: etherfabric.c:97

References count, EFAB_ERR, EFAB_LOG, ETIMEDOUT, efab_mac_operations::init, efab_nic::link_options, efab_nic::link_up, LPA_100, LPA_EF_1000, LPA_EF_10000, LPA_EF_DUPLEX, efab_nic::mac_op, mdelay(), efab_nic::netdev, netdev_link_up(), rc, and strerror().

Referenced by efab_open().

◆ efab_close()

static void efab_close ( struct net_device netdev)
static

Definition at line 4036 of file etherfabric.c.

4037 {
4038  struct efab_nic *efab = netdev->priv;
4039 
4040  falcon_fini_resources ( efab );
4041  efab_free_resources ( efab );
4042  efab->board_op->fini ( efab );
4043  falcon_reset ( efab );
4044 }
static void efab_free_resources(struct efab_nic *efab)
Definition: etherfabric.c:3915
void * priv
Driver private data.
Definition: netdevice.h:431
static struct net_device * netdev
Definition: gdbudp.c:52
void(* fini)(struct efab_nic *efab)
static void falcon_fini_resources(struct efab_nic *efab)
Definition: etherfabric.c:3553
static int falcon_reset(struct efab_nic *efab)
Definition: etherfabric.c:3111
struct efab_board_operations * board_op
Board, MAC, and PHY operations tables.

References efab_nic::board_op, efab_free_resources(), falcon_fini_resources(), falcon_reset(), efab_board_operations::fini, netdev, and net_device::priv.

◆ efab_open()

static int efab_open ( struct net_device netdev)
static

Definition at line 4047 of file etherfabric.c.

4048 {
4049  struct efab_nic *efab = netdev->priv;
4050  struct efab_rx_queue *rx_queue = &efab->rx_queue;
4051  int rc;
4052 
4053  rc = falcon_reset ( efab );
4054  if ( rc )
4055  goto fail1;
4056 
4057  rc = efab->board_op->init ( efab );
4058  if ( rc )
4059  goto fail2;
4060 
4061  rc = falcon_init_sram ( efab );
4062  if ( rc )
4063  goto fail3;
4064 
4065  /* Configure descriptor caches before pushing hardware queues */
4066  falcon_setup_nic ( efab );
4067 
4068  rc = efab_alloc_resources ( efab );
4069  if ( rc )
4070  goto fail4;
4071 
4072  falcon_init_resources ( efab );
4073 
4074  /* Push rx buffers */
4075  rc = efab_fill_rx_queue ( efab, rx_queue );
4076  if ( rc )
4077  goto fail5;
4078 
4079  /* Try and bring the interface up */
4080  rc = efab_init_mac ( efab );
4081  if ( rc )
4082  goto fail6;
4083 
4084  return 0;
4085 
4086 fail6:
4087 fail5:
4088  efab_free_resources ( efab );
4089 fail4:
4090 fail3:
4091  efab->board_op->fini ( efab );
4092 fail2:
4093  falcon_reset ( efab );
4094 fail1:
4095  return rc;
4096 }
static void efab_free_resources(struct efab_nic *efab)
Definition: etherfabric.c:3915
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
int(* init)(struct efab_nic *efab)
void * priv
Driver private data.
Definition: netdevice.h:431
static void falcon_init_resources(struct efab_nic *efab)
Definition: etherfabric.c:3494
static struct net_device * netdev
Definition: gdbudp.c:52
void(* fini)(struct efab_nic *efab)
static int falcon_reset(struct efab_nic *efab)
Definition: etherfabric.c:3111
static int falcon_init_sram(struct efab_nic *efab)
Definition: etherfabric.c:3369
struct efab_board_operations * board_op
Board, MAC, and PHY operations tables.
static int efab_fill_rx_queue(struct efab_nic *efab, struct efab_rx_queue *rx_queue)
Definition: etherfabric.c:3649
static int efab_init_mac(struct efab_nic *efab)
Definition: etherfabric.c:3994
static void falcon_setup_nic(struct efab_nic *efab)
Definition: etherfabric.c:3408
static int efab_alloc_resources(struct efab_nic *efab)
Definition: etherfabric.c:3950
struct efab_rx_queue rx_queue

References efab_nic::board_op, efab_alloc_resources(), efab_fill_rx_queue(), efab_free_resources(), efab_init_mac(), falcon_init_resources(), falcon_init_sram(), falcon_reset(), falcon_setup_nic(), efab_board_operations::fini, efab_board_operations::init, netdev, net_device::priv, rc, and efab_nic::rx_queue.

◆ efab_remove()

static void efab_remove ( struct pci_device pci)
static

Definition at line 4107 of file etherfabric.c.

4108 {
4109  struct net_device *netdev = pci_get_drvdata ( pci );
4110  struct efab_nic *efab = netdev->priv;
4111 
4112  if ( efab->membase ) {
4113  falcon_reset ( efab );
4114 
4115  iounmap ( efab->membase );
4116  efab->membase = NULL;
4117  }
4118 
4119  if ( efab->nvo.nvs ) {
4120  unregister_nvo ( &efab->nvo );
4121  efab->nvo.nvs = NULL;
4122  }
4123 
4125  netdev_nullify ( netdev );
4126  netdev_put ( netdev );
4127 }
struct nvo_block nvo
static void netdev_put(struct net_device *netdev)
Drop reference to network device.
Definition: netdevice.h:572
void * priv
Driver private data.
Definition: netdevice.h:431
static struct net_device * netdev
Definition: gdbudp.c:52
void * membase
Memory and IO base.
void unregister_netdev(struct net_device *netdev)
Unregister network device.
Definition: netdevice.c:941
void unregister_nvo(struct nvo_block *nvo)
Unregister non-volatile stored options.
Definition: nvo.c:324
struct nvs_device * nvs
Underlying non-volatile storage device.
Definition: nvo.h:26
A network device.
Definition: netdevice.h:352
static void netdev_nullify(struct net_device *netdev)
Stop using a network device.
Definition: netdevice.h:528
static int falcon_reset(struct efab_nic *efab)
Definition: etherfabric.c:3111
static void * pci_get_drvdata(struct pci_device *pci)
Get PCI driver-private data.
Definition: pci.h:369
void iounmap(volatile const void *io_addr)
Unmap I/O address.
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321

References falcon_reset(), iounmap(), efab_nic::membase, netdev, netdev_nullify(), netdev_put(), NULL, efab_nic::nvo, nvo_block::nvs, pci_get_drvdata(), net_device::priv, unregister_netdev(), and unregister_nvo().

◆ efab_probe()

static int efab_probe ( struct pci_device pci)
static

Definition at line 4130 of file etherfabric.c.

4131 {
4132  struct net_device *netdev;
4133  struct efab_nic *efab;
4134  unsigned long mmio_start, mmio_len;
4135  int rc;
4136 
4137  /* Create the network adapter */
4138  netdev = alloc_etherdev ( sizeof ( struct efab_nic ) );
4139  if ( ! netdev ) {
4140  rc = -ENOMEM;
4141  goto fail1;
4142  }
4143 
4144  /* Initialise the network adapter, and initialise private storage */
4146  pci_set_drvdata ( pci, netdev );
4147  netdev->dev = &pci->dev;
4148 
4149  efab = netdev->priv;
4150  memset ( efab, 0, sizeof ( *efab ) );
4151  efab->netdev = netdev;
4152 
4153  /* Get iobase/membase */
4154  mmio_start = pci_bar_start ( pci, PCI_BASE_ADDRESS_2 );
4155  mmio_len = pci_bar_size ( pci, PCI_BASE_ADDRESS_2 );
4156  efab->membase = pci_ioremap ( pci, mmio_start, mmio_len );
4157  EFAB_TRACE ( "BAR of %lx bytes at phys %lx mapped at %p\n",
4158  mmio_len, mmio_start, efab->membase );
4159 
4160  /* Enable the PCI device */
4161  adjust_pci_device ( pci );
4162  efab->iobase = pci->ioaddr & ~3;
4163 
4164  /* Determine the NIC variant */
4165  falcon_probe_nic_variant ( efab, pci );
4166 
4167  /* Read the SPI interface and determine the MAC address,
4168  * and the board and phy variant. Hook in the op tables */
4169  rc = falcon_probe_spi ( efab );
4170  if ( rc )
4171  goto fail2;
4172  rc = falcon_probe_nvram ( efab );
4173  if ( rc )
4174  goto fail3;
4175 
4176  memcpy ( netdev->hw_addr, efab->mac_addr, ETH_ALEN );
4177 
4178  rc = register_netdev ( netdev );
4179  if ( rc )
4180  goto fail4;
4181  netdev_link_up ( netdev );
4182 
4183  /* Advertise non-volatile storage */
4184  if ( efab->nvo.nvs ) {
4185  rc = register_nvo ( &efab->nvo, netdev_settings ( netdev ) );
4186  if ( rc )
4187  goto fail5;
4188  }
4189 
4190  EFAB_LOG ( "Found %s EtherFabric %s %s revision %d\n", pci->id->name,
4191  efab->is_asic ? "ASIC" : "FPGA",
4192  efab->phy_10g ? "10G" : "1G",
4193  efab->pci_revision );
4194 
4195  return 0;
4196 
4197 fail5:
4199 fail4:
4200 fail3:
4201 fail2:
4202  iounmap ( efab->membase );
4203  efab->membase = NULL;
4204  netdev_put ( netdev );
4205 fail1:
4206  return rc;
4207 }
struct nvo_block nvo
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
uint8_t mac_addr[ETH_ALEN]
MAC address.
unsigned long ioaddr
I/O address.
Definition: pci.h:221
unsigned int iobase
int register_nvo(struct nvo_block *nvo, struct settings *parent)
Register non-volatile stored options.
Definition: nvo.c:293
struct net_device * netdev
void adjust_pci_device(struct pci_device *pci)
Enable PCI device.
Definition: pci.c:154
struct device dev
Generic device.
Definition: pci.h:208
static struct settings * netdev_settings(struct net_device *netdev)
Get per-netdevice configuration settings block.
Definition: netdevice.h:583
static void netdev_init(struct net_device *netdev, struct net_device_operations *op)
Initialise a network device.
Definition: netdevice.h:515
static void pci_set_drvdata(struct pci_device *pci, void *priv)
Set PCI driver-private data.
Definition: pci.h:359
#define ENOMEM
Not enough space.
Definition: errno.h:534
void * memcpy(void *dest, const void *src, size_t len) __nonnull
static void netdev_put(struct net_device *netdev)
Drop reference to network device.
Definition: netdevice.h:572
void * priv
Driver private data.
Definition: netdevice.h:431
static void netdev_link_up(struct net_device *netdev)
Mark network device as having link up.
Definition: netdevice.h:774
#define PCI_BASE_ADDRESS_2
Definition: pci.h:64
static struct net_device * netdev
Definition: gdbudp.c:52
static int falcon_probe_spi(struct efab_nic *efab)
Definition: etherfabric.c:3218
static void falcon_probe_nic_variant(struct efab_nic *efab, struct pci_device *pci)
Definition: etherfabric.c:3175
unsigned long pci_bar_start(struct pci_device *pci, unsigned int reg)
Find the start of a PCI BAR.
Definition: pci.c:96
static struct net_device_operations efab_operations
Definition: etherfabric.c:4098
void * membase
Memory and IO base.
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
void unregister_netdev(struct net_device *netdev)
Unregister network device.
Definition: netdevice.c:941
struct nvs_device * nvs
Underlying non-volatile storage device.
Definition: nvo.h:26
unsigned long pci_bar_size(struct pci_device *pci, unsigned int reg)
Find the size of a PCI BAR.
Definition: pciextra.c:92
int register_netdev(struct net_device *netdev)
Register network device.
Definition: netdevice.c:759
A network device.
Definition: netdevice.h:352
#define ETH_ALEN
Definition: if_ether.h:8
const char * name
Name.
Definition: pci.h:172
struct device * dev
Underlying hardware device.
Definition: netdevice.h:364
#define EFAB_LOG(...)
Definition: etherfabric.c:50
struct net_device * alloc_etherdev(size_t priv_size)
Allocate Ethernet device.
Definition: ethernet.c:264
struct pci_device_id * id
Driver device ID.
Definition: pci.h:243
void iounmap(volatile const void *io_addr)
Unmap I/O address.
void * pci_ioremap(struct pci_device *pci, unsigned long bus_addr, size_t len)
Map PCI bus address as an I/O address.
uint8_t hw_addr[MAX_HW_ADDR_LEN]
Hardware address.
Definition: netdevice.h:381
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
static int falcon_probe_nvram(struct efab_nic *efab)
Definition: etherfabric.c:3280
void * memset(void *dest, int character, size_t len) __nonnull

References adjust_pci_device(), alloc_etherdev(), pci_device::dev, net_device::dev, EFAB_LOG, efab_operations, EFAB_TRACE, ENOMEM, ETH_ALEN, falcon_probe_nic_variant(), falcon_probe_nvram(), falcon_probe_spi(), net_device::hw_addr, pci_device::id, pci_device::ioaddr, efab_nic::iobase, iounmap(), efab_nic::is_asic, efab_nic::mac_addr, efab_nic::membase, memcpy(), memset(), pci_device_id::name, netdev, efab_nic::netdev, netdev_init(), netdev_link_up(), netdev_put(), netdev_settings(), NULL, efab_nic::nvo, nvo_block::nvs, pci_bar_size(), pci_bar_start(), PCI_BASE_ADDRESS_2, pci_ioremap(), efab_nic::pci_revision, pci_set_drvdata(), efab_nic::phy_10g, net_device::priv, rc, register_netdev(), register_nvo(), and unregister_netdev().

Variable Documentation

◆ __invalid_queue_size

int __invalid_queue_size

◆ falcon_i2c_bit_ops

struct bit_basher_operations falcon_i2c_bit_ops
static
Initial value:
= {
}
static int falcon_i2c_bit_read(struct bit_basher *basher, unsigned int bit_id)
Definition: etherfabric.c:1527
static void falcon_i2c_bit_write(struct bit_basher *basher, unsigned int bit_id, unsigned long data)
Definition: etherfabric.c:1503

Definition at line 1549 of file etherfabric.c.

Referenced by falcon_probe_spi().

◆ falcon_gmac_operations

struct efab_mac_operations falcon_gmac_operations
static
Initial value:
= {
}
static int falcon_init_gmac(struct efab_nic *efab)
Definition: etherfabric.c:2025

Definition at line 2046 of file etherfabric.c.

Referenced by falcon_probe_nvram().

◆ falcon_xmac_operations

struct efab_mac_operations falcon_xmac_operations
static
Initial value:
= {
}
static int falcon_init_xmac(struct efab_nic *efab)
Definition: etherfabric.c:2317

Definition at line 2383 of file etherfabric.c.

Referenced by falcon_probe_nvram().

◆ falcon_xaui_phy_ops

struct efab_phy_operations falcon_xaui_phy_ops
static
Initial value:
= {
.mmds = 0,
}
static int falcon_xaui_phy_init(struct efab_nic *efab)
Definition: etherfabric.c:2396

Definition at line 2405 of file etherfabric.c.

Referenced by falcon_probe_nvram().

◆ falcon_alaska_phy_ops

struct efab_phy_operations falcon_alaska_phy_ops
static
Initial value:
= {
.init = alaska_init,
}
static int alaska_init(struct efab_nic *efab)
Initialise Alaska PHY.
Definition: etherfabric.c:2424

Definition at line 2442 of file etherfabric.c.

Referenced by falcon_probe_nvram().

◆ falcon_xfp_phy_ops

struct efab_phy_operations falcon_xfp_phy_ops
static
Initial value:
= {
}
#define XFP_REQUIRED_DEVS
Definition: etherfabric.c:2454
static int falcon_xfp_phy_init(struct efab_nic *efab)
Definition: etherfabric.c:2459

Definition at line 2474 of file etherfabric.c.

Referenced by falcon_probe_nvram().

◆ falcon_txc_phy_ops

struct efab_phy_operations falcon_txc_phy_ops
static
Initial value:
= {
}
#define TXC_REQUIRED_DEVS
Definition: etherfabric.c:2519
static int falcon_txc_phy_init(struct efab_nic *efab)
Definition: etherfabric.c:2546

Definition at line 2603 of file etherfabric.c.

Referenced by falcon_probe_nvram().

◆ falcon_tenxpress_phy_ops

struct efab_phy_operations falcon_tenxpress_phy_ops
static
Initial value:
= {
}
static int falcon_tenxpress_phy_init(struct efab_nic *efab)
Definition: etherfabric.c:2664
#define TENXPRESS_REQUIRED_DEVS
Definition: etherfabric.c:2617

Definition at line 2699 of file etherfabric.c.

Referenced by falcon_probe_nvram().

◆ falcon_pm8358_phy_ops

struct efab_phy_operations falcon_pm8358_phy_ops
static
Initial value:
= {
}
static int falcon_pm8358_phy_init(struct efab_nic *efab)
Definition: etherfabric.c:2744
#define PM8358_REQUIRED_DEVS
Definition: etherfabric.c:2713

Definition at line 2777 of file etherfabric.c.

Referenced by falcon_probe_nvram().

◆ i2c_pca9539

struct i2c_device i2c_pca9539
static
Initial value:
= {
.dev_addr = PCA9539,
.dev_addr_len = 1,
.word_addr_len = 1,
}
#define PCA9539
Definition: etherfabric.c:2793

Definition at line 2829 of file etherfabric.c.

Referenced by sfe4001_fini(), and sfe4001_init().

◆ i2c_max6647

struct i2c_device i2c_max6647
static
Initial value:
= {
.dev_addr = MAX6647,
.dev_addr_len = 1,
.word_addr_len = 1,
}
#define MAX6647
Definition: etherfabric.c:2823

Definition at line 2836 of file etherfabric.c.

Referenced by sfe4001_fini(), and sfe4001_init().

◆ sfe4001_ops

struct efab_board_operations sfe4001_ops
Initial value:
= {
.init = sfe4001_init,
.fini = sfe4001_fini,
}
static int sfe4001_init(struct efab_nic *efab)
Definition: etherfabric.c:2843
static void sfe4001_fini(struct efab_nic *efab)
Definition: etherfabric.c:2964

Definition at line 2987 of file etherfabric.c.

Referenced by falcon_probe_nvram().

◆ sfe4002_ops

struct efab_board_operations sfe4002_ops
Initial value:
= {
.init = sfe4002_init,
.fini = sfe4002_fini,
}
static void sfe4002_fini(struct efab_nic *efab)
Definition: etherfabric.c:2996
static int sfe4002_init(struct efab_nic *efab)
Definition: etherfabric.c:2992

Definition at line 3000 of file etherfabric.c.

Referenced by falcon_probe_nvram().

◆ sfe4003_ops

struct efab_board_operations sfe4003_ops
Initial value:
= {
.init = sfe4003_init,
.fini = sfe4003_fini,
}
static int sfe4003_init(struct efab_nic *efab)
Definition: etherfabric.c:3005
static void sfe4003_fini(struct efab_nic *efab)
Definition: etherfabric.c:3009

Definition at line 3013 of file etherfabric.c.

Referenced by falcon_probe_nvram().

◆ efab_operations

struct net_device_operations efab_operations
static
Initial value:
= {
.open = efab_open,
.close = efab_close,
.transmit = efab_transmit,
.poll = efab_poll,
.irq = efab_irq,
}
static void efab_poll(struct net_device *netdev)
Definition: etherfabric.c:3848
static void efab_close(struct net_device *netdev)
Definition: etherfabric.c:4036
static int efab_transmit(struct net_device *netdev, struct io_buffer *iob)
Definition: etherfabric.c:3729
static void efab_irq(struct net_device *netdev, int enable)
Definition: etherfabric.c:3887
static int efab_open(struct net_device *netdev)
Definition: etherfabric.c:4047

Definition at line 4098 of file etherfabric.c.

Referenced by efab_probe().

◆ efab_nics

struct pci_device_id efab_nics[]
static
Initial value:
= {
PCI_ROM(0x1924, 0x0703, "falcon", "EtherFabric Falcon", 0),
PCI_ROM(0x1924, 0x0710, "falconb0", "EtherFabric FalconB0", 0),
}
#define PCI_ROM(_vendor, _device, _name, _description, _data)
Definition: pci.h:303

Definition at line 4210 of file etherfabric.c.

◆ __pci_driver

struct pci_driver etherfabric_driver __pci_driver
Initial value:
= {
.ids = efab_nics,
.id_count = sizeof ( efab_nics ) / sizeof ( efab_nics[0] ),
.probe = efab_probe,
.remove = efab_remove,
}
static struct pci_device_id efab_nics[]
Definition: etherfabric.c:4210
static int efab_probe(struct pci_device *pci)
Definition: etherfabric.c:4130
static void efab_remove(struct pci_device *pci)
Definition: etherfabric.c:4107

Definition at line 4215 of file etherfabric.c.