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
#define FALCON_REV_B0
Definition: etherfabric.c:531
#define EFAB_SET_OWORD_FIELD
Definition: etherfabric.h:531
void __asmcall int val
Definition: setjmp.h:28

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 2451 of file etherfabric.c.

◆ TXC_GLRGS_GLCMD

#define TXC_GLRGS_GLCMD   (0xc004)

Definition at line 2485 of file etherfabric.c.

◆ TXC_GLCMD_LMTSWRST_LBN

#define TXC_GLCMD_LMTSWRST_LBN   (14)

Definition at line 2486 of file etherfabric.c.

◆ TXC_ALRGS_ATXAMP0

#define TXC_ALRGS_ATXAMP0   (0xc041)

Definition at line 2489 of file etherfabric.c.

◆ TXC_ALRGS_ATXAMP1

#define TXC_ALRGS_ATXAMP1   (0xc042)

Definition at line 2490 of file etherfabric.c.

◆ TXC_ATXAMP_LANE02_LBN

#define TXC_ATXAMP_LANE02_LBN   (3)

Definition at line 2492 of file etherfabric.c.

◆ TXC_ATXAMP_LANE13_LBN

#define TXC_ATXAMP_LANE13_LBN   (11)

Definition at line 2493 of file etherfabric.c.

◆ TXC_ATXAMP_1280_mV

#define TXC_ATXAMP_1280_mV   (0)

Definition at line 2495 of file etherfabric.c.

◆ TXC_ATXAMP_1200_mV

#define TXC_ATXAMP_1200_mV   (8)

Definition at line 2496 of file etherfabric.c.

◆ TXC_ATXAMP_1120_mV

#define TXC_ATXAMP_1120_mV   (12)

Definition at line 2497 of file etherfabric.c.

◆ TXC_ATXAMP_1060_mV

#define TXC_ATXAMP_1060_mV   (14)

Definition at line 2498 of file etherfabric.c.

◆ TXC_ATXAMP_0820_mV

#define TXC_ATXAMP_0820_mV   (25)

Definition at line 2499 of file etherfabric.c.

◆ TXC_ATXAMP_0720_mV

#define TXC_ATXAMP_0720_mV   (26)

Definition at line 2500 of file etherfabric.c.

◆ TXC_ATXAMP_0580_mV

#define TXC_ATXAMP_0580_mV   (27)

Definition at line 2501 of file etherfabric.c.

◆ TXC_ATXAMP_0440_mV

#define TXC_ATXAMP_0440_mV   (28)

Definition at line 2502 of file etherfabric.c.

◆ TXC_ATXAMP_0820_BOTH

#define TXC_ATXAMP_0820_BOTH
Value:
#define TXC_ATXAMP_LANE13_LBN
Definition: etherfabric.c:2493
#define TXC_ATXAMP_LANE02_LBN
Definition: etherfabric.c:2492
#define TXC_ATXAMP_0820_mV
Definition: etherfabric.c:2499

Definition at line 2504 of file etherfabric.c.

◆ TXC_ATXAMP_DEFAULT

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

Definition at line 2507 of file etherfabric.c.

◆ TXC_ALRGS_ATXPRE0

#define TXC_ALRGS_ATXPRE0   (0xc043)

Definition at line 2510 of file etherfabric.c.

◆ TXC_ALRGS_ATXPRE1

#define TXC_ALRGS_ATXPRE1   (0xc044)

Definition at line 2511 of file etherfabric.c.

◆ TXC_ATXPRE_NONE

#define TXC_ATXPRE_NONE   (0)

Definition at line 2513 of file etherfabric.c.

◆ TXC_ATXPRE_DEFAULT

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

Definition at line 2514 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 2516 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 2614 of file etherfabric.c.

◆ PCS_TEST_SELECT_REG

#define PCS_TEST_SELECT_REG   0xd807 /* PRM 10.5.8 */

Definition at line 2618 of file etherfabric.c.

◆ CLK312_EN_LBN

#define CLK312_EN_LBN   3

Definition at line 2619 of file etherfabric.c.

◆ CLK312_EN_WIDTH

#define CLK312_EN_WIDTH   1

Definition at line 2620 of file etherfabric.c.

◆ PCS_CLOCK_CTRL_REG

#define PCS_CLOCK_CTRL_REG   0xd801

Definition at line 2622 of file etherfabric.c.

◆ PLL312_RST_N_LBN

#define PLL312_RST_N_LBN   2

Definition at line 2623 of file etherfabric.c.

◆ PMA_PMD_EXT_CTRL_REG

#define PMA_PMD_EXT_CTRL_REG   49152

Definition at line 2626 of file etherfabric.c.

◆ PMA_PMD_EXT_SSR_LBN

#define PMA_PMD_EXT_SSR_LBN   15

Definition at line 2627 of file etherfabric.c.

◆ PCS_BOOT_STATUS_REG

#define PCS_BOOT_STATUS_REG   0xd000

Definition at line 2630 of file etherfabric.c.

◆ PCS_BOOT_FATAL_ERR_LBN

#define PCS_BOOT_FATAL_ERR_LBN   0

Definition at line 2631 of file etherfabric.c.

◆ PCS_BOOT_PROGRESS_LBN

#define PCS_BOOT_PROGRESS_LBN   1

Definition at line 2632 of file etherfabric.c.

◆ PCS_BOOT_PROGRESS_WIDTH

#define PCS_BOOT_PROGRESS_WIDTH   2

Definition at line 2633 of file etherfabric.c.

◆ PCS_BOOT_COMPLETE_LBN

#define PCS_BOOT_COMPLETE_LBN   3

Definition at line 2634 of file etherfabric.c.

◆ PCS_SOFT_RST2_REG

#define PCS_SOFT_RST2_REG   0xd806

Definition at line 2636 of file etherfabric.c.

◆ SERDES_RST_N_LBN

#define SERDES_RST_N_LBN   13

Definition at line 2637 of file etherfabric.c.

◆ XGXS_RST_N_LBN

#define XGXS_RST_N_LBN   12

Definition at line 2638 of file etherfabric.c.

◆ PM8358_REQUIRED_DEVS

#define PM8358_REQUIRED_DEVS   (MDIO_MMDREG_DEVS0_DTEXS)

Definition at line 2710 of file etherfabric.c.

◆ PMC_MASTER_REG

#define PMC_MASTER_REG   (0xd000)

Definition at line 2714 of file etherfabric.c.

◆ PMC_MASTER_ANLG_CTRL

#define PMC_MASTER_ANLG_CTRL   (1<< 11)

Definition at line 2716 of file etherfabric.c.

◆ PMC_MCONF2_REG

#define PMC_MCONF2_REG   (0xd002)

Definition at line 2719 of file etherfabric.c.

◆ PMC_MCONF2_TEDGE

#define PMC_MCONF2_TEDGE   (1 << 2)

Definition at line 2721 of file etherfabric.c.

◆ PMC_MCONF2_REDGE

#define PMC_MCONF2_REDGE   (1 << 3)

Definition at line 2723 of file etherfabric.c.

◆ PMC_ANALOG_RX_CFG0

#define PMC_ANALOG_RX_CFG0   (0xd025)

Definition at line 2726 of file etherfabric.c.

◆ PMC_ANALOG_RX_CFG1

#define PMC_ANALOG_RX_CFG1   (0xd02d)

Definition at line 2727 of file etherfabric.c.

◆ PMC_ANALOG_RX_CFG2

#define PMC_ANALOG_RX_CFG2   (0xd035)

Definition at line 2728 of file etherfabric.c.

◆ PMC_ANALOG_RX_CFG3

#define PMC_ANALOG_RX_CFG3   (0xd03d)

Definition at line 2729 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 2732 of file etherfabric.c.

◆ PMC_ANALOG_RX_EQ_MASK

#define PMC_ANALOG_RX_EQ_MASK   (3 << 8)

Definition at line 2734 of file etherfabric.c.

◆ PMC_ANALOG_RX_EQ_NONE

#define PMC_ANALOG_RX_EQ_NONE   (0 << 8)

Definition at line 2735 of file etherfabric.c.

◆ PMC_ANALOG_RX_EQ_HALF

#define PMC_ANALOG_RX_EQ_HALF   (1 << 8)

Definition at line 2736 of file etherfabric.c.

◆ PMC_ANALOG_RX_EQ_FULL

#define PMC_ANALOG_RX_EQ_FULL   (2 << 8)

Definition at line 2737 of file etherfabric.c.

◆ PMC_ANALOG_RX_EQ_RSVD

#define PMC_ANALOG_RX_EQ_RSVD   (3 << 8)

Definition at line 2738 of file etherfabric.c.

◆ MAX_TEMP_THRESH

#define MAX_TEMP_THRESH   90

Definition at line 2787 of file etherfabric.c.

◆ PCA9539

#define PCA9539   0x74

Definition at line 2790 of file etherfabric.c.

◆ P0_IN

#define P0_IN   0x00

Definition at line 2792 of file etherfabric.c.

◆ P0_OUT

#define P0_OUT   0x02

Definition at line 2793 of file etherfabric.c.

◆ P0_CONFIG

#define P0_CONFIG   0x06

Definition at line 2794 of file etherfabric.c.

◆ P0_EN_1V0X_LBN

#define P0_EN_1V0X_LBN   0

Definition at line 2796 of file etherfabric.c.

◆ P0_EN_1V0X_WIDTH

#define P0_EN_1V0X_WIDTH   1

Definition at line 2797 of file etherfabric.c.

◆ P0_EN_1V2_LBN

#define P0_EN_1V2_LBN   1

Definition at line 2798 of file etherfabric.c.

◆ P0_EN_1V2_WIDTH

#define P0_EN_1V2_WIDTH   1

Definition at line 2799 of file etherfabric.c.

◆ P0_EN_2V5_LBN

#define P0_EN_2V5_LBN   2

Definition at line 2800 of file etherfabric.c.

◆ P0_EN_2V5_WIDTH

#define P0_EN_2V5_WIDTH   1

Definition at line 2801 of file etherfabric.c.

◆ P0_EN_3V3X_LBN

#define P0_EN_3V3X_LBN   3

Definition at line 2802 of file etherfabric.c.

◆ P0_EN_3V3X_WIDTH

#define P0_EN_3V3X_WIDTH   1

Definition at line 2803 of file etherfabric.c.

◆ P0_EN_5V_LBN

#define P0_EN_5V_LBN   4

Definition at line 2804 of file etherfabric.c.

◆ P0_EN_5V_WIDTH

