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