linux/drivers/net/ethernet/intel/igb/e1000_defines.h

/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright(c) 2007 - 2018 Intel Corporation. */

#ifndef _E1000_DEFINES_H_
#define _E1000_DEFINES_H_

/* Number of Transmit and Receive Descriptors must be a multiple of 8 */
#define REQ_TX_DESCRIPTOR_MULTIPLE
#define REQ_RX_DESCRIPTOR_MULTIPLE

/* Definitions for power management and wakeup registers */
/* Wake Up Control */
#define E1000_WUC_PME_EN

/* Wake Up Filter Control */
#define E1000_WUFC_LNKC
#define E1000_WUFC_MAG
#define E1000_WUFC_EX
#define E1000_WUFC_MC
#define E1000_WUFC_BC

/* Wake Up Status */
#define E1000_WUS_EX
#define E1000_WUS_ARPD
#define E1000_WUS_IPV4
#define E1000_WUS_IPV6
#define E1000_WUS_NSD

/* Packet types that are enabled for wake packet delivery */
#define WAKE_PKT_WUS

/* Wake Up Packet Length */
#define E1000_WUPL_MASK

/* Wake Up Packet Memory stores the first 128 bytes of the wake up packet */
#define E1000_WUPM_BYTES

/* Extended Device Control */
#define E1000_CTRL_EXT_SDP2_DATA
#define E1000_CTRL_EXT_SDP3_DATA
#define E1000_CTRL_EXT_SDP2_DIR
#define E1000_CTRL_EXT_SDP3_DIR

/* Physical Func Reset Done Indication */
#define E1000_CTRL_EXT_PFRSTD
#define E1000_CTRL_EXT_SDLPE
#define E1000_CTRL_EXT_LINK_MODE_MASK
#define E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES
#define E1000_CTRL_EXT_LINK_MODE_1000BASE_KX
#define E1000_CTRL_EXT_LINK_MODE_SGMII
#define E1000_CTRL_EXT_LINK_MODE_GMII
#define E1000_CTRL_EXT_EIAME
#define E1000_CTRL_EXT_IRCA
/* Interrupt delay cancellation */
/* Driver loaded bit for FW */
#define E1000_CTRL_EXT_DRV_LOAD
/* Interrupt acknowledge Auto-mask */
/* Clear Interrupt timers after IMS clear */
/* packet buffer parity error detection enabled */
/* descriptor FIFO parity error detection enable */
#define E1000_CTRL_EXT_PBA_CLR
#define E1000_CTRL_EXT_PHYPDEN
#define E1000_I2CCMD_REG_ADDR_SHIFT
#define E1000_I2CCMD_PHY_ADDR_SHIFT
#define E1000_I2CCMD_OPCODE_READ
#define E1000_I2CCMD_OPCODE_WRITE
#define E1000_I2CCMD_READY
#define E1000_I2CCMD_ERROR
#define E1000_I2CCMD_SFP_DATA_ADDR(a)
#define E1000_I2CCMD_SFP_DIAG_ADDR(a)
#define E1000_MAX_SGMII_PHY_REG_ADDR
#define E1000_I2CCMD_PHY_TIMEOUT
#define E1000_IVAR_VALID
#define E1000_GPIE_NSICR
#define E1000_GPIE_MSIX_MODE
#define E1000_GPIE_EIAME
#define E1000_GPIE_PBA

/* Receive Descriptor bit definitions */
#define E1000_RXD_STAT_DD
#define E1000_RXD_STAT_EOP
#define E1000_RXD_STAT_IXSM
#define E1000_RXD_STAT_VP
#define E1000_RXD_STAT_UDPCS
#define E1000_RXD_STAT_TCPCS
#define E1000_RXD_STAT_TS

#define E1000_RXDEXT_STATERR_LB
#define E1000_RXDEXT_STATERR_CE
#define E1000_RXDEXT_STATERR_SE
#define E1000_RXDEXT_STATERR_SEQ
#define E1000_RXDEXT_STATERR_CXE
#define E1000_RXDEXT_STATERR_TCPE
#define E1000_RXDEXT_STATERR_IPE
#define E1000_RXDEXT_STATERR_RXE

/* Same mask, but for extended and packet split descriptors */
#define E1000_RXDEXT_ERR_FRAME_ERR_MASK

#define E1000_MRQC_RSS_FIELD_IPV4_TCP
#define E1000_MRQC_RSS_FIELD_IPV4
#define E1000_MRQC_RSS_FIELD_IPV6_TCP_EX
#define E1000_MRQC_RSS_FIELD_IPV6
#define E1000_MRQC_RSS_FIELD_IPV6_TCP


/* Management Control */
#define E1000_MANC_SMBUS_EN
#define E1000_MANC_ASF_EN
#define E1000_MANC_EN_BMC2OS
/* Enable Neighbor Discovery Filtering */
#define E1000_MANC_RCV_TCO_EN
#define E1000_MANC_BLK_PHY_RST_ON_IDE
/* Enable MAC address filtering */
#define E1000_MANC_EN_MAC_ADDR_FILTER

/* Receive Control */
#define E1000_RCTL_EN
#define E1000_RCTL_SBP
#define E1000_RCTL_UPE
#define E1000_RCTL_MPE
#define E1000_RCTL_LPE
#define E1000_RCTL_LBM_MAC
#define E1000_RCTL_LBM_TCVR
#define E1000_RCTL_RDMTS_HALF
#define E1000_RCTL_MO_SHIFT
#define E1000_RCTL_BAM
#define E1000_RCTL_SZ_512
#define E1000_RCTL_SZ_256
#define E1000_RCTL_VFE
#define E1000_RCTL_CFIEN
#define E1000_RCTL_DPF
#define E1000_RCTL_PMCF
#define E1000_RCTL_SECRC

