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

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

#ifndef _E1000_82575_H_
#define _E1000_82575_H_

void igb_shutdown_serdes_link_82575(struct e1000_hw *hw);
void igb_power_up_serdes_link_82575(struct e1000_hw *hw);
void igb_power_down_phy_copper_82575(struct e1000_hw *hw);
void igb_rx_fifo_flush_82575(struct e1000_hw *hw);
s32 igb_read_i2c_byte(struct e1000_hw *hw, u8 byte_offset, u8 dev_addr,
		      u8 *data);
s32 igb_write_i2c_byte(struct e1000_hw *hw, u8 byte_offset, u8 dev_addr,
		       u8 data);

#define ID_LED_DEFAULT_82575_SERDES

#define E1000_RAR_ENTRIES_82575
#define E1000_RAR_ENTRIES_82576
#define E1000_RAR_ENTRIES_82580
#define E1000_RAR_ENTRIES_I350

#define E1000_SW_SYNCH_MB
#define E1000_STAT_DEV_RST_SET
#define E1000_CTRL_DEV_RST

/* SRRCTL bit definitions */
#define E1000_SRRCTL_BSIZEPKT_SHIFT
#define E1000_SRRCTL_BSIZEHDRSIZE_SHIFT
#define E1000_SRRCTL_DESCTYPE_ADV_ONEBUF
#define E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS
#define E1000_SRRCTL_DROP_EN
#define E1000_SRRCTL_TIMESTAMP


#define E1000_MRQC_ENABLE_RSS_MQ
#define E1000_MRQC_ENABLE_VMDQ
#define E1000_MRQC_RSS_FIELD_IPV4_UDP
#define E1000_MRQC_ENABLE_VMDQ_RSS_MQ
#define E1000_MRQC_RSS_FIELD_IPV6_UDP
#define E1000_MRQC_RSS_FIELD_IPV6_UDP_EX

#define E1000_EICR_TX_QUEUE

#define E1000_EICR_RX_QUEUE

/* Immediate Interrupt Rx (A.K.A. Low Latency Interrupt) */
#define E1000_IMIREXT_SIZE_BP
#define E1000_IMIREXT_CTRL_BP

/* Receive Descriptor - Advanced */
e1000_adv_rx_desc;

#define E1000_RXDADV_HDRBUFLEN_MASK
#define E1000_RXDADV_HDRBUFLEN_SHIFT
#define E1000_RXDADV_STAT_TS
#define E1000_RXDADV_STAT_TSIP

/* Transmit Descriptor - Advanced */
e1000_adv_tx_desc;

/* Adv Transmit Descriptor Config Masks */
#define E1000_ADVTXD_MAC_TSTAMP
#define E1000_ADVTXD_DTYP_CTXT
#define E1000_ADVTXD_DTYP_DATA
#define E1000_ADVTXD_DCMD_EOP
#define E1000_ADVTXD_DCMD_IFCS
#define E1000_ADVTXD_DCMD_RS
#define E1000_ADVTXD_DCMD_DEXT
#define E1000_ADVTXD_DCMD_VLE
#define E1000_ADVTXD_DCMD_TSE
#define E1000_ADVTXD_PAYLEN_SHIFT

/* Context descriptors */
struct e1000_adv_tx_context_desc {};

#define E1000_ADVTXD_MACLEN_SHIFT
#define E1000_ADVTXD_TUCMD_L4T_UDP
#define E1000_ADVTXD_TUCMD_IPV4
#define E1000_ADVTXD_TUCMD_L4T_TCP
#define E1000_ADVTXD_TUCMD_L4T_SCTP
/* IPSec Encrypt Enable for ESP */
#define E1000_ADVTXD_L4LEN_SHIFT
#define E1000_ADVTXD_MSS_SHIFT
/* Adv ctxt IPSec SA IDX mask */
/* Adv ctxt IPSec ESP len mask */

/* Additional Transmit Descriptor Control definitions */
#define E1000_TXDCTL_QUEUE_ENABLE
/* Tx Queue Arbitration Priority 0=low, 1=high */

/* Additional Receive Descriptor Control definitions */
#define E1000_RXDCTL_QUEUE_ENABLE

/* Direct Cache Access (DCA) definitions */
#define E1000_DCA_CTRL_DCA_MODE_DISABLE
#define E1000_DCA_CTRL_DCA_MODE_CB2

#define E1000_DCA_RXCTRL_CPUID_MASK
#define E1000_DCA_RXCTRL_DESC_DCA_EN
#define E1000_DCA_RXCTRL_HEAD_DCA_EN
#define E1000_DCA_RXCTRL_DATA_DCA_EN
#define E1000_DCA_RXCTRL_DESC_RRO_EN

#define E1000_DCA_TXCTRL_CPUID_MASK
#define E1000_DCA_TXCTRL_DESC_DCA_EN
#define E1000_DCA_TXCTRL_DESC_RRO_EN
#define E1000_DCA_TXCTRL_TX_WB_RO_EN
#define E1000_DCA_TXCTRL_DATA_RRO_EN