#define P0_EN_5V_WIDTH   1

Definition at line 2805 of file etherfabric.c.

◆ P0_X_TRST_LBN

#define P0_X_TRST_LBN   6

Definition at line 2806 of file etherfabric.c.

◆ P0_X_TRST_WIDTH

#define P0_X_TRST_WIDTH   1

Definition at line 2807 of file etherfabric.c.

◆ P1_IN

#define P1_IN   0x01

Definition at line 2809 of file etherfabric.c.

◆ P1_CONFIG

#define P1_CONFIG   0x07

Definition at line 2810 of file etherfabric.c.

◆ P1_AFE_PWD_LBN

#define P1_AFE_PWD_LBN   0

Definition at line 2812 of file etherfabric.c.

◆ P1_AFE_PWD_WIDTH

#define P1_AFE_PWD_WIDTH   1

Definition at line 2813 of file etherfabric.c.

◆ P1_DSP_PWD25_LBN

#define P1_DSP_PWD25_LBN   1

Definition at line 2814 of file etherfabric.c.

◆ P1_DSP_PWD25_WIDTH

#define P1_DSP_PWD25_WIDTH   1

Definition at line 2815 of file etherfabric.c.

◆ P1_SPARE_LBN

#define P1_SPARE_LBN   4

Definition at line 2816 of file etherfabric.c.

◆ P1_SPARE_WIDTH

#define P1_SPARE_WIDTH   4

Definition at line 2817 of file etherfabric.c.

◆ MAX6647

#define MAX6647   0x4e

Definition at line 2820 of file etherfabric.c.

◆ RSL

#define RSL   0x02

Definition at line 2822 of file etherfabric.c.

◆ RLHN

#define RLHN   0x05

Definition at line 2823 of file etherfabric.c.

◆ WLHO

#define WLHO   0x0b

Definition at line 2824 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 3141 of file etherfabric.c.

◆ SF_NV_CONFIG_BASE

#define SF_NV_CONFIG_BASE   0x300

Definition at line 3146 of file etherfabric.c.

◆ SF_NV_CONFIG_EXTRA

#define SF_NV_CONFIG_EXTRA   0xA0

Definition at line 3147 of file etherfabric.c.

◆ BOARD_TYPE

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

Definition at line 3169 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
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
#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
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
#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 }
uint8_t status
Status.
Definition: ena.h:16
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
#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
uint8_t status
Status.
Definition: ena.h:16
static int falcon_mdio_read(struct efab_nic *efab, int device, int location)
Definition: etherfabric.c:1644
#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
uint8_t status
Status.
Definition: ena.h:16
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
#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
#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
uint64_t index
Index of the first segment within the content.
Definition: pccrc.h:21
#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
#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
uint64_t index
Index of the first segment within the content.
Definition: pccrc.h:21
#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
An octword (eight-word, i.e.
Definition: etherfabric.h:122
uint16_t count
Number of entries.
Definition: ena.h:22
#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
uint32_t len
Length.
Definition: ena.h:14
#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
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
Serial clock.
Definition: i2c.h:114
Serial data.
Definition: i2c.h:116
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
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
Serial clock.
Definition: i2c.h:114
Serial data.
Definition: i2c.h:116
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
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
#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
uint16_t count
Number of entries.
Definition: ena.h:22
#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
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
uint16_t count
Number of entries.
Definition: ena.h:22
#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
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
uint16_t count
Number of entries.
Definition: ena.h:22
#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 
2230  /* Clear link status ready for next read */
2231  EFAB_SET_DWORD_FIELD ( reg, FCN_XX_COMMA_DET, FCN_XX_COMMA_DET_RESET );
2232  EFAB_SET_DWORD_FIELD ( reg, FCN_XX_CHARERR, FCN_XX_CHARERR_RESET);
2233  EFAB_SET_DWORD_FIELD ( reg, FCN_XX_DISPERR, FCN_XX_DISPERR_RESET);
2235 
2236  has_phyxs = ( efab->phy_op->mmds & ( 1 << MDIO_MMD_PHYXS ) );
2237  if ( link_ok && has_phyxs ) {
2238  lane_status = falcon_mdio_read ( efab, MDIO_MMD_PHYXS,
2240  link_ok = ( lane_status & ( 1 << MDIO_PHYXS_LANE_ALIGNED_LBN ) );
2241 
2242  if (!link_ok )
2243  EFAB_LOG ( "XGXS lane status: %x\n", lane_status );
2244  }
2245 
2246  return link_ok;
2247 }
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 2254 of file etherfabric.c.

2255 {
2256  efab_dword_t reg;
2257  int max_frame_len;
2258 
2259  /* Configure MAC - cut-thru mode is hard wired on */
2261  FCN_XM_RX_JUMBO_MODE, 1,
2262  FCN_XM_TX_STAT_EN, 1,
2263  FCN_XM_RX_STAT_EN, 1);
2265 
2266  /* Configure TX */
2268  FCN_XM_TXEN, 1,
2269  FCN_XM_TX_PRMBL, 1,
2270  FCN_XM_AUTO_PAD, 1,
2271  FCN_XM_TXCRC, 1,
2272  FCN_XM_FCNTL, 1,
2273  FCN_XM_IPG, 0x3 );
2275 
2276  /* Configure RX */
2278  FCN_XM_RXEN, 1,
2279  FCN_XM_AUTO_DEPAD, 0,
2280  FCN_XM_ACPT_ALL_MCAST, 1,
2281  FCN_XM_PASS_CRC_ERR, 1 );
2283 
2284  /* Set frame length */
2285  max_frame_len = EFAB_MAX_FRAME_LEN ( ETH_FRAME_LEN );
2287  FCN_XM_MAX_RX_FRM_SIZE, max_frame_len );
2290  FCN_XM_MAX_TX_FRM_SIZE, max_frame_len,
2291  FCN_XM_TX_JUMBO_MODE, 1 );
2293 
2294  /* Enable flow control receipt */
2296  FCN_XM_PAUSE_TIME, 0xfffe,
2297  FCN_XM_DIS_FCNTL, 0 );
2299 
2300  /* Set MAC address */
2302  FCN_XM_ADR_0, efab->mac_addr[0],
2303  FCN_XM_ADR_1, efab->mac_addr[1],
2304  FCN_XM_ADR_2, efab->mac_addr[2],
2305  FCN_XM_ADR_3, efab->mac_addr[3] );
2308  FCN_XM_ADR_4, efab->mac_addr[4],
2309  FCN_XM_ADR_5, efab->mac_addr[5] );
2311 }
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 2314 of file etherfabric.c.

2315 {
2316  int count, rc;
2317 
2318  /* Mask the PHY management interrupt */
2319  falcon_mask_status_intr ( efab, 0 );
2320 
2321  /* Initialise the PHY to instantiate the clock. */
2322  rc = efab->phy_op->init ( efab );
2323  if ( rc ) {
2324  EFAB_ERR ( "unable to initialise PHY\n" );
2325  goto fail1;
2326  }
2327 
2328  falcon_reset_xaui ( efab );
2329 
2330  /* Give the PHY and MAC time to faff */
2331  mdelay ( 100 );
2332 
2333  /* Reset and reconfigure the XMAC */
2334  rc = falcon_reset_xmac ( efab );
2335  if ( rc )
2336  goto fail2;
2337  falcon_reconfigure_xmac ( efab );
2339  /**
2340  * Now wait for the link to come up. This may take a while
2341  * for some slower PHY's.
2342  */
2343  for (count=0; count<50; count++) {
2344  int link_ok = 1;
2345 
2346  /* Wait a while for the link to come up. */
2347  mdelay ( 100 );
2348  if ((count % 5) == 0)
2349  putchar ( '.' );
2350 
2351  /* Does the PHY think the wire-side link is up? */
2352  link_ok = mdio_clause45_links_ok ( efab );
2353  /* Ensure the XAUI link to the PHY is good */
2354  if ( link_ok ) {
2355  link_ok = falcon_xaui_link_ok ( efab );
2356  if ( !link_ok )
2357  falcon_reset_xaui ( efab );
2358  }
2359 
2360  /* Check fault indication */
2361  if ( link_ok )
2362  link_ok = falcon_xgmii_status ( efab );
2363 
2364  efab->link_up = link_ok;
2365  if ( link_ok ) {
2366  /* unmask the status interrupt */
2367  falcon_mask_status_intr ( efab, 1 );
2368  return 0;
2369  }
2370  }
2371 
2372  /* Link failed to come up, but initialisation was fine. */
2373  rc = -ETIMEDOUT;
2374 
2375 fail2:
2376 fail1:
2377  return rc;
2378 }
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:2254
static int mdio_clause45_links_ok(struct efab_nic *efab)
Definition: etherfabric.c:327
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
uint16_t count
Number of entries.
Definition: ena.h:22
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 2393 of file etherfabric.c.

2394 {
2395  /* CX4 is always 10000FD only */
2397 
2398  /* There is no PHY! */
2399  return 0;
2400 }
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 2421 of file etherfabric.c.

2422 {
2423  unsigned int advertised, lpa;
2424 
2425  /* Read link up status */
2426  efab->link_up = gmii_link_ok ( efab );
2427 
2428  if ( ! efab->link_up )
2429  return -EIO;
2430 
2431  /* Determine link options from PHY. */
2432  advertised = gmii_autoneg_advertised ( efab );
2433  lpa = gmii_autoneg_lpa ( efab );
2434  efab->link_options = gmii_nway_result ( advertised & lpa );
2435 
2436  return 0;
2437 }
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 2456 of file etherfabric.c.

2457 {
2458  int rc;
2459 
2460  /* Optical link is always 10000FD only */
2462 
2463  /* Reset the PHY */
2465  if ( rc )
2466  return rc;
2467 
2468  return 0;
2469 }
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 2521 of file etherfabric.c.

2522 {
2523  int val;
2524  int tries = 50;
2525 
2527  val |= (1 << TXC_GLCMD_LMTSWRST_LBN);
2529 
2530  while ( tries--) {
2532  if ( ~val & ( 1 << TXC_GLCMD_LMTSWRST_LBN ) )
2533  return 0;
2534  udelay(1);
2535  }
2536 
2537  EFAB_ERR ( "logic reset failed\n" );
2538 
2539  return -ETIMEDOUT;
2540 }
#define TXC_GLRGS_GLCMD
Definition: etherfabric.c:2485
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
void __asmcall int val
Definition: setjmp.h:28
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define TXC_GLCMD_LMTSWRST_LBN
Definition: etherfabric.c:2486
#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 2543 of file etherfabric.c.

