linux/drivers/net/ethernet/intel/e1000e/hw.h

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

#ifndef _E1000E_HW_H_
#define _E1000E_HW_H_

#include "regs.h"
#include "defines.h"

struct e1000_hw;

#define E1000_DEV_ID_82571EB_COPPER
#define E1000_DEV_ID_82571EB_FIBER
#define E1000_DEV_ID_82571EB_SERDES
#define E1000_DEV_ID_82571EB_QUAD_COPPER
#define E1000_DEV_ID_82571PT_QUAD_COPPER
#define E1000_DEV_ID_82571EB_QUAD_FIBER
#define E1000_DEV_ID_82571EB_QUAD_COPPER_LP
#define E1000_DEV_ID_82571EB_SERDES_DUAL
#define E1000_DEV_ID_82571EB_SERDES_QUAD
#define E1000_DEV_ID_82572EI_COPPER
#define E1000_DEV_ID_82572EI_FIBER
#define E1000_DEV_ID_82572EI_SERDES
#define E1000_DEV_ID_82572EI
#define E1000_DEV_ID_82573E
#define E1000_DEV_ID_82573E_IAMT
#define E1000_DEV_ID_82573L
#define E1000_DEV_ID_82574L
#define E1000_DEV_ID_82574LA
#define E1000_DEV_ID_82583V
#define E1000_DEV_ID_80003ES2LAN_COPPER_DPT
#define E1000_DEV_ID_80003ES2LAN_SERDES_DPT
#define E1000_DEV_ID_80003ES2LAN_COPPER_SPT
#define E1000_DEV_ID_80003ES2LAN_SERDES_SPT
#define E1000_DEV_ID_ICH8_82567V_3
#define E1000_DEV_ID_ICH8_IGP_M_AMT
#define E1000_DEV_ID_ICH8_IGP_AMT
#define E1000_DEV_ID_ICH8_IGP_C
#define E1000_DEV_ID_ICH8_IFE
#define E1000_DEV_ID_ICH8_IFE_GT
#define E1000_DEV_ID_ICH8_IFE_G
#define E1000_DEV_ID_ICH8_IGP_M
#define E1000_DEV_ID_ICH9_IGP_AMT
#define E1000_DEV_ID_ICH9_BM
#define E1000_DEV_ID_ICH9_IGP_M_AMT
#define E1000_DEV_ID_ICH9_IGP_M
#define E1000_DEV_ID_ICH9_IGP_M_V
#define E1000_DEV_ID_ICH9_IGP_C
#define E1000_DEV_ID_ICH9_IFE
#define E1000_DEV_ID_ICH9_IFE_GT
#define E1000_DEV_ID_ICH9_IFE_G
#define E1000_DEV_ID_ICH10_R_BM_LM
#define E1000_DEV_ID_ICH10_R_BM_LF
#define E1000_DEV_ID_ICH10_R_BM_V
#define E1000_DEV_ID_ICH10_D_BM_LM
#define E1000_DEV_ID_ICH10_D_BM_LF
#define E1000_DEV_ID_ICH10_D_BM_V
#define E1000_DEV_ID_PCH_M_HV_LM
#define E1000_DEV_ID_PCH_M_HV_LC
#define E1000_DEV_ID_PCH_D_HV_DM
#define E1000_DEV_ID_PCH_D_HV_DC
#define E1000_DEV_ID_PCH2_LV_LM
#define E1000_DEV_ID_PCH2_LV_V
#define E1000_DEV_ID_PCH_LPT_I217_LM
#define E1000_DEV_ID_PCH_LPT_I217_V
#define E1000_DEV_ID_PCH_LPTLP_I218_LM
#define E1000_DEV_ID_PCH_LPTLP_I218_V
#define E1000_DEV_ID_PCH_I218_LM2
#define E1000_DEV_ID_PCH_I218_V2
#define E1000_DEV_ID_PCH_I218_LM3
#define E1000_DEV_ID_PCH_I218_V3
#define E1000_DEV_ID_PCH_SPT_I219_LM
#define E1000_DEV_ID_PCH_SPT_I219_V
#define E1000_DEV_ID_PCH_SPT_I219_LM2
#define E1000_DEV_ID_PCH_SPT_I219_V2
#define E1000_DEV_ID_PCH_LBG_I219_LM3
#define E1000_DEV_ID_PCH_SPT_I219_LM4
#define E1000_DEV_ID_PCH_SPT_I219_V4
#define E1000_DEV_ID_PCH_SPT_I219_LM5
#define E1000_DEV_ID_PCH_SPT_I219_V5
#define E1000_DEV_ID_PCH_CNP_I219_LM6
#define E1000_DEV_ID_PCH_CNP_I219_V6
#define E1000_DEV_ID_PCH_CNP_I219_LM7
#define E1000_DEV_ID_PCH_CNP_I219_V7
#define E1000_DEV_ID_PCH_ICP_I219_LM8
#define E1000_DEV_ID_PCH_ICP_I219_V8
#define E1000_DEV_ID_PCH_ICP_I219_LM9
#define E1000_DEV_ID_PCH_ICP_I219_V9
#define E1000_DEV_ID_PCH_CMP_I219_LM10
#define E1000_DEV_ID_PCH_CMP_I219_V10
#define E1000_DEV_ID_PCH_CMP_I219_LM11
#define E1000_DEV_ID_PCH_CMP_I219_V11
#define E1000_DEV_ID_PCH_CMP_I219_LM12
#define E1000_DEV_ID_PCH_CMP_I219_V12
#define E1000_DEV_ID_PCH_TGP_I219_LM13
#define E1000_DEV_ID_PCH_TGP_I219_V13
#define E1000_DEV_ID_PCH_TGP_I219_LM14
#define E1000_DEV_ID_PCH_TGP_I219_V14
#define E1000_DEV_ID_PCH_TGP_I219_LM15
#define E1000_DEV_ID_PCH_TGP_I219_V15
#define E1000_DEV_ID_PCH_RPL_I219_LM23
#define E1000_DEV_ID_PCH_RPL_I219_V23
#define E1000_DEV_ID_PCH_ADP_I219_LM16
#define E1000_DEV_ID_PCH_ADP_I219_V16
#define E1000_DEV_ID_PCH_ADP_I219_LM17
#define E1000_DEV_ID_PCH_ADP_I219_V17
#define E1000_DEV_ID_PCH_RPL_I219_LM22
#define E1000_DEV_ID_PCH_RPL_I219_V22
#define E1000_DEV_ID_PCH_MTP_I219_LM18
#define E1000_DEV_ID_PCH_MTP_I219_V18
#define E1000_DEV_ID_PCH_ADP_I219_LM19
#define E1000_DEV_ID_PCH_ADP_I219_V19
#define E1000_DEV_ID_PCH_LNP_I219_LM20
#define E1000_DEV_ID_PCH_LNP_I219_V20
#define E1000_DEV_ID_PCH_LNP_I219_LM21
#define E1000_DEV_ID_PCH_LNP_I219_V21
#define E1000_DEV_ID_PCH_ARL_I219_LM24
#define E1000_DEV_ID_PCH_ARL_I219_V24
#define E1000_DEV_ID_PCH_PTP_I219_LM25
#define E1000_DEV_ID_PCH_PTP_I219_V25
#define E1000_DEV_ID_PCH_PTP_I219_LM26
#define E1000_DEV_ID_PCH_PTP_I219_V26
#define E1000_DEV_ID_PCH_PTP_I219_LM27
#define E1000_DEV_ID_PCH_PTP_I219_V27
#define E1000_DEV_ID_PCH_NVL_I219_LM29
#define E1000_DEV_ID_PCH_NVL_I219_V29

