typedef struct wiseman_addr {
uint32_t wa_low;
uint32_t wa_high;
} __packed wiseman_addr_t;
typedef struct wiseman_rxdesc {
volatile wiseman_addr_t wrx_addr;
volatile uint16_t wrx_len;
volatile uint16_t wrx_cksum;
volatile uint8_t wrx_status;
volatile uint8_t wrx_errors;
volatile uint16_t wrx_special;
} __packed wiseman_rxdesc_t;
#define WRX_ST_DD __BIT(0)
#define WRX_ST_EOP __BIT(1)
#define WRX_ST_IXSM __BIT(2)
#define WRX_ST_VP __BIT(3)
#define WRX_ST_BPDU __BIT(4)
#define WRX_ST_TCPCS __BIT(5)
#define WRX_ST_IPCS __BIT(6)
#define WRX_ST_PIF __BIT(7)
#define WRX_ER_CE __BIT(0)
#define WRX_ER_SE __BIT(1)
#define WRX_ER_SEQ __BIT(2)
#define WRX_ER_ICE __BIT(3)
#define WRX_ER_CXE __BIT(4)
#define WRX_ER_TCPE __BIT(5)
#define WRX_ER_IPE __BIT(6)
#define WRX_ER_RXE __BIT(7)
#define WRX_VLAN_ID(x) ((x) & 0x0fff)
#define WRX_VLAN_CFI __BIT(12)
#define WRX_VLAN_PRI(x) (((x) >> 13) & 7)
typedef union ext_rxdesc {
struct {
uint64_t erxd_addr;
uint64_t erxd_dd;
} erx_data;
struct {
uint32_t erxc_mrq;
uint32_t erxc_rsshash;
uint32_t erxc_err_stat;
uint16_t erxc_pktlen;
uint16_t erxc_vlan;
} erx_ctx;
} __packed ext_rxdesc_t;
#define EXTRXD_DD_MASK __BIT(0)
#define EXTRXC_IP_ID_MASK __BITS(15,0)
#define EXTRXC_FRAG_CSUM_MASK __BITS(31,16)
#define EXTRXC_IP_ID(rsshash) __SHIFTOUT(rsshash,ERXC_IP_ID_MASK)
#define EXTRXC_FRAG_CSUM(rsshash) __SHIFTOUT(rsshash,ERXC_FRAG_CSUM_MASK)
#define EXTRXC_RSS_TYPE_MASK __BITS(3,0)
#define EXTRXC_QUEUE_MASK __BITS(12,8)
#define EXTRXC_RSS_TYPE(mrq) __SHIFTOUT(mrq,EXTRXC_RSS_TYPE_MASK)
#define EXTRXC_QUEUE(mrq) __SHIFTOUT(mrq,EXTRXC_QUEUE_MASK)
#define EXTRXC_RSS_TYPE_NONE 0x0
#define EXTRXC_RSS_TYPE_TCP_IPV4 0x1
#define EXTRXC_RSS_TYPE_IPV4 0x2
#define EXTRXC_RSS_TYPE_TCP_IPV6 0x3
#define EXTRXC_RSS_TYPE_IPV6_EX 0x4
#define EXTRXC_RSS_TYPE_IPV6 0x5
#define EXTRXC_STATUS_MASK __BITS(19,0)
#define EXTRXC_ERROR_MASK __BITS(31,20)
#define EXTRXC_STATUS(err_stat) __SHIFTOUT(err_stat,EXTRXC_STATUS_MASK)
#define EXTRXC_ERROR(err_stat) __SHIFTOUT(err_stat,EXTRXC_ERROR_MASK)
#define EXTRXC_ERROR_CE __BIT(4)
#define EXTRXC_ERROR_SE __BIT(5)
#define EXTRXC_ERROR_SEQ __BIT(6)
#define EXTRXC_ERROR_CXE __BIT(8)
#define EXTRXC_ERROR_TCPE __BIT(9)
#define EXTRXC_ERROR_IPE __BIT(10)
#define EXTRXC_ERROR_RXE __BIT(11)
#define EXTRXC_STATUS_DD __BIT(0)
#define EXTRXC_STATUS_EOP __BIT(1)
#define EXTRXC_STATUS_VP __BIT(3)
#define EXTRXC_STATUS_UDPCS __BIT(4)
#define EXTRXC_STATUS_TCPCS __BIT(5)
#define EXTRXC_STATUS_IPCS __BIT(6)
#define EXTRXC_STATUS_TST __BIT(8)
#define EXTRXC_STATUS_IPIDV __BIT(9)
#define EXTRXC_STATUS_UDPV __BIT(10)
#define EXTRXC_STATUS_ACK __BIT(15)
#define EXTRXC_STATUS_PKTTYPE_MASK __BITS(19,16)
#define EXTRXC_STATUS_PKTTYPE(status) __SHIFTOUT(status,EXTRXC_STATUS_PKTTYPE_MASK)
typedef union nq_rxdesc {
struct {
uint64_t nrxd_paddr;
uint64_t nrxd_haddr;
} nqrx_data;
struct {
uint32_t nrxc_misc;
uint32_t nrxc_rsshash;
uint32_t nrxc_err_stat;
uint16_t nrxc_pktlen;
uint16_t nrxc_vlan;
} nqrx_ctx;
} __packed nq_rxdesc_t;
#define NQRXD_A0_MASK __BIT(0)
#define NQRXD_NSE_MASK __BIT(0)
#define NQRXD_ADDR_MASK __BITS(63,1)
#define NQRXD_DD_MASK __BIT(0)
#define NQRXC_IP_ID_MASK __BITS(15,0)
#define NQRXC_FRAG_CSUM_MASK __BITS(31,16)
#define NQRXC_IP_ID(rsshash) __SHIFTOUT(rsshash,NRXC_IP_ID_MASK)
#define NQRXC_FRAG_CSUM(rsshash) __SHIFTOUT(rsshash,NRXC_FRAG_CSUM_MASK)
#define NQRXC_RSS_TYPE_MASK __BITS(3,0)
#define NQRXC_PKT_TYPE_ID_MASK __BITS(11,4)
#define NQRXC_PKT_TYPE_ETQF_INDEX_MASK __BITS(11,4)
#define NQRXC_PKT_TYPE_ETQF_VALID_MASK __BIT(15)
#define NQRXC_PKT_TYPE_VLAN_MASK __BIT(16)
#define NQRXC_PKT_TYPE_MASK __BITS(16,4)
#define NQRXC_HDRLEN_HIGH_MASK __BITS(20,19)
#define NQRXC_HDRLEN_LOW_MASK __BITS(30,21)
#define NQRXC_SPH_MASK __BIT(31)
#define NQRXC_RSS_TYPE(misc) __SHIFTOUT(misc,NQRXC_RSS_TYPE_MASK)
#define NQRXC_PKT_TYPE_ID(pkttype) \
__SHIFTOUT(pkttype,NQRXC_PKT_TYPE_ID_MASK)
#define NQRXC_PKT_TYPE(misc) __SHIFTOUT(misc,NQRXC_PKT_TYPE_MASK)
#define NQRXC_PKT_TYPE_ETQF_INDEX(pkttype) \
__SHIFTOUT(pkttype,NQRXC_PKT_TYPE_ETQF_INDEX_MASK)
#define NQRXC_PKT_TYPE_ETQF_VALID NQRXC_PKT_TYPE_ETQF_VALID_MASK
#define NQRXC_PKT_TYPE_VLAN NQRXC_PKT_TYPE_VLAN_MASK
#define NQRXC_HEADER_LEN(misc) (__SHIFTOUT(misc,NQRXC_HDRLEN_LOW_MASK) \
| __SHIFTOUT(misc,NQRXC_HDRLEN_HIGH_MASK) << 10)
#define NQRXC_SPH NQRXC_SPH_MASK
#define NQRXC_RSS_TYPE_NONE 0x0
#define NQRXC_RSS_TYPE_TCP_IPV4 0x1
#define NQRXC_RSS_TYPE_IPV4 0x2
#define NQRXC_RSS_TYPE_TCP_IPV6 0x3
#define NQRXC_RSS_TYPE_IPV6_EX 0x4
#define NQRXC_RSS_TYPE_IPV6 0x5
#define NQRXC_RSS_TYPE_TCP_IPV6_EX 0x6
#define NQRXC_RSS_TYPE_UDP_IPV4 0x7
#define NQRXC_RSS_TYPE_UDP_IPV6 0x8
#define NQRXC_RSS_TYPE_UDP_IPV6_EX 0x9
#define NQRXC_PKT_TYPE_IPV4 __BIT(0)
#define NQRXC_PKT_TYPE_IPV4E __BIT(1)
#define NQRXC_PKT_TYPE_IPV6 __BIT(2)
#define NQRXC_PKT_TYPE_IPV6E __BIT(3)
#define NQRXC_PKT_TYPE_TCP __BIT(4)
#define NQRXC_PKT_TYPE_UDP __BIT(5)
#define NQRXC_PKT_TYPE_SCTP __BIT(6)
#define NQRXC_PKT_TYPE_NFS __BIT(7)
#define NQRXC_STATUS_MASK __BITS(19,0)
#define NQRXC_ERROR_MASK __BITS(31,20)
#define NQRXC_STATUS(err_stat) __SHIFTOUT(err_stat,NQRXC_STATUS_MASK)
#define NQRXC_ERROR(err_stat) __SHIFTOUT(err_stat,NQRXC_ERROR_MASK)
#define NQRXC_ERROR_HB0 __BIT(3)
#define NQRXC_ERROR_L4E __BIT(9)
#define NQRXC_ERROR_IPE __BIT(10)
#define NQRXC_ERROR_RXE __BIT(11)
#define NQRXC_STATUS_DD __BIT(0)
#define NQRXC_STATUS_EOP __BIT(1)
#define NQRXC_STATUS_VP __BIT(3)
#define NQRXC_STATUS_UDPCS __BIT(4)
#define NQRXC_STATUS_L4I __BIT(5)
#define NQRXC_STATUS_IPCS __BIT(6)
#define NQRXC_STATUS_PIF __BIT(7)
#define NQRXC_STATUS_VEXT __BIT(9)
#define NQRXC_STATUS_UDPV __BIT(10)
#define NQRXC_STATUS_LLINT __BIT(11)
#define NQRXC_STATUS_STRIPCRC __BIT(12)
#define NQRXC_STATUS_TSIP __BIT(15)
#define NQRXC_STATUS_TS __BIT(16)
#define NQRXC_STATUS_LB __BIT(18)
#define NQRXC_STATUS_MC __BIT(19)
typedef struct wiseman_tx_fields {
uint8_t wtxu_status;
uint8_t wtxu_options;
uint16_t wtxu_vlan;
} __packed wiseman_txfields_t;
typedef struct wiseman_txdesc {
wiseman_addr_t wtx_addr;
uint32_t wtx_cmdlen;
wiseman_txfields_t wtx_fields;
} __packed wiseman_txdesc_t;
#define WTX_CMD_EOP __BIT(24)
#define WTX_CMD_IFCS __BIT(25)
#define WTX_CMD_RS __BIT(27)
#define WTX_CMD_RPS __BIT(28)
#define WTX_CMD_DEXT __BIT(29)
#define WTX_CMD_VLE __BIT(30)
#define WTX_CMD_IDE __BIT(31)
#define WTX_DTYP_MASK __BIT(20)
#define WTX_DTYP_C __SHIFTIN(0, WTX_DTYP_MASK)
#define WTX_DTYP_D __SHIFTIN(1, WTX_DTYP_MASK)
#define WTX_ST_DD __BIT(0)
#define WTX_ST_EC __BIT(1)
#define WTX_ST_LC __BIT(2)
#define WTX_ST_TU __BIT(3)
#define WTX_IXSM __BIT(0)
#define WTX_TXSM __BIT(1)
#define WTX_MAX_LEN 4096
struct livengood_tcpip_ctxdesc {
uint32_t tcpip_ipcs;
uint32_t tcpip_tucs;
uint32_t tcpip_cmdlen;
uint32_t tcpip_seg;
};
#define WTX_TCPIP_CMD_TCP __BIT(24)
#define WTX_TCPIP_CMD_IP __BIT(25)
#define WTX_TCPIP_CMD_TSE __BIT(26)
#define WTX_TCPIP_IPCSS(x) ((x) << 0)
#define WTX_TCPIP_IPCSO(x) ((x) << 8)
#define WTX_TCPIP_IPCSE(x) ((x) << 16)
#define WTX_TCPIP_TUCSS(x) ((x) << 0)
#define WTX_TCPIP_TUCSO(x) ((x) << 8)
#define WTX_TCPIP_TUCSE(x) ((x) << 16)
#define WTX_TCPIP_SEG_STATUS(x) ((x) << 0)
#define WTX_TCPIP_SEG_HDRLEN(x) ((x) << 8)
#define WTX_TCPIP_SEG_MSS(x) ((x) << 16)
#define WM_PCI_MMBA PCI_MAPREG_START
#define WM_ICH8_FLASH 0x0014
#define WM_PCI_LTR_CAP_LPT 0xa8
#define WM_PCI_DESCRING_STATUS 0xe4
#define DESCRING_STATUS_FLUSH_REQ __BIT(8)
#define WMREG_CTRL 0x0000
#define CTRL_FD __BIT(0)
#define CTRL_BEM __BIT(1)
#define CTRL_PRIOR __BIT(2)
#define CTRL_GIO_M_DIS __BIT(2)
#define CTRL_LRST __BIT(3)
#define CTRL_ASDE __BIT(5)
#define CTRL_SLU __BIT(6)
#define CTRL_ILOS __BIT(7)
#define CTRL_SPEED(x) ((x) << 8)
#define CTRL_SPEED_10 CTRL_SPEED(0)
#define CTRL_SPEED_100 CTRL_SPEED(1)
#define CTRL_SPEED_1000 CTRL_SPEED(2)
#define CTRL_SPEED_MASK CTRL_SPEED(3)
#define CTRL_FRCSPD __BIT(11)
#define CTRL_FRCFDX __BIT(12)
#define CTRL_D_UD_EN __BIT(13)
#define CTRL_D_UD_POL __BIT(14)
#define CTRL_F_PHY_R __BIT(15)
#define CTRL_EXTLINK_EN __BIT(16)
#define CTRL_LANPHYPC_OVERRIDE __BIT(16)
#define CTRL_LANPHYPC_VALUE __BIT(17)
#define CTRL_SWDPINS_SHIFT 18
#define CTRL_SWDPINS_MASK 0x0f
#define CTRL_SWDPIN(x) (1U << (CTRL_SWDPINS_SHIFT + (x)))
#define CTRL_SWDPIO_SHIFT 22
#define CTRL_SWDPIO_MASK 0x0f
#define CTRL_SWDPIO(x) (1U << (CTRL_SWDPIO_SHIFT + (x)))
#define CTRL_MEHE __BIT(19)
#define CTRL_RST __BIT(26)
#define CTRL_RFCE __BIT(27)
#define CTRL_TFCE __BIT(28)
#define CTRL_VME __BIT(30)
#define CTRL_PHY_RESET __BIT(31)
#define WMREG_CTRL_SHADOW 0x0004
#define WMREG_STATUS 0x0008
#define STATUS_FD __BIT(0)
#define STATUS_LU __BIT(1)
#define STATUS_TCKOK __BIT(2)
#define STATUS_RBCOK __BIT(3)
#define STATUS_FUNCID_SHIFT 2
#define STATUS_FUNCID_MASK 3
#define STATUS_TXOFF __BIT(4)
#define STATUS_TBIMODE __BIT(5)
#define STATUS_SPEED __BITS(7, 6)
#define STATUS_SPEED_10 0
#define STATUS_SPEED_100 1
#define STATUS_SPEED_1000 2
#define STATUS_ASDV(x) ((x) << 8)
#define STATUS_LAN_INIT_DONE __BIT(9)
#define STATUS_MTXCKOK __BIT(10)
#define STATUS_PHYRA __BIT(10)
#define STATUS_PCI66 __BIT(11)
#define STATUS_BUS64 __BIT(12)
#define STATUS_2P5_SKU __BIT(12)
#define STATUS_PCIX_MODE __BIT(13)
#define STATUS_2P5_SKU_OVER __BIT(13)
#define STATUS_PCIXSPD(x) ((x) << 14)
#define STATUS_PCIXSPD_50_66 STATUS_PCIXSPD(0)
#define STATUS_PCIXSPD_66_100 STATUS_PCIXSPD(1)
#define STATUS_PCIXSPD_100_133 STATUS_PCIXSPD(2)
#define STATUS_PCIXSPD_MASK STATUS_PCIXSPD(3)
#define STATUS_GIO_M_ENA __BIT(19)
#define STATUS_DEV_RST_SET __BIT(20)
#define WMREG_STRAP 0x000c
#define STRAP_NVMSIZE __BITS(1, 6)
#define STRAP_FREQ __BITS(12, 13)
#define STRAP_SMBUSADDR __BITS(17, 23)
#define WMREG_EECD 0x0010
#define EECD_SK __BIT(0)
#define EECD_CS __BIT(1)
#define EECD_DI __BIT(2)
#define EECD_DO __BIT(3)
#define EECD_FWE(x) ((x) << 4)
#define EECD_FWE_DISABLED EECD_FWE(1)
#define EECD_FWE_ENABLED EECD_FWE(2)
#define EECD_EE_REQ __BIT(6)
#define EECD_EE_GNT __BIT(7)
#define EECD_EE_PRES __BIT(8)
#define EECD_EE_SIZE __BIT(9)
#define EECD_EE_AUTORD __BIT(9)
#define EECD_EE_ABITS __BIT(10)
#define EECD_EE_SIZE_EX_MASK __BITS(14,11)
#define EECD_EE_TYPE __BIT(13)
#define EECD_SEC1VAL __BIT(22)
#define EECD_SEC1VAL_VALMASK (EECD_EE_AUTORD | EECD_EE_PRES)
#define WMREG_FEXTNVM6 0x0010
#define FEXTNVM6_REQ_PLL_CLK __BIT(8)
#define FEXTNVM6_ENABLE_K1_ENTRY_CONDITION __BIT(9)
#define FEXTNVM6_K1_OFF_ENABLE __BIT(31)
#define WMREG_EERD 0x0014
#define EERD_DONE 0x02
#define EERD_START 0x01
#define EERD_ADDR_SHIFT 2
#define EERD_DATA_SHIFT 16
#define WMREG_CTRL_EXT 0x0018
#define CTRL_EXT_NSICR __BIT(0)
#define CTRL_EXT_GPI_EN(x) (1U << (x))
#define CTRL_EXT_NVMVS __BITS(0, 1)
#define CTRL_EXT_LPCD __BIT(2)
#define CTRL_EXT_SWDPINS_SHIFT 4
#define CTRL_EXT_SWDPINS_MASK 0x0d
#define CTRL_EXT_SWDPIN(x) (1U << (CTRL_EXT_SWDPINS_SHIFT \
+ ((x) == 3 ? 3 : ((x) - 4))))
#define CTRL_EXT_SWDPIO_SHIFT 8
#define CTRL_EXT_SWDPIO_MASK 0x0d
#define CTRL_EXT_SWDPIO(x) (1U << (CTRL_EXT_SWDPIO_SHIFT \
+ ((x) == 3 ? 3 : ((x) - 4))))
#define CTRL_EXT_FORCE_SMBUS __BIT(11)
#define CTRL_EXT_ASDCHK __BIT(12)
#define CTRL_EXT_EE_RST __BIT(13)
#define CTRL_EXT_IPS __BIT(14)
#define CTRL_EXT_SPD_BYPS __BIT(15)
#define CTRL_EXT_IPS1 __BIT(16)
#define CTRL_EXT_RO_DIS __BIT(17)
#define CTRL_EXT_SDLPE __BIT(18)
#define CTRL_EXT_DMA_DYN_CLK __BIT(19)
#define CTRL_EXT_PHYPDEN __BIT(20)
#define CTRL_EXT_LINK_MODE_MASK 0x00c00000
#define CTRL_EXT_LINK_MODE_GMII 0x00000000
#define CTRL_EXT_LINK_MODE_KMRN 0x00000000
#define CTRL_EXT_LINK_MODE_1000KX 0x00400000
#define CTRL_EXT_LINK_MODE_SGMII 0x00800000
#define CTRL_EXT_LINK_MODE_PCIX_SERDES 0x00800000
#define CTRL_EXT_LINK_MODE_TBI 0x00c00000
#define CTRL_EXT_LINK_MODE_PCIE_SERDES 0x00c00000
#define CTRL_EXT_EIAME __BIT(24)
#define CTRL_EXT_I2C_ENA 0x02000000
#define CTRL_EXT_DRV_LOAD 0x10000000
#define CTRL_EXT_PBA __BIT(31)
#define WMREG_MDIC 0x0020
#define MDIC_DATA(x) ((x) & 0xffff)
#define MDIC_REGADD(x) ((x) << 16)
#define MDIC_PHY_SHIFT 21
#define MDIC_PHY_MASK __BITS(25, 21)
#define MDIC_PHYADD(x) ((x) << 21)
#define MDIC_OP_RW_MASK __BITS(27, 26)
#define MDIC_OP_WRITE __SHIFTIN(1, MDIC_OP_RW_MASK)
#define MDIC_OP_READ __SHIFTIN(2, MDIC_OP_RW_MASK)
#define MDIC_READY __BIT(28)
#define MDIC_I __BIT(29)
#define MDIC_E __BIT(30)
#define MDIC_DEST __BIT(31)
#define WMREG_SCTL 0x0024
#define SCTL_CTL_READY __BIT(31)
#define SCTL_CTL_DATA_MASK 0x000000ff
#define SCTL_CTL_ADDR_SHIFT 8
#define SCTL_CTL_POLL_TIMEOUT 640
#define SCTL_DISABLE_SERDES_LOOPBACK 0x0400
#define WMREG_FEXTNVM4 0x0024
#define FEXTNVM4_BEACON_DURATION __BITS(2, 0)
#define FEXTNVM4_BEACON_DURATION_8US 0x7
#define FEXTNVM4_BEACON_DURATION_16US 0x3
#define WMREG_FCAL 0x0028
#define FCAL_CONST 0x00c28001
#define WMREG_FEXTNVM 0x0028
#define FEXTNVM_SW_CONFIG __BIT(0)
#define FEXTNVM_SW_CONFIG_ICH8M __BIT(27)
#define WMREG_FCAH 0x002c
#define FCAH_CONST 0x00000100
#define WMREG_FCT 0x0030
#define WMREG_KUMCTRLSTA 0x0034
#define KUMCTRLSTA_MASK 0x0000ffff
#define KUMCTRLSTA_OFFSET 0x001f0000
#define KUMCTRLSTA_OFFSET_SHIFT 16
#define KUMCTRLSTA_REN 0x00200000
#define KUMCTRLSTA_OFFSET_FIFO_CTRL 0x00000000
#define KUMCTRLSTA_OFFSET_CTRL 0x00000001
#define KUMCTRLSTA_OFFSET_INB_CTRL 0x00000002
#define KUMCTRLSTA_OFFSET_DIAG 0x00000003
#define KUMCTRLSTA_OFFSET_TIMEOUTS 0x00000004
#define KUMCTRLSTA_OFFSET_K1_CONFIG 0x00000007
#define KUMCTRLSTA_OFFSET_INB_PARAM 0x00000009
#define KUMCTRLSTA_OFFSET_HD_CTRL 0x00000010
#define KUMCTRLSTA_OFFSET_M2P_SERDES 0x0000001e
#define KUMCTRLSTA_OFFSET_M2P_MODES 0x0000001f
#define KUMCTRLSTA_FIFO_CTRL_RX_BYPASS 0x0008
#define KUMCTRLSTA_FIFO_CTRL_TX_BYPASS 0x0800
#define KUMCTRLSTA_INB_CTRL_LINK_TMOUT_DFLT 0x0500
#define KUMCTRLSTA_INB_CTRL_DIS_PADDING 0x0010
#define KUMCTRLSTA_DIAG_NELPBK 0x1000
#define KUMCTRLSTA_K1_ENABLE 0x0002
#define KUMCTRLSTA_HD_CTRL_10_100_DEFAULT 0x0004
#define KUMCTRLSTA_HD_CTRL_1000_DEFAULT 0x0000
#define KUMCTRLSTA_OPMODE_MASK 0x000c
#define KUMCTRLSTA_OPMODE_INBAND_MDIO 0x0004
#define WMREG_CONNSW 0x0034
#define CONNSW_AUTOSENSE_EN __BIT(0)
#define CONNSW_AUTOSENSE_CONF __BIT(1)
#define CONNSW_ENRGSRC __BIT(2)
#define CONNSW_SERDESD __BIT(9)
#define CONNSW_PHYSD __BIT(10)
#define CONNSW_PHY_PDN __BIT(11)
#define WMREG_VET 0x0038
#define WMREG_MDPHYA 0x003c
#define WMREG_FEXTNVM3 0x003c
#define FEXTNVM3_PHY_CFG_COUNTER_MASK __BITS(27, 26)
#define FEXTNVM3_PHY_CFG_COUNTER_50MS __BIT(27)
#define WMREG_RAL(x) (0x0040 + ((x) * 8))
#define WMREG_RAH(x) (WMREG_RAL(x) + 4)
#define WMREG_CORDOVA_RAL(x) (((x) <= 15) ? (0x5400 + ((x) * 8)) : \
(0x54e0 + (((x) - 16) * 8)))
#define WMREG_CORDOVA_RAH(x) (WMREG_CORDOVA_RAL(x) + 4)
#define WMREG_SHRAL(x) (0x5438 + ((x) * 8))
#define WMREG_SHRAH(x) (WMREG_PCH_LPT_SHRAL(x) + 4)
#define WMREG_PCH_LPT_SHRAL(x) (0x5408 + ((x) * 8))
#define WMREG_PCH_LPT_SHRAH(x) (WMREG_PCH_LPT_SHRAL(x) + 4)
#define WMREG_RAL_LO(b, x) ((b) + ((x) << 3))
#define WMREG_RAL_HI(b, x) (WMREG_RAL_LO(b, x) + 4)
#define RAL_AS(x) ((x) << 16)
#define RAL_AS_DEST RAL_AS(0)
#define RAL_AS_SOURCE RAL_AS(1)
#define RAL_RDR1 __BIT(30)
#define RAL_AV __BIT(31)
#define WM_RAL_TABSIZE 15
#define WM_RAL_TABSIZE_ICH8 7
#define WM_RAL_TABSIZE_PCH2 5
#define WM_RAL_TABSIZE_PCH_LPT 12
#define WM_RAL_TABSIZE_82575 16
#define WM_RAL_TABSIZE_82576 24
#define WM_RAL_TABSIZE_I350 32
#define WMREG_ICR 0x00c0
#define ICR_TXDW __BIT(0)
#define ICR_TXQE __BIT(1)
#define ICR_LSC __BIT(2)
#define ICR_RXSEQ __BIT(3)
#define ICR_RXDMT0 __BIT(4)
#define ICR_RXO __BIT(6)
#define ICR_RXT0 __BIT(7)
#define ICR_MDAC __BIT(9)
#define ICR_RXCFG __BIT(10)
#define ICR_GPI(x) __BIT(11+(x))
#define ICR_RXQ(x) __BIT(20+(x))
#define ICR_TXQ(x) __BIT(22+(x))
#define ICR_OTHER __BIT(24)
#define ICR_INT __BIT(31)
#define WMREG_ITR 0x00c4
#define ITR_IVAL_MASK 0xffff
#define ITR_IVAL_SHIFT 0
#define WMREG_ICS 0x00c8
#define WMREG_IMS 0x00d0
#define WMREG_IMC 0x00d8
#define WMREG_EIAC_82574 0x00dc
#define WMREG_EIAC_82574_MSIX_MASK (ICR_RXQ(0) | ICR_RXQ(1) \
| ICR_TXQ(0) | ICR_TXQ(1) | ICR_OTHER)
#define WMREG_FEXTNVM7 0x00e4
#define FEXTNVM7_SIDE_CLK_UNGATE __BIT(2)
#define FEXTNVM7_DIS_SMB_PERST __BIT(5)
#define FEXTNVM7_DIS_PB_READ __BIT(18)
#define WMREG_IVAR 0x00e4
#define WMREG_IVAR0 0x01700
#define IVAR_ALLOC_MASK __BITS(0, 6)
#define IVAR_VALID __BIT(7)
#define WMREG_IVAR_Q(x) (WMREG_IVAR0 + ((x) / 2) * 4)
#define IVAR_TX_MASK_Q(x) (0x000000ffUL << (((x) % 2) == 0 ? 8 : 24))
#define IVAR_RX_MASK_Q(x) (0x000000ffUL << (((x) % 2) == 0 ? 0 : 16))
#define WMREG_IVAR_Q_82576(x) (WMREG_IVAR0 + ((x) & 0x7) * 4)
#define IVAR_TX_MASK_Q_82576(x) (0x000000ffUL << (((x) / 8) == 0 ? 8 : 24))
#define IVAR_RX_MASK_Q_82576(x) (0x000000ffUL << (((x) / 8) == 0 ? 0 : 16))
#define IVAR_ALLOC_MASK_82574 __BITS(0, 2)
#define IVAR_VALID_82574 __BIT(3)
#define IVAR_TX_MASK_Q_82574(x) (0x0000000fUL << ((x) == 0 ? 8 : 12))
#define IVAR_RX_MASK_Q_82574(x) (0x0000000fUL << ((x) == 0 ? 0 : 4))
#define IVAR_OTHER_MASK __BITS(16, 19)
#define IVAR_INT_ON_ALL_WB __BIT(31)
#define WMREG_IVAR_MISC 0x01740
#define IVAR_MISC_TCPTIMER __BITS(0, 7)
#define IVAR_MISC_OTHER __BITS(8, 15)
#define WMREG_SVCR 0x00f0
#define SVCR_OFF_EN __BIT(0)
#define SVCR_OFF_MASKINT __BIT(12)
#define WMREG_SVT 0x00f4
#define SVT_OFF_HWM __BITS(4, 0)
#define WMREG_LTRV 0x00f8
#define LTRV_VALUE __BITS(9, 0)
#define LTRV_SCALE __BITS(12, 10)
#define LTRV_SCALE_MAX 5
#define LTRV_SNOOP_REQ __BIT(15)
#define LTRV_SEND __BIT(30)
#define LTRV_NONSNOOP __BITS(31, 16)
#define LTRV_NONSNOOP_REQ __BIT(31)
#define WMREG_RCTL 0x0100
#define RCTL_EN __BIT(1)
#define RCTL_SBP __BIT(2)
#define RCTL_UPE __BIT(3)
#define RCTL_MPE __BIT(4)
#define RCTL_LPE __BIT(5)
#define RCTL_LBM(x) ((x) << 6)
#define RCTL_LBM_NONE RCTL_LBM(0)
#define RCTL_LBM_PHY RCTL_LBM(3)
#define RCTL_RDMTS(x) ((x) << 8)
#define RCTL_RDMTS_1_2 RCTL_RDMTS(0)
#define RCTL_RDMTS_1_4 RCTL_RDMTS(1)
#define RCTL_RDMTS_1_8 RCTL_RDMTS(2)
#define RCTL_RDMTS_MASK RCTL_RDMTS(3)
#define RCTL_DTYP_MASK __BITS(11,10)
#define RCTL_DTYP(x) __SHIFTIN(x,RCTL_DTYP_MASK)
#define RCTL_DTYP_ONEBUF RCTL_DTYP(0)
#define RCTL_DTYP_SPH RCTL_DTYP(1)
#define RCTL_MO __BITS(13, 12)
#define RCTL_BAM __BIT(15)
#define RCTL_RDMTS_HEX __BIT(16)
#define RCTL_2k (0 << 16)
#define RCTL_1k (1 << 16)
#define RCTL_512 (2 << 16)
#define RCTL_256 (3 << 16)
#define RCTL_BSEX_16k (1 << 16)
#define RCTL_BSEX_8k (2 << 16)
#define RCTL_BSEX_4k (3 << 16)
#define RCTL_DPF __BIT(22)
#define RCTL_PMCF __BIT(23)
#define RCTL_BSEX __BIT(25)
#define RCTL_SECRC __BIT(26)
#define WMREG_OLD_RDTR0 0x0108
#define WMREG_RDTR 0x2820
#define RDTR_FPD __BIT(31)
#define WMREG_LTRC 0x01a0
#define WMREG_OLD_RDBAL0 0x0110
#define WMREG_RDBAL(x) \
((x) < 4 ? (0x02800 + ((x) * 0x100)) : \
(0x0c000 + ((x) * 0x40)))
#define WMREG_OLD_RDBAH0 0x0114
#define WMREG_RDBAH(x) \
((x) < 4 ? (0x02804 + ((x) * 0x100)) : \
(0x0c004 + ((x) * 0x40)))
#define WMREG_OLD_RDLEN0 0x0118
#define WMREG_RDLEN(x) \
((x) < 4 ? (0x02808 + ((x) * 0x100)) : \
(0x0c008 + ((x) * 0x40)))
#define WMREG_SRRCTL(x) \
((x) < 4 ? (0x0280c + ((x) * 0x100)) : \
(0x0c00c + ((x) * 0x40)))
#define SRRCTL_BSIZEPKT_MASK 0x0000007f
#define SRRCTL_BSIZEPKT_SHIFT 10
#define SRRCTL_BSIZEHDRSIZE_MASK 0x00000f00
#define SRRCTL_BSIZEHDRSIZE_SHIFT 2
#define SRRCTL_DESCTYPE_LEGACY 0x00000000
#define SRRCTL_DESCTYPE_ADV_ONEBUF (1U << 25)
#define SRRCTL_DESCTYPE_HDR_SPLIT (2U << 25)
#define SRRCTL_DESCTYPE_HDR_REPLICATION (3U << 25)
#define SRRCTL_DESCTYPE_HDR_REPLICATION_LARGE_PKT (4U << 25)
#define SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS (5U << 25)
#define SRRCTL_DESCTYPE_MASK (7U << 25)
#define SRRCTL_DROP_EN 0x80000000
#define WMREG_OLD_RDH0 0x0120
#define WMREG_RDH(x) \
((x) < 4 ? (0x02810 + ((x) * 0x100)) : \
(0x0c010 + ((x) * 0x40)))
#define WMREG_OLD_RDT0 0x0128
#define WMREG_RDT(x) \
((x) < 4 ? (0x02818 + ((x) * 0x100)) : \
(0x0c018 + ((x) * 0x40)))
#define WMREG_RXDCTL(x) \
((x) < 4 ? (0x02828 + ((x) * 0x100)) : \
(0x0c028 + ((x) * 0x40)))
#define RXDCTL_PTHRESH(x) ((x) << 0)
#define RXDCTL_HTHRESH(x) ((x) << 8)
#define RXDCTL_WTHRESH(x) ((x) << 16)
#define RXDCTL_GRAN __BIT(24)
#define RXDCTL_QUEUE_ENABLE 0x02000000
#define RXDCTL_SWFLSH 0x04000000
#define WMREG_RQDPC(x) (((x) < 4) ? (0x2830 + (0x100 * (x))) : \
(0xc030 + (0x40 * (x))))
#define WMREG_OLD_RDTR1 0x0130
#define WMREG_OLD_RDBA1_LO 0x0138
#define WMREG_OLD_RDBA1_HI 0x013c
#define WMREG_OLD_RDLEN1 0x0140
#define WMREG_OLD_RDH1 0x0148
#define WMREG_OLD_RDT1 0x0150
#define WMREG_OLD_FCRTH 0x0160
#define WMREG_FCRTH 0x2168
#define FCRTH_DFLT 0x00008000
#define WMREG_OLD_FCRTL 0x0168
#define WMREG_FCRTL 0x2160
#define FCRTL_DFLT 0x00004000
#define FCRTL_XONE 0x80000000
#define WMREG_FCTTV 0x0170
#define FCTTV_DFLT 0x00000600
#define WMREG_TXCW 0x0178
#define TXCW_FD __BIT(5)
#define TXCW_HD __BIT(6)
#define TXCW_SYM_PAUSE __BIT(7)
#define TXCW_ASYM_PAUSE __BIT(8)
#define TXCW_TxConfig __BIT(30)
#define TXCW_ANE __BIT(31)
#define WMREG_RXCW 0x0180
#define RXCW_NC __BIT(26)
#define RXCW_IV __BIT(27)
#define RXCW_CC __BIT(28)
#define RXCW_C __BIT(29)
#define RXCW_SYNCH __BIT(30)
#define RXCW_ANC __BIT(31)
#define WMREG_MTA 0x0200
#define WMREG_CORDOVA_MTA 0x5200
#define WMREG_TCTL 0x0400
#define TCTL_EN __BIT(1)
#define TCTL_PSP __BIT(3)
#define TCTL_CT(x) (((x) & 0xff) << 4)
#define TCTL_COLD(x) (((x) & 0x3ff) << 12)
#define TCTL_SWXOFF __BIT(22)
#define TCTL_RTLC __BIT(24)
#define TCTL_NRTU __BIT(25)
#define TCTL_MULR __BIT(28)
#define TX_COLLISION_THRESHOLD 15
#define TX_COLLISION_DISTANCE_HDX 512
#define TX_COLLISION_DISTANCE_FDX 64
#define WMREG_TCTL_EXT 0x0404
#define TCTL_EXT_BST_MASK 0x000003ff
#define TCTL_EXT_GCEX_MASK 0x000ffc00
#define DEFAULT_80003ES2LAN_TCTL_EXT_GCEX 0x00010000
#define WMREG_TIPG 0x0410
#define TIPG_IPGT_MASK __BITS(0, 9)
#define TIPG_IPGT(x) __SHIFTIN((x), TIPG_IPGT_MASK)
#define TIPG_IPGR1(x) ((x) << 10)
#define TIPG_IPGR2(x) ((x) << 20)
#define TIPG_WM_DFLT (TIPG_IPGT(0x0a) | TIPG_IPGR1(0x02) | TIPG_IPGR2(0x0a))
#define TIPG_LG_DFLT (TIPG_IPGT(0x06) | TIPG_IPGR1(0x08) | TIPG_IPGR2(0x06))
#define TIPG_1000T_DFLT (TIPG_IPGT(0x08) | TIPG_IPGR1(0x08) | TIPG_IPGR2(0x06))
#define TIPG_1000T_80003_DFLT \
(TIPG_IPGT(0x08) | TIPG_IPGR1(0x02) | TIPG_IPGR2(0x07))
#define TIPG_10_100_80003_DFLT \
(TIPG_IPGT(0x09) | TIPG_IPGR1(0x02) | TIPG_IPGR2(0x07))
#define WMREG_TQC 0x0418
#define WMREG_OLD_TDBAL 0x0420
#define WMREG_TDBAL(x) \
((x) < 4 ? (0x03800 + ((x) * 0x100)) : \
(0x0e000 + ((x) * 0x40)))
#define WMREG_OLD_TDBAH 0x0424
#define WMREG_TDBAH(x)\
((x) < 4 ? (0x03804 + ((x) * 0x100)) : \
(0x0e004 + ((x) * 0x40)))
#define WMREG_OLD_TDLEN 0x0428
#define WMREG_TDLEN(x) \
((x) < 4 ? (0x03808 + ((x) * 0x100)) : \
(0x0e008 + ((x) * 0x40)))
#define WMREG_OLD_TDH 0x0430
#define WMREG_TDH(x) \
((x) < 4 ? (0x03810 + ((x) * 0x100)) : \
(0x0e010 + ((x) * 0x40)))
#define WMREG_OLD_TDT 0x0438
#define WMREG_TDT(x) \
((x) < 4 ? (0x03818 + ((x) * 0x100)) : \
(0x0e018 + ((x) * 0x40)))
#define WMREG_OLD_TIDV 0x0440
#define WMREG_TIDV 0x3820
#define WMREG_AIT 0x0458
#define WMREG_VFTA 0x0600
#define WMREG_LEDCTL 0x0e00
#define WMREG_MDICNFG 0x0e04
#define MDICNFG_PHY_SHIFT 21
#define MDICNFG_PHY_MASK __BITS(25, 21)
#define MDICNFG_COM_MDIO __BIT(30)
#define MDICNFG_DEST __BIT(31)
#define WM_MC_TABSIZE 128
#define WM_ICH8_MC_TABSIZE 32
#define WM_VLAN_TABSIZE 128
#define WMREG_PHPM 0x0e14
#define PHPM_SPD_EN __BIT(0)
#define PHPM_D0A_LPLU __BIT(1)
#define PHPM_NOND0A_LPLU __BIT(2)
#define PHPM_NOND0A_GBE_DIS __BIT(3)
#define PHPM_GO_LINK_D __BIT(5)
#define WMREG_EEER 0x0e30
#define EEER_TX_LPI_EN 0x00010000
#define EEER_RX_LPI_EN 0x00020000
#define EEER_LPI_FC 0x00040000
#define EEER_EEER_NEG 0x20000000
#define EEER_EEER_RX_LPI_STATUS 0x40000000
#define EEER_EEER_TX_LPI_STATUS 0x80000000
#define WMREG_EEE_SU 0x0e34
#define WMREG_IPCNFG 0x0e38
#define IPCNFG_10BASE_TE 0x00000002
#define IPCNFG_EEE_100M_AN 0x00000004
#define IPCNFG_EEE_1G_AN 0x00000008
#define WMREG_EXTCNFCTR 0x0f00
#define EXTCNFCTR_PCIE_WRITE_ENABLE 0x00000001
#define EXTCNFCTR_OEM_WRITE_ENABLE 0x00000008
#define EXTCNFCTR_MDIO_SW_OWNERSHIP 0x00000020
#define EXTCNFCTR_MDIO_HW_OWNERSHIP 0x00000040
#define EXTCNFCTR_GATE_PHY_CFG 0x00000080
#define EXTCNFCTR_EXT_CNF_POINTER 0x0fff0000
#define WMREG_EXTCNFSIZE 0x0f08
#define EXTCNFSIZE_LENGTH __BITS(23, 16)
#define WMREG_PHY_CTRL 0x0f10
#define PHY_CTRL_SPD_EN (1 << 0)
#define PHY_CTRL_D0A_LPLU (1 << 1)
#define PHY_CTRL_NOND0A_LPLU (1 << 2)
#define PHY_CTRL_NOND0A_GBE_DIS (1 << 3)
#define PHY_CTRL_GBE_DIS (1 << 6)
#define WMREG_PCIEANACFG 0x0f18
#define WMREG_IOSFPC 0x0f28
#define WMREG_PBA 0x1000
#define PBA_BYTE_SHIFT 10
#define PBA_ADDR_SHIFT 7
#define PBA_8K 0x0008
#define PBA_10K 0x000a
#define PBA_12K 0x000c
#define PBA_14K 0x000e
#define PBA_16K 0x0010
#define PBA_20K 0x0014
#define PBA_22K 0x0016
#define PBA_24K 0x0018
#define PBA_26K 0x001a
#define PBA_30K 0x001e
#define PBA_32K 0x0020
#define PBA_34K 0x0022
#define PBA_35K 0x0023
#define PBA_40K 0x0028
#define PBA_48K 0x0030
#define PBA_64K 0x0040
#define PBA_RXA_MASK __BITS(15, 0)
#define WMREG_PBS 0x1008
#define WMREG_PBECCSTS 0x100c
#define PBECCSTS_CORR_ERR_CNT_MASK 0x000000ff
#define PBECCSTS_UNCORR_ERR_CNT_MASK 0x0000ff00
#define PBECCSTS_UNCORR_ECC_ENABLE 0x00010000
#define WMREG_EEMNGCTL 0x1010
#define EEMNGCTL_CFGDONE_0 0x040000
#define EEMNGCTL_CFGDONE_1 0x080000
#define WMREG_I2CCMD 0x1028
#define I2CCMD_REG_ADDR_SHIFT 16
#define I2CCMD_REG_ADDR 0x00ff0000
#define I2CCMD_PHY_ADDR_SHIFT 24
#define I2CCMD_PHY_ADDR 0x07000000
#define I2CCMD_OPCODE_READ 0x08000000
#define I2CCMD_OPCODE_WRITE 0x00000000
#define I2CCMD_RESET 0x10000000
#define I2CCMD_READY 0x20000000
#define I2CCMD_INTERRUPT_ENA 0x40000000
#define I2CCMD_ERROR 0x80000000
#define MAX_SGMII_PHY_REG_ADDR 255
#define I2CCMD_PHY_TIMEOUT 200
#define WMREG_EEWR 0x102c
#define WMREG_PBA_ECC 0x01100
#define PBA_ECC_COUNTER_MASK 0xfff00000
#define PBA_ECC_COUNTER_SHIFT 20
#define PBA_ECC_CORR_EN 0x00000001
#define PBA_ECC_STAT_CLR 0x00000002
#define PBA_ECC_INT_EN 0x00000004
#define WMREG_GPIE 0x01514
#define GPIE_NSICR __BIT(0)
#define GPIE_MULTI_MSIX __BIT(4)
#define GPIE_EIAME __BIT(30)
#define GPIE_PBA __BIT(31)
#define WMREG_EICS 0x01520
#define WMREG_EIMS 0x01524
#define WMREG_EIMC 0x01528
#define WMREG_EIAC 0x0152c
#define WMREG_EIAM 0x01530
#define WMREG_EICR 0x01580
#define WMREG_MSIXBM(x) (0x1600 + (x) * 4)
#define EITR_RX_QUEUE(x) __BIT(0+(x))
#define EITR_TX_QUEUE(x) __BIT(8+(x))
#define EITR_TCP_TIMER 0x40000000
#define EITR_OTHER 0x80000000
#define WMREG_EITR(x) (0x01680 + (0x4 * (x)))
#define EITR_ITR_INT_MASK __BITS(14,2)
#define EITR_COUNTER_MASK_82575 __BITS(31,16)
#define EITR_CNT_INGR __BIT(31)
#define WMREG_EITR_82574(x) (0x000e8 + (0x4 * (x)))
#define EITR_ITR_INT_MASK_82574 __BITS(15, 0)
#define WMREG_RXPBS 0x2404
#define RXPBS_SIZE_MASK_82576 0x0000007f
#define WMREG_RDFH 0x2410
#define WMREG_RDFT 0x2418
#define WMREG_RDFHS 0x2420
#define WMREG_RDFTS 0x2428
#define WMREG_RADV 0x282c
#define WMREG_TXDMAC 0x3000
#define TXDMAC_DPP __BIT(0)
#define WMREG_KABGTXD 0x3004
#define KABGTXD_BGSQLBIAS 0x00050000
#define WMREG_TDFH 0x3410
#define WMREG_TDFT 0x3418
#define WMREG_TDFHS 0x3420
#define WMREG_TDFTS 0x3428
#define WMREG_TDFPC 0x3430
#define WMREG_TXDCTL(n) \
(((n) < 4) ? (0x3828 + ((n) * 0x100)) : (0xe028 + ((n) * 0x40)))
#define TXDCTL_PTHRESH(x) ((x) << 0)
#define TXDCTL_HTHRESH(x) ((x) << 8)
#define TXDCTL_WTHRESH(x) ((x) << 16)
#define TXDCTL_COUNT_DESC __BIT(22)
#define TXDCTL_QUEUE_ENABLE 0x02000000
#define TXDCTL_SWFLSH 0x04000000
#define TXDCTL_PRIORITY 0x08000000
#define WMREG_TADV 0x382c
#define WMREG_TSPMT 0x3830
#define TSPMT_TSMT(x) (x)
#define TSPMT_TSPBP(x) ((x) << 16)
#define WMREG_TARC0 0x3840
#define WMREG_TARC1 0x3940
#define WMREG_CRCERRS 0x4000
#define WMREG_ALGNERRC 0x4004
#define WMREG_SYMERRC 0x4008
#define WMREG_RXERRC 0x400c
#define WMREG_MPC 0x4010
#define WMREG_SCC 0x4014
#define WMREG_ECOL 0x4018
#define WMREG_MCC 0x401c
#define WMREG_LATECOL 0x4020
#define WMREG_COLC 0x4028
#define WMREG_CBTMPC 0x402c
#define WMREG_DC 0x4030
#define WMREG_TNCRS 0x4034
#define WMREG_SEC 0x4038
#define WMREG_CEXTERR 0x403c
#define WMREG_HTDPMC 0x403c
#define WMREG_RLEC 0x4040
#define WMREG_CBRDPC 0x4044
#define WMREG_XONRXC 0x4048
#define WMREG_XONTXC 0x404c
#define WMREG_XOFFRXC 0x4050
#define WMREG_XOFFTXC 0x4054
#define WMREG_FCRUC 0x4058
#define WMREG_PRC64 0x405c
#define WMREG_PRC127 0x4060
#define WMREG_PRC255 0x4064
#define WMREG_PRC511 0x4068
#define WMREG_PRC1023 0x406c
#define WMREG_PRC1522 0x4070
#define WMREG_GPRC 0x4074
#define WMREG_BPRC 0x4078
#define WMREG_MPRC 0x407c
#define WMREG_GPTC 0x4080
#define WMREG_GORCL 0x4088
#define WMREG_GORCH 0x408c
#define WMREG_GOTCL 0x4090
#define WMREG_GOTCH 0x4094
#define WMREG_RNBC 0x40a0
#define WMREG_RUC 0x40a4
#define WMREG_RFC 0x40a8
#define WMREG_ROC 0x40ac
#define WMREG_RJC 0x40b0
#define WMREG_MGTPRC 0x40b4
#define WMREG_MGTPDC 0x40b8
#define WMREG_MGTPTC 0x40bc
#define WMREG_TORL 0x40c0
#define WMREG_TORH 0x40c4
#define WMREG_TOTL 0x40c8
#define WMREG_TOTH 0x40cc
#define WMREG_TPR 0x40d0
#define WMREG_TPT 0x40d4
#define WMREG_PTC64 0x40d8
#define WMREG_PTC127 0x40dc
#define WMREG_PTC255 0x40e0
#define WMREG_PTC511 0x40e4
#define WMREG_PTC1023 0x40e8
#define WMREG_PTC1522 0x40ec
#define WMREG_MPTC 0x40f0
#define WMREG_BPTC 0x40f4
#define WMREG_TSCTC 0x40f8
#define WMREG_TSCTFC 0x40fc
#define WMREG_CBRMPC 0x40fc
#define WMREG_IAC 0x4100
#define WMREG_ICRXPTC 0x4104
#define WMREG_ICRXATC 0x4108
#define WMREG_ICTXPTC 0x410c
#define WMREG_ICTXATC 0x4110
#define WMREG_ICTXQEC 0x4118
#define WMREG_ICTXQMTC 0x411c
#define WMREG_ICRXDMTC 0x4120
#define WMREG_ICRXOC 0x4124
#define WMREG_RPTHC 0x4104
#define WMREG_DEBUG1 0x4108
#define WMREG_DEBUG2 0x410c
#define WMREG_DEBUG3 0x4110
#define WMREG_HGPTC 0x4118
#define WMREG_DEBUG4 0x411c
#define WMREG_RXDMTC 0x4120
#define WMREG_HTCBDPC 0x4124
#define WMREG_HGORCL 0x4128
#define WMREG_HGORCH 0x412c
#define WMREG_HGOTCL 0x4130
#define WMREG_HGOTCH 0x4134
#define WMREG_LENERRS 0x4138
#define WMREG_TLPIC 0x4148
#define WMREG_RLPIC 0x414c
#define WMREG_B2OGPRC 0x4158
#define WMREG_O2BSPC 0x415c
#define WMREG_PCS_CFG 0x4200
#define PCS_CFG_PCS_EN __BIT(3)
#define WMREG_PCS_LCTL 0x4208
#define PCS_LCTL_FLV_LINK_UP __BIT(0)
#define PCS_LCTL_FSV_MASK __BITS(2, 1)
#define PCS_LCTL_FSV_10 0
#define PCS_LCTL_FSV_100 __BIT(1)
#define PCS_LCTL_FSV_1000 __BIT(2)
#define PCS_LCTL_FDV_FULL __BIT(3)
#define PCS_LCTL_FSD __BIT(4)
#define PCS_LCTL_FORCE_LINK __BIT(5)
#define PCS_LCTL_LINK_LATCH_LOW __BIT(6)
#define PCS_LCTL_FORCE_FC __BIT(7)
#define PCS_LCTL_AN_ENABLE __BIT(16)
#define PCS_LCTL_AN_RESTART __BIT(17)
#define PCS_LCTL_AN_TIMEOUT __BIT(18)
#define PCS_LCTL_AN_SGMII_BYP __BIT(19)
#define PCS_LCTL_AN_SGMII_TRIG __BIT(20)
#define PCS_LCTL_FAST_LINKTIMER __BIT(24)
#define PCS_LCTL_LINK_OK_FIX_EN __BIT(25)
#define WMREG_PCS_LSTS 0x420c
#define PCS_LSTS_LINKOK __BIT(0)
#define PCS_LSTS_SPEED __BITS(2, 1)
#define PCS_LSTS_SPEED_10 0
#define PCS_LSTS_SPEED_100 1
#define PCS_LSTS_SPEED_1000 2
#define PCS_LSTS_FDX __BIT(3)
#define PCS_LSTS_AN_COMP __BIT(16)
#define WMREG_PCS_ANADV 0x4218
#define WMREG_PCS_LPAB 0x421c
#define WMREG_PCS_NPTX 0x4220
#define WMREG_SCVPC 0x4228
#define WMREG_RXCSUM 0x5000
#define RXCSUM_PCSS 0x000000ff
#define RXCSUM_IPOFL __BIT(8)
#define RXCSUM_TUOFL __BIT(9)
#define RXCSUM_IPV6OFL __BIT(10)
#define RXCSUM_CRCOFL __BIT(11)
#define RXCSUM_IPPCSE __BIT(12)
#define RXCSUM_PCSD __BIT(13)
#define WMREG_RLPML 0x5004
#define WMREG_RFCTL 0x5008
#define WMREG_RFCTL_NFSWDIS __BIT(6)
#define WMREG_RFCTL_NFSRDIS __BIT(7)
#define WMREG_RFCTL_ACKDIS __BIT(12)
#define WMREG_RFCTL_ACKD_DIS __BIT(13)
#define WMREG_RFCTL_EXSTEN __BIT(15)
#define WMREG_RFCTL_IPV6EXDIS __BIT(16)
#define WMREG_RFCTL_NEWIPV6EXDIS __BIT(17)
#define WMREG_WUC 0x5800
#define WUC_APME 0x00000001
#define WUC_PME_EN 0x00000002
#define WUC_PME_STATUS 0x00000004
#define WUC_APMPME 0x00000008
#define WUC_PHY_WAKE 0x00000100
#define WMREG_WUFC 0x5808
#define WUFC_LNKC __BIT(0)
#define WUFC_MAG __BIT(1)
#define WUFC_EX __BIT(2)
#define WUFC_MC __BIT(3)
#define WUFC_BC __BIT(4)
#define WUFC_ARPDIR __BIT(5)
#define WUFC_IPV4 __BIT(6)
#define WUFC_IPV6 __BIT(7)
#define WUFC_NS __BIT(9)
#define WUFC_NSDIR __BIT(10)
#define WUFC_ARP __BIT(11)
#define WUFC_FLEX_HQ __BIT(14)
#define WUFC_NOTCO __BIT(15)
#define WUFC_FLX __BITS(23, 16)
#define WUFC_FLXACT __BITS(27, 24)
#define WUFC_FW_RST_WK __BIT(31)
#define WMREG_WUS 0x5810
#define WUS_MNG __BIT(8)
#define WUS_FLAGS "\20" \
"\1LINKC" "\2MAG" "\3EX" "\4MC" \
"\5BC" "\6ARPDIR" "\7IPV4" "\10IPV6" \
"\11MNG" "\12NS" "\13NSDIR" "\14ARP" \
"\21FLX0" "\22FLX1" "\23FLX2" "\24FLX3" \
"\25FLX4" "\26FLX5" "\27FLX6" "\30FLX7" \
"\40FW_RST_WK"
#define WMREG_MRQC 0x5818
#define MRQC_DISABLE_RSS 0x00000000
#define MRQC_ENABLE_RSS_MQ_82574 __BIT(0)
#define MRQC_ENABLE_RSS_MQ __BIT(1)
#define MRQC_ENABLE_RSS_VMDQ __BITS(1, 0)
#define MRQC_DEFQ_MASK __BITS(5, 3)
#define MRQC_DEFQ_NOT_RSS_FLT __SHFTIN(__BIT(1), MRQC_DEFQ_MASK)
#define MRQC_DEFQ_NOT_MAC_ETH __SHFTIN(__BITS(1, 0), MRQC_DEFQ_MASK)
#define MRQC_DEFQ_IGNORED1 __SHFTIN(__BIT(2), MRQC_DEFQ_MASK)
#define MRQC_DEFQ_IGNORED2 __SHFTIN(__BIT(2)|__BIT(0), MRQC_DEFQ_MASK)
#define MRQC_DEFQ_VMDQ __SHFTIN(__BITS(2, 1), MRQC_DEFQ_MASK)
#define MRQC_RSS_FIELD_IPV4_TCP __BIT(16)
#define MRQC_RSS_FIELD_IPV4 __BIT(17)
#define MRQC_RSS_FIELD_IPV6_TCP_EX __BIT(18)
#define MRQC_RSS_FIELD_IPV6_EX __BIT(19)
#define MRQC_RSS_FIELD_IPV6 __BIT(20)
#define MRQC_RSS_FIELD_IPV6_TCP __BIT(21)
#define MRQC_RSS_FIELD_IPV4_UDP __BIT(22)
#define MRQC_RSS_FIELD_IPV6_UDP __BIT(23)
#define MRQC_RSS_FIELD_IPV6_UDP_EX __BIT(24)
#define WMREG_RETA_Q(x) (0x5c00 + ((x) >> 2) * 4)
#define RETA_NUM_ENTRIES 128
#define RETA_ENTRY_MASK_Q(x) (0x000000ffUL << (((x) % 4) * 8))
#define RETA_ENT_QINDEX_MASK __BITS(3,0)
#define RETA_ENT_QINDEX0_MASK_82575 __BITS(3,2)
#define RETA_ENT_QINDEX1_MASK_82575 __BITS(7,6)
#define RETA_ENT_QINDEX_MASK_82574 __BIT(7)
#define WMREG_RSSRK(x) (0x5c80 + (x) * 4)
#define RSSRK_NUM_REGS 10
#define WMREG_MANC 0x5820
#define MANC_SMBUS_EN __BIT(0)
#define MANC_ASF_EN __BIT(1)
#define MANC_ARP_EN __BIT(13)
#define MANC_RECV_TCO_RESET __BIT(16)
#define MANC_RECV_TCO_EN __BIT(17)
#define MANC_BLK_PHY_RST_ON_IDE __BIT(18)
#define MANC_RECV_ALL __BIT(19)
#define MANC_EN_MAC_ADDR_FILTER __BIT(20)
#define MANC_EN_MNG2HOST __BIT(21)
#define MANC_EN_BMC2OS __BIT(28)
#define WMREG_MANC2H 0x5860
#define MANC2H_PORT_623 (1 << 5)
#define MANC2H_PORT_624 (1 << 6)
#define WMREG_GCR 0x5b00
#define GCR_RXD_NO_SNOOP 0x00000001
#define GCR_RXDSCW_NO_SNOOP 0x00000002
#define GCR_RXDSCR_NO_SNOOP 0x00000004
#define GCR_TXD_NO_SNOOP 0x00000008
#define GCR_TXDSCW_NO_SNOOP 0x00000010
#define GCR_TXDSCR_NO_SNOOP 0x00000020
#define GCR_CMPL_TMOUT_MASK 0x0000f000
#define GCR_CMPL_TMOUT_10MS 0x00001000
#define GCR_CMPL_TMOUT_RESEND 0x00010000
#define GCR_CAP_VER2 0x00040000
#define GCR_L1_ACT_WITHOUT_L0S_RX 0x08000000
#define GCR_NO_SNOOP_ALL (GCR_RXD_NO_SNOOP | \
GCR_RXDSCW_NO_SNOOP | \
GCR_RXDSCR_NO_SNOOP | \
GCR_TXD_NO_SNOOP | \
GCR_TXDSCW_NO_SNOOP | \
GCR_TXDSCR_NO_SNOOP)
#define WMREG_FACTPS 0x5b30
#define FACTPS_MNGCG 0x20000000
#define FACTPS_LFS 0x40000000
#define WMREG_GIOCTL 0x5b44
#define WMREG_CCMCTL 0x5b48
#define WMREG_SCCTL 0x5b4c
#define WMREG_SWSM 0x5b50
#define SWSM_SMBI 0x00000001
#define SWSM_SWESMBI 0x00000002
#define SWSM_WMNG 0x00000004
#define SWSM_DRV_LOAD 0x00000008
#define WMREG_H2ME 0x5b50
#define H2ME_ULP __BIT(11)
#define H2ME_ENFORCE_SETTINGS __BIT(12)
#define WMREG_FWSM 0x5b54
#define FWSM_MODE __BITS(1, 3)
#define MNG_ICH_IAMT_MODE 0x2
#define MNG_IAMT_MODE 0x3
#define FWSM_RSPCIPHY __BIT(6)
#define FWSM_WLOCK_MAC __BITS(7, 9)
#define FWSM_ULP_CFG_DONE __BIT(10)
#define FWSM_FW_VALID __BIT(15)
#define WMREG_SWSM2 0x5b58
#define SWSM2_LOCK 0x00000002
#define WMREG_SW_FW_SYNC 0x5b5c
#define SWFW_EEP_SM 0x0001
#define SWFW_PHY0_SM 0x0002
#define SWFW_PHY1_SM 0x0004
#define SWFW_MAC_CSR_SM 0x0008
#define SWFW_PHY2_SM 0x0020
#define SWFW_PHY3_SM 0x0040
#define SWFW_SOFT_SHIFT 0
#define SWFW_FIRM_SHIFT 16
#define WMREG_GCR2 0x5b64
#define WMREG_FEXTNVM9 0x5bb4
#define FEXTNVM9_IOSFSB_CLKGATE_DIS __BIT(11)
#define FEXTNVM9_IOSFSB_CLKREQ_DIS __BIT(12)
#define WMREG_FEXTNVM11 0x5bbc
#define FEXTNVM11_DIS_MULRFIX __BIT(13)
#define WMREG_FFLT_DBG 0x05F04
#define WMREG_CRC_OFFSET 0x5f50
#define WMREG_PCH_RAICC(x) (WMREG_CRC_OFFSET + (x) * 4)
#define WMREG_B2OSPC 0x8fe0
#define WMREG_O2BGPTC 0x8fe4
#define WMREG_HRMPC 0xa018
#define WMREG_EEC 0x12010
#define EEC_FLASH_DETECTED __BIT(19)
#define EEC_FLUPD __BIT(23)
#define WMREG_EEARBC_I210 0x12024
#define UWIRE_OPC_ERASE 0x04
#define UWIRE_OPC_WRITE 0x05
#define UWIRE_OPC_READ 0x06
#define SPI_OPC_WRITE 0x02
#define SPI_OPC_READ 0x03
#define SPI_OPC_A8 0x08
#define SPI_OPC_WREN 0x06
#define SPI_OPC_WRDI 0x04
#define SPI_OPC_RDSR 0x05
#define SPI_OPC_WRSR 0x01
#define SPI_MAX_RETRIES 5000
#define SPI_SR_RDY 0x01
#define SPI_SR_WEN 0x02
#define SPI_SR_BP0 0x04
#define SPI_SR_BP1 0x08
#define SPI_SR_WPEN 0x80
#define NVM_CHECKSUM 0xBABA
#define NVM_SIZE 0x0040
#define NVM_WORD_SIZE_BASE_SHIFT 6
#define NVM_OFF_MACADDR 0x0000
#define NVM_OFF_MACADDR1 0x0001
#define NVM_OFF_MACADDR2 0x0002
#define NVM_OFF_COMPAT 0x0003
#define NVM_OFF_ID_LED_SETTINGS 0x0004
#define NVM_OFF_VERSION 0x0005
#define NVM_OFF_CFG1 0x000a
#define NVM_OFF_CFG2 0x000f
#define NVM_OFF_EEPROM_SIZE 0x0012
#define NVM_OFF_CFG4 0x0013
#define NVM_OFF_CFG3_PORTB 0x0014
#define NVM_OFF_FUTURE_INIT_WORD1 0x0019
#define NVM_OFF_INIT_3GIO_3 0x001a
#define NVM_OFF_K1_CONFIG 0x001b
#define NVM_OFF_LED_1_CFG 0x001c
#define NVM_OFF_LED_0_2_CFG 0x001f
#define NVM_OFF_SWDPIN 0x0020
#define NVM_OFF_CFG3_PORTA 0x0024
#define NVM_OFF_ALT_MAC_ADDR_PTR 0x0037
#define NVM_OFF_COMB_VER_PTR 0x003d
#define NVM_OFF_IMAGE_UID0 0x0042
#define NVM_OFF_IMAGE_UID1 0x0043
#define NVM_COMPAT_VALID_CHECKSUM 0x0001
#define NVM_CFG1_LVDID __BIT(0)
#define NVM_CFG1_LSSID __BIT(1)
#define NVM_CFG1_PME_CLOCK __BIT(2)
#define NVM_CFG1_PM __BIT(3)
#define NVM_CFG1_ILOS __BIT(4)
#define NVM_CFG1_SWDPIO_SHIFT 5
#define NVM_CFG1_SWDPIO_MASK (0xf << NVM_CFG1_SWDPIO_SHIFT)
#define NVM_CFG1_IPS1 __BIT(8)
#define NVM_CFG1_LRST __BIT(9)
#define NVM_CFG1_FD __BIT(10)
#define NVM_CFG1_FRCSPD __BIT(11)
#define NVM_CFG1_IPS0 __BIT(12)
#define NVM_CFG1_64_32_BAR __BIT(13)
#define NVM_CFG2_CSR_RD_SPLIT __BIT(1)
#define NVM_CFG2_82544_APM_EN __BIT(2)
#define NVM_CFG2_64_BIT __BIT(3)
#define NVM_CFG2_MAX_READ __BIT(4)
#define NVM_CFG2_DMCR_MAP __BIT(5)
#define NVM_CFG2_133_CAP __BIT(6)
#define NVM_CFG2_MSI_DIS __BIT(7)
#define NVM_CFG2_FLASH_DIS __BIT(8)
#define NVM_CFG2_FLASH_SIZE(x) (((x) & 3) >> 9)
#define NVM_CFG2_APM_EN __BIT(10)
#define NVM_CFG2_ANE __BIT(11)
#define NVM_CFG2_PAUSE(x) (((x) & 3) >> 12)
#define NVM_CFG2_ASDE __BIT(14)
#define NVM_CFG2_APM_PME __BIT(15)
#define NVM_CFG2_SWDPIO_SHIFT 4
#define NVM_CFG2_SWDPIO_MASK (0xf << NVM_CFG2_SWDPIO_SHIFT)
#define NVM_CFG2_MNGM_SHIFT 13
#define NVM_CFG2_MNGM_MASK (3U << NVM_CFG2_MNGM_SHIFT)
#define NVM_CFG2_MNGM_DIS 0
#define NVM_CFG2_MNGM_NCSI 1
#define NVM_CFG2_MNGM_PT 2
#define NVM_COMPAT_MAS_EN(x) __BIT(x)
#define NVM_COMPAT_SERDES_FORCE_MODE __BIT(14)
#define NVM_FUTURE_INIT_WORD1_VALID_CHECKSUM 0x0040
#define NVM_K1_CONFIG_ENABLE 0x01
#define NVM_SWDPIN_MASK 0xdf
#define NVM_SWDPIN_SWDPIN_SHIFT 0
#define NVM_SWDPIN_SWDPIO_SHIFT 8
#define NVM_3GIO_3_ASPM_MASK (0x3 << 2)
#define NVM_CFG3_PORTA_EXT_MDIO __BIT(2)
#define NVM_CFG3_PORTA_COM_MDIO __BIT(3)
#define NVM_CFG3_APME __BIT(10)
#define NVM_CFG3_ILOS __BIT(13)
#define NVM_OFF_MACADDR_82571(x) (3 * (x))
#define NVM_OFF_LAN_FUNC_82580(x) ((x) ? (0x40 + (0x40 * (x))) : 0)
#define NVM_COMBO_VER_OFF 0x0083
#define NVM_MAJOR_MASK 0xf000
#define NVM_MAJOR_SHIFT 12
#define NVM_MINOR_MASK 0x0ff0
#define NVM_MINOR_SHIFT 4
#define NVM_BUILD_MASK 0x000f
#define NVM_UID_VALID 0x8000
#define WM_INVM_DATA_REG(reg) (0x12120 + 4*(reg))
#define INVM_SIZE 64
#define NVM_INIT_CTRL_2_DEFAULT_I211 0x7243
#define NVM_INIT_CTRL_4_DEFAULT_I211 0x00c1
#define NVM_LED_1_CFG_DEFAULT_I211 0x0184
#define NVM_LED_0_2_CFG_DEFAULT_I211 0x200c
#define NVM_RESERVED_WORD 0xffff
#define INVM_DWORD_TO_RECORD_TYPE(dword) ((dword) & 0x7)
#define INVM_DWORD_TO_WORD_ADDRESS(dword) (((dword) & 0x0000FE00) >> 9)
#define INVM_DWORD_TO_WORD_DATA(dword) (((dword) & 0xFFFF0000) >> 16)
#define INVM_UNINITIALIZED_STRUCTURE 0x0
#define INVM_WORD_AUTOLOAD_STRUCTURE 0x1
#define INVM_CSR_AUTOLOAD_STRUCTURE 0x2
#define INVM_PHY_REGISTER_AUTOLOAD_STRUCTURE 0x3
#define INVM_RSA_KEY_SHA256_STRUCTURE 0x4
#define INVM_INVALIDATED_STRUCTURE 0xf
#define INVM_RSA_KEY_SHA256_DATA_SIZE_IN_DWORDS 8
#define INVM_CSR_AUTOLOAD_DATA_SIZE_IN_DWORDS 1
#define INVM_DEFAULT_AL 0x202f
#define INVM_AUTOLOAD 0x0a
#define INVM_PLL_WO_VAL 0x0010
#define INVM_VER_1 __BITS(12,3)
#define INVM_VER_2 __BITS(22,13)
#define INVM_IMGTYPE __BITS(28,23)
#define INVM_MINOR __BITS(3,0)
#define INVM_MAJOR __BITS(9,4)
#define ID_LED_RESERVED_FFFF 0xffff
#define ICH_FLASH_COMMAND_TIMEOUT 5000
#define ICH_FLASH_ERASE_TIMEOUT 3000000
#define ICH_FLASH_CYCLE_REPEAT_COUNT 10
#define ICH_FLASH_SEG_SIZE_256 256
#define ICH_FLASH_SEG_SIZE_4K 4096
#define ICH_FLASH_SEG_SIZE_64K 65536
#define ICH_CYCLE_READ 0x0
#define ICH_CYCLE_RESERVED 0x1
#define ICH_CYCLE_WRITE 0x2
#define ICH_CYCLE_ERASE 0x3
#define ICH_FLASH_GFPREG 0x0000
#define ICH_FLASH_HSFSTS 0x0004
#define HSFSTS_DONE 0x0001
#define HSFSTS_ERR 0x0002
#define HSFSTS_DAEL 0x0004
#define HSFSTS_ERSZ_MASK 0x0018
#define HSFSTS_ERSZ_SHIFT 3
#define HSFSTS_FLINPRO 0x0020
#define HSFSTS_FLDVAL 0x4000
#define HSFSTS_FLLK 0x8000
#define ICH_FLASH_HSFCTL 0x0006
#define HSFCTL_GO 0x0001
#define HSFCTL_CYCLE_MASK 0x0006
#define HSFCTL_CYCLE_SHIFT 1
#define HSFCTL_BCOUNT_MASK 0x0300
#define HSFCTL_BCOUNT_SHIFT 8
#define ICH_FLASH_FADDR 0x0008
#define ICH_FLASH_FDATA0 0x0010
#define ICH_FLASH_FRACC 0x0050
#define ICH_FLASH_FREG0 0x0054
#define ICH_FLASH_FREG1 0x0058
#define ICH_FLASH_FREG2 0x005c
#define ICH_FLASH_FREG3 0x0060
#define ICH_FLASH_FPR0 0x0074
#define ICH_FLASH_FPR1 0x0078
#define ICH_FLASH_SSFSTS 0x0090
#define ICH_FLASH_SSFCTL 0x0092
#define ICH_FLASH_PREOP 0x0094
#define ICH_FLASH_OPTYPE 0x0096
#define ICH_FLASH_OPMENU 0x0098
#define ICH_FLASH_REG_MAPSIZE 0x00a0
#define ICH_FLASH_SECTOR_SIZE 4096
#define ICH_GFPREG_BASE_MASK 0x1fff
#define ICH_FLASH_LINEAR_ADDR_MASK 0x00ffffff
#define ICH_NVM_SIG_WORD 0x13
#define ICH_NVM_SIG_MASK 0xc000
#define ICH_NVM_VALID_SIG_MASK 0xc0
#define ICH_NVM_SIG_VALUE 0x80
#define NVM_SIZE_MULTIPLIER 4096
#define WM_PCH_SPT_FLASHOFFSET 0xe000
#define WM_PCIE_DCSR2_16MS 0x00000005
#define SFF_SFP_ID_OFF 0x00
#define SFF_SFP_ID_UNKNOWN 0x00
#define SFF_SFP_ID_SFF 0x02
#define SFF_SFP_ID_SFP 0x03
#define SFF_SFP_ETH_FLAGS_OFF 0x06
#define SFF_SFP_ETH_FLAGS_1000SX 0x01
#define SFF_SFP_ETH_FLAGS_1000LX 0x02
#define SFF_SFP_ETH_FLAGS_1000CX 0x04
#define SFF_SFP_ETH_FLAGS_1000T 0x08
#define SFF_SFP_ETH_FLAGS_100LX 0x10
#define SFF_SFP_ETH_FLAGS_100FX 0x20
#define GS40G_PAGE_SELECT 0x16
#define GS40G_PAGE_SHIFT 16
#define GS40G_OFFSET_MASK 0xffff
#define GS40G_PHY_PLL_FREQ_PAGE 0xfc0000
#define GS40G_PHY_PLL_FREQ_REG 0x000e
#define GS40G_PHY_PLL_UNCONF 0xff
typedef union nq_txdesc {
struct {
uint64_t nqtxd_addr;
uint32_t nqtxd_cmdlen;
uint32_t nqtxd_fields;
} nqtx_data;
struct {
uint32_t nqtxc_vl_len;
uint32_t nqtxc_sn;
uint32_t nqtxc_cmd;
uint32_t nqtxc_mssidx;
} nqtx_ctx;
} __packed nq_txdesc_t;
#define NQTX_CMD_EOP __BIT(24)
#define NQTX_CMD_IFCS __BIT(25)
#define NQTX_CMD_RS __BIT(27)
#define NQTX_CMD_DEXT __BIT(29)
#define NQTX_CMD_VLE __BIT(30)
#define NQTX_CMD_TSE __BIT(31)
#define NQTX_DTYP_C (2U << 20)
#define NQTX_DTYP_D (3U << 20)
#define NQTXD_FIELDS_IDX_SHIFT 4
#define NQTXD_FIELDS_IDX_MASK 0xf
#define NQTXD_FIELDS_PAYLEN_SHIFT 14
#define NQTXD_FIELDS_PAYLEN_MASK 0x3ffff
#define NQTXD_FIELDS_IXSM __BIT(8)
#define NQTXD_FIELDS_TUXSM __BIT(9)
#define NQTXC_VLLEN_IPLEN_SHIFT 0
#define NQTXC_VLLEN_IPLEN_MASK 0x1ff
#define NQTXC_VLLEN_MACLEN_SHIFT 9
#define NQTXC_VLLEN_MACLEN_MASK 0x7f
#define NQTXC_VLLEN_VLAN_SHIFT 16
#define NQTXC_VLLEN_VLAN_MASK 0xffff
#define NQTXC_CMD_MKRLOC_SHIFT 0
#define NQTXC_CMD_MKRLOC_MASK 0x1ff
#define NQTXC_CMD_SNAP __BIT(9)
#define NQTXC_CMD_IPV_MASK __BIT(10)
#define NQTXC_CMD_IP4 __SHIFTIN(1, NQTXC_CMD_IPV_MASK)
#define NQTXC_CMD_IP6 __SHIFTIN(0, NQTXC_CMD_IPV_MASK)
#define NQTXC_CMD_TP_MASK __BIT(11)
#define NQTXC_CMD_TCP __SHIFTIN(1, NQTXC_CMD_TP_MASK)
#define NQTXC_CMD_UDP __SHIFTIN(0, NQTXC_CMD_TP_MASK)
#define NQTXC_MSSIDX_IDX_SHIFT 4
#define NQTXC_MSSIDX_IDX_MASK 0xf
#define NQTXC_MSSIDX_L4LEN_SHIFT 8
#define NQTXC_MSSIDX_L4LEN_MASK 0xff
#define NQTXC_MSSIDX_MSS_SHIFT 16
#define NQTXC_MSSIDX_MSS_MASK 0xffff