/* Use byte values for the following shift parameters
 * Usage:
 *     psrctl |= (((ROUNDUP(value0, 128) >> E1000_PSRCTL_BSIZE0_SHIFT) &
 *                  E1000_PSRCTL_BSIZE0_MASK) |
 *                ((ROUNDUP(value1, 1024) >> E1000_PSRCTL_BSIZE1_SHIFT) &
 *                  E1000_PSRCTL_BSIZE1_MASK) |
 *                ((ROUNDUP(value2, 1024) << E1000_PSRCTL_BSIZE2_SHIFT) &
 *                  E1000_PSRCTL_BSIZE2_MASK) |
 *                ((ROUNDUP(value3, 1024) << E1000_PSRCTL_BSIZE3_SHIFT) |;
 *                  E1000_PSRCTL_BSIZE3_MASK))
 * where value0 = [128..16256],  default=256
 *       value1 = [1024..64512], default=4096
 *       value2 = [0..64512],    default=4096
 *       value3 = [0..64512],    default=0
 */

#define E1000_PSRCTL_BSIZE0_MASK
#define E1000_PSRCTL_BSIZE1_MASK
#define E1000_PSRCTL_BSIZE2_MASK
#define E1000_PSRCTL_BSIZE3_MASK

#define E1000_PSRCTL_BSIZE0_SHIFT
#define E1000_PSRCTL_BSIZE1_SHIFT
#define E1000_PSRCTL_BSIZE2_SHIFT
#define E1000_PSRCTL_BSIZE3_SHIFT

/* SWFW_SYNC Definitions */
#define E1000_SWFW_EEP_SM
#define E1000_SWFW_PHY0_SM
#define E1000_SWFW_PHY1_SM
#define E1000_SWFW_PHY2_SM
#define E1000_SWFW_PHY3_SM

/* FACTPS Definitions */
/* Device Control */
#define E1000_CTRL_FD
#define E1000_CTRL_GIO_MASTER_DISABLE
#define E1000_CTRL_LRST
#define E1000_CTRL_ASDE
#define E1000_CTRL_SLU
#define E1000_CTRL_ILOS
#define E1000_CTRL_SPD_SEL
#define E1000_CTRL_SPD_100
#define E1000_CTRL_SPD_1000
#define E1000_CTRL_FRCSPD
#define E1000_CTRL_FRCDPX
/* Defined polarity of Dock/Undock indication in SDP[0] */
/* Reset both PHY ports, through PHYRST_N pin */
/* enable link status from external LINK_0 and LINK_1 pins */
#define E1000_CTRL_SWDPIN0
#define E1000_CTRL_SWDPIN1
#define E1000_CTRL_ADVD3WUC
#define E1000_CTRL_EN_PHY_PWR_MGMT
#define E1000_CTRL_SDP0_DIR
#define E1000_CTRL_SDP1_DIR
#define E1000_CTRL_RST
#define E1000_CTRL_RFCE
#define E1000_CTRL_TFCE
#define E1000_CTRL_VME
#define E1000_CTRL_PHY_RST
/* Initiate an interrupt to manageability engine */
#define E1000_CTRL_I2C_ENA

/* Bit definitions for the Management Data IO (MDIO) and Management Data
 * Clock (MDC) pins in the Device Control Register.
 */

#define E1000_CONNSW_ENRGSRC
#define E1000_CONNSW_PHYSD
#define E1000_CONNSW_PHY_PDN
#define E1000_CONNSW_SERDESD
#define E1000_CONNSW_AUTOSENSE_CONF
#define E1000_CONNSW_AUTOSENSE_EN
#define E1000_PCS_CFG_PCS_EN
#define E1000_PCS_LCTL_FLV_LINK_UP
#define E1000_PCS_LCTL_FSV_100
#define E1000_PCS_LCTL_FSV_1000
#define E1000_PCS_LCTL_FDV_FULL
#define E1000_PCS_LCTL_FSD
#define E1000_PCS_LCTL_FORCE_LINK
#define E1000_PCS_LCTL_FORCE_FCTRL
#define E1000_PCS_LCTL_AN_ENABLE
#define E1000_PCS_LCTL_AN_RESTART
#define E1000_PCS_LCTL_AN_TIMEOUT
#define E1000_ENABLE_SERDES_LOOPBACK

#define E1000_PCS_LSTS_LINK_OK
#define E1000_PCS_LSTS_SPEED_100
#define E1000_PCS_LSTS_SPEED_1000
#define E1000_PCS_LSTS_DUPLEX_FULL
#define E1000_PCS_LSTS_SYNK_OK

/* Device Status */
#define E1000_STATUS_FD
#define E1000_STATUS_LU
#define E1000_STATUS_FUNC_MASK
#define E1000_STATUS_FUNC_SHIFT
#define E1000_STATUS_FUNC_1
#define E1000_STATUS_TXOFF
#define E1000_STATUS_SPEED_100
#define E1000_STATUS_SPEED_1000
/* Change in Dock/Undock state. Clear on write '0'. */
/* Status of Master requests. */
#define E1000_STATUS_GIO_MASTER_ENABLE
/* BMC external code execution disabled */

#define E1000_STATUS_2P5_SKU
#define E1000_STATUS_2P5_SKU_OVER
/* Constants used to intrepret the masked PCI-X bus speed. */