2544 {
2545  int rc;
2546 
2547  /* CX4 is always 10000FD only */
2549 
2550  /* reset the phy */
2552  if ( rc )
2553  goto fail1;
2554 
2555  rc = mdio_clause45_check_mmds ( efab );
2556  if ( rc )
2557  goto fail2;
2558 
2559  /* Turn amplitude down and preemphasis off on the host side
2560  * (PHY<->MAC) as this is believed less likely to upset falcon
2561  * and no adverse effects have been noted. It probably also
2562  * saves a picowatt or two */
2563 
2564  /* Turn off preemphasis */
2566  TXC_ATXPRE_NONE );
2568  TXC_ATXPRE_NONE );
2569 
2570  /* Turn down the amplitude */
2575 
2576  /* Set the line side amplitude and preemphasis to the databook
2577  * defaults as an erratum causes them to be 0 on at least some
2578  * PHY rev.s */
2587 
2588  rc = falcon_txc_logic_reset ( efab );
2589  if ( rc )
2590  goto fail3;
2591 
2592  return 0;
2593 
2594 fail3:
2595 fail2:
2596 fail1:
2597  return rc;
2598 }
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
#define TXC_ALRGS_ATXAMP0
Definition: etherfabric.c:2489
#define TXC_ALRGS_ATXPRE1
Definition: etherfabric.c:2511
#define TXC_ALRGS_ATXAMP1
Definition: etherfabric.c:2490
#define TXC_ATXAMP_0820_BOTH
Definition: etherfabric.c:2504
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:2514
static int falcon_txc_logic_reset(struct efab_nic *efab)
Definition: etherfabric.c:2521
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:2510
#define MDIO_MMD_PMAPMD
Definition: etherfabric.c:203
#define TXC_ATXAMP_DEFAULT
Definition: etherfabric.c:2507
#define LPA_EF_10000FULL
Definition: etherfabric.c:93
#define TXC_ATXPRE_NONE
Definition: etherfabric.c:2513

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 2641 of file etherfabric.c.

