devices/e1000e/defines-3.2-ethercat.h
author Patrick Bruenn <p.bruenn@beckhoff.com>
Tue, 12 Apr 2016 11:17:36 +0200
branchstable-1.5
changeset 2654 b3f6b3e5ef29
parent 2407 35223d2e6e72
permissions -rw-r--r--
devices/ccat: revert "limit rx processing to one frame per poll"

revert "limit rx processing to one frame per poll", which caused etherlab
frame timeouts in setups with more than one frame per cycle.
2407
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     1
/*******************************************************************************
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     3
  Intel PRO/1000 Linux driver
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     4
  Copyright(c) 1999 - 2011 Intel Corporation.
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     5
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     6
  This program is free software; you can redistribute it and/or modify it
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     7
  under the terms and conditions of the GNU General Public License,
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     8
  version 2, as published by the Free Software Foundation.
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     9
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    10
  This program is distributed in the hope it will be useful, but WITHOUT
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    11
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    12
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    13
  more details.
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    14
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    15
  You should have received a copy of the GNU General Public License along with
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    16
  this program; if not, write to the Free Software Foundation, Inc.,
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    17
  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    18
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    19
  The full GNU General Public License is included in this distribution in
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    20
  the file called "COPYING".
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    21
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    22
  Contact Information:
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    23
  Linux NICS <linux.nics@intel.com>
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    24
  e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    25
  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    26
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    27
*******************************************************************************/
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    28
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    29
#ifndef _E1000_DEFINES_H_
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    30
#define _E1000_DEFINES_H_
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    31
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    32
#define E1000_TXD_POPTS_IXSM 0x01       /* Insert IP checksum */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    33
#define E1000_TXD_POPTS_TXSM 0x02       /* Insert TCP/UDP checksum */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    34
#define E1000_TXD_CMD_EOP    0x01000000 /* End of Packet */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    35
#define E1000_TXD_CMD_IFCS   0x02000000 /* Insert FCS (Ethernet CRC) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    36
#define E1000_TXD_CMD_IC     0x04000000 /* Insert Checksum */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    37
#define E1000_TXD_CMD_RS     0x08000000 /* Report Status */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    38
#define E1000_TXD_CMD_RPS    0x10000000 /* Report Packet Sent */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    39
#define E1000_TXD_CMD_DEXT   0x20000000 /* Descriptor extension (0 = legacy) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    40
#define E1000_TXD_CMD_VLE    0x40000000 /* Add VLAN tag */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    41
#define E1000_TXD_CMD_IDE    0x80000000 /* Enable Tidv register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    42
#define E1000_TXD_STAT_DD    0x00000001 /* Descriptor Done */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    43
#define E1000_TXD_STAT_EC    0x00000002 /* Excess Collisions */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    44
#define E1000_TXD_STAT_LC    0x00000004 /* Late Collisions */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    45
#define E1000_TXD_STAT_TU    0x00000008 /* Transmit underrun */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    46
#define E1000_TXD_CMD_TCP    0x01000000 /* TCP packet */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    47
#define E1000_TXD_CMD_IP     0x02000000 /* IP packet */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    48
#define E1000_TXD_CMD_TSE    0x04000000 /* TCP Seg enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    49
#define E1000_TXD_STAT_TC    0x00000004 /* Tx Underrun */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    50
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    51
/* Number of Transmit and Receive Descriptors must be a multiple of 8 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    52
#define REQ_TX_DESCRIPTOR_MULTIPLE  8
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    53
#define REQ_RX_DESCRIPTOR_MULTIPLE  8
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    54
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    55
/* Definitions for power management and wakeup registers */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    56
/* Wake Up Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    57
#define E1000_WUC_APME       0x00000001 /* APM Enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    58
#define E1000_WUC_PME_EN     0x00000002 /* PME Enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    59
#define E1000_WUC_PHY_WAKE   0x00000100 /* if PHY supports wakeup */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    60
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    61
/* Wake Up Filter Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    62
#define E1000_WUFC_LNKC 0x00000001 /* Link Status Change Wakeup Enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    63
#define E1000_WUFC_MAG  0x00000002 /* Magic Packet Wakeup Enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    64
#define E1000_WUFC_EX   0x00000004 /* Directed Exact Wakeup Enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    65
#define E1000_WUFC_MC   0x00000008 /* Directed Multicast Wakeup Enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    66
#define E1000_WUFC_BC   0x00000010 /* Broadcast Wakeup Enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    67
#define E1000_WUFC_ARP  0x00000020 /* ARP Request Packet Wakeup Enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    68
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    69
/* Wake Up Status */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    70
#define E1000_WUS_LNKC         E1000_WUFC_LNKC
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    71
#define E1000_WUS_MAG          E1000_WUFC_MAG
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    72
#define E1000_WUS_EX           E1000_WUFC_EX
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    73
#define E1000_WUS_MC           E1000_WUFC_MC
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    74
#define E1000_WUS_BC           E1000_WUFC_BC
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    75
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    76
/* Extended Device Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    77
#define E1000_CTRL_EXT_SDP3_DATA 0x00000080 /* Value of SW Definable Pin 3 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    78
#define E1000_CTRL_EXT_EE_RST    0x00002000 /* Reinitialize from EEPROM */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    79
#define E1000_CTRL_EXT_SPD_BYPS  0x00008000 /* Speed Select Bypass */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    80
#define E1000_CTRL_EXT_RO_DIS    0x00020000 /* Relaxed Ordering disable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    81
#define E1000_CTRL_EXT_DMA_DYN_CLK_EN 0x00080000 /* DMA Dynamic Clock Gating */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    82
#define E1000_CTRL_EXT_LINK_MODE_MASK 0x00C00000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    83
#define E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES  0x00C00000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    84
#define E1000_CTRL_EXT_EIAME          0x01000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    85
#define E1000_CTRL_EXT_DRV_LOAD       0x10000000 /* Driver loaded bit for FW */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    86
#define E1000_CTRL_EXT_IAME           0x08000000 /* Interrupt acknowledge Auto-mask */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    87
#define E1000_CTRL_EXT_INT_TIMER_CLR  0x20000000 /* Clear Interrupt timers after IMS clear */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    88
#define E1000_CTRL_EXT_PBA_CLR        0x80000000 /* PBA Clear */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    89
#define E1000_CTRL_EXT_LSECCK         0x00001000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    90
#define E1000_CTRL_EXT_PHYPDEN        0x00100000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    91
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    92
/* Receive Descriptor bit definitions */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    93
#define E1000_RXD_STAT_DD       0x01    /* Descriptor Done */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    94
#define E1000_RXD_STAT_EOP      0x02    /* End of Packet */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    95
#define E1000_RXD_STAT_IXSM     0x04    /* Ignore checksum */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    96
#define E1000_RXD_STAT_VP       0x08    /* IEEE VLAN Packet */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    97
#define E1000_RXD_STAT_UDPCS    0x10    /* UDP xsum calculated */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    98
#define E1000_RXD_STAT_TCPCS    0x20    /* TCP xsum calculated */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    99
#define E1000_RXD_ERR_CE        0x01    /* CRC Error */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   100
#define E1000_RXD_ERR_SE        0x02    /* Symbol Error */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   101
#define E1000_RXD_ERR_SEQ       0x04    /* Sequence Error */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   102
#define E1000_RXD_ERR_CXE       0x10    /* Carrier Extension Error */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   103
#define E1000_RXD_ERR_TCPE      0x20    /* TCP/UDP Checksum Error */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   104
#define E1000_RXD_ERR_RXE       0x80    /* Rx Data Error */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   105
#define E1000_RXD_SPC_VLAN_MASK 0x0FFF  /* VLAN ID is in lower 12 bits */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   106
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   107
#define E1000_RXDEXT_STATERR_CE    0x01000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   108
#define E1000_RXDEXT_STATERR_SE    0x02000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   109
#define E1000_RXDEXT_STATERR_SEQ   0x04000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   110
#define E1000_RXDEXT_STATERR_CXE   0x10000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   111
#define E1000_RXDEXT_STATERR_RXE   0x80000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   112
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   113
/* mask to determine if packets should be dropped due to frame errors */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   114
#define E1000_RXD_ERR_FRAME_ERR_MASK ( \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   115
    E1000_RXD_ERR_CE  |                \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   116
    E1000_RXD_ERR_SE  |                \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   117
    E1000_RXD_ERR_SEQ |                \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   118
    E1000_RXD_ERR_CXE |                \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   119
    E1000_RXD_ERR_RXE)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   120
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   121
/* Same mask, but for extended and packet split descriptors */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   122
#define E1000_RXDEXT_ERR_FRAME_ERR_MASK ( \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   123
    E1000_RXDEXT_STATERR_CE  |            \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   124
    E1000_RXDEXT_STATERR_SE  |            \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   125
    E1000_RXDEXT_STATERR_SEQ |            \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   126
    E1000_RXDEXT_STATERR_CXE |            \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   127
    E1000_RXDEXT_STATERR_RXE)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   128
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   129
#define E1000_RXDPS_HDRSTAT_HDRSP              0x00008000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   130
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   131
/* Management Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   132
#define E1000_MANC_SMBUS_EN      0x00000001 /* SMBus Enabled - RO */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   133
#define E1000_MANC_ASF_EN        0x00000002 /* ASF Enabled - RO */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   134
#define E1000_MANC_ARP_EN        0x00002000 /* Enable ARP Request Filtering */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   135
#define E1000_MANC_RCV_TCO_EN    0x00020000 /* Receive TCO Packets Enabled */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   136
#define E1000_MANC_BLK_PHY_RST_ON_IDE   0x00040000 /* Block phy resets */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   137
/* Enable MAC address filtering */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   138
#define E1000_MANC_EN_MAC_ADDR_FILTER   0x00100000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   139
/* Enable MNG packets to host memory */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   140
#define E1000_MANC_EN_MNG2HOST   0x00200000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   141
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   142
#define E1000_MANC2H_PORT_623    0x00000020 /* Port 0x26f */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   143
#define E1000_MANC2H_PORT_664    0x00000040 /* Port 0x298 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   144
#define E1000_MDEF_PORT_623      0x00000800 /* Port 0x26f */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   145
#define E1000_MDEF_PORT_664      0x00000400 /* Port 0x298 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   146
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   147
/* Receive Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   148
#define E1000_RCTL_EN             0x00000002    /* enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   149
#define E1000_RCTL_SBP            0x00000004    /* store bad packet */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   150
#define E1000_RCTL_UPE            0x00000008    /* unicast promiscuous enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   151
#define E1000_RCTL_MPE            0x00000010    /* multicast promiscuous enab */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   152
#define E1000_RCTL_LPE            0x00000020    /* long packet enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   153
#define E1000_RCTL_LBM_NO         0x00000000    /* no loopback mode */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   154
#define E1000_RCTL_LBM_MAC        0x00000040    /* MAC loopback mode */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   155
#define E1000_RCTL_LBM_TCVR       0x000000C0    /* tcvr loopback mode */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   156
#define E1000_RCTL_DTYP_PS        0x00000400    /* Packet Split descriptor */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   157
#define E1000_RCTL_RDMTS_HALF     0x00000000    /* Rx desc min threshold size */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   158
#define E1000_RCTL_MO_SHIFT       12            /* multicast offset shift */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   159
#define E1000_RCTL_MO_3           0x00003000    /* multicast offset 15:4 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   160
#define E1000_RCTL_BAM            0x00008000    /* broadcast enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   161
/* these buffer sizes are valid if E1000_RCTL_BSEX is 0 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   162
#define E1000_RCTL_SZ_2048        0x00000000    /* Rx buffer size 2048 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   163
#define E1000_RCTL_SZ_1024        0x00010000    /* Rx buffer size 1024 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   164
#define E1000_RCTL_SZ_512         0x00020000    /* Rx buffer size 512 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   165
#define E1000_RCTL_SZ_256         0x00030000    /* Rx buffer size 256 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   166
/* these buffer sizes are valid if E1000_RCTL_BSEX is 1 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   167
#define E1000_RCTL_SZ_16384       0x00010000    /* Rx buffer size 16384 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   168
#define E1000_RCTL_SZ_8192        0x00020000    /* Rx buffer size 8192 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   169
#define E1000_RCTL_SZ_4096        0x00030000    /* Rx buffer size 4096 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   170
#define E1000_RCTL_VFE            0x00040000    /* vlan filter enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   171
#define E1000_RCTL_CFIEN          0x00080000    /* canonical form enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   172
#define E1000_RCTL_CFI            0x00100000    /* canonical form indicator */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   173
#define E1000_RCTL_PMCF           0x00800000    /* pass MAC control frames */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   174
#define E1000_RCTL_BSEX           0x02000000    /* Buffer size extension */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   175
#define E1000_RCTL_SECRC          0x04000000    /* Strip Ethernet CRC */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   176
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   177
/*
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   178
 * Use byte values for the following shift parameters
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   179
 * Usage:
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   180
 *     psrctl |= (((ROUNDUP(value0, 128) >> E1000_PSRCTL_BSIZE0_SHIFT) &
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   181
 *                  E1000_PSRCTL_BSIZE0_MASK) |
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   182
 *                ((ROUNDUP(value1, 1024) >> E1000_PSRCTL_BSIZE1_SHIFT) &
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   183
 *                  E1000_PSRCTL_BSIZE1_MASK) |
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   184
 *                ((ROUNDUP(value2, 1024) << E1000_PSRCTL_BSIZE2_SHIFT) &
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   185
 *                  E1000_PSRCTL_BSIZE2_MASK) |
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   186
 *                ((ROUNDUP(value3, 1024) << E1000_PSRCTL_BSIZE3_SHIFT) |;
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   187
 *                  E1000_PSRCTL_BSIZE3_MASK))
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   188
 * where value0 = [128..16256],  default=256
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   189
 *       value1 = [1024..64512], default=4096
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   190
 *       value2 = [0..64512],    default=4096
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   191
 *       value3 = [0..64512],    default=0
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   192
 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   193
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   194
#define E1000_PSRCTL_BSIZE0_MASK   0x0000007F
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   195
#define E1000_PSRCTL_BSIZE1_MASK   0x00003F00
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   196
#define E1000_PSRCTL_BSIZE2_MASK   0x003F0000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   197
#define E1000_PSRCTL_BSIZE3_MASK   0x3F000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   198
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   199
#define E1000_PSRCTL_BSIZE0_SHIFT  7            /* Shift _right_ 7 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   200
#define E1000_PSRCTL_BSIZE1_SHIFT  2            /* Shift _right_ 2 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   201
#define E1000_PSRCTL_BSIZE2_SHIFT  6            /* Shift _left_ 6 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   202
#define E1000_PSRCTL_BSIZE3_SHIFT 14            /* Shift _left_ 14 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   203
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   204
/* SWFW_SYNC Definitions */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   205
#define E1000_SWFW_EEP_SM   0x1
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   206
#define E1000_SWFW_PHY0_SM  0x2
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   207
#define E1000_SWFW_PHY1_SM  0x4
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   208
#define E1000_SWFW_CSR_SM   0x8
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   209
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   210
/* Device Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   211
#define E1000_CTRL_FD       0x00000001  /* Full duplex.0=half; 1=full */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   212
#define E1000_CTRL_GIO_MASTER_DISABLE 0x00000004 /*Blocks new Master requests */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   213
#define E1000_CTRL_LRST     0x00000008  /* Link reset. 0=normal,1=reset */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   214
#define E1000_CTRL_ASDE     0x00000020  /* Auto-speed detect enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   215
#define E1000_CTRL_SLU      0x00000040  /* Set link up (Force Link) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   216
#define E1000_CTRL_ILOS     0x00000080  /* Invert Loss-Of Signal */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   217
#define E1000_CTRL_SPD_SEL  0x00000300  /* Speed Select Mask */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   218
#define E1000_CTRL_SPD_10   0x00000000  /* Force 10Mb */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   219
#define E1000_CTRL_SPD_100  0x00000100  /* Force 100Mb */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   220
#define E1000_CTRL_SPD_1000 0x00000200  /* Force 1Gb */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   221
#define E1000_CTRL_FRCSPD   0x00000800  /* Force Speed */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   222
#define E1000_CTRL_FRCDPX   0x00001000  /* Force Duplex */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   223
#define E1000_CTRL_LANPHYPC_OVERRIDE 0x00010000 /* SW control of LANPHYPC */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   224
#define E1000_CTRL_LANPHYPC_VALUE    0x00020000 /* SW value of LANPHYPC */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   225
#define E1000_CTRL_SWDPIN0  0x00040000  /* SWDPIN 0 value */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   226
#define E1000_CTRL_SWDPIN1  0x00080000  /* SWDPIN 1 value */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   227
#define E1000_CTRL_SWDPIO0  0x00400000  /* SWDPIN 0 Input or output */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   228
#define E1000_CTRL_RST      0x04000000  /* Global reset */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   229
#define E1000_CTRL_RFCE     0x08000000  /* Receive Flow Control enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   230
#define E1000_CTRL_TFCE     0x10000000  /* Transmit flow control enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   231
#define E1000_CTRL_VME      0x40000000  /* IEEE VLAN mode enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   232
#define E1000_CTRL_PHY_RST  0x80000000  /* PHY Reset */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   233
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   234
/*
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   235
 * Bit definitions for the Management Data IO (MDIO) and Management Data
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   236
 * Clock (MDC) pins in the Device Control Register.
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   237
 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   238
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   239
/* Device Status */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   240
#define E1000_STATUS_FD         0x00000001      /* Full duplex.0=half,1=full */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   241
#define E1000_STATUS_LU         0x00000002      /* Link up.0=no,1=link */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   242
#define E1000_STATUS_FUNC_MASK  0x0000000C      /* PCI Function Mask */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   243
#define E1000_STATUS_FUNC_SHIFT 2
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   244
#define E1000_STATUS_FUNC_1     0x00000004      /* Function 1 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   245
#define E1000_STATUS_TXOFF      0x00000010      /* transmission paused */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   246
#define E1000_STATUS_SPEED_10   0x00000000      /* Speed 10Mb/s */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   247
#define E1000_STATUS_SPEED_100  0x00000040      /* Speed 100Mb/s */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   248
#define E1000_STATUS_SPEED_1000 0x00000080      /* Speed 1000Mb/s */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   249
#define E1000_STATUS_LAN_INIT_DONE 0x00000200   /* Lan Init Completion by NVM */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   250
#define E1000_STATUS_PHYRA      0x00000400      /* PHY Reset Asserted */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   251
#define E1000_STATUS_GIO_MASTER_ENABLE 0x00080000 /* Status of Master requests. */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   252
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   253
/* Constants used to interpret the masked PCI-X bus speed. */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   254
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   255
#define HALF_DUPLEX 1
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   256
#define FULL_DUPLEX 2
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   257
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   258
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   259
#define ADVERTISE_10_HALF                 0x0001
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   260
#define ADVERTISE_10_FULL                 0x0002
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   261
#define ADVERTISE_100_HALF                0x0004
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   262
#define ADVERTISE_100_FULL                0x0008
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   263
#define ADVERTISE_1000_HALF               0x0010 /* Not used, just FYI */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   264
#define ADVERTISE_1000_FULL               0x0020
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   265
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   266
/* 1000/H is not supported, nor spec-compliant. */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   267
#define E1000_ALL_SPEED_DUPLEX ( ADVERTISE_10_HALF |   ADVERTISE_10_FULL | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   268
				ADVERTISE_100_HALF |  ADVERTISE_100_FULL | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   269
						     ADVERTISE_1000_FULL)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   270