/* Additional DCA related definitions, note change in position of CPUID */
#define E1000_DCA_TXCTRL_CPUID_MASK_82576
#define E1000_DCA_RXCTRL_CPUID_MASK_82576
#define E1000_DCA_TXCTRL_CPUID_SHIFT
#define E1000_DCA_RXCTRL_CPUID_SHIFT

/* ETQF register bit definitions */
#define E1000_ETQF_FILTER_ENABLE
#define E1000_ETQF_1588
#define E1000_ETQF_IMM_INT
#define E1000_ETQF_QUEUE_ENABLE
#define E1000_ETQF_QUEUE_SHIFT
#define E1000_ETQF_QUEUE_MASK
#define E1000_ETQF_ETYPE_MASK

/* FTQF register bit definitions */
#define E1000_FTQF_VF_BP
#define E1000_FTQF_1588_TIME_STAMP
#define E1000_FTQF_MASK
#define E1000_FTQF_MASK_PROTO_BP
#define E1000_FTQF_MASK_SOURCE_PORT_BP

#define E1000_NVM_APME_82575
#define MAX_NUM_VFS

#define E1000_DTXSWC_MAC_SPOOF_MASK
#define E1000_DTXSWC_VLAN_SPOOF_MASK
#define E1000_DTXSWC_LLE_MASK
#define E1000_DTXSWC_VLAN_SPOOF_SHIFT
#define E1000_DTXSWC_VMDQ_LOOPBACK_EN

/* Easy defines for setting default pool, would normally be left a zero */
#define E1000_VT_CTL_DEFAULT_POOL_SHIFT
#define E1000_VT_CTL_DEFAULT_POOL_MASK

/* Other useful VMD_CTL register defines */
#define E1000_VT_CTL_IGNORE_MAC
#define E1000_VT_CTL_DISABLE_DEF_POOL
#define E1000_VT_CTL_VM_REPL_EN

/* Per VM Offload register setup */
#define E1000_VMOLR_RLPML_MASK
#define E1000_VMOLR_LPE
#define E1000_VMOLR_RSSE
#define E1000_VMOLR_AUPE
#define E1000_VMOLR_ROMPE
#define E1000_VMOLR_ROPE
#define E1000_VMOLR_BAM
#define E1000_VMOLR_MPME
#define E1000_VMOLR_STRVLAN
#define E1000_VMOLR_STRCRC

#define E1000_DVMOLR_HIDEVLAN
#define E1000_DVMOLR_STRVLAN
#define E1000_DVMOLR_STRCRC

#define E1000_VLVF_ARRAY_SIZE
#define E1000_VLVF_VLANID_MASK
#define E1000_VLVF_POOLSEL_SHIFT
#define E1000_VLVF_POOLSEL_MASK
#define E1000_VLVF_LVLAN
#define E1000_VLVF_VLANID_ENABLE

#define E1000_VMVIR_VLANA_DEFAULT
#define E1000_VMVIR_VLANA_NEVER

#define E1000_IOVCTL
#define E1000_IOVCTL_REUSE_VFQ

#define E1000_RPLOLR_STRVLAN
#define E1000_RPLOLR_STRCRC

#define E1000_DTXCTL_8023LL
#define E1000_DTXCTL_VLAN_ADDED
#define E1000_DTXCTL_OOS_ENABLE
#define E1000_DTXCTL_MDP_EN
#define E1000_DTXCTL_SPOOF_INT

#define E1000_EEPROM_PCS_AUTONEG_DISABLE_BIT

#define ALL_QUEUES

/* RX packet buffer size defines */
#define E1000_RXPBS_SIZE_MASK_82576
void igb_vmdq_set_anti_spoofing_pf(struct e1000_hw *, bool, int);
void igb_vmdq_set_loopback_pf(struct e1000_hw *, bool);
void igb_vmdq_set_replication_pf(struct e1000_hw *, bool);
u16 igb_rxpbs_adjust_82580(u32 data);
s32 igb_read_emi_reg(struct e1000_hw *, u16 addr, u16 *data);
s32 igb_set_eee_i350(struct e1000_hw *, bool adv1G, bool adv100M);
s32 igb_set_eee_i354(struct e1000_hw *, bool adv1G, bool adv100M);
s32 igb_get_eee_status_i354(struct e1000_hw *hw, bool *status);

#define E1000_I2C_THERMAL_SENSOR_ADDR
#define E1000_EMC_INTERNAL_DATA
#define E1000_EMC_INTERNAL_THERM_LIMIT
#define E1000_EMC_DIODE1_DATA
#define E1000_EMC_DIODE1_THERM_LIMIT
#define E1000_EMC_DIODE2_DATA
#define E1000_EMC_DIODE2_THERM_LIMIT
#define E1000_EMC_DIODE3_DATA
#define E1000_EMC_DIODE3_THERM_LIMIT
#endif