2642 {
2643  int count;
2644  uint32_t boot_stat;
2645 
2646  /* Check that the C11 CPU has booted */
2647  for (count=0; count<10; count++) {
2648  boot_stat = falcon_mdio_read ( efab, MDIO_MMD_PCS,
2650  if ( boot_stat & ( 1 << PCS_BOOT_COMPLETE_LBN ) )
2651  return 0;
2652 
2653  udelay(10);
2654  }
2655 
2656  EFAB_ERR ( "C11 failed to boot\n" );
2657  return -ETIMEDOUT;
2658 }
#define PCS_BOOT_STATUS_REG
Definition: etherfabric.c:2630
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 PCS_BOOT_COMPLETE_LBN
Definition: etherfabric.c:2634
#define MDIO_MMD_PCS
Definition: etherfabric.c:207
unsigned int uint32_t
Definition: stdint.h:12
uint16_t count
Number of entries.
Definition: ena.h:22
#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 2661 of file etherfabric.c.

2662 {
2663  int rc, reg;
2664 
2665  /* 10XPRESS is always 10000FD (at the moment) */
2667 
2668  /* Wait for the blocks to come out of reset */
2669  rc = mdio_clause45_wait_reset_mmds ( efab );
2670  if ( rc )
2671  goto fail1;
2672 
2673  rc = mdio_clause45_check_mmds ( efab );
2674  if ( rc )
2675  goto fail2;
2676 
2677  /* Turn on the clock */
2678  reg = (1 << CLK312_EN_LBN);
2680 
2681  /* Wait 200ms for the PHY to boot */
2682  mdelay(200);
2683 
2684  rc = falcon_tenxpress_check_c11 ( efab );
2685  if ( rc )
2686  goto fail3;
2687 
2688  return 0;
2689 
2690 fail3:
2691 fail2:
2692 fail1:
2693  return rc;
2694 }
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
static int falcon_tenxpress_check_c11(struct efab_nic *efab)
Definition: etherfabric.c:2641
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:2618
unsigned int link_options
GMII link options.
#define CLK312_EN_LBN
Definition: etherfabric.c:2619
#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 2741 of file etherfabric.c.

2742 {
2743  int rc, reg, i;
2744 
2745  /* This is a XAUI retimer part */
2747 
2749  if ( rc )
2750  return rc;
2751 
2752  /* Enable software control of analogue settings */
2756 
2757  /* Turn rx eq on for all channels */
2758  for (i=0; i< 3; i++) {
2759  /* The analog CFG registers are evenly spaced 8 apart */
2761  reg = falcon_mdio_read ( efab, MDIO_MMD_DTEXS, addr );
2764  }
2765 
2766  /* Set TEDGE, clear REDGE */
2770 
2771  return 0;
2772 }
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:2723
#define PMC_ANALOG_RX_CFG0
Definition: etherfabric.c:2726
#define MDIO_MMDREG_DEVS0_DTEXS
Definition: etherfabric.c:239
#define PMC_MCONF2_REG
Definition: etherfabric.c:2719
#define PMC_MASTER_REG
Definition: etherfabric.c:2714
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.
u32 addr
Definition: sky2.h:8
#define PMC_MASTER_ANLG_CTRL
Definition: etherfabric.c:2716
#define PMC_ANALOG_RX_EQ_FULL
Definition: etherfabric.c:2737
#define PMC_MCONF2_TEDGE
Definition: etherfabric.c:2721
#define LPA_EF_10000FULL
Definition: etherfabric.c:93
#define PMC_ANALOG_RX_EQ_MASK
Definition: etherfabric.c:2734

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 2840 of file etherfabric.c.

2841 {
2842  struct i2c_interface *i2c = &efab->i2c_bb.i2c;
2843  efab_dword_t reg;
2844  uint8_t in, cfg, out;
2845  int count, rc;
2846 
2847  EFAB_LOG ( "Initialise SFE4001 board\n" );
2848 
2849  /* Ensure XGXS and XAUI SerDes are held in reset */
2851  FCN_XX_PWRDNA_EN, 1,
2852  FCN_XX_PWRDNB_EN, 1,
2853  FCN_XX_RSTPLLAB_EN, 1,
2854  FCN_XX_RESETA_EN, 1,
2855  FCN_XX_RESETB_EN, 1,
2856  FCN_XX_RSTXGXSRX_EN, 1,
2857  FCN_XX_RSTXGXSTX_EN, 1 );
2859  udelay(10);
2860 
2861  /* Set DSP over-temperature alert threshold */
2862  cfg = MAX_TEMP_THRESH;
2863  rc = i2c->write ( i2c, &i2c_max6647, WLHO, &cfg, EFAB_BYTE );
2864  if ( rc )
2865  goto fail1;
2866 
2867  /* Read it back and verify */
2868  rc = i2c->read ( i2c, &i2c_max6647, RLHN, &in, EFAB_BYTE );
2869  if ( rc )
2870  goto fail2;
2871 
2872  if ( in != MAX_TEMP_THRESH ) {
2873  EFAB_ERR ( "Unable to verify MAX6647 limit (requested=%d "
2874  "confirmed=%d)\n", cfg, in );
2875  rc = -EIO;
2876  goto fail3;
2877  }
2878 
2879  /* Clear any previous over-temperature alert */
2880  rc = i2c->read ( i2c, &i2c_max6647, RSL, &in, EFAB_BYTE );
2881  if ( rc )
2882  goto fail4;
2883 
2884  /* Enable port 0 and 1 outputs on IO expander */
2885  cfg = 0x00;
2886  rc = i2c->write ( i2c, &i2c_pca9539, P0_CONFIG, &cfg, EFAB_BYTE );
2887  if ( rc )
2888  goto fail5;
2889  cfg = 0xff & ~(1 << P1_SPARE_LBN);
2890  rc = i2c->write ( i2c, &i2c_pca9539, P1_CONFIG, &cfg, EFAB_BYTE );
2891  if ( rc )
2892  goto fail6;
2893 
2894  /* Turn all power off then wait 1 sec. This ensures PHY is reset */
2895  out = 0xff & ~((0 << P0_EN_1V2_LBN) | (0 << P0_EN_2V5_LBN) |
2896  (0 << P0_EN_3V3X_LBN) | (0 << P0_EN_5V_LBN) |
2897  (0 << P0_EN_1V0X_LBN));
2898 
2899  rc = i2c->write ( i2c, &i2c_pca9539, P0_OUT, &out, EFAB_BYTE );
2900  if ( rc )
2901  goto fail7;
2902 
2903  mdelay(1000);
2904 
2905  for (count=0; count<20; count++) {
2906  /* Turn on 1.2V, 2.5V, 3.3V and 5V power rails */
2907  out = 0xff & ~( (1 << P0_EN_1V2_LBN) | (1 << P0_EN_2V5_LBN) |
2908  (1 << P0_EN_3V3X_LBN) | (1 << P0_EN_5V_LBN) |
2909  (1 << P0_X_TRST_LBN) );
2910 
2911  rc = i2c->write ( i2c, &i2c_pca9539, P0_OUT, &out, EFAB_BYTE );
2912  if ( rc )
2913  goto fail8;
2914 
2915  mdelay ( 10 );
2916 
2917  /* Turn on the 1V power rail */
2918  out &= ~( 1 << P0_EN_1V0X_LBN );
2919  rc = i2c->write ( i2c, &i2c_pca9539, P0_OUT, &out, EFAB_BYTE );
2920  if ( rc )
2921  goto fail9;
2922 
2923  EFAB_LOG ( "Waiting for power...(attempt %d)\n", count);
2924  mdelay ( 1000 );
2925 
2926  /* Check DSP is powered */
2927  rc = i2c->read ( i2c, &i2c_pca9539, P1_IN, &in, EFAB_BYTE );
2928  if ( rc )
2929  goto fail10;
2930 
2931  if ( in & ( 1 << P1_AFE_PWD_LBN ) )
2932  return 0;
2933  }
2934 
2935  rc = -ETIMEDOUT;
2936 
2937 fail10:
2938 fail9:
2939 fail8:
2940 fail7:
2941  /* Turn off power rails */
2942  out = 0xff;
2943  (void) i2c->write ( i2c, &i2c_pca9539, P0_OUT, &out, EFAB_BYTE );
2944  /* Disable port 1 outputs on IO expander */
2945  out = 0xff;
2946  (void) i2c->write ( i2c, &i2c_pca9539, P1_CONFIG, &out, EFAB_BYTE );
2947 fail6:
2948  /* Disable port 0 outputs */
2949  out = 0xff;
2950  (void) i2c->write ( i2c, &i2c_pca9539, P1_CONFIG, &out, EFAB_BYTE );
2951 fail5:
2952 fail4:
2953 fail3:
2954 fail2:
2955 fail1:
2956  EFAB_ERR ( "Failed initialising SFE4001 board\n" );
2957  return rc;
2958 }
#define P1_IN
Definition: etherfabric.c:2809
#define P0_EN_3V3X_LBN
Definition: etherfabric.c:2802
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:2794
#define MAX_TEMP_THRESH
Definition: etherfabric.c:2787
#define P0_EN_1V0X_LBN
Definition: etherfabric.c:2796
static struct i2c_device i2c_pca9539
Definition: etherfabric.c:2826
A doubleword (i.e.
Definition: etherfabric.h:102
An I2C interface.
Definition: i2c.h:57
#define EFAB_BYTE
Definition: etherfabric.c:56
__be32 out[4]
Definition: CIB_PRM.h:36
#define EFAB_POPULATE_DWORD_7(dword,...)
Definition: etherfabric.h:445
#define RLHN
Definition: etherfabric.c:2823
#define P0_X_TRST_LBN
Definition: etherfabric.c:2806
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
#define P0_EN_5V_LBN
Definition: etherfabric.c:2804
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:2816
#define P0_EN_1V2_LBN
Definition: etherfabric.c:2798
static struct i2c_device i2c_max6647
Definition: etherfabric.c:2833
#define P0_EN_2V5_LBN
Definition: etherfabric.c:2800
#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:2812
#define WLHO
Definition: etherfabric.c:2824
#define P1_CONFIG
Definition: etherfabric.c:2810
#define EIO
Input/output error.
Definition: errno.h:433
uint16_t count
Number of entries.
Definition: ena.h:22
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define P0_OUT
Definition: etherfabric.c:2793
#define ETIMEDOUT
Connection timed out.
Definition: errno.h:669
#define RSL
Definition: etherfabric.c:2822
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 2961 of file etherfabric.c.

2962 {
2963  struct i2c_interface *i2c = &efab->i2c_bb.i2c;
2964  uint8_t in, cfg, out;
2965 
2966  EFAB_ERR ( "Turning off SFE4001\n" );
2967 
2968  /* Turn off all power rails */
2969  out = 0xff;
2970  (void) i2c->write ( i2c, &i2c_pca9539, P0_OUT, &out, EFAB_BYTE );
2971 
2972  /* Disable port 1 outputs on IO expander */
2973  cfg = 0xff;
2974  (void) i2c->write ( i2c, &i2c_pca9539, P1_CONFIG, &cfg, EFAB_BYTE );
2975 
2976  /* Disable port 0 outputs on IO expander */
2977  cfg = 0xff;
2978  (void) i2c->write ( i2c, &i2c_pca9539, P0_CONFIG, &cfg, EFAB_BYTE );
2979 
2980  /* Clear any over-temperature alert */
2981  (void) i2c->read ( i2c, &i2c_max6647, RSL, &in, EFAB_BYTE );
2982 }
__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:2794
static struct i2c_device i2c_pca9539
Definition: etherfabric.c:2826
An I2C interface.
Definition: i2c.h:57
#define EFAB_BYTE
Definition: etherfabric.c:56
__be32 out[4]
Definition: CIB_PRM.h:36
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:2833
Definition: sis900.h:23
#define P1_CONFIG
Definition: etherfabric.c:2810
#define EFAB_ERR(...)
Definition: etherfabric.c:51
#define P0_OUT
Definition: etherfabric.c:2793
#define RSL
Definition: etherfabric.c:2822
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 2989 of file etherfabric.c.

2990 {
2991  return 0;
2992 }

◆ sfe4002_fini()

static void sfe4002_fini ( struct efab_nic efab)
static

Definition at line 2993 of file etherfabric.c.

2994 {
2995 }

◆ sfe4003_init()

static int sfe4003_init ( struct efab_nic efab)
static

Definition at line 3002 of file etherfabric.c.

3003 {
3004  return 0;
3005 }

◆ sfe4003_fini()

static void sfe4003_fini ( struct efab_nic efab)
static

Definition at line 3006 of file etherfabric.c.

3007 {
3008 }

◆ falcon_free_special_buffer()

static void falcon_free_special_buffer ( void *  p)
static

Definition at line 3024 of file etherfabric.c.

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

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 3032 of file etherfabric.c.

3034 {
3035  void* buffer;
3036  int remaining;
3037  efab_qword_t buf_desc;
3038  unsigned long dma_addr;
3039 
3040  /* Allocate the buffer, aligned on a buffer address boundary */
3042  if ( ! buffer )
3043  return NULL;
3044 
3045  /* Push buffer table entries to back the buffer */
3046  entry->id = efab->buffer_head;
3047  entry->dma_addr = dma_addr = virt_to_bus ( buffer );
3048  assert ( ( dma_addr & ( EFAB_BUF_ALIGN - 1 ) ) == 0 );
3049 
3050  remaining = bytes;
3051  while ( remaining > 0 ) {
3052  EFAB_POPULATE_QWORD_3 ( buf_desc,
3053  FCN_IP_DAT_BUF_SIZE, FCN_IP_DAT_BUF_SIZE_4K,
3054  FCN_BUF_ADR_FBUF, ( dma_addr >> 12 ),
3055  FCN_BUF_OWNER_ID_FBUF, 0 );
3056 
3057  falcon_write_sram ( efab, &buf_desc, efab->buffer_head );
3058 
3059  ++efab->buffer_head;
3060  dma_addr += EFAB_BUF_ALIGN;
3061  remaining -= EFAB_BUF_ALIGN;
3062  }
3063 
3064  EFAB_TRACE ( "Allocated 0x%x bytes at %p backed by buffer table "
3065  "entries 0x%x..0x%x\n", bytes, buffer, entry->id,
3066  efab->buffer_head - 1 );
3067 
3068  return buffer;
3069 }
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:62
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
union aes_table_entry entry[256]
Table entries, indexed by S(N)
Definition: aes.c:26
#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_BUF_ALIGN, EFAB_POPULATE_QWORD_3, EFAB_TRACE, entry, falcon_write_sram(), FCN_IP_DAT_BUF_SIZE_4K, 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 3072 of file etherfabric.c.

3073 {
3074  efab_oword_t blanko, temp;
3075  int offset;
3076 
3077  EFAB_ZERO_OWORD ( blanko );
3078 
3079  /* Clear the address region register */
3080  EFAB_POPULATE_OWORD_4 ( temp,
3081  FCN_ADR_REGION0, 0,
3082  FCN_ADR_REGION1, ( 1 << 16 ),
3083  FCN_ADR_REGION2, ( 2 << 16 ),
3084  FCN_ADR_REGION3, ( 3 << 16 ) );
3085  falcon_write ( efab, &temp, FCN_ADR_REGION_REG_KER );
3086 
3087  EFAB_TRACE ( "Clearing filter and RSS tables\n" );
3088 
3089  for ( offset = FCN_RX_FILTER_TBL0 ;
3091  offset += 0x10 ) {
3092  falcon_write ( efab, &blanko, offset );
3093  }
3094 
3095  EFAB_TRACE ( "Wiping buffer tables\n" );
3096 
3097  /* Notice the 8 byte access mode */
3098  for ( offset = 0x2800000 ;
3099  offset < 0x3000000 ;
3100  offset += 0x8) {
3101  _falcon_writel ( efab, 0, offset );
3102  _falcon_writel ( efab, 0, offset + 4 );
3103  wmb();
3104  }
3105 }
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
static userptr_t size_t offset
Offset of the first segment within the content.
Definition: deflate.h:259
#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
#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 3108 of file etherfabric.c.

3109 {
3110  efab_oword_t glb_ctl_reg_ker;
3111 
3112  /* Initiate software reset */
3113  EFAB_POPULATE_OWORD_6 ( glb_ctl_reg_ker,
3114  FCN_PCIE_CORE_RST_CTL, EXCLUDE_FROM_RESET,
3115  FCN_PCIE_NSTCK_RST_CTL, EXCLUDE_FROM_RESET,
3116  FCN_PCIE_SD_RST_CTL, EXCLUDE_FROM_RESET,
3117  FCN_EE_RST_CTL, EXCLUDE_FROM_RESET,
3118  FCN_EXT_PHY_RST_DUR, 0x7, /* 10ms */
3119  FCN_SWRST, 1 );
3120 
3121  falcon_write ( efab, &glb_ctl_reg_ker, FCN_GLB_CTL_REG_KER );
3122 
3123  /* Allow 50ms for reset */
3124  mdelay ( 50 );
3125 
3126  /* Check for device reset complete */
3127  falcon_read ( efab, &glb_ctl_reg_ker, FCN_GLB_CTL_REG_KER );
3128  if ( EFAB_OWORD_FIELD ( glb_ctl_reg_ker, FCN_SWRST ) != 0 ) {
3129  EFAB_ERR ( "Reset failed\n" );
3130  return -ETIMEDOUT;
3131  }
3132 
3133  if ( ( efab->pci_revision == FALCON_REV_B0 ) && !efab->is_asic ) {
3134  clear_b0_fpga_memories ( efab );
3135  }
3136 
3137  return 0;
3138 }
#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:3072
#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 3172 of file etherfabric.c.

3173 {
3174  efab_oword_t altera_build, nic_stat;
3175  int fpga_version;
3176  uint8_t revision;
3177 
3178  /* PCI revision */
3180  efab->pci_revision = revision;
3181 
3182  /* Asic vs FPGA */
3183  falcon_read ( efab, &altera_build, FCN_ALTERA_BUILD_REG_KER );
3184  fpga_version = EFAB_OWORD_FIELD ( altera_build, FCN_VER_ALL );
3185  efab->is_asic = (fpga_version == 0);
3186 
3187  /* MAC and PCI type */
3188  falcon_read ( efab, &nic_stat, FCN_NIC_STAT_REG );
3189  if ( efab->pci_revision == FALCON_REV_B0 ) {
3190  efab->phy_10g = EFAB_OWORD_FIELD ( nic_stat, FCN_STRAP_10G );
3191  }
3192  else if ( efab->is_asic ) {
3193  efab->phy_10g = EFAB_OWORD_FIELD ( nic_stat, FCN_STRAP_10G );
3194  }
3195  else {
3196  int minor = EFAB_OWORD_FIELD ( altera_build, FCN_VER_MINOR );
3197  efab->phy_10g = ( minor == 0x14 );
3198  }
3199 }
#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 3202 of file etherfabric.c.

3203 {
3204  /* Falcon's SPI interface only supports reads/writes of up to 16 bytes.
3205  * Reduce the nvs block size down to satisfy this - which means callers
3206  * should use the nvs_* functions rather than spi_*. */
3207  if ( spi->nvs.block_size > FALCON_SPI_MAX_LEN )
3209 
3210  spi->bus = &efab->spi_bus;
3211  efab->spi = spi;
3212 }
#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 3215 of file etherfabric.c.

3216 {
3217  efab_oword_t nic_stat, gpio_ctl, ee_vpd_cfg;
3218  int has_flash, has_eeprom, ad9bit;
3219 
3220  falcon_read ( efab, &nic_stat, FCN_NIC_STAT_REG );
3221  falcon_read ( efab, &gpio_ctl, FCN_GPIO_CTL_REG_KER );
3222  falcon_read ( efab, &ee_vpd_cfg, FCN_EE_VPD_CFG_REG );
3223 
3224  /* determine if FLASH / EEPROM is present */
3225  if ( ( efab->pci_revision >= FALCON_REV_B0 ) || efab->is_asic ) {
3226  has_flash = EFAB_OWORD_FIELD ( nic_stat, FCN_SF_PRST );
3227  has_eeprom = EFAB_OWORD_FIELD ( nic_stat, FCN_EE_PRST );
3228  } else {
3229  has_flash = EFAB_OWORD_FIELD ( gpio_ctl, FCN_FLASH_PRESENT );
3230  has_eeprom = EFAB_OWORD_FIELD ( gpio_ctl, FCN_EEPROM_PRESENT );
3231  }
3232  ad9bit = EFAB_OWORD_FIELD ( ee_vpd_cfg, FCN_EE_VPD_EN_AD9_MODE );
3233 
3234  /* Configure the SPI and I2C bus */
3235  efab->spi_bus.rw = falcon_spi_rw;
3237 
3238  /* Configure the EEPROM SPI device. Generally, an Atmel 25040
3239  * (or similar) is used, but this is only possible if there is also
3240  * a flash device present to store the boot-time chip configuration.
3241  */
3242  if ( has_eeprom ) {
3243  if ( has_flash && ad9bit )
3244  init_at25040 ( &efab->spi_eeprom );
3245  else
3246  init_mc25xx640 ( &efab->spi_eeprom );
3247  falcon_init_spi_device ( efab, &efab->spi_eeprom );
3248  }
3249 
3250  /* Configure the FLASH SPI device */
3251  if ( has_flash ) {
3252  init_at25f1024 ( &efab->spi_flash );
3253  falcon_init_spi_device ( efab, &efab->spi_flash );
3254  }
3255 
3256  EFAB_LOG ( "flash is %s, EEPROM is %s%s\n",
3257  ( has_flash ? "present" : "absent" ),
3258  ( has_eeprom ? "present " : "absent" ),
3259  ( has_eeprom ? (ad9bit ? "(9bit)" : "(16bit)") : "") );
3260 
3261  /* The device MUST have flash or eeprom */
3262  if ( ! efab->spi ) {
3263  EFAB_ERR ( "Device appears to have no flash or eeprom\n" );
3264  return -EIO;
3265  }
3266 
3267  /* If the device has EEPROM attached, then advertise NVO space */
3268  if ( has_eeprom ) {
3269  nvo_init ( &efab->nvo, &efab->spi_eeprom.nvs, 0x100, 0xf0,
3270  NULL, &efab->netdev->refcnt );
3271  }
3272 
3273  return 0;
3274 }
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:3202
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 3277 of file etherfabric.c.

3278 {
3279  struct nvs_device *nvs = &efab->spi->nvs;
3280  struct falcon_nv_extra nv;
3281  int rc, board_revision;
3282 
3283  /* Read the MAC address */
3285  efab->mac_addr, ETH_ALEN );
3286  if ( rc )
3287  return rc;
3288 
3289  /* Poke through the NVRAM structure for the PHY type. */
3291  &nv, sizeof ( nv ) );
3292  if ( rc )
3293  return rc;
3294 
3295  /* Handle each supported NVRAM version */
3296  if ( ( le16_to_cpu ( nv.magicnumber ) == FCN_NV_MAGIC_NUMBER ) &&
3297  ( le16_to_cpu ( nv.structure_version ) >= 2 ) ) {
3298  struct falcon_nv_config_ver2* ver2 = &nv.ver_specific.ver2;
3299 
3300  /* Get the PHY type */
3301  efab->phy_addr = le16_to_cpu ( ver2->port0_phy_addr );
3302  efab->phy_type = le16_to_cpu ( ver2->port0_phy_type );
3304  }
3305  else {
3306  EFAB_ERR ( "NVram is not recognised\n" );
3307  return -EINVAL;
3308  }
3309 
3310  efab->board_type = BOARD_TYPE ( board_revision );
3311 
3312  EFAB_TRACE ( "Falcon board %d phy %d @ addr %d\n",
3313  efab->board_type, efab->phy_type, efab->phy_addr );
3314 
3315  /* Patch in the board operations */
3316  switch ( efab->board_type ) {
3317  case EFAB_BOARD_SFE4001:
3318  efab->board_op = &sfe4001_ops;
3319  break;
3320  case EFAB_BOARD_SFE4002:
3321  efab->board_op = &sfe4002_ops;
3322  break;
3323  case EFAB_BOARD_SFE4003:
3324  efab->board_op = &sfe4003_ops;
3325  break;
3326  default:
3327  EFAB_ERR ( "Unrecognised board type\n" );
3328  return -EINVAL;
3329  }
3330 
3331  /* Patch in MAC operations */
3332  if ( efab->phy_10g )
3333  efab->mac_op = &falcon_xmac_operations;
3334  else
3335  efab->mac_op = &falcon_gmac_operations;
3336 
3337  /* Hook in the PHY ops */
3338  switch ( efab->phy_type ) {
3339  case PHY_TYPE_10XPRESS:
3341  break;
3342  case PHY_TYPE_CX4:
3343  efab->phy_op = &falcon_xaui_phy_ops;
3344  break;
3345  case PHY_TYPE_XFP:
3346  efab->phy_op = &falcon_xfp_phy_ops;
3347  break;
3348  case PHY_TYPE_CX4_RTMR:
3349  efab->phy_op = &falcon_txc_phy_ops;
3350  break;
3351  case PHY_TYPE_PM8358:
3352  efab->phy_op = &falcon_pm8358_phy_ops;
3353  break;
3354  case PHY_TYPE_1GIG_ALASKA:
3355  efab->phy_op = &falcon_alaska_phy_ops;
3356  break;
3357  default:
3358  EFAB_ERR ( "Unknown PHY type: %d\n", efab->phy_type );
3359  return -EINVAL;
3360  }
3361 
3362  return 0;
3363 }
#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:3141
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:2402
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:2439
static struct efab_mac_operations falcon_xmac_operations
Definition: etherfabric.c:2380
static struct efab_phy_operations falcon_pm8358_phy_ops
Definition: etherfabric.c:2774
static struct efab_phy_operations falcon_tenxpress_phy_ops
Definition: etherfabric.c:2696
#define FCN_NV_MAGIC_NUMBER
Definition: etherfabric.c:572
static struct efab_phy_operations falcon_txc_phy_ops
Definition: etherfabric.c:2600
#define EFAB_TRACE(...)
Definition: etherfabric.c:47
struct efab_mac_operations * mac_op
struct efab_board_operations sfe4002_ops
Definition: etherfabric.c:2997
#define SF_NV_CONFIG_EXTRA
Definition: etherfabric.c:3147
#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:3010
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:2984
#define SF_NV_CONFIG_BASE
Definition: etherfabric.c:3146
#define BOARD_TYPE(_rev)
Definition: etherfabric.c:3169
#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:2471

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 3366 of file etherfabric.c.