#define E1000_ALL_NOT_GIG      ( ADVERTISE_10_HALF |   ADVERTISE_10_FULL | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   271
				ADVERTISE_100_HALF |  ADVERTISE_100_FULL)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   272
#define E1000_ALL_100_SPEED    (ADVERTISE_100_HALF |  ADVERTISE_100_FULL)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   273
#define E1000_ALL_10_SPEED      (ADVERTISE_10_HALF |   ADVERTISE_10_FULL)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   274
#define E1000_ALL_HALF_DUPLEX   (ADVERTISE_10_HALF |  ADVERTISE_100_HALF)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   275
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   276
#define AUTONEG_ADVERTISE_SPEED_DEFAULT   E1000_ALL_SPEED_DUPLEX
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   277
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   278
/* LED Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   279
#define E1000_PHY_LED0_MODE_MASK          0x00000007
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   280
#define E1000_PHY_LED0_IVRT               0x00000008
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   281
#define E1000_PHY_LED0_MASK               0x0000001F
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   282
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   283
#define E1000_LEDCTL_LED0_MODE_MASK       0x0000000F
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   284
#define E1000_LEDCTL_LED0_MODE_SHIFT      0
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   285
#define E1000_LEDCTL_LED0_IVRT            0x00000040
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   286
#define E1000_LEDCTL_LED0_BLINK           0x00000080
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   287
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   288
#define E1000_LEDCTL_MODE_LINK_UP       0x2
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   289
#define E1000_LEDCTL_MODE_LED_ON        0xE
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   290
#define E1000_LEDCTL_MODE_LED_OFF       0xF
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   291
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   292
/* Transmit Descriptor bit definitions */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   293
#define E1000_TXD_DTYP_D     0x00100000 /* Data Descriptor */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   294
#define E1000_TXD_POPTS_IXSM 0x01       /* Insert IP checksum */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   295
#define E1000_TXD_POPTS_TXSM 0x02       /* Insert TCP/UDP checksum */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   296
#define E1000_TXD_CMD_EOP    0x01000000 /* End of Packet */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   297
#define E1000_TXD_CMD_IFCS   0x02000000 /* Insert FCS (Ethernet CRC) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   298
#define E1000_TXD_CMD_IC     0x04000000 /* Insert Checksum */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   299
#define E1000_TXD_CMD_RS     0x08000000 /* Report Status */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   300
#define E1000_TXD_CMD_RPS    0x10000000 /* Report Packet Sent */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   301
#define E1000_TXD_CMD_DEXT   0x20000000 /* Descriptor extension (0 = legacy) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   302
#define E1000_TXD_CMD_VLE    0x40000000 /* Add VLAN tag */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   303
#define E1000_TXD_CMD_IDE    0x80000000 /* Enable Tidv register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   304
#define E1000_TXD_STAT_DD    0x00000001 /* Descriptor Done */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   305
#define E1000_TXD_STAT_EC    0x00000002 /* Excess Collisions */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   306
#define E1000_TXD_STAT_LC    0x00000004 /* Late Collisions */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   307
#define E1000_TXD_STAT_TU    0x00000008 /* Transmit underrun */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   308
#define E1000_TXD_CMD_TCP    0x01000000 /* TCP packet */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   309
#define E1000_TXD_CMD_IP     0x02000000 /* IP packet */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   310
#define E1000_TXD_CMD_TSE    0x04000000 /* TCP Seg enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   311
#define E1000_TXD_STAT_TC    0x00000004 /* Tx Underrun */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   312
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   313
/* Transmit Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   314
#define E1000_TCTL_EN     0x00000002    /* enable Tx */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   315
#define E1000_TCTL_PSP    0x00000008    /* pad short packets */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   316
#define E1000_TCTL_CT     0x00000ff0    /* collision threshold */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   317
#define E1000_TCTL_COLD   0x003ff000    /* collision distance */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   318
#define E1000_TCTL_RTLC   0x01000000    /* Re-transmit on late collision */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   319
#define E1000_TCTL_MULR   0x10000000    /* Multiple request support */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   320
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   321
/* Transmit Arbitration Count */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   322
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   323
/* SerDes Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   324
#define E1000_SCTL_DISABLE_SERDES_LOOPBACK 0x0400
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   325
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   326
/* Receive Checksum Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   327
#define E1000_RXCSUM_TUOFL     0x00000200   /* TCP / UDP checksum offload */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   328
#define E1000_RXCSUM_IPPCSE    0x00001000   /* IP payload checksum enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   329
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   330
/* Header split receive */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   331
#define E1000_RFCTL_NFSW_DIS            0x00000040
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   332
#define E1000_RFCTL_NFSR_DIS            0x00000080
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   333
#define E1000_RFCTL_ACK_DIS             0x00001000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   334
#define E1000_RFCTL_EXTEN               0x00008000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   335
#define E1000_RFCTL_IPV6_EX_DIS         0x00010000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   336
#define E1000_RFCTL_NEW_IPV6_EXT_DIS    0x00020000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   337
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   338
/* Collision related configuration parameters */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   339
#define E1000_COLLISION_THRESHOLD       15
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   340
#define E1000_CT_SHIFT                  4
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   341
#define E1000_COLLISION_DISTANCE        63
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   342
#define E1000_COLD_SHIFT                12
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   343
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   344
/* Default values for the transmit IPG register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   345
#define DEFAULT_82543_TIPG_IPGT_COPPER 8
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   346
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   347
#define E1000_TIPG_IPGT_MASK  0x000003FF
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   348
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   349
#define DEFAULT_82543_TIPG_IPGR1 8
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   350
#define E1000_TIPG_IPGR1_SHIFT  10
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   351
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   352
#define DEFAULT_82543_TIPG_IPGR2 6
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   353
#define DEFAULT_80003ES2LAN_TIPG_IPGR2 7
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   354
#define E1000_TIPG_IPGR2_SHIFT  20
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   355
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   356
#define MAX_JUMBO_FRAME_SIZE    0x3F00
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   357
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   358
/* Extended Configuration Control and Size */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   359
#define E1000_EXTCNF_CTRL_MDIO_SW_OWNERSHIP      0x00000020
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   360
#define E1000_EXTCNF_CTRL_LCD_WRITE_ENABLE       0x00000001
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   361
#define E1000_EXTCNF_CTRL_OEM_WRITE_ENABLE       0x00000008
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   362
#define E1000_EXTCNF_CTRL_SWFLAG                 0x00000020
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   363
#define E1000_EXTCNF_CTRL_GATE_PHY_CFG           0x00000080
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   364
#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_MASK   0x00FF0000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   365
#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_SHIFT          16
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   366
#define E1000_EXTCNF_CTRL_EXT_CNF_POINTER_MASK   0x0FFF0000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   367
#define E1000_EXTCNF_CTRL_EXT_CNF_POINTER_SHIFT          16
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   368
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   369
#define E1000_PHY_CTRL_D0A_LPLU           0x00000002
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   370
#define E1000_PHY_CTRL_NOND0A_LPLU        0x00000004
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   371
#define E1000_PHY_CTRL_NOND0A_GBE_DISABLE 0x00000008
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   372
#define E1000_PHY_CTRL_GBE_DISABLE        0x00000040
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   373
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   374
#define E1000_KABGTXD_BGSQLBIAS           0x00050000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   375
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   376
/* PBA constants */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   377
#define E1000_PBA_8K  0x0008    /* 8KB */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   378
#define E1000_PBA_16K 0x0010    /* 16KB */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   379
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   380
#define E1000_PBS_16K E1000_PBA_16K
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   381
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   382
#define IFS_MAX       80
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   383
#define IFS_MIN       40
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   384
#define IFS_RATIO     4
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   385
#define IFS_STEP      10
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   386
#define MIN_NUM_XMITS 1000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   387
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   388
/* SW Semaphore Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   389
#define E1000_SWSM_SMBI         0x00000001 /* Driver Semaphore bit */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   390
#define E1000_SWSM_SWESMBI      0x00000002 /* FW Semaphore bit */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   391
#define E1000_SWSM_DRV_LOAD     0x00000008 /* Driver Loaded Bit */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   392
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   393
#define E1000_SWSM2_LOCK        0x00000002 /* Secondary driver semaphore bit */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   394
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   395
/* Interrupt Cause Read */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   396
#define E1000_ICR_TXDW          0x00000001 /* Transmit desc written back */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   397
#define E1000_ICR_LSC           0x00000004 /* Link Status Change */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   398
#define E1000_ICR_RXSEQ         0x00000008 /* Rx sequence error */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   399
#define E1000_ICR_RXDMT0        0x00000010 /* Rx desc min. threshold (0) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   400
#define E1000_ICR_RXT0          0x00000080 /* Rx timer intr (ring 0) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   401
#define E1000_ICR_INT_ASSERTED  0x80000000 /* If this bit asserted, the driver should claim the interrupt */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   402
#define E1000_ICR_RXQ0          0x00100000 /* Rx Queue 0 Interrupt */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   403
#define E1000_ICR_RXQ1          0x00200000 /* Rx Queue 1 Interrupt */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   404
#define E1000_ICR_TXQ0          0x00400000 /* Tx Queue 0 Interrupt */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   405
#define E1000_ICR_TXQ1          0x00800000 /* Tx Queue 1 Interrupt */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   406
#define E1000_ICR_OTHER         0x01000000 /* Other Interrupts */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   407
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   408
/* PBA ECC Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   409
#define E1000_PBA_ECC_COUNTER_MASK  0xFFF00000 /* ECC counter mask */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   410
#define E1000_PBA_ECC_COUNTER_SHIFT 20         /* ECC counter shift value */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   411
#define E1000_PBA_ECC_CORR_EN       0x00000001 /* ECC correction enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   412
#define E1000_PBA_ECC_STAT_CLR      0x00000002 /* Clear ECC error counter */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   413
#define E1000_PBA_ECC_INT_EN        0x00000004 /* Enable ICR bit 5 for ECC */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   414
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   415
/*
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   416
 * This defines the bits that are set in the Interrupt Mask
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   417
 * Set/Read Register.  Each bit is documented below:
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   418
 *   o RXT0   = Receiver Timer Interrupt (ring 0)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   419
 *   o TXDW   = Transmit Descriptor Written Back
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   420
 *   o RXDMT0 = Receive Descriptor Minimum Threshold hit (ring 0)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   421
 *   o RXSEQ  = Receive Sequence Error
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   422
 *   o LSC    = Link Status Change
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   423
 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   424
#define IMS_ENABLE_MASK ( \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   425
    E1000_IMS_RXT0   |    \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   426
    E1000_IMS_TXDW   |    \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   427
    E1000_IMS_RXDMT0 |    \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   428
    E1000_IMS_RXSEQ  |    \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   429
    E1000_IMS_LSC)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   430
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   431
/* Interrupt Mask Set */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   432
#define E1000_IMS_TXDW      E1000_ICR_TXDW      /* Transmit desc written back */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   433
#define E1000_IMS_LSC       E1000_ICR_LSC       /* Link Status Change */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   434
#define E1000_IMS_RXSEQ     E1000_ICR_RXSEQ     /* Rx sequence error */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   435
#define E1000_IMS_RXDMT0    E1000_ICR_RXDMT0    /* Rx desc min. threshold */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   436
#define E1000_IMS_RXT0      E1000_ICR_RXT0      /* Rx timer intr */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   437
#define E1000_IMS_RXQ0      E1000_ICR_RXQ0      /* Rx Queue 0 Interrupt */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   438
#define E1000_IMS_RXQ1      E1000_ICR_RXQ1      /* Rx Queue 1 Interrupt */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   439
#define E1000_IMS_TXQ0      E1000_ICR_TXQ0      /* Tx Queue 0 Interrupt */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   440
#define E1000_IMS_TXQ1      E1000_ICR_TXQ1      /* Tx Queue 1 Interrupt */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   441
#define E1000_IMS_OTHER     E1000_ICR_OTHER     /* Other Interrupts */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   442
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   443
/* Interrupt Cause Set */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   444
#define E1000_ICS_LSC       E1000_ICR_LSC       /* Link Status Change */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   445
#define E1000_ICS_RXSEQ     E1000_ICR_RXSEQ     /* Rx sequence error */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   446
#define E1000_ICS_RXDMT0    E1000_ICR_RXDMT0    /* Rx desc min. threshold */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   447
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   448
/* Transmit Descriptor Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   449
#define E1000_TXDCTL_PTHRESH 0x0000003F /* TXDCTL Prefetch Threshold */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   450
#define E1000_TXDCTL_HTHRESH 0x00003F00 /* TXDCTL Host Threshold */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   451
#define E1000_TXDCTL_WTHRESH 0x003F0000 /* TXDCTL Writeback Threshold */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   452
#define E1000_TXDCTL_GRAN    0x01000000 /* TXDCTL Granularity */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   453
#define E1000_TXDCTL_FULL_TX_DESC_WB 0x01010000 /* GRAN=1, WTHRESH=1 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   454
#define E1000_TXDCTL_MAX_TX_DESC_PREFETCH 0x0100001F /* GRAN=1, PTHRESH=31 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   455
/* Enable the counting of desc. still to be processed. */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   456
#define E1000_TXDCTL_COUNT_DESC 0x00400000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   457
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   458
/* Flow Control Constants */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   459
#define FLOW_CONTROL_ADDRESS_LOW  0x00C28001
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   460
#define FLOW_CONTROL_ADDRESS_HIGH 0x00000100
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   461
#define FLOW_CONTROL_TYPE         0x8808
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   462
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   463
/* 802.1q VLAN Packet Size */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   464
#define E1000_VLAN_FILTER_TBL_SIZE 128  /* VLAN Filter Table (4096 bits) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   465
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   466
/* Receive Address */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   467
/*
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   468
 * Number of high/low register pairs in the RAR. The RAR (Receive Address
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   469
 * Registers) holds the directed and multicast addresses that we monitor.
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   470
 * Technically, we have 16 spots.  However, we reserve one of these spots
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   471
 * (RAR[15]) for our directed address used by controllers with
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   472
 * manageability enabled, allowing us room for 15 multicast addresses.
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   473
 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   474
#define E1000_RAR_ENTRIES     15
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   475
#define E1000_RAH_AV  0x80000000        /* Receive descriptor valid */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   476
#define E1000_RAL_MAC_ADDR_LEN 4
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   477
#define E1000_RAH_MAC_ADDR_LEN 2
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   478
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   479
/* Error Codes */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   480
#define E1000_ERR_NVM      1
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   481
#define E1000_ERR_PHY      2
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   482
#define E1000_ERR_CONFIG   3
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   483
#define E1000_ERR_PARAM    4
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   484
#define E1000_ERR_MAC_INIT 5
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   485
#define E1000_ERR_PHY_TYPE 6
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   486
#define E1000_ERR_RESET   9
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   487
#define E1000_ERR_MASTER_REQUESTS_PENDING 10
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   488
#define E1000_ERR_HOST_INTERFACE_COMMAND 11
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   489
#define E1000_BLK_PHY_RESET   12
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   490
#define E1000_ERR_SWFW_SYNC 13
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   491
#define E1000_NOT_IMPLEMENTED 14
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   492
#define E1000_ERR_INVALID_ARGUMENT  16
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   493
#define E1000_ERR_NO_SPACE          17
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   494
#define E1000_ERR_NVM_PBA_SECTION   18
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   495
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   496
/* Loop limit on how long we wait for auto-negotiation to complete */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   497
#define FIBER_LINK_UP_LIMIT               50
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   498
#define COPPER_LINK_UP_LIMIT              10
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   499
#define PHY_AUTO_NEG_LIMIT                45
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   500
#define PHY_FORCE_LIMIT                   20
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   501
/* Number of 100 microseconds we wait for PCI Express master disable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   502
#define MASTER_DISABLE_TIMEOUT      800
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   503
/* Number of milliseconds we wait for PHY configuration done after MAC reset */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   504
#define PHY_CFG_TIMEOUT             100
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   505
/* Number of 2 milliseconds we wait for acquiring MDIO ownership. */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   506
#define MDIO_OWNERSHIP_TIMEOUT      10
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   507
/* Number of milliseconds for NVM auto read done after MAC reset. */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   508
#define AUTO_READ_DONE_TIMEOUT      10
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   509
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   510
/* Flow Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   511
#define E1000_FCRTH_RTH  0x0000FFF8     /* Mask Bits[15:3] for RTH */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   512
#define E1000_FCRTL_RTL  0x0000FFF8     /* Mask Bits[15:3] for RTL */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   513
#define E1000_FCRTL_XONE 0x80000000     /* Enable XON frame transmission */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   514
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   515
/* Transmit Configuration Word */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   516
#define E1000_TXCW_FD         0x00000020        /* TXCW full duplex */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   517
#define E1000_TXCW_PAUSE      0x00000080        /* TXCW sym pause request */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   518
#define E1000_TXCW_ASM_DIR    0x00000100        /* TXCW astm pause direction */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   519
#define E1000_TXCW_PAUSE_MASK 0x00000180        /* TXCW pause request mask */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   520
#define E1000_TXCW_ANE        0x80000000        /* Auto-neg enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   521
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   522
/* Receive Configuration Word */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   523
#define E1000_RXCW_CW         0x0000ffff        /* RxConfigWord mask */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   524
#define E1000_RXCW_IV         0x08000000        /* Receive config invalid */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   525
#define E1000_RXCW_C          0x20000000        /* Receive config */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   526
#define E1000_RXCW_SYNCH      0x40000000        /* Receive config synch */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   527
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   528
/* PCI Express Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   529
#define E1000_GCR_RXD_NO_SNOOP          0x00000001
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   530
#define E1000_GCR_RXDSCW_NO_SNOOP       0x00000002
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   531
#define E1000_GCR_RXDSCR_NO_SNOOP       0x00000004
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   532
#define E1000_GCR_TXD_NO_SNOOP          0x00000008
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   533
#define E1000_GCR_TXDSCW_NO_SNOOP       0x00000010
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   534
#define E1000_GCR_TXDSCR_NO_SNOOP       0x00000020
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   535
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   536
#define PCIE_NO_SNOOP_ALL (E1000_GCR_RXD_NO_SNOOP         | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   537
			   E1000_GCR_RXDSCW_NO_SNOOP      | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   538
			   E1000_GCR_RXDSCR_NO_SNOOP      | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   539
			   E1000_GCR_TXD_NO_SNOOP         | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   540
			   E1000_GCR_TXDSCW_NO_SNOOP      | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   541
			   E1000_GCR_TXDSCR_NO_SNOOP)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   542
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   543
/* PHY Control Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   544
#define MII_CR_FULL_DUPLEX      0x0100  /* FDX =1, half duplex =0 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   545
#define MII_CR_RESTART_AUTO_NEG 0x0200  /* Restart auto negotiation */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   546
#define MII_CR_POWER_DOWN       0x0800  /* Power down */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   547
#define MII_CR_AUTO_NEG_EN      0x1000  /* Auto Neg Enable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   548
#define MII_CR_LOOPBACK         0x4000  /* 0 = normal, 1 = loopback */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   549
#define MII_CR_RESET            0x8000  /* 0 = normal, 1 = PHY reset */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   550
#define MII_CR_SPEED_1000       0x0040
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   551
#define MII_CR_SPEED_100        0x2000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   552
#define MII_CR_SPEED_10         0x0000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   553
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   554
/* PHY Status Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   555
#define MII_SR_LINK_STATUS       0x0004 /* Link Status 1 = link */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   556
#define MII_SR_AUTONEG_COMPLETE  0x0020 /* Auto Neg Complete */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   557
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   558
/* Autoneg Advertisement Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   559
#define NWAY_AR_10T_HD_CAPS      0x0020   /* 10T   Half Duplex Capable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   560
#define NWAY_AR_10T_FD_CAPS      0x0040   /* 10T   Full Duplex Capable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   561
#define NWAY_AR_100TX_HD_CAPS    0x0080   /* 100TX Half Duplex Capable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   562
#define NWAY_AR_100TX_FD_CAPS    0x0100   /* 100TX Full Duplex Capable */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   563
#define NWAY_AR_PAUSE            0x0400   /* Pause operation desired */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   564
#define NWAY_AR_ASM_DIR          0x0800   /* Asymmetric Pause Direction bit */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   565
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   566
/* Link Partner Ability Register (Base Page) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   567
#define NWAY_LPAR_PAUSE          0x0400 /* LP Pause operation desired */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   568
#define NWAY_LPAR_ASM_DIR        0x0800 /* LP Asymmetric Pause Direction bit */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   569
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   570
/* Autoneg Expansion Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   571
#define NWAY_ER_LP_NWAY_CAPS     0x0001 /* LP has Auto Neg Capability */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   572
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   573
/* 1000BASE-T Control Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   574
#define CR_1000T_HD_CAPS         0x0100 /* Advertise 1000T HD capability */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   575
#define CR_1000T_FD_CAPS         0x0200 /* Advertise 1000T FD capability  */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   576
					/* 0=DTE device */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   577