#define SPEED_10
#define SPEED_100
#define SPEED_1000
#define SPEED_2500
#define HALF_DUPLEX
#define FULL_DUPLEX


#define ADVERTISE_10_HALF
#define ADVERTISE_10_FULL
#define ADVERTISE_100_HALF
#define ADVERTISE_100_FULL
#define ADVERTISE_1000_HALF
#define ADVERTISE_1000_FULL

/* 1000/H is not supported, nor spec-compliant. */
#define E1000_ALL_SPEED_DUPLEX
#define E1000_ALL_NOT_GIG
#define E1000_ALL_100_SPEED
#define E1000_ALL_10_SPEED
#define E1000_ALL_FULL_DUPLEX
#define E1000_ALL_HALF_DUPLEX

#define AUTONEG_ADVERTISE_SPEED_DEFAULT

/* LED Control */
#define E1000_LEDCTL_LED0_MODE_SHIFT
#define E1000_LEDCTL_LED0_BLINK
#define E1000_LEDCTL_LED0_MODE_MASK
#define E1000_LEDCTL_LED0_IVRT

#define E1000_LEDCTL_MODE_LED_ON
#define E1000_LEDCTL_MODE_LED_OFF

/* Transmit Descriptor bit definitions */
#define E1000_TXD_POPTS_IXSM
#define E1000_TXD_POPTS_TXSM
#define E1000_TXD_CMD_EOP
#define E1000_TXD_CMD_IFCS
#define E1000_TXD_CMD_RS
#define E1000_TXD_CMD_DEXT
#define E1000_TXD_STAT_DD
/* Extended desc bits for Linksec and timesync */

/* Transmit Control */
#define E1000_TCTL_EN
#define E1000_TCTL_PSP
#define E1000_TCTL_CT
#define E1000_TCTL_COLD
#define E1000_TCTL_RTLC

/* DMA Coalescing register fields */
#define E1000_DMACR_DMACWT_MASK
#define E1000_DMACR_DMACTHR_MASK
#define E1000_DMACR_DMACTHR_SHIFT
#define E1000_DMACR_DMAC_LX_MASK
#define E1000_DMACR_DMAC_LX_SHIFT
#define E1000_DMACR_DMAC_EN
/* DMA Coalescing BMC-to-OS Watchdog Enable */
#define E1000_DMACR_DC_BMC2OSW_EN

#define E1000_DMCTXTH_DMCTTHR_MASK

#define E1000_DMCTLX_TTLX_MASK

#define E1000_DMCRTRH_UTRESH_MASK
#define E1000_DMCRTRH_LRPRCW

#define E1000_DMCCNT_CCOUNT_MASK

#define E1000_FCRTC_RTH_COAL_MASK
#define E1000_FCRTC_RTH_COAL_SHIFT
#define E1000_PCIEMISC_LX_DECISION

/* Timestamp in Rx buffer */
#define E1000_RXPBS_CFG_TS_EN

#define I210_RXPBSIZE_DEFAULT
#define I210_RXPBSIZE_MASK
#define I210_RXPBSIZE_PB_30KB
#define I210_RXPBSIZE_PB_32KB
#define I210_TXPBSIZE_DEFAULT
#define I210_TXPBSIZE_MASK
#define I210_TXPBSIZE_PB0_6KB
#define I210_TXPBSIZE_PB1_6KB
#define I210_TXPBSIZE_PB2_6KB
#define I210_TXPBSIZE_PB3_6KB

#define I210_DTXMXPKTSZ_DEFAULT

#define I210_SR_QUEUES_NUM

/* SerDes Control */
#define E1000_SCTL_DISABLE_SERDES_LOOPBACK

/* Receive Checksum Control */
#define E1000_RXCSUM_IPOFL
#define E1000_RXCSUM_TUOFL
#define E1000_RXCSUM_CRCOFL
#define E1000_RXCSUM_PCSD

/* Header split receive */
#define E1000_RFCTL_IPV6_EX_DIS
#define E1000_RFCTL_LEF

/* Collision related configuration parameters */
#define E1000_COLLISION_THRESHOLD
#define E1000_CT_SHIFT
#define E1000_COLLISION_DISTANCE
#define E1000_COLD_SHIFT

/* Ethertype field values */
#define ETHERNET_IEEE_VLAN_TYPE

/* As per the EAS the maximum supported size is 9.5KB (9728 bytes) */
#define MAX_JUMBO_FRAME_SIZE
#define MAX_STD_JUMBO_FRAME_SIZE

/* PBA constants */
#define E1000_PBA_34K
#define E1000_PBA_64K

/* SW Semaphore Register */
#define E1000_SWSM_SMBI
#define E1000_SWSM_SWESMBI

/* Interrupt Cause Read */
#define E1000_ICR_TXDW
#define E1000_ICR_LSC
#define E1000_ICR_RXSEQ
#define E1000_ICR_RXDMT0
#define E1000_ICR_RXT0
#define E1000_ICR_VMMB
#define E1000_ICR_TS
#define E1000_ICR_DRSTA
/* If this bit asserted, the driver should claim the interrupt */
#define E1000_ICR_INT_ASSERTED
/* LAN connected device generates an interrupt */
#define E1000_ICR_DOUTSYNC