3367 {
3368  efab_oword_t reg;
3369  int count;
3370 
3371  /* use card in internal SRAM mode */
3372  falcon_read ( efab, &reg, FCN_NIC_STAT_REG );
3373  EFAB_SET_OWORD_FIELD ( reg, FCN_ONCHIP_SRAM, 1 );
3374  falcon_write ( efab, &reg, FCN_NIC_STAT_REG );
3375 
3376  /* Deactivate any external SRAM that might be present */
3378  FCN_GPIO1_OEN, 1,
3379  FCN_GPIO1_OUT, 1 );
3381 
3382  /* Initiate SRAM reset */
3384  FCN_SRAM_OOB_BT_INIT_EN, 1,
3385  FCN_SRM_NUM_BANKS_AND_BANK_SIZE, 0 );
3386  falcon_write ( efab, &reg, FCN_SRM_CFG_REG_KER );
3387 
3388  /* Wait for SRAM reset to complete */
3389  count = 0;
3390  do {
3391  /* SRAM reset is slow; expect around 16ms */
3392  mdelay ( 20 );
3393 
3394  /* Check for reset complete */
3395  falcon_read ( efab, &reg, FCN_SRM_CFG_REG_KER );
3396  if ( !EFAB_OWORD_FIELD ( reg, FCN_SRAM_OOB_BT_INIT_EN ) )
3397  return 0;
3398  } while (++count < 20); /* wait up to 0.4 sec */
3399 
3400  EFAB_ERR ( "timed out waiting for SRAM reset\n");
3401  return -ETIMEDOUT;
3402 }
#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
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
uint16_t count
Number of entries.
Definition: ena.h:22
#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 3405 of file etherfabric.c.

