net/e1000/base: add missing device ID
[dpdk.git] / drivers / net / e1000 / base / e1000_82575.h
index 09b7bf2..14887e2 100644 (file)
@@ -1,35 +1,6 @@
-/*******************************************************************************
-
-Copyright (c) 2001-2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
- 3. Neither the name of the Intel Corporation nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-***************************************************************************/
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2001 - 2015 Intel Corporation
+ */
 
 #ifndef _E1000_82575_H_
 #define _E1000_82575_H_
@@ -54,7 +25,6 @@ POSSIBILITY OF SUCH DAMAGE.
 #define E1000_RAR_ENTRIES_I350 32
 #define E1000_SW_SYNCH_MB      0x00000100
 #define E1000_STAT_DEV_RST_SET 0x00100000
-#define E1000_CTRL_DEV_RST     0x20000000
 
 #ifdef E1000_BIT_FIELDS
 struct e1000_adv_data_desc {
@@ -180,46 +150,12 @@ struct e1000_adv_context_desc {
 /* Immediate Interrupt Rx (A.K.A. Low Latency Interrupt) */
 #define E1000_IMIR_PORT_IM_EN  0x00010000  /* TCP port enable */
 #define E1000_IMIR_PORT_BP     0x00020000  /* TCP port check bypass */
-#define E1000_IMIREXT_SIZE_BP  0x00001000  /* Packet size bypass */
 #define E1000_IMIREXT_CTRL_URG 0x00002000  /* Check URG bit in header */
 #define E1000_IMIREXT_CTRL_ACK 0x00004000  /* Check ACK bit in header */
 #define E1000_IMIREXT_CTRL_PSH 0x00008000  /* Check PSH bit in header */
 #define E1000_IMIREXT_CTRL_RST 0x00010000  /* Check RST bit in header */
 #define E1000_IMIREXT_CTRL_SYN 0x00020000  /* Check SYN bit in header */
 #define E1000_IMIREXT_CTRL_FIN 0x00040000  /* Check FIN bit in header */
-#define E1000_IMIREXT_CTRL_BP  0x00080000  /* Bypass check of ctrl bits */
-
-/* Receive Descriptor - Advanced */
-union e1000_adv_rx_desc {
-       struct {
-               __le64 pkt_addr; /* Packet buffer address */
-               __le64 hdr_addr; /* Header buffer address */
-       } read;
-       struct {
-               struct {
-                       union {
-                               __le32 data;
-                               struct {
-                                       __le16 pkt_info; /*RSS type, Pkt type*/
-                                       /* Split Header, header buffer len */
-                                       __le16 hdr_info;
-                               } hs_rss;
-                       } lo_dword;
-                       union {
-                               __le32 rss; /* RSS Hash */
-                               struct {
-                                       __le16 ip_id; /* IP id */
-                                       __le16 csum; /* Packet Checksum */
-                               } csum_ip;
-                       } hi_dword;
-               } lower;
-               struct {
-                       __le32 status_error; /* ext status/error */
-                       __le16 length; /* Packet length */
-                       __le16 vlan; /* VLAN tag */
-               } upper;
-       } wb;  /* writeback */
-};
 
 #define E1000_RXDADV_RSSTYPE_MASK      0x0000000F
 #define E1000_RXDADV_RSSTYPE_SHIFT     12
@@ -228,7 +164,6 @@ union e1000_adv_rx_desc {
 #define E1000_RXDADV_SPLITHEADER_EN    0x00001000
 #define E1000_RXDADV_SPH               0x8000
 #define E1000_RXDADV_STAT_TS           0x10000 /* Pkt was time stamped */
-#define E1000_RXDADV_STAT_TSIP         0x08000 /* timestamp in packet */
 #define E1000_RXDADV_ERR_HBO           0x00800000
 
 /* RSS Hash results */
@@ -277,20 +212,6 @@ union e1000_adv_rx_desc {
 #define E1000_RXDADV_IPSEC_ERROR_INVALID_LENGTH                0x10000000
 #define E1000_RXDADV_IPSEC_ERROR_AUTHENTICATION_FAILED 0x18000000
 
-/* Transmit Descriptor - Advanced */
-union e1000_adv_tx_desc {
-       struct {
-               __le64 buffer_addr;    /* Address of descriptor's data buf */
-               __le32 cmd_type_len;
-               __le32 olinfo_status;
-       } read;
-       struct {
-               __le64 rsvd;       /* Reserved */
-               __le32 nxtseq_seed;
-               __le32 status;
-       } wb;
-};
-
 /* Adv Transmit Descriptor Config Masks */
 #define E1000_ADVTXD_DTYP_CTXT 0x00200000 /* Advanced Context Descriptor */
 #define E1000_ADVTXD_DTYP_DATA 0x00300000 /* Advanced Data Descriptor */
@@ -313,33 +234,6 @@ union e1000_adv_tx_desc {
 #define E1000_ADVTXD_POPTS_IPSEC       0x00000400 /* IPSec offload request */
 #define E1000_ADVTXD_PAYLEN_SHIFT      14 /* Adv desc PAYLEN shift */
 
-/* Context descriptors */
-struct e1000_adv_tx_context_desc {
-       __le32 vlan_macip_lens;
-       __le32 seqnum_seed;
-       __le32 type_tucmd_mlhl;
-       __le32 mss_l4len_idx;
-};
-
-#define E1000_ADVTXD_MACLEN_SHIFT      9  /* Adv ctxt desc mac len shift */
-#define E1000_ADVTXD_VLAN_SHIFT                16  /* Adv ctxt vlan tag shift */
-#define E1000_ADVTXD_TUCMD_IPV4                0x00000400  /* IP Packet Type: 1=IPv4 */
-#define E1000_ADVTXD_TUCMD_IPV6                0x00000000  /* IP Packet Type: 0=IPv6 */
-#define E1000_ADVTXD_TUCMD_L4T_UDP     0x00000000  /* L4 Packet TYPE of UDP */
-#define E1000_ADVTXD_TUCMD_L4T_TCP     0x00000800  /* L4 Packet TYPE of TCP */
-#define E1000_ADVTXD_TUCMD_L4T_SCTP    0x00001000  /* L4 Packet TYPE of SCTP */
-#define E1000_ADVTXD_TUCMD_IPSEC_TYPE_ESP      0x00002000 /* IPSec Type ESP */
-/* IPSec Encrypt Enable for ESP */
-#define E1000_ADVTXD_TUCMD_IPSEC_ENCRYPT_EN    0x00004000
-/* Req requires Markers and CRC */
-#define E1000_ADVTXD_TUCMD_MKRREQ      0x00002000
-#define E1000_ADVTXD_L4LEN_SHIFT       8  /* Adv ctxt L4LEN shift */
-#define E1000_ADVTXD_MSS_SHIFT         16  /* Adv ctxt MSS shift */
-/* Adv ctxt IPSec SA IDX mask */
-#define E1000_ADVTXD_IPSEC_SA_INDEX_MASK       0x000000FF
-/* Adv ctxt IPSec ESP len mask */
-#define E1000_ADVTXD_IPSEC_ESP_LEN_MASK                0x000000FF
-
 /* Additional Transmit Descriptor Control definitions */
 #define E1000_TXDCTL_QUEUE_ENABLE      0x02000000 /* Ena specific Tx Queue */
 #define E1000_TXDCTL_SWFLSH            0x04000000 /* Tx Desc. wbk flushing */
@@ -379,11 +273,6 @@ struct e1000_adv_tx_context_desc {
 #define E1000_IMS_LSECPNS      E1000_ICR_LSECPNS /* PN threshold - server */
 #define E1000_ICS_LSECPNS      E1000_ICR_LSECPNS /* PN threshold - server */
 
-/* ETQF register bit definitions */
-#define E1000_ETQF_FILTER_ENABLE       (1 << 26)
-#define E1000_ETQF_IMM_INT             (1 << 29)
-#define E1000_ETQF_1588                        (1 << 30)
-#define E1000_ETQF_QUEUE_ENABLE                (1 << 31)
 /*
  * ETQF filter list: one static filter per filter consumer. This is
  *                   to avoid filter collisions later. Add new filters
@@ -394,10 +283,6 @@ struct e1000_adv_tx_context_desc {
  */
 #define E1000_ETQF_FILTER_EAPOL                0
 
-#define E1000_FTQF_VF_BP               0x00008000
-#define E1000_FTQF_1588_TIME_STAMP     0x08000000
-#define E1000_FTQF_MASK                        0xF0000000
-#define E1000_FTQF_MASK_PROTO_BP       0x10000000
 #define E1000_FTQF_MASK_SOURCE_ADDR_BP 0x20000000
 #define E1000_FTQF_MASK_DEST_ADDR_BP   0x40000000
 #define E1000_FTQF_MASK_SOURCE_PORT_BP 0x80000000
@@ -410,7 +295,7 @@ struct e1000_adv_tx_context_desc {
 #define E1000_DTXSWC_LLE_MASK          0x00FF0000 /* Per VF Local LB enables */
 #define E1000_DTXSWC_VLAN_SPOOF_SHIFT  8
 #define E1000_DTXSWC_LLE_SHIFT         16
-#define E1000_DTXSWC_VMDQ_LOOPBACK_EN  (1 << 31)  /* global VF LB enable */
+#define E1000_DTXSWC_VMDQ_LOOPBACK_EN  (1U << 31)  /* global VF LB enable */
 
 /* Easy defines for setting default pool, would normally be left a zero */
 #define E1000_VT_CTL_DEFAULT_POOL_SHIFT        7
@@ -473,13 +358,14 @@ struct e1000_adv_tx_context_desc {
 
 #define ALL_QUEUES             0xFFFF
 
+s32 e1000_reset_init_script_82575(struct e1000_hw *hw);
+s32 e1000_init_nvm_params_82575(struct e1000_hw *hw);
+
 /* Rx packet buffer size defines */
 #define E1000_RXPBS_SIZE_MASK_82576    0x0000007F
 void e1000_vmdq_set_loopback_pf(struct e1000_hw *hw, bool enable);
 void e1000_vmdq_set_anti_spoofing_pf(struct e1000_hw *hw, bool enable, int pf);
 void e1000_vmdq_set_replication_pf(struct e1000_hw *hw, bool enable);
-s32 e1000_init_nvm_params_82575(struct e1000_hw *hw);
-s32  e1000_init_hw_82575(struct e1000_hw *hw);
 
 enum e1000_promisc_type {
        e1000_promisc_disabled = 0,   /* all promisc modes disabled */
@@ -492,12 +378,14 @@ enum e1000_promisc_type {
 void e1000_vfta_set_vf(struct e1000_hw *, u16, bool);
 void e1000_rlpml_set_vf(struct e1000_hw *, u16);
 s32 e1000_promisc_set_vf(struct e1000_hw *, enum e1000_promisc_type type);
+void e1000_write_vfta_i350(struct e1000_hw *hw, u32 offset, u32 value);
 u16 e1000_rxpbs_adjust_82580(u32 data);
 s32 e1000_read_emi_reg(struct e1000_hw *hw, u16 addr, u16 *data);
-s32 e1000_set_eee_i350(struct e1000_hw *);
-s32 e1000_set_eee_i354(struct e1000_hw *);
+s32 e1000_set_eee_i350(struct e1000_hw *hw, bool adv1G, bool adv100M);
+s32 e1000_set_eee_i354(struct e1000_hw *hw, bool adv1G, bool adv100M);
 s32 e1000_get_eee_status_i354(struct e1000_hw *, bool *);
 s32 e1000_initialize_M88E1512_phy(struct e1000_hw *hw);
+s32 e1000_initialize_M88E1543_phy(struct e1000_hw *hw);
 
 /* I2C SDA and SCL timing parameters for standard mode */
 #define E1000_I2C_T_HD_STA     4