/* Extended Interrupt Cause Read */
#define E1000_EICR_RX_QUEUE0
#define E1000_EICR_RX_QUEUE1
#define E1000_EICR_RX_QUEUE2
#define E1000_EICR_RX_QUEUE3
#define E1000_EICR_TX_QUEUE0
#define E1000_EICR_TX_QUEUE1
#define E1000_EICR_TX_QUEUE2
#define E1000_EICR_TX_QUEUE3
#define E1000_EICR_OTHER
/* TCP Timer */

/* This defines the bits that are set in the Interrupt Mask
 * Set/Read Register.  Each bit is documented below:
 *   o RXT0   = Receiver Timer Interrupt (ring 0)
 *   o TXDW   = Transmit Descriptor Written Back
 *   o RXDMT0 = Receive Descriptor Minimum Threshold hit (ring 0)
 *   o RXSEQ  = Receive Sequence Error
 *   o LSC    = Link Status Change
 */
#define IMS_ENABLE_MASK

/* Interrupt Mask Set */
#define E1000_IMS_TXDW
#define E1000_IMS_LSC
#define E1000_IMS_VMMB
#define E1000_IMS_TS
#define E1000_IMS_RXSEQ
#define E1000_IMS_RXDMT0
#define E1000_IMS_RXT0
#define E1000_IMS_DRSTA
#define E1000_IMS_DOUTSYNC

/* Extended Interrupt Mask Set */
#define E1000_EIMS_OTHER

/* Interrupt Cause Set */
#define E1000_ICS_LSC
#define E1000_ICS_RXDMT0
#define E1000_ICS_DRSTA

/* Extended Interrupt Cause Set */
/* E1000_EITR_CNT_IGNR is only for 82576 and newer */
#define E1000_EITR_CNT_IGNR


/* Transmit Descriptor Control */
/* Enable the counting of descriptors still to be processed. */

/* Flow Control Constants */
#define FLOW_CONTROL_ADDRESS_LOW
#define FLOW_CONTROL_ADDRESS_HIGH
#define FLOW_CONTROL_TYPE

/* Transmit Config Word */
#define E1000_TXCW_ASM_DIR
#define E1000_TXCW_PAUSE

/* 802.1q VLAN Packet Size */
#define VLAN_TAG_SIZE
#define E1000_VLAN_FILTER_TBL_SIZE

/* Receive Address */
/* Number of high/low register pairs in the RAR. The RAR (Receive Address
 * Registers) holds the directed and multicast addresses that we monitor.
 * Technically, we have 16 spots.  However, we reserve one of these spots
 * (RAR[15]) for our directed address used by controllers with
 * manageability enabled, allowing us room for 15 multicast addresses.
 */
#define E1000_RAH_AV
#define E1000_RAH_ASEL_SRC_ADDR
#define E1000_RAH_QSEL_ENABLE
#define E1000_RAL_MAC_ADDR_LEN
#define E1000_RAH_MAC_ADDR_LEN
#define E1000_RAH_POOL_MASK
#define E1000_RAH_POOL_1

/* Error Codes */
#define E1000_ERR_NVM
#define E1000_ERR_PHY
#define E1000_ERR_CONFIG
#define E1000_ERR_PARAM
#define E1000_ERR_MAC_INIT
#define E1000_ERR_RESET
#define E1000_ERR_MASTER_REQUESTS_PENDING
#define E1000_BLK_PHY_RESET
#define E1000_ERR_SWFW_SYNC
#define E1000_NOT_IMPLEMENTED
#define E1000_ERR_MBX
#define E1000_ERR_INVALID_ARGUMENT
#define E1000_ERR_NO_SPACE
#define E1000_ERR_NVM_PBA_SECTION
#define E1000_ERR_INVM_VALUE_NOT_FOUND
#define E1000_ERR_I2C

/* Loop limit on how long we wait for auto-negotiation to complete */
#define COPPER_LINK_UP_LIMIT
#define PHY_AUTO_NEG_LIMIT
#define PHY_FORCE_LIMIT
/* Number of 100 microseconds we wait for PCI Express master disable */
#define MASTER_DISABLE_TIMEOUT
/* Number of milliseconds we wait for PHY configuration done after MAC reset */
#define PHY_CFG_TIMEOUT
/* Number of 2 milliseconds we wait for acquiring MDIO ownership. */
/* Number of milliseconds for NVM auto read done after MAC reset. */
#define AUTO_READ_DONE_TIMEOUT

/* Flow Control */
#define E1000_FCRTL_XONE

#define E1000_TSYNCTXCTL_VALID
#define E1000_TSYNCTXCTL_ENABLED

#define E1000_TSYNCRXCTL_VALID
#define E1000_TSYNCRXCTL_TYPE_MASK
#define E1000_TSYNCRXCTL_TYPE_L2_V2
#define E1000_TSYNCRXCTL_TYPE_L4_V1
#define E1000_TSYNCRXCTL_TYPE_L2_L4_V2
#define E1000_TSYNCRXCTL_TYPE_ALL
#define E1000_TSYNCRXCTL_TYPE_EVENT_V2
#define E1000_TSYNCRXCTL_ENABLED

#define E1000_TSYNCRXCFG_PTP_V1_CTRLT_MASK
#define E1000_TSYNCRXCFG_PTP_V1_SYNC_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V1_DELAY_REQ_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V1_FOLLOWUP_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V1_DELAY_RESP_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V1_MANAGEMENT_MESSAGE