3406 {
3407  efab_dword_t timer_cmd;
3408  efab_oword_t reg;
3409  int tx_fc, xoff_thresh, xon_thresh;
3410 
3411  /* bug5129: Clear the parity enables on the TX data fifos as
3412  * they produce false parity errors because of timing issues
3413  */
3414  falcon_read ( efab, &reg, FCN_SPARE_REG_KER );
3415  EFAB_SET_OWORD_FIELD ( reg, FCN_MEM_PERR_EN_TX_DATA, 0 );
3416  falcon_write ( efab, &reg, FCN_SPARE_REG_KER );
3417 
3418  /* Set up TX and RX descriptor caches in SRAM */
3419  EFAB_POPULATE_OWORD_1 ( reg, FCN_SRM_TX_DC_BASE_ADR, 0x130000 );
3421  EFAB_POPULATE_OWORD_1 ( reg, FCN_TX_DC_SIZE, 1 /* 16 descriptors */ );
3423  EFAB_POPULATE_OWORD_1 ( reg, FCN_SRM_RX_DC_BASE_ADR, 0x100000 );
3425  EFAB_POPULATE_OWORD_1 ( reg, FCN_RX_DC_SIZE, 2 /* 32 descriptors */ );
3427 
3428  /* Set number of RSS CPUs
3429  * bug7244: Increase filter depth to reduce RX_RESET likelihood
3430  */
3432  FCN_NUM_KER, 0,
3433  FCN_UDP_FULL_SRCH_LIMIT, 8,
3434  FCN_UDP_WILD_SRCH_LIMIT, 8,
3435  FCN_TCP_WILD_SRCH_LIMIT, 8,
3436  FCN_TCP_FULL_SRCH_LIMIT, 8);
3438  udelay ( 1000 );
3439 
3440  /* Setup RX. Wait for descriptor is broken and must
3441  * be disabled. RXDP recovery shouldn't be needed, but is.
3442  * disable ISCSI parsing because we don't need it
3443  */
3445  EFAB_SET_OWORD_FIELD ( reg, FCN_RX_NODESC_WAIT_DIS, 1 );
3446  EFAB_SET_OWORD_FIELD ( reg, FCN_RX_RECOVERY_EN, 1 );
3447  EFAB_SET_OWORD_FIELD ( reg, FCN_RX_ISCSI_DIS, 1 );
3449 
3450  /* Determine recommended flow control settings. *
3451  * Flow control is qualified on B0 and A1/1G, not on A1/10G */
3452  if ( efab->pci_revision == FALCON_REV_B0 ) {
3453  tx_fc = 1;
3454  xoff_thresh = 54272; /* ~80Kb - 3*max MTU */
3455  xon_thresh = 27648; /* ~3*max MTU */
3456  }
3457  else if ( !efab->phy_10g ) {
3458  tx_fc = 1;
3459  xoff_thresh = 2048;
3460  xon_thresh = 512;
3461  }
3462  else {
3463  tx_fc = xoff_thresh = xon_thresh = 0;
3464  }
3465 
3466  /* Setup TX and RX */
3467  falcon_read ( efab, &reg, FCN_TX_CFG2_REG_KER );
3468  EFAB_SET_OWORD_FIELD ( reg, FCN_TX_DIS_NON_IP_EV, 1 );
3469  falcon_write ( efab, &reg, FCN_TX_CFG2_REG_KER );
3470 
3471  falcon_read ( efab, &reg, FCN_RX_CFG_REG_KER );
3472  EFAB_SET_OWORD_FIELD_VER ( efab, reg, FCN_RX_USR_BUF_SIZE,
3473  (3*4096) / 32 );
3474  if ( efab->pci_revision == FALCON_REV_B0)
3475  EFAB_SET_OWORD_FIELD ( reg, FCN_RX_INGR_EN_B0, 1 );
3476  EFAB_SET_OWORD_FIELD_VER ( efab, reg, FCN_RX_XON_MAC_TH,
3477  xon_thresh / 256);
3478  EFAB_SET_OWORD_FIELD_VER ( efab, reg, FCN_RX_XOFF_MAC_TH,
3479  xoff_thresh / 256);
3480  EFAB_SET_OWORD_FIELD_VER ( efab, reg, FCN_RX_XOFF_MAC_EN, tx_fc);
3481  falcon_write ( efab, &reg, FCN_RX_CFG_REG_KER );
3482 
3483  /* Set timer register */
3484  EFAB_POPULATE_DWORD_2 ( timer_cmd,
3485  FCN_TIMER_MODE, FCN_TIMER_MODE_DIS,
3486  FCN_TIMER_VAL, 0 );
3487  falcon_writel ( efab, &timer_cmd, FCN_TIMER_CMD_REG_KER );
3488 }
#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 3491 of file etherfabric.c.

3492 {
3493  struct efab_ev_queue *ev_queue = &efab->ev_queue;
3494  struct efab_rx_queue *rx_queue = &efab->rx_queue;
3495  struct efab_tx_queue *tx_queue = &efab->tx_queue;
3496 
3497  efab_oword_t reg;
3498  int jumbo;
3499 
3500  /* Initialise the ptrs */
3501  tx_queue->read_ptr = tx_queue->write_ptr = 0;
3502  rx_queue->read_ptr = rx_queue->write_ptr = 0;
3503  ev_queue->read_ptr = 0;
3504 
3505  /* Push the event queue to the hardware */
3507  FCN_EVQ_EN, 1,
3508  FCN_EVQ_SIZE, FQS(FCN_EVQ, EFAB_EVQ_SIZE),
3509  FCN_EVQ_BUF_BASE_ID, ev_queue->entry.id );
3510  falcon_write ( efab, &reg,
3511  FCN_REVISION_REG ( efab, FCN_EVQ_PTR_TBL_KER ) );
3512 
3513  /* Push the tx queue to the hardware */
3515  FCN_TX_DESCQ_EN, 1,
3516  FCN_TX_ISCSI_DDIG_EN, 0,
3517  FCN_TX_ISCSI_DDIG_EN, 0,
3518  FCN_TX_DESCQ_BUF_BASE_ID, tx_queue->entry.id,
3519  FCN_TX_DESCQ_EVQ_ID, 0,
3520  FCN_TX_DESCQ_SIZE, FQS(FCN_TX_DESCQ, EFAB_TXD_SIZE),
3521  FCN_TX_DESCQ_TYPE, 0 /* kernel queue */,
3522  FCN_TX_NON_IP_DROP_DIS_B0, 1 );
3523  falcon_write ( efab, &reg,
3524  FCN_REVISION_REG ( efab, FCN_TX_DESC_PTR_TBL_KER ) );
3525 
3526  /* Push the rx queue to the hardware */
3527  jumbo = ( efab->pci_revision == FALCON_REV_B0 ) ? 0 : 1;
3529  FCN_RX_ISCSI_DDIG_EN, 0,
3530  FCN_RX_ISCSI_HDIG_EN, 0,
3531  FCN_RX_DESCQ_BUF_BASE_ID, rx_queue->entry.id,
3532  FCN_RX_DESCQ_EVQ_ID, 0,
3533  FCN_RX_DESCQ_SIZE, FQS(FCN_RX_DESCQ, EFAB_RXD_SIZE),
3534  FCN_RX_DESCQ_TYPE, 0 /* kernel queue */,
3535  FCN_RX_DESCQ_JUMBO, jumbo,
3536  FCN_RX_DESCQ_EN, 1 );
3537  falcon_write ( efab, &reg,
3538  FCN_REVISION_REG ( efab, FCN_RX_DESC_PTR_TBL_KER ) );
3539 
3540  /* Program INT_ADR_REG_KER */
3542  FCN_INT_ADR_KER, virt_to_bus ( &efab->int_ker ) );
3543  falcon_write ( efab, &reg, FCN_INT_ADR_REG_KER );
3544 
3545  /* Ack the event queue */
3546  falcon_eventq_read_ack ( efab, ev_queue );
3547 }
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 3550 of file etherfabric.c.

3551 {
3552  efab_oword_t cmd;
3553 
3554  /* Disable interrupts */
3555  falcon_interrupts ( efab, 0, 0 );
3556 
3557  /* Flush the dma queues */
3559  FCN_TX_FLUSH_DESCQ_CMD, 1,
3560  FCN_TX_FLUSH_DESCQ, 0 );
3561  falcon_write ( efab, &cmd,
3562  FCN_REVISION_REG ( efab, FCN_TX_DESC_PTR_TBL_KER ) );
3563 
3565  FCN_RX_FLUSH_DESCQ_CMD, 1,
3566  FCN_RX_FLUSH_DESCQ, 0 );
3567  falcon_write ( efab, &cmd,
3568  FCN_REVISION_REG ( efab, FCN_RX_DESC_PTR_TBL_KER ) );
3569 
3570  mdelay ( 100 );
3571 
3572  /* Remove descriptor rings from card */
3573  EFAB_ZERO_OWORD ( cmd );
3574  falcon_write ( efab, &cmd,
3575  FCN_REVISION_REG ( efab, FCN_TX_DESC_PTR_TBL_KER ) );
3576  falcon_write ( efab, &cmd,
3577  FCN_REVISION_REG ( efab, FCN_RX_DESC_PTR_TBL_KER ) );
3578  falcon_write ( efab, &cmd,
3579  FCN_REVISION_REG ( efab, FCN_EVQ_PTR_TBL_KER ) );
3580 }
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 3591 of file etherfabric.c.

3592 {
3594  FCN_RX_KER_BUF_SIZE, EFAB_RX_BUF_SIZE,
3595  FCN_RX_KER_BUF_ADR, virt_to_bus ( iob->data ) );
3596 }
#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 3599 of file etherfabric.c.

3600 {
3601  efab_dword_t reg;
3602  int ptr = rx_queue->write_ptr % EFAB_RXD_SIZE;
3603 
3604  EFAB_POPULATE_DWORD_1 ( reg, FCN_RX_DESC_WPTR_DWORD, ptr );
3606 }
#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 3618 of file etherfabric.c.

3619 {
3621  FCN_TX_KER_BYTE_CNT, iob_len ( iob ),
3622  FCN_TX_KER_BUF_ADR, virt_to_bus ( iob->data ) );
3623 }
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 3626 of file etherfabric.c.

3628 {
3629  efab_dword_t reg;
3630  int ptr = tx_queue->write_ptr % EFAB_TXD_SIZE;
3631 
3632  EFAB_POPULATE_DWORD_1 ( reg, FCN_TX_DESC_WPTR_DWORD, ptr );
3634 }
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 3646 of file etherfabric.c.

3648 {
3649  int fill_level = rx_queue->write_ptr - rx_queue->read_ptr;
3650  int space = EFAB_NUM_RX_DESC - fill_level - 1;
3651  int pushed = 0;
3652 
3653  while ( space ) {
3654  int buf_id = rx_queue->write_ptr % EFAB_NUM_RX_DESC;
3655  int desc_id = rx_queue->write_ptr % EFAB_RXD_SIZE;
3656  struct io_buffer *iob;
3658 
3659  assert ( rx_queue->buf[buf_id] == NULL );
3660  iob = alloc_iob ( EFAB_RX_BUF_SIZE );
3661  if ( !iob )
3662  break;
3663 
3664  EFAB_TRACE ( "pushing rx_buf[%d] iob %p data %p\n",
3665  buf_id, iob, iob->data );
3666 
3667  rx_queue->buf[buf_id] = iob;
3668  rxd = rx_queue->ring + desc_id;
3669  falcon_build_rx_desc ( rxd, iob );
3670  ++rx_queue->write_ptr;
3671  ++pushed;
3672  --space;
3673  }
3674 
3675  if ( pushed ) {
3676  /* Push the ptr to hardware */
3677  falcon_notify_rx_desc ( efab, rx_queue );
3678 
3679  fill_level = rx_queue->write_ptr - rx_queue->read_ptr;
3680  EFAB_TRACE ( "pushed %d rx buffers to fill level %d\n",
3681  pushed, fill_level );
3682  }
3683 
3684  if ( fill_level == 0 )
3685  return -ENOMEM;
3686  return 0;
3687 }
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:3599
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:3591
#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 3690 of file etherfabric.c.