#define CR_1000T_MS_VALUE        0x0800 /* 1=Configure PHY as Master */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   578
					/* 0=Configure PHY as Slave */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   579
#define CR_1000T_MS_ENABLE       0x1000 /* 1=Master/Slave manual config value */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   580
					/* 0=Automatic Master/Slave config */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   581
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   582
/* 1000BASE-T Status Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   583
#define SR_1000T_REMOTE_RX_STATUS 0x1000 /* Remote receiver OK */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   584
#define SR_1000T_LOCAL_RX_STATUS  0x2000 /* Local receiver OK */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   585
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   586
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   587
/* PHY 1000 MII Register/Bit Definitions */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   588
/* PHY Registers defined by IEEE */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   589
#define PHY_CONTROL      0x00 /* Control Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   590
#define PHY_STATUS       0x01 /* Status Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   591
#define PHY_ID1          0x02 /* Phy Id Reg (word 1) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   592
#define PHY_ID2          0x03 /* Phy Id Reg (word 2) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   593
#define PHY_AUTONEG_ADV  0x04 /* Autoneg Advertisement */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   594
#define PHY_LP_ABILITY   0x05 /* Link Partner Ability (Base Page) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   595
#define PHY_AUTONEG_EXP  0x06 /* Autoneg Expansion Reg */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   596
#define PHY_1000T_CTRL   0x09 /* 1000Base-T Control Reg */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   597
#define PHY_1000T_STATUS 0x0A /* 1000Base-T Status Reg */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   598
#define PHY_EXT_STATUS   0x0F /* Extended Status Reg */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   599
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   600
#define PHY_CONTROL_LB   0x4000 /* PHY Loopback bit */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   601
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   602
/* NVM Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   603
#define E1000_EECD_SK        0x00000001 /* NVM Clock */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   604
#define E1000_EECD_CS        0x00000002 /* NVM Chip Select */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   605
#define E1000_EECD_DI        0x00000004 /* NVM Data In */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   606
#define E1000_EECD_DO        0x00000008 /* NVM Data Out */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   607
#define E1000_EECD_REQ       0x00000040 /* NVM Access Request */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   608
#define E1000_EECD_GNT       0x00000080 /* NVM Access Grant */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   609
#define E1000_EECD_PRES      0x00000100 /* NVM Present */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   610
#define E1000_EECD_SIZE      0x00000200 /* NVM Size (0=64 word 1=256 word) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   611
/* NVM Addressing bits based on type (0-small, 1-large) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   612
#define E1000_EECD_ADDR_BITS 0x00000400
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   613
#define E1000_NVM_GRANT_ATTEMPTS   1000 /* NVM # attempts to gain grant */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   614
#define E1000_EECD_AUTO_RD          0x00000200  /* NVM Auto Read done */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   615
#define E1000_EECD_SIZE_EX_MASK     0x00007800  /* NVM Size */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   616
#define E1000_EECD_SIZE_EX_SHIFT     11
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   617
#define E1000_EECD_FLUPD     0x00080000 /* Update FLASH */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   618
#define E1000_EECD_AUPDEN    0x00100000 /* Enable Autonomous FLASH update */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   619
#define E1000_EECD_SEC1VAL   0x00400000 /* Sector One Valid */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   620
#define E1000_EECD_SEC1VAL_VALID_MASK (E1000_EECD_AUTO_RD | E1000_EECD_PRES)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   621
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   622
#define E1000_NVM_RW_REG_DATA   16   /* Offset to data in NVM read/write registers */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   623
#define E1000_NVM_RW_REG_DONE   2    /* Offset to READ/WRITE done bit */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   624
#define E1000_NVM_RW_REG_START  1    /* Start operation */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   625
#define E1000_NVM_RW_ADDR_SHIFT 2    /* Shift to the address bits */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   626
#define E1000_NVM_POLL_WRITE    1    /* Flag for polling for write complete */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   627
#define E1000_NVM_POLL_READ     0    /* Flag for polling for read complete */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   628
#define E1000_FLASH_UPDATES  2000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   629
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   630
/* NVM Word Offsets */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   631
#define NVM_COMPAT                 0x0003
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   632
#define NVM_ID_LED_SETTINGS        0x0004
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   633
#define NVM_INIT_CONTROL2_REG      0x000F
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   634
#define NVM_INIT_CONTROL3_PORT_B   0x0014
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   635
#define NVM_INIT_3GIO_3            0x001A
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   636
#define NVM_INIT_CONTROL3_PORT_A   0x0024
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   637
#define NVM_CFG                    0x0012
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   638
#define NVM_ALT_MAC_ADDR_PTR       0x0037
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   639
#define NVM_CHECKSUM_REG           0x003F
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   640
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   641
#define E1000_NVM_INIT_CTRL2_MNGM 0x6000 /* Manageability Operation Mode mask */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   642
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   643
#define E1000_NVM_CFG_DONE_PORT_0  0x40000 /* MNG config cycle done */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   644
#define E1000_NVM_CFG_DONE_PORT_1  0x80000 /* ...for second port */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   645
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   646
/* Mask bits for fields in Word 0x0f of the NVM */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   647
#define NVM_WORD0F_PAUSE_MASK       0x3000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   648
#define NVM_WORD0F_PAUSE            0x1000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   649
#define NVM_WORD0F_ASM_DIR          0x2000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   650
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   651
/* Mask bits for fields in Word 0x1a of the NVM */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   652
#define NVM_WORD1A_ASPM_MASK  0x000C
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   653
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   654
/* Mask bits for fields in Word 0x03 of the EEPROM */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   655
#define NVM_COMPAT_LOM    0x0800
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   656
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   657
/* length of string needed to store PBA number */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   658
#define E1000_PBANUM_LENGTH             11
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   659
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   660
/* For checksumming, the sum of all words in the NVM should equal 0xBABA. */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   661
#define NVM_SUM                    0xBABA
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   662
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   663
/* PBA (printed board assembly) number words */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   664
#define NVM_PBA_OFFSET_0           8
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   665
#define NVM_PBA_OFFSET_1           9
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   666
#define NVM_PBA_PTR_GUARD          0xFAFA
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   667
#define NVM_WORD_SIZE_BASE_SHIFT   6
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   668
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   669
/* NVM Commands - SPI */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   670
#define NVM_MAX_RETRY_SPI          5000 /* Max wait of 5ms, for RDY signal */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   671
#define NVM_READ_OPCODE_SPI        0x03 /* NVM read opcode */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   672
#define NVM_WRITE_OPCODE_SPI       0x02 /* NVM write opcode */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   673
#define NVM_A8_OPCODE_SPI          0x08 /* opcode bit-3 = address bit-8 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   674
#define NVM_WREN_OPCODE_SPI        0x06 /* NVM set Write Enable latch */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   675
#define NVM_RDSR_OPCODE_SPI        0x05 /* NVM read Status register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   676
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   677
/* SPI NVM Status Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   678
#define NVM_STATUS_RDY_SPI         0x01
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   679
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   680
/* Word definitions for ID LED Settings */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   681
#define ID_LED_RESERVED_0000 0x0000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   682
#define ID_LED_RESERVED_FFFF 0xFFFF
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   683
#define ID_LED_DEFAULT       ((ID_LED_OFF1_ON2  << 12) | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   684
			      (ID_LED_OFF1_OFF2 <<  8) | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   685
			      (ID_LED_DEF1_DEF2 <<  4) | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   686
			      (ID_LED_DEF1_DEF2))
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   687
#define ID_LED_DEF1_DEF2     0x1
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   688
#define ID_LED_DEF1_ON2      0x2
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   689
#define ID_LED_DEF1_OFF2     0x3
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   690
#define ID_LED_ON1_DEF2      0x4
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   691
#define ID_LED_ON1_ON2       0x5
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   692
#define ID_LED_ON1_OFF2      0x6
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   693
#define ID_LED_OFF1_DEF2     0x7
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   694
#define ID_LED_OFF1_ON2      0x8
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   695
#define ID_LED_OFF1_OFF2     0x9
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   696
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   697
#define IGP_ACTIVITY_LED_MASK   0xFFFFF0FF
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   698
#define IGP_ACTIVITY_LED_ENABLE 0x0300
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   699
#define IGP_LED3_MODE           0x07000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   700
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   701
/* PCI/PCI-X/PCI-EX Config space */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   702
#define PCI_HEADER_TYPE_REGISTER     0x0E
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   703
#define PCIE_LINK_STATUS             0x12
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   704
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   705
#define PCI_HEADER_TYPE_MULTIFUNC    0x80
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   706
#define PCIE_LINK_WIDTH_MASK         0x3F0
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   707
#define PCIE_LINK_WIDTH_SHIFT        4
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   708
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   709
#define PHY_REVISION_MASK      0xFFFFFFF0
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   710
#define MAX_PHY_REG_ADDRESS    0x1F  /* 5 bit address bus (0-0x1F) */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   711
#define MAX_PHY_MULTI_PAGE_REG 0xF
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   712
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   713
/* Bit definitions for valid PHY IDs. */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   714
/*
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   715
 * I = Integrated
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   716
 * E = External
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   717
 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   718
#define M88E1000_E_PHY_ID    0x01410C50
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   719
#define M88E1000_I_PHY_ID    0x01410C30
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   720
#define M88E1011_I_PHY_ID    0x01410C20
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   721
#define IGP01E1000_I_PHY_ID  0x02A80380
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   722
#define M88E1111_I_PHY_ID    0x01410CC0
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   723
#define GG82563_E_PHY_ID     0x01410CA0
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   724
#define IGP03E1000_E_PHY_ID  0x02A80390
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   725
#define IFE_E_PHY_ID         0x02A80330
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   726
#define IFE_PLUS_E_PHY_ID    0x02A80320
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   727
#define IFE_C_E_PHY_ID       0x02A80310
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   728
#define BME1000_E_PHY_ID     0x01410CB0
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   729
#define BME1000_E_PHY_ID_R2  0x01410CB1
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   730
#define I82577_E_PHY_ID      0x01540050
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   731
#define I82578_E_PHY_ID      0x004DD040
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   732
#define I82579_E_PHY_ID      0x01540090
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   733
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   734
/* M88E1000 Specific Registers */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   735
#define M88E1000_PHY_SPEC_CTRL     0x10  /* PHY Specific Control Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   736
#define M88E1000_PHY_SPEC_STATUS   0x11  /* PHY Specific Status Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   737
#define M88E1000_EXT_PHY_SPEC_CTRL 0x14  /* Extended PHY Specific Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   738
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   739
#define M88E1000_PHY_PAGE_SELECT   0x1D  /* Reg 29 for page number setting */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   740
#define M88E1000_PHY_GEN_CONTROL   0x1E  /* Its meaning depends on reg 29 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   741
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   742
/* M88E1000 PHY Specific Control Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   743
#define M88E1000_PSCR_POLARITY_REVERSAL 0x0002 /* 1=Polarity Reversal enabled */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   744
#define M88E1000_PSCR_MDI_MANUAL_MODE  0x0000  /* MDI Crossover Mode bits 6:5 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   745
					       /* Manual MDI configuration */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   746