#define E1000_TSYNCRXCFG_PTP_V2_MSGID_MASK
#define E1000_TSYNCRXCFG_PTP_V2_SYNC_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V2_DELAY_REQ_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V2_PATH_DELAY_REQ_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V2_PATH_DELAY_RESP_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V2_FOLLOWUP_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V2_DELAY_RESP_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V2_PATH_DELAY_FOLLOWUP_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V2_ANNOUNCE_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V2_SIGNALLING_MESSAGE
#define E1000_TSYNCRXCFG_PTP_V2_MANAGEMENT_MESSAGE

#define E1000_TIMINCA_16NS_SHIFT

/* Time Sync Interrupt Cause/Mask Register Bits */

#define TSINTR_SYS_WRAP
#define TSINTR_TXTS
#define TSINTR_RXTS
#define TSINTR_TT0
#define TSINTR_TT1
#define TSINTR_AUTT0
#define TSINTR_AUTT1
#define TSINTR_TADJ

#define TSYNC_INTERRUPTS
#define E1000_TSICR_TXTS

/* TSAUXC Configuration Bits */
#define TSAUXC_EN_TT0
#define TSAUXC_EN_TT1
#define TSAUXC_EN_CLK0
#define TSAUXC_SAMP_AUT0
#define TSAUXC_ST0
#define TSAUXC_EN_CLK1
#define TSAUXC_SAMP_AUT1
#define TSAUXC_ST1
#define TSAUXC_EN_TS0
#define TSAUXC_AUTT0
#define TSAUXC_EN_TS1
#define TSAUXC_AUTT1
#define TSAUXC_PLSG
#define TSAUXC_DISABLE

/* SDP Configuration Bits */
#define AUX0_SEL_SDP0
#define AUX0_SEL_SDP1
#define AUX0_SEL_SDP2
#define AUX0_SEL_SDP3
#define AUX0_TS_SDP_EN
#define AUX1_SEL_SDP0
#define AUX1_SEL_SDP1
#define AUX1_SEL_SDP2
#define AUX1_SEL_SDP3
#define AUX1_TS_SDP_EN
#define TS_SDP0_SEL_TT0
#define TS_SDP0_SEL_TT1
#define TS_SDP0_SEL_FC0
#define TS_SDP0_SEL_FC1
#define TS_SDP0_EN
#define TS_SDP1_SEL_TT0
#define TS_SDP1_SEL_TT1
#define TS_SDP1_SEL_FC0
#define TS_SDP1_SEL_FC1
#define TS_SDP1_EN
#define TS_SDP2_SEL_TT0
#define TS_SDP2_SEL_TT1
#define TS_SDP2_SEL_FC0
#define TS_SDP2_SEL_FC1
#define TS_SDP2_EN
#define TS_SDP3_SEL_TT0
#define TS_SDP3_SEL_TT1
#define TS_SDP3_SEL_FC0
#define TS_SDP3_SEL_FC1
#define TS_SDP3_EN

#define E1000_MDICNFG_EXT_MDIO
#define E1000_MDICNFG_COM_MDIO
#define E1000_MDICNFG_PHY_MASK
#define E1000_MDICNFG_PHY_SHIFT

#define E1000_MEDIA_PORT_COPPER
#define E1000_MEDIA_PORT_OTHER
#define E1000_M88E1112_AUTO_COPPER_SGMII
#define E1000_M88E1112_AUTO_COPPER_BASEX
#define E1000_M88E1112_STATUS_LINK
#define E1000_M88E1112_MAC_CTRL_1
#define E1000_M88E1112_MAC_CTRL_1_MODE_MASK
#define E1000_M88E1112_MAC_CTRL_1_MODE_SHIFT
#define E1000_M88E1112_PAGE_ADDR
#define E1000_M88E1112_STATUS
#define E1000_M88E1512_CFG_REG_1
#define E1000_M88E1512_CFG_REG_2
#define E1000_M88E1512_CFG_REG_3
#define E1000_M88E1512_MODE

/* PCI Express Control */
#define E1000_GCR_CMPL_TMOUT_MASK
#define E1000_GCR_CMPL_TMOUT_10ms
#define E1000_GCR_CMPL_TMOUT_RESEND
#define E1000_GCR_CAP_VER2

/* mPHY Address Control and Data Registers */
#define E1000_MPHY_ADDR_CTL
#define E1000_MPHY_ADDR_CTL_OFFSET_MASK
#define E1000_MPHY_DATA

/* mPHY PCS CLK Register */
#define E1000_MPHY_PCS_CLK_REG_OFFSET
/* mPHY Near End Digital Loopback Override Bit */
#define E1000_MPHY_PCS_CLK_REG_DIGINELBEN

#define E1000_PCS_LCTL_FORCE_FCTRL
#define E1000_PCS_LSTS_AN_COMPLETE

/* PHY Control Register */
#define MII_CR_FULL_DUPLEX
#define MII_CR_RESTART_AUTO_NEG
#define MII_CR_POWER_DOWN
#define MII_CR_AUTO_NEG_EN
#define MII_CR_LOOPBACK
#define MII_CR_RESET
#define MII_CR_SPEED_1000
#define MII_CR_SPEED_100
#define MII_CR_SPEED_10

/* PHY Status Register */
#define MII_SR_LINK_STATUS
#define MII_SR_AUTONEG_COMPLETE

/* Autoneg Advertisement Register */
#define NWAY_AR_10T_HD_CAPS
#define NWAY_AR_10T_FD_CAPS
#define NWAY_AR_100TX_HD_CAPS
#define NWAY_AR_100TX_FD_CAPS
#define NWAY_AR_PAUSE
#define NWAY_AR_ASM_DIR

/* Link Partner Ability Register (Base Page) */
#define NWAY_LPAR_PAUSE
#define NWAY_LPAR_ASM_DIR