#define E1000_REVISION_4

#define E1000_FUNC_1

#define E1000_ALT_MAC_ADDRESS_OFFSET_LAN0
#define E1000_ALT_MAC_ADDRESS_OFFSET_LAN1

enum e1000_mac_type {};

enum e1000_media_type {};

enum e1000_nvm_type {};

enum e1000_nvm_override {};

enum e1000_phy_type {};

enum e1000_bus_width {};

enum e1000_1000t_rx_status {};

enum e1000_rev_polarity {};

enum e1000_fc_mode {};

enum e1000_ms_type {};

enum e1000_smart_speed {};

enum e1000_serdes_link_state {};

/* Receive Descriptor - Extended */
e1000_rx_desc_extended;

#define MAX_PS_BUFFERS

/* Number of packet split data buffers (not including the header buffer) */
#define PS_PAGE_BUFFERS

/* Receive Descriptor - Packet Split */
e1000_rx_desc_packet_split;

/* Transmit Descriptor */
struct e1000_tx_desc {};

/* Offload Context Descriptor */
struct e1000_context_desc {};

/* Offload data descriptor */
struct e1000_data_desc {};

/* Statistics counters collected by the MAC */
struct e1000_hw_stats {};

struct e1000_phy_stats {};

struct e1000_host_mng_dhcp_cookie {};

/* Host Interface "Rev 1" */
struct e1000_host_command_header {};

#define E1000_HI_MAX_DATA_LENGTH
struct e1000_host_command_info {};

/* Host Interface "Rev 2" */
struct e1000_host_mng_command_header {};

#define E1000_HI_MAX_MNG_DATA_LENGTH
struct e1000_host_mng_command_info {};

#include "mac.h"
#include "phy.h"
#include "nvm.h"
#include "manage.h"

/* Function pointers for the MAC. */
struct e1000_mac_operations {};

/* When to use various PHY register access functions:
 *
 *                 Func   Caller
 *   Function      Does   Does    When to use
 *   ~~~~~~~~~~~~  ~~~~~  ~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *   X_reg         L,P,A  n/a     for simple PHY reg accesses
 *   X_reg_locked  P,A    L       for multiple accesses of different regs
 *                                on different pages
 *   X_reg_page    A      L,P     for multiple accesses of different regs
 *                                on the same page
 *
 * Where X=[read|write], L=locking, P=sets page, A=register access
 *
 */
struct e1000_phy_operations {};

/* Function pointers for the NVM. */
struct e1000_nvm_operations {};

struct e1000_mac_info {};

struct e1000_phy_info {};

struct e1000_nvm_info {};

struct e1000_bus_info {};

struct e1000_fc_info {};

struct e1000_dev_spec_82571 {};

struct e1000_dev_spec_80003es2lan {};

struct e1000_shadow_ram {};

#define E1000_ICH8_SHADOW_RAM_WORDS

/* I218 PHY Ultra Low Power (ULP) states */
enum e1000_ulp_state {};

struct e1000_dev_spec_ich8lan {};

struct e1000_hw {};

#include "82571.h"
#include "80003es2lan.h"
#include "ich8lan.h"

#endif /* _E1000E_HW_H_ */