#define M88E1000_PSCR_MDIX_MANUAL_MODE 0x0020  /* Manual MDIX configuration */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   747
/* 1000BASE-T: Auto crossover, 100BASE-TX/10BASE-T: MDI Mode */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   748
#define M88E1000_PSCR_AUTO_X_1000T     0x0040
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   749
/* Auto crossover enabled all speeds */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   750
#define M88E1000_PSCR_AUTO_X_MODE      0x0060
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   751
/*
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   752
 * 1=Enable Extended 10BASE-T distance (Lower 10BASE-T Rx Threshold)
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   753
 * 0=Normal 10BASE-T Rx Threshold
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   754
 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   755
#define M88E1000_PSCR_ASSERT_CRS_ON_TX 0x0800 /* 1=Assert CRS on Transmit */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   756
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   757
/* M88E1000 PHY Specific Status Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   758
#define M88E1000_PSSR_REV_POLARITY       0x0002 /* 1=Polarity reversed */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   759
#define M88E1000_PSSR_DOWNSHIFT          0x0020 /* 1=Downshifted */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   760
#define M88E1000_PSSR_MDIX               0x0040 /* 1=MDIX; 0=MDI */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   761
/* 0=<50M; 1=50-80M; 2=80-110M; 3=110-140M; 4=>140M */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   762
#define M88E1000_PSSR_CABLE_LENGTH       0x0380
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   763
#define M88E1000_PSSR_SPEED              0xC000 /* Speed, bits 14:15 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   764
#define M88E1000_PSSR_1000MBS            0x8000 /* 10=1000Mbs */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   765
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   766
#define M88E1000_PSSR_CABLE_LENGTH_SHIFT 7
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   767
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   768
/*
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   769
 * Number of times we will attempt to autonegotiate before downshifting if we
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   770
 * are the master
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   771
 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   772
#define M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK 0x0C00
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   773
#define M88E1000_EPSCR_MASTER_DOWNSHIFT_1X   0x0000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   774
/*
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   775
 * Number of times we will attempt to autonegotiate before downshifting if we
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   776
 * are the slave
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   777
 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   778
#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK  0x0300
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   779
#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X    0x0100
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   780
#define M88E1000_EPSCR_TX_CLK_25      0x0070 /* 25  MHz TX_CLK */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   781
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   782
/* M88EC018 Rev 2 specific DownShift settings */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   783
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_MASK  0x0E00
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   784
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_5X    0x0800
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   785
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   786
#define I82578_EPSCR_DOWNSHIFT_ENABLE          0x0020
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   787
#define I82578_EPSCR_DOWNSHIFT_COUNTER_MASK    0x001C
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   788
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   789
/* BME1000 PHY Specific Control Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   790
#define BME1000_PSCR_ENABLE_DOWNSHIFT   0x0800 /* 1 = enable downshift */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   791
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   792
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   793
#define PHY_PAGE_SHIFT 5
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   794
#define PHY_REG(page, reg) (((page) << PHY_PAGE_SHIFT) | \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   795
                           ((reg) & MAX_PHY_REG_ADDRESS))
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   796
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   797
/*
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   798
 * Bits...
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   799
 * 15-5: page
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   800
 * 4-0: register offset
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   801
 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   802
#define GG82563_PAGE_SHIFT        5
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   803
#define GG82563_REG(page, reg)    \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   804
	(((page) << GG82563_PAGE_SHIFT) | ((reg) & MAX_PHY_REG_ADDRESS))
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   805
#define GG82563_MIN_ALT_REG       30
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   806
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   807
/* GG82563 Specific Registers */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   808
#define GG82563_PHY_SPEC_CTRL           \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   809
	GG82563_REG(0, 16) /* PHY Specific Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   810
#define GG82563_PHY_PAGE_SELECT         \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   811
	GG82563_REG(0, 22) /* Page Select */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   812