/* Autoneg Expansion Register */

/* 1000BASE-T Control Register */
#define CR_1000T_HD_CAPS
#define CR_1000T_FD_CAPS
#define CR_1000T_MS_VALUE
					/* 0=Configure PHY as Slave */
#define CR_1000T_MS_ENABLE
					/* 0=Automatic Master/Slave config */

/* 1000BASE-T Status Register */
#define SR_1000T_REMOTE_RX_STATUS
#define SR_1000T_LOCAL_RX_STATUS


/* PHY 1000 MII Register/Bit Definitions */
/* PHY Registers defined by IEEE */
#define PHY_CONTROL
#define PHY_STATUS
#define PHY_ID1
#define PHY_ID2
#define PHY_AUTONEG_ADV
#define PHY_LP_ABILITY
#define PHY_1000T_CTRL
#define PHY_1000T_STATUS

/* NVM Control */
#define E1000_EECD_SK
#define E1000_EECD_CS
#define E1000_EECD_DI
#define E1000_EECD_DO
#define E1000_EECD_REQ
#define E1000_EECD_GNT
#define E1000_EECD_PRES
/* NVM Addressing bits based on type 0=small, 1=large */
#define E1000_EECD_ADDR_BITS
#define E1000_NVM_GRANT_ATTEMPTS
#define E1000_EECD_AUTO_RD
#define E1000_EECD_SIZE_EX_MASK
#define E1000_EECD_SIZE_EX_SHIFT
#define E1000_EECD_FLUPD_I210
#define E1000_EECD_FLUDONE_I210
#define E1000_EECD_FLASH_DETECTED_I210
#define E1000_FLUDONE_ATTEMPTS
#define E1000_EERD_EEWR_MAX_COUNT
#define E1000_I210_FIFO_SEL_RX
#define E1000_I210_FIFO_SEL_TX_QAV(_i)
#define E1000_I210_FIFO_SEL_TX_LEGACY
#define E1000_I210_FIFO_SEL_BMC2OS_TX
#define E1000_I210_FIFO_SEL_BMC2OS_RX
#define E1000_I210_FLASH_SECTOR_SIZE
/* Secure FLASH mode requires removing MSb */
#define E1000_I210_FW_PTR_MASK
/* Firmware code revision field word offset*/
#define E1000_I210_FW_VER_OFFSET
#define E1000_EECD_FLUPD_I210
#define E1000_EECD_FLUDONE_I210
#define E1000_FLUDONE_ATTEMPTS
#define E1000_EERD_EEWR_MAX_COUNT
#define E1000_I210_FIFO_SEL_RX
#define E1000_I210_FIFO_SEL_TX_QAV(_i)
#define E1000_I210_FIFO_SEL_TX_LEGACY
#define E1000_I210_FIFO_SEL_BMC2OS_TX
#define E1000_I210_FIFO_SEL_BMC2OS_RX


/* Offset to data in NVM read/write registers */
#define E1000_NVM_RW_REG_DATA
#define E1000_NVM_RW_REG_DONE
#define E1000_NVM_RW_REG_START
#define E1000_NVM_RW_ADDR_SHIFT
#define E1000_NVM_POLL_READ

/* NVM Word Offsets */
#define NVM_COMPAT
#define NVM_ID_LED_SETTINGS
#define NVM_VERSION
#define NVM_INIT_CONTROL2_REG
#define NVM_INIT_CONTROL3_PORT_B
#define NVM_INIT_CONTROL3_PORT_A
#define NVM_ALT_MAC_ADDR_PTR
#define NVM_CHECKSUM_REG
#define NVM_COMPATIBILITY_REG_3
#define NVM_COMPATIBILITY_BIT_MASK
#define NVM_MAC_ADDR
#define NVM_SUB_DEV_ID
#define NVM_SUB_VEN_ID
#define NVM_DEV_ID
#define NVM_VEN_ID
#define NVM_INIT_CTRL_2
#define NVM_INIT_CTRL_4
#define NVM_LED_1_CFG
#define NVM_LED_0_2_CFG
#define NVM_ETRACK_WORD
#define NVM_ETRACK_HIWORD
#define NVM_COMB_VER_OFF
#define NVM_COMB_VER_PTR

/* NVM version defines */
#define NVM_MAJOR_MASK
#define NVM_MINOR_MASK
#define NVM_IMAGE_ID_MASK
#define NVM_COMB_VER_MASK
#define NVM_MAJOR_SHIFT
#define NVM_MINOR_SHIFT
#define NVM_COMB_VER_SHFT
#define NVM_VER_INVALID
#define NVM_ETRACK_SHIFT
#define NVM_ETRACK_VALID
#define NVM_NEW_DEC_MASK
#define NVM_HEX_CONV
#define NVM_HEX_TENS

#define NVM_ETS_CFG
#define NVM_ETS_LTHRES_DELTA_MASK
#define NVM_ETS_LTHRES_DELTA_SHIFT
#define NVM_ETS_TYPE_MASK
#define NVM_ETS_TYPE_SHIFT
#define NVM_ETS_TYPE_EMC
#define NVM_ETS_NUM_SENSORS_MASK
#define NVM_ETS_DATA_LOC_MASK
#define NVM_ETS_DATA_LOC_SHIFT
#define NVM_ETS_DATA_INDEX_MASK
#define NVM_ETS_DATA_INDEX_SHIFT
#define NVM_ETS_DATA_HTHRESH_MASK

