devices/e1000/e1000_osdep-2.6.35-orig.h
author Patrick Bruenn <p.bruenn@beckhoff.com>
Tue, 12 Apr 2016 11:17:36 +0200
branchstable-1.5
changeset 2654 b3f6b3e5ef29
parent 2287 fda70486f179
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.
2287
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     1
/*******************************************************************************
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     3
  Intel PRO/1000 Linux driver
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     4
  Copyright(c) 1999 - 2006 Intel Corporation.
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     5
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     6
  This program is free software; you can redistribute it and/or modify it
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     7
  under the terms and conditions of the GNU General Public License,
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     8
  version 2, as published by the Free Software Foundation.
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     9
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    10
  This program is distributed in the hope it will be useful, but WITHOUT
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    11
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    12
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    13
  more details.
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    14
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    15
  You should have received a copy of the GNU General Public License along with
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    16
  this program; if not, write to the Free Software Foundation, Inc.,
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    17
  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    18
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    19
  The full GNU General Public License is included in this distribution in
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    20
  the file called "COPYING".
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    21
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    22
  Contact Information:
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    23
  Linux NICS <linux.nics@intel.com>
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    24
  e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    25
  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    26
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    27
*******************************************************************************/
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    28
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    29
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    30
/* glue for the OS independent part of e1000
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    31
 * includes register access macros
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    32
 */
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    33
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    34
#ifndef _E1000_OSDEP_H_
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    35
#define _E1000_OSDEP_H_
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    36
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    37
#include <linux/types.h>
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    38
#include <linux/pci.h>
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    39
#include <linux/delay.h>
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    40
#include <asm/io.h>
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    41
#include <linux/interrupt.h>
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    42
#include <linux/sched.h>
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    43
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    44
#define er32(reg)							\
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    45
	(readl(hw->hw_addr + ((hw->mac_type >= e1000_82543)		\
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    46
			       ? E1000_##reg : E1000_82542_##reg)))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    47
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    48
#define ew32(reg, value)						\
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    49
	(writel((value), (hw->hw_addr + ((hw->mac_type >= e1000_82543)	\
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    50
					 ? E1000_##reg : E1000_82542_##reg))))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    51
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    52
#define E1000_WRITE_REG_ARRAY(a, reg, offset, value) ( \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    53
    writel((value), ((a)->hw_addr + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    54
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    55
        ((offset) << 2))))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    56
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    57
#define E1000_READ_REG_ARRAY(a, reg, offset) ( \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    58
    readl((a)->hw_addr + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    59
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    60
        ((offset) << 2)))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    61
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    62
#define E1000_READ_REG_ARRAY_DWORD E1000_READ_REG_ARRAY
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    63
#define E1000_WRITE_REG_ARRAY_DWORD E1000_WRITE_REG_ARRAY
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    64
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    65
#define E1000_WRITE_REG_ARRAY_WORD(a, reg, offset, value) ( \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    66
    writew((value), ((a)->hw_addr + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    67
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    68
        ((offset) << 1))))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    69
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    70
#define E1000_READ_REG_ARRAY_WORD(a, reg, offset) ( \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    71
    readw((a)->hw_addr + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    72
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    73
        ((offset) << 1)))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    74
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    75
#define E1000_WRITE_REG_ARRAY_BYTE(a, reg, offset, value) ( \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    76
    writeb((value), ((a)->hw_addr + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    77
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    78
        (offset))))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    79
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    80
#define E1000_READ_REG_ARRAY_BYTE(a, reg, offset) ( \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    81
    readb((a)->hw_addr + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    82
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    83
        (offset)))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    84
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    85
#define E1000_WRITE_FLUSH() er32(STATUS)
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    86
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    87
#define E1000_WRITE_ICH_FLASH_REG(a, reg, value) ( \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    88
    writel((value), ((a)->flash_address + reg)))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    89
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    90
#define E1000_READ_ICH_FLASH_REG(a, reg) ( \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    91
    readl((a)->flash_address + reg))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    92
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    93
#define E1000_WRITE_ICH_FLASH_REG16(a, reg, value) ( \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    94
    writew((value), ((a)->flash_address + reg)))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    95
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    96
#define E1000_READ_ICH_FLASH_REG16(a, reg) ( \
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    97
    readw((a)->flash_address + reg))
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    98
fda70486f179 Added e1000 driver for 2.6.35.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    99
#endif /* _E1000_OSDEP_H_ */