#define GG82563_PHY_SPEC_CTRL_2         \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   813
	GG82563_REG(0, 26) /* PHY Specific Control 2 */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   814
#define GG82563_PHY_PAGE_SELECT_ALT     \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   815
	GG82563_REG(0, 29) /* Alternate Page Select */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   816
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   817
#define GG82563_PHY_MAC_SPEC_CTRL       \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   818
	GG82563_REG(2, 21) /* MAC Specific Control Register */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   819
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   820
#define GG82563_PHY_DSP_DISTANCE    \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   821
	GG82563_REG(5, 26) /* DSP Distance */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   822
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   823
/* Page 193 - Port Control Registers */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   824
#define GG82563_PHY_KMRN_MODE_CTRL   \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   825
	GG82563_REG(193, 16) /* Kumeran Mode Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   826
#define GG82563_PHY_PWR_MGMT_CTRL       \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   827
	GG82563_REG(193, 20) /* Power Management Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   828
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   829
/* Page 194 - KMRN Registers */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   830
#define GG82563_PHY_INBAND_CTRL         \
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   831
	GG82563_REG(194, 18) /* Inband Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   832
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   833
/* MDI Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   834
#define E1000_MDIC_REG_SHIFT 16
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   835
#define E1000_MDIC_PHY_SHIFT 21
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   836
#define E1000_MDIC_OP_WRITE  0x04000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   837
#define E1000_MDIC_OP_READ   0x08000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   838
#define E1000_MDIC_READY     0x10000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   839
#define E1000_MDIC_ERROR     0x40000000
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   840
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   841
/* SerDes Control */
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   842
#define E1000_GEN_POLL_TIMEOUT          640
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   843
35223d2e6e72 Added e1000e driver for kernel 3.2, thanks to J. Kunz.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   844
#endif /* _E1000_DEFINES_H_ */