#define E1000_NVM_CFG_DONE_PORT_0
#define E1000_NVM_CFG_DONE_PORT_1
#define E1000_NVM_CFG_DONE_PORT_2
#define E1000_NVM_CFG_DONE_PORT_3

#define NVM_82580_LAN_FUNC_OFFSET(a)

/* Mask bits for fields in Word 0x24 of the NVM */
#define NVM_WORD24_COM_MDIO
#define NVM_WORD24_EXT_MDIO

/* Mask bits for fields in Word 0x0f of the NVM */
#define NVM_WORD0F_PAUSE_MASK
#define NVM_WORD0F_ASM_DIR

/* Mask bits for fields in Word 0x1a of the NVM */

/* length of string needed to store part num */
#define E1000_PBANUM_LENGTH

/* For checksumming, the sum of all words in the NVM should equal 0xBABA. */
#define NVM_SUM

#define NVM_PBA_OFFSET_0
#define NVM_PBA_OFFSET_1
#define NVM_RESERVED_WORD
#define NVM_PBA_PTR_GUARD
#define NVM_WORD_SIZE_BASE_SHIFT

/* NVM Commands - Microwire */

/* NVM Commands - SPI */
#define NVM_MAX_RETRY_SPI
#define NVM_WRITE_OPCODE_SPI
#define NVM_READ_OPCODE_SPI
#define NVM_A8_OPCODE_SPI
#define NVM_WREN_OPCODE_SPI
#define NVM_RDSR_OPCODE_SPI

/* SPI NVM Status Register */
#define NVM_STATUS_RDY_SPI

/* Word definitions for ID LED Settings */
#define ID_LED_RESERVED_0000
#define ID_LED_RESERVED_FFFF
#define ID_LED_DEFAULT
#define ID_LED_DEF1_DEF2
#define ID_LED_DEF1_ON2
#define ID_LED_DEF1_OFF2
#define ID_LED_ON1_DEF2
#define ID_LED_ON1_ON2
#define ID_LED_ON1_OFF2
#define ID_LED_OFF1_DEF2
#define ID_LED_OFF1_ON2
#define ID_LED_OFF1_OFF2

#define IGP_ACTIVITY_LED_MASK
#define IGP_ACTIVITY_LED_ENABLE
#define IGP_LED3_MODE

/* PCI/PCI-X/PCI-EX Config space */
#define PCIE_DEVICE_CONTROL2
#define PCIE_DEVICE_CONTROL2_16ms

#define PHY_REVISION_MASK
#define MAX_PHY_REG_ADDRESS
#define MAX_PHY_MULTI_PAGE_REG

/* Bit definitions for valid PHY IDs. */
/* I = Integrated
 * E = External
 */
#define M88E1111_I_PHY_ID
#define M88E1112_E_PHY_ID
#define I347AT4_E_PHY_ID
#define IGP03E1000_E_PHY_ID
#define I82580_I_PHY_ID
#define I350_I_PHY_ID
#define M88_VENDOR
#define I210_I_PHY_ID
#define M88E1543_E_PHY_ID
#define M88E1512_E_PHY_ID
#define BCM54616_E_PHY_ID

/* M88E1000 Specific Registers */
#define M88E1000_PHY_SPEC_CTRL
#define M88E1000_PHY_SPEC_STATUS
#define M88E1000_EXT_PHY_SPEC_CTRL

#define M88E1000_PHY_PAGE_SELECT
#define M88E1000_PHY_GEN_CONTROL

/* M88E1000 PHY Specific Control Register */
#define M88E1000_PSCR_POLARITY_REVERSAL
/* 1=CLK125 low, 0=CLK125 toggling */
#define M88E1000_PSCR_MDI_MANUAL_MODE
					       /* Manual MDI configuration */
#define M88E1000_PSCR_MDIX_MANUAL_MODE
/* 1000BASE-T: Auto crossover, 100BASE-TX/10BASE-T: MDI Mode */
#define M88E1000_PSCR_AUTO_X_1000T
/* Auto crossover enabled all speeds */
#define M88E1000_PSCR_AUTO_X_MODE
/* 1=Enable Extended 10BASE-T distance (Lower 10BASE-T Rx Threshold
 * 0=Normal 10BASE-T Rx Threshold
 */
/* 1=5-bit interface in 100BASE-TX, 0=MII interface in 100BASE-TX */
#define M88E1000_PSCR_ASSERT_CRS_ON_TX

/* M88E1000 PHY Specific Status Register */
#define M88E1000_PSSR_REV_POLARITY
#define M88E1000_PSSR_DOWNSHIFT
#define M88E1000_PSSR_MDIX
/* 0 = <50M
 * 1 = 50-80M
 * 2 = 80-110M
 * 3 = 110-140M
 * 4 = >140M
 */
#define M88E1000_PSSR_CABLE_LENGTH
#define M88E1000_PSSR_SPEED
#define M88E1000_PSSR_1000MBS

#define M88E1000_PSSR_CABLE_LENGTH_SHIFT

/* M88E1000 Extended PHY Specific Control Register */
/* 1 = Lost lock detect enabled.
 * Will assert lost lock and bring
 * link down if idle not seen
 * within 1ms in 1000BASE-T
 */
/* Number of times we will attempt to autonegotiate before downshifting if we
 * are the master
 */
#define M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK
#define M88E1000_EPSCR_MASTER_DOWNSHIFT_1X
/* Number of times we will attempt to autonegotiate before downshifting if we
 * are the slave
 */
#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK
#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X
#define M88E1000_EPSCR_TX_CLK_25