3691 {
3692  struct efab_rx_queue *rx_queue = &efab->rx_queue;
3693  struct io_buffer *iob;
3694  unsigned int read_ptr = rx_queue->read_ptr % EFAB_RXD_SIZE;
3695  unsigned int buf_ptr = rx_queue->read_ptr % EFAB_NUM_RX_DESC;
3696 
3697  assert ( id == read_ptr );
3698 
3699  /* Pop this rx buffer out of the software ring */
3700  iob = rx_queue->buf[buf_ptr];
3701  rx_queue->buf[buf_ptr] = NULL;
3702 
3703  EFAB_TRACE ( "popping rx_buf[%d] iob %p data %p with %d bytes %s\n",
3704  id, iob, iob->data, len, drop ? "bad" : "ok" );
3705 
3706  /* Pass the packet up if required */
3707  if ( drop )
3708  free_iob ( iob );
3709  else {
3710  iob_put ( iob, len );
3711  netdev_rx ( efab->netdev, iob );
3712  }
3713 
3714  ++rx_queue->read_ptr;
3715 }
#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
uint32_t len
Length.
Definition: ena.h:14
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]
#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 3726 of file etherfabric.c.

3727 {
3728  struct efab_nic *efab = netdev->priv;
3729  struct efab_tx_queue *tx_queue = &efab->tx_queue;
3730  int fill_level, space;
3732  int buf_id;
3733 
3734  fill_level = tx_queue->write_ptr - tx_queue->read_ptr;
3735  space = EFAB_TXD_SIZE - fill_level - 1;
3736  if ( space < 1 )
3737  return -ENOBUFS;
3738 
3739  /* Save the iobuffer for later completion */
3740  buf_id = tx_queue->write_ptr % EFAB_TXD_SIZE;
3741  assert ( tx_queue->buf[buf_id] == NULL );
3742  tx_queue->buf[buf_id] = iob;
3743 
3744  EFAB_TRACE ( "tx_buf[%d] for iob %p data %p len %zd\n",
3745  buf_id, iob, iob->data, iob_len ( iob ) );
3746 
3747  /* Form the descriptor, and push it to hardware */
3748  txd = tx_queue->ring + buf_id;
3749  falcon_build_tx_desc ( txd, iob );
3750  ++tx_queue->write_ptr;
3751  falcon_notify_tx_desc ( efab, tx_queue );
3752 
3753  return 0;
3754 }
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:3618
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:3626
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 3757 of file etherfabric.c.

3758 {
3759  struct efab_tx_queue *tx_queue = &efab->tx_queue;
3760  unsigned int read_ptr, stop;
3761 
3762  /* Complete all buffers from read_ptr up to and including id */
3763  read_ptr = tx_queue->read_ptr % EFAB_TXD_SIZE;
3764  stop = ( id + 1 ) % EFAB_TXD_SIZE;
3765 
3766  while ( read_ptr != stop ) {
3767  struct io_buffer *iob = tx_queue->buf[read_ptr];
3768  assert ( iob );
3769 
3770  /* Complete the tx buffer */
3771  if ( iob )
3772  netdev_tx_complete ( efab->netdev, iob );
3773  tx_queue->buf[read_ptr] = NULL;
3774 
3775  ++tx_queue->read_ptr;
3776  read_ptr = tx_queue->read_ptr % EFAB_TXD_SIZE;
3777  }
3778 
3779  return 0;
3780 }
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 3791 of file etherfabric.c.