/* Intel i347-AT4 Registers */

#define I347AT4_PCDL0
#define I347AT4_PCDL1
#define I347AT4_PCDL2
#define I347AT4_PCDL3
#define I347AT4_PCDC
#define I347AT4_PAGE_SELECT

/* i347-AT4 Extended PHY Specific Control Register */

/*  Number of times we will attempt to autonegotiate before downshifting if we
 *  are the master
 */
#define I347AT4_PSCR_DOWNSHIFT_ENABLE
#define I347AT4_PSCR_DOWNSHIFT_MASK
#define I347AT4_PSCR_DOWNSHIFT_1X
#define I347AT4_PSCR_DOWNSHIFT_2X
#define I347AT4_PSCR_DOWNSHIFT_3X
#define I347AT4_PSCR_DOWNSHIFT_4X
#define I347AT4_PSCR_DOWNSHIFT_5X
#define I347AT4_PSCR_DOWNSHIFT_6X
#define I347AT4_PSCR_DOWNSHIFT_7X
#define I347AT4_PSCR_DOWNSHIFT_8X

/* i347-AT4 PHY Cable Diagnostics Control */
#define I347AT4_PCDC_CABLE_LENGTH_UNIT

/* Marvell 1112 only registers */
#define M88E1112_VCT_DSP_DISTANCE

/* M88EC018 Rev 2 specific DownShift settings */
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_MASK
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_5X

/* MDI Control */
#define E1000_MDIC_DATA_MASK
#define E1000_MDIC_REG_MASK
#define E1000_MDIC_REG_SHIFT
#define E1000_MDIC_PHY_MASK
#define E1000_MDIC_PHY_SHIFT
#define E1000_MDIC_OP_WRITE
#define E1000_MDIC_OP_READ
#define E1000_MDIC_READY
#define E1000_MDIC_INT_EN
#define E1000_MDIC_ERROR
#define E1000_MDIC_DEST

/* Thermal Sensor */
#define E1000_THSTAT_PWR_DOWN
#define E1000_THSTAT_LINK_THROTTLE

/* Energy Efficient Ethernet */
#define E1000_IPCNFG_EEE_1G_AN
#define E1000_IPCNFG_EEE_100M_AN
#define E1000_EEER_TX_LPI_EN
#define E1000_EEER_RX_LPI_EN
#define E1000_EEER_FRC_AN
#define E1000_EEER_LPI_FC
#define E1000_EEE_SU_LPI_CLK_STP
#define E1000_EEER_EEE_NEG
#define E1000_EEE_LP_ADV_ADDR_I350
#define E1000_EEE_LP_ADV_DEV_I210
#define E1000_EEE_LP_ADV_ADDR_I210
#define E1000_MMDAC_FUNC_DATA
#define E1000_M88E1543_PAGE_ADDR
#define E1000_M88E1543_EEE_CTRL_1
#define E1000_M88E1543_EEE_CTRL_1_MS
#define E1000_M88E1543_FIBER_CTRL
#define E1000_EEE_ADV_DEV_I354
#define E1000_EEE_ADV_ADDR_I354
#define E1000_EEE_ADV_100_SUPPORTED
#define E1000_EEE_ADV_1000_SUPPORTED
#define E1000_PCS_STATUS_DEV_I354
#define E1000_PCS_STATUS_ADDR_I354
#define E1000_PCS_STATUS_TX_LPI_IND
#define E1000_PCS_STATUS_RX_LPI_RCVD
#define E1000_PCS_STATUS_TX_LPI_RCVD

/* SerDes Control */
#define E1000_GEN_CTL_READY
#define E1000_GEN_CTL_ADDRESS_SHIFT
#define E1000_GEN_POLL_TIMEOUT

#define E1000_VFTA_ENTRY_SHIFT
#define E1000_VFTA_ENTRY_MASK
#define E1000_VFTA_ENTRY_BIT_SHIFT_MASK

/* Tx Rate-Scheduler Config fields */
#define E1000_RTTBCNRC_RS_ENA
#define E1000_RTTBCNRC_RF_DEC_MASK
#define E1000_RTTBCNRC_RF_INT_SHIFT
#define E1000_RTTBCNRC_RF_INT_MASK

#define E1000_VLAPQF_QUEUE_SEL(_n, q_idx)
#define E1000_VLAPQF_P_VALID(_n)
#define E1000_VLAPQF_QUEUE_MASK

/* TX Qav Control fields */
#define E1000_TQAVCTRL_XMIT_MODE
#define E1000_TQAVCTRL_DATAFETCHARB
#define E1000_TQAVCTRL_DATATRANARB
#define E1000_TQAVCTRL_DATATRANTIM
#define E1000_TQAVCTRL_SP_WAIT_SR
/* Fetch Time Delta - bits 31:16
 *
 * This field holds the value to be reduced from the launch time for
 * fetch time decision. The FetchTimeDelta value is defined in 32 ns
 * granularity.
 *
 * This field is 16 bits wide, and so the maximum value is:
 *
 * 65535 * 32 = 2097120 ~= 2.1 msec
 *
 * XXX: We are configuring the max value here since we couldn't come up
 * with a reason for not doing so.
 */
#define E1000_TQAVCTRL_FETCHTIME_DELTA

/* TX Qav Credit Control fields */
#define E1000_TQAVCC_IDLESLOPE_MASK
#define E1000_TQAVCC_QUEUEMODE

/* Transmit Descriptor Control fields */
#define E1000_TXDCTL_PRIORITY

#endif