3792 {
3793  efab_dword_t reg;
3794 
3795  if ( efab->pci_revision == FALCON_REV_B0 ) {
3796  /* read the ISR */
3797  falcon_readl( efab, &reg, INT_ISR0_B0 );
3798  }
3799  else {
3800  /* write to the INT_ACK register */
3801  EFAB_ZERO_DWORD ( reg );
3803  mb();
3804  falcon_readl ( efab, &reg,
3806  }
3807 }
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 3810 of file etherfabric.c.

3811 {
3812  int ev_code, desc_ptr, len, drop;
3813 
3814  /* Decode event */
3815  ev_code = EFAB_QWORD_FIELD ( *evt, FCN_EV_CODE );
3816  switch ( ev_code ) {
3817  case FCN_TX_IP_EV_DECODE:
3818  desc_ptr = EFAB_QWORD_FIELD ( *evt, FCN_TX_EV_DESC_PTR );
3819  efab_transmit_done ( efab, desc_ptr );
3820  break;
3821 
3822  case FCN_RX_IP_EV_DECODE:
3823  desc_ptr = EFAB_QWORD_FIELD ( *evt, FCN_RX_EV_DESC_PTR );
3824  len = EFAB_QWORD_FIELD ( *evt, FCN_RX_EV_BYTE_CNT );
3825  drop = !EFAB_QWORD_FIELD ( *evt, FCN_RX_EV_PKT_OK );
3826 
3827  efab_receive ( efab, desc_ptr, len, drop );
3828  break;
3829 
3830  default:
3831  EFAB_TRACE ( "Unknown event type %d\n", ev_code );
3832  break;
3833  }
3834 }
#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:3690
static int efab_transmit_done(struct efab_nic *efab, int id)
Definition: etherfabric.c:3757
#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 3845 of file etherfabric.c.

3846 {
3847  struct efab_nic *efab = netdev->priv;
3848  struct efab_ev_queue *ev_queue = &efab->ev_queue;
3849  struct efab_rx_queue *rx_queue = &efab->rx_queue;
3850  falcon_event_t *evt;
3851 
3852  /* Read the event queue by directly looking for events
3853  * (we don't even bother to read the eventq write ptr) */
3854  evt = ev_queue->ring + ev_queue->read_ptr;
3855  while ( falcon_event_present ( evt ) ) {
3856 
3857  EFAB_TRACE ( "Event at index 0x%x address %p is "
3858  EFAB_QWORD_FMT "\n", ev_queue->read_ptr,
3859  evt, EFAB_QWORD_VAL ( *evt ) );
3860 
3861  falcon_handle_event ( efab, evt );
3862 
3863  /* Clear the event */
3864  EFAB_SET_QWORD ( *evt );
3865 
3866  /* Move to the next event. We don't ack the event
3867  * queue until the end */
3868  ev_queue->read_ptr = ( ( ev_queue->read_ptr + 1 ) %
3869  EFAB_EVQ_SIZE );
3870  evt = ev_queue->ring + ev_queue->read_ptr;
3871  }
3872 
3873  /* Push more buffers if needed */
3874  (void) efab_fill_rx_queue ( efab, rx_queue );
3875 
3876  /* Clear any pending interrupts */
3877  falcon_clear_interrupts ( efab );
3878 
3879  /* Ack the event queue */
3880  falcon_eventq_read_ack ( efab, ev_queue );
3881 }
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:3791
#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:3810
unsigned int read_ptr
static int efab_fill_rx_queue(struct efab_nic *efab, struct efab_rx_queue *rx_queue)
Definition: etherfabric.c:3646
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 3884 of file etherfabric.c.

3885 {
3886  struct efab_nic *efab = netdev->priv;
3887  struct efab_ev_queue *ev_queue = &efab->ev_queue;
3888 
3889  switch ( enable ) {
3890  case 0:
3891  falcon_interrupts ( efab, 0, 0 );
3892  break;
3893  case 1:
3894  falcon_interrupts ( efab, 1, 0 );
3895  falcon_eventq_read_ack ( efab, ev_queue );
3896  break;
3897  case 2:
3898  falcon_interrupts ( efab, 1, 1 );
3899  break;
3900  }
3901 }
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 3912 of file etherfabric.c.

3913 {
3914  struct efab_ev_queue *ev_queue = &efab->ev_queue;
3915  struct efab_rx_queue *rx_queue = &efab->rx_queue;
3916  struct efab_tx_queue *tx_queue = &efab->tx_queue;
3917  int i;
3918 
3919  for ( i = 0; i < EFAB_NUM_RX_DESC; i++ ) {
3920  if ( rx_queue->buf[i] )
3921  free_iob ( rx_queue->buf[i] );
3922  }
3923 
3924  for ( i = 0; i < EFAB_TXD_SIZE; i++ ) {
3925  if ( tx_queue->buf[i] )
3926  netdev_tx_complete ( efab->netdev, tx_queue->buf[i] );
3927  }
3928 
3929  if ( rx_queue->ring )
3930  falcon_free_special_buffer ( rx_queue->ring );
3931 
3932  if ( tx_queue->ring )
3933  falcon_free_special_buffer ( tx_queue->ring );
3934 
3935  if ( ev_queue->ring )
3936  falcon_free_special_buffer ( ev_queue->ring );
3937 
3938  memset ( rx_queue, 0, sizeof ( *rx_queue ) );
3939  memset ( tx_queue, 0, sizeof ( *tx_queue ) );
3940  memset ( ev_queue, 0, sizeof ( *ev_queue ) );
3941 
3942  /* Ensure subsequent buffer allocations start at id 0 */
3943  efab->buffer_head = 0;
3944 }
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:3024
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 3947 of file etherfabric.c.

3948 {
3949  struct efab_ev_queue *ev_queue = &efab->ev_queue;
3950  struct efab_rx_queue *rx_queue = &efab->rx_queue;
3951  struct efab_tx_queue *tx_queue = &efab->tx_queue;
3952  size_t bytes;
3953 
3954  /* Allocate the hardware event queue */
3955  bytes = sizeof ( falcon_event_t ) * EFAB_TXD_SIZE;
3956  ev_queue->ring = falcon_alloc_special_buffer ( efab, bytes,
3957  &ev_queue->entry );
3958  if ( !ev_queue->ring )
3959  goto fail1;
3960 
3961  /* Initialise the hardware event queue */
3962  memset ( ev_queue->ring, 0xff, bytes );
3963 
3964  /* Allocate the hardware tx queue */
3965  bytes = sizeof ( falcon_tx_desc_t ) * EFAB_TXD_SIZE;
3966  tx_queue->ring = falcon_alloc_special_buffer ( efab, bytes,
3967  &tx_queue->entry );
3968  if ( ! tx_queue->ring )
3969  goto fail2;
3970 
3971  /* Allocate the hardware rx queue */
3972  bytes = sizeof ( falcon_rx_desc_t ) * EFAB_RXD_SIZE;
3973  rx_queue->ring = falcon_alloc_special_buffer ( efab, bytes,
3974  &rx_queue->entry );
3975  if ( ! rx_queue->ring )
3976  goto fail3;
3977 
3978  return 0;
3979 
3980 fail3:
3981  falcon_free_special_buffer ( tx_queue->ring );
3982  tx_queue->ring = NULL;
3983 fail2:
3984  falcon_free_special_buffer ( ev_queue->ring );
3985  ev_queue->ring = NULL;
3986 fail1:
3987  return -ENOMEM;
3988 }
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:3032
#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:3024
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 3991 of file etherfabric.c.

3992 {
3993  int count, rc;
3994 
3995  /* This can take several seconds */
3996  EFAB_LOG ( "Waiting for link..\n" );
3997  for ( count=0; count<5; count++ ) {
3998  rc = efab->mac_op->init ( efab );
3999  if ( rc ) {
4000  EFAB_ERR ( "Failed reinitialising MAC, error %s\n",
4001  strerror ( rc ));
4002  return rc;
4003  }
4004 
4005  /* Sleep for 2s to wait for the link to settle, either
4006  * because we want to use it, or because we're about
4007  * to reset the mac anyway
4008  */
4009  mdelay ( 2000 );
4010 
4011  if ( ! efab->link_up ) {
4012  EFAB_ERR ( "!\n" );
4013  continue;
4014  }
4015 
4016  EFAB_LOG ( "\n%dMbps %s-duplex\n",
4017  ( efab->link_options & LPA_EF_10000 ? 10000 :
4018  ( efab->link_options & LPA_EF_1000 ? 1000 :
4019  ( efab->link_options & LPA_100 ? 100 : 10 ) ) ),
4020  ( efab->link_options & LPA_EF_DUPLEX ?
4021  "full" : "half" ) );
4022 
4023  /* TODO: Move link state handling to the poll() routine */
4024  netdev_link_up ( efab->netdev );
4025  return 0;
4026  }
4027 
4028  EFAB_ERR ( "timed initialising MAC\n" );
4029  return -ETIMEDOUT;
4030 }
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
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
uint16_t count
Number of entries.
Definition: ena.h:22
#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 4033 of file etherfabric.c.

4034 {
4035  struct efab_nic *efab = netdev->priv;
4036 
4037  falcon_fini_resources ( efab );
4038  efab_free_resources ( efab );
4039  efab->board_op->fini ( efab );
4040  falcon_reset ( efab );
4041 }
static void efab_free_resources(struct efab_nic *efab)
Definition: etherfabric.c:3912
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:3550
static int falcon_reset(struct efab_nic *efab)
Definition: etherfabric.c:3108
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 4044 of file etherfabric.c.

4045 {
4046  struct efab_nic *efab = netdev->priv;
4047  struct efab_rx_queue *rx_queue = &efab->rx_queue;
4048  int rc;
4049 
4050  rc = falcon_reset ( efab );
4051  if ( rc )
4052  goto fail1;
4053 
4054  rc = efab->board_op->init ( efab );
4055  if ( rc )
4056  goto fail2;
4057 
4058  rc = falcon_init_sram ( efab );
4059  if ( rc )
4060  goto fail3;
4061 
4062  /* Configure descriptor caches before pushing hardware queues */
4063  falcon_setup_nic ( efab );
4064 
4065  rc = efab_alloc_resources ( efab );
4066  if ( rc )
4067  goto fail4;
4068 
4069  falcon_init_resources ( efab );
4070 
4071  /* Push rx buffers */
4072  rc = efab_fill_rx_queue ( efab, rx_queue );
4073  if ( rc )
4074  goto fail5;
4075 
4076  /* Try and bring the interface up */
4077  rc = efab_init_mac ( efab );
4078  if ( rc )
4079  goto fail6;
4080 
4081  return 0;
4082 
4083 fail6:
4084 fail5:
4085  efab_free_resources ( efab );
4086 fail4:
4087 fail3:
4088  efab->board_op->fini ( efab );
4089 fail2:
4090  falcon_reset ( efab );
4091 fail1:
4092  return rc;
4093 }
static void efab_free_resources(struct efab_nic *efab)
Definition: etherfabric.c:3912
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:3491
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:3108
static int falcon_init_sram(struct efab_nic *efab)
Definition: etherfabric.c:3366
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:3646
static int efab_init_mac(struct efab_nic *efab)
Definition: etherfabric.c:3991
static void falcon_setup_nic(struct efab_nic *efab)
Definition: etherfabric.c:3405
static int efab_alloc_resources(struct efab_nic *efab)
Definition: etherfabric.c:3947
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 4104 of file etherfabric.c.

4105 {
4106  struct net_device *netdev = pci_get_drvdata ( pci );
4107  struct efab_nic *efab = netdev->priv;
4108 
4109  if ( efab->membase ) {
4110  falcon_reset ( efab );
4111 
4112  iounmap ( efab->membase );
4113  efab->membase = NULL;
4114  }
4115 
4116  if ( efab->nvo.nvs ) {
4117  unregister_nvo ( &efab->nvo );
4118  efab->nvo.nvs = NULL;
4119  }
4120 
4122  netdev_nullify ( netdev );
4123  netdev_put ( netdev );
4124 }
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:3108
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 4127 of file etherfabric.c.

4128 {
4129  struct net_device *netdev;
4130  struct efab_nic *efab;
4131  unsigned long mmio_start, mmio_len;
4132  int rc;
4133 
4134  /* Create the network adapter */
4135  netdev = alloc_etherdev ( sizeof ( struct efab_nic ) );
4136  if ( ! netdev ) {
4137  rc = -ENOMEM;
4138  goto fail1;
4139  }
4140 
4141  /* Initialise the network adapter, and initialise private storage */
4143  pci_set_drvdata ( pci, netdev );
4144  netdev->dev = &pci->dev;
4145 
4146  efab = netdev->priv;
4147  memset ( efab, 0, sizeof ( *efab ) );
4148  efab->netdev = netdev;
4149 
4150  /* Get iobase/membase */
4151  mmio_start = pci_bar_start ( pci, PCI_BASE_ADDRESS_2 );
4152  mmio_len = pci_bar_size ( pci, PCI_BASE_ADDRESS_2 );
4153  efab->membase = pci_ioremap ( pci, mmio_start, mmio_len );
4154  EFAB_TRACE ( "BAR of %lx bytes at phys %lx mapped at %p\n",
4155  mmio_len, mmio_start, efab->membase );
4156 
4157  /* Enable the PCI device */
4158  adjust_pci_device ( pci );
4159  efab->iobase = pci->ioaddr & ~3;
4160 
4161  /* Determine the NIC variant */
4162  falcon_probe_nic_variant ( efab, pci );
4163 
4164  /* Read the SPI interface and determine the MAC address,
4165  * and the board and phy variant. Hook in the op tables */
4166  rc = falcon_probe_spi ( efab );
4167  if ( rc )
4168  goto fail2;
4169  rc = falcon_probe_nvram ( efab );
4170  if ( rc )
4171  goto fail3;
4172 
4173  memcpy ( netdev->hw_addr, efab->mac_addr, ETH_ALEN );
4174 
4175  rc = register_netdev ( netdev );
4176  if ( rc )
4177  goto fail4;
4178  netdev_link_up ( netdev );
4179 
4180  /* Advertise non-volatile storage */
4181  if ( efab->nvo.nvs ) {
4182  rc = register_nvo ( &efab->nvo, netdev_settings ( netdev ) );
4183  if ( rc )
4184  goto fail5;
4185  }
4186 
4187  EFAB_LOG ( "Found %s EtherFabric %s %s revision %d\n", pci->id->name,
4188  efab->is_asic ? "ASIC" : "FPGA",
4189  efab->phy_10g ? "10G" : "1G",
4190  efab->pci_revision );
4191 
4192  return 0;
4193 
4194 fail5:
4196 fail4:
4197 fail3:
4198 fail2:
4199  iounmap ( efab->membase );
4200  efab->membase = NULL;
4201  netdev_put ( netdev );
4202 fail1:
4203  return rc;
4204 }
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:3215
static void falcon_probe_nic_variant(struct efab_nic *efab, struct pci_device *pci)
Definition: etherfabric.c:3172
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:4095
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:3277
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:2314

Definition at line 2380 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:2393

Definition at line 2402 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:2421

Definition at line 2439 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:2451
static int falcon_xfp_phy_init(struct efab_nic *efab)
Definition: etherfabric.c:2456

Definition at line 2471 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:2516
static int falcon_txc_phy_init(struct efab_nic *efab)
Definition: etherfabric.c:2543

Definition at line 2600 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:2661
#define TENXPRESS_REQUIRED_DEVS
Definition: etherfabric.c:2614

Definition at line 2696 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:2741
#define PM8358_REQUIRED_DEVS
Definition: etherfabric.c:2710

Definition at line 2774 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:2790

Definition at line 2826 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:2820

Definition at line 2833 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:2840
static void sfe4001_fini(struct efab_nic *efab)
Definition: etherfabric.c:2961

Definition at line 2984 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:2993
static int sfe4002_init(struct efab_nic *efab)
Definition: etherfabric.c:2989

Definition at line 2997 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:3002
static void sfe4003_fini(struct efab_nic *efab)
Definition: etherfabric.c:3006

Definition at line 3010 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:3845
static void efab_close(struct net_device *netdev)
Definition: etherfabric.c:4033
static int efab_transmit(struct net_device *netdev, struct io_buffer *iob)
Definition: etherfabric.c:3726
static void efab_irq(struct net_device *netdev, int enable)
Definition: etherfabric.c:3884
static int efab_open(struct net_device *netdev)
Definition: etherfabric.c:4044

Definition at line 4095 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 4207 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:4207
static int efab_probe(struct pci_device *pci)
Definition: etherfabric.c:4127
static void efab_remove(struct pci_device *pci)
Definition: etherfabric.c:4104

Definition at line 4212 of file etherfabric.c.