devices/e1000/e1000_osdep-2.6.27-orig.h
author Knud Baastrup <kba@deif.com>
Tue, 14 Apr 2015 13:12:24 -0400
changeset 2629 a2701af27fde
parent 1900 25f848e2fbf4
permissions -rw-r--r--
Internal SDO requests now synchronized with external requests.
Internal SDO requests are managed by master FSM and can conflict with
external requests managed by slave FSM. The internal SDO requests
includes SDO requests created by an application and external request are
typical created by EtherCAT Tool for SDO upload/download or a directory
fetch initiated with ethercat sdos command. The conflict will cause a
FPWR from an external request to be overwritten by a FPWR from an
internal SDO request (or oppersite) in the same "train" of datagrams.
1900
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     1
/*******************************************************************************
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     3
  Intel PRO/1000 Linux driver
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     4
  Copyright(c) 1999 - 2006 Intel Corporation.
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     5
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     6
  This program is free software; you can redistribute it and/or modify it
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     7
  under the terms and conditions of the GNU General Public License,
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     8
  version 2, as published by the Free Software Foundation.
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     9
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    10
  This program is distributed in the hope it will be useful, but WITHOUT
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    11
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    12
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    13
  more details.
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    14
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    15
  You should have received a copy of the GNU General Public License along with
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    16
  this program; if not, write to the Free Software Foundation, Inc.,
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    17
  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    18
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    19
  The full GNU General Public License is included in this distribution in
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    20
  the file called "COPYING".
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    21
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    22
  Contact Information:
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    23
  Linux NICS <linux.nics@intel.com>
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    24
  e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    25
  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    26
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    27
*******************************************************************************/
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    28
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    29
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    30
/* glue for the OS independent part of e1000
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    31
 * includes register access macros
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    32
 */
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    33
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    34
#ifndef _E1000_OSDEP_H_
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    35
#define _E1000_OSDEP_H_
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    36
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    37
#include <linux/types.h>
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    38
#include <linux/pci.h>
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    39
#include <linux/delay.h>
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    40
#include <asm/io.h>
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    41
#include <linux/interrupt.h>
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    42
#include <linux/sched.h>
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    43
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    44
#ifdef DBG
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    45
#define DEBUGOUT(S)		printk(KERN_DEBUG S "\n")
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    46
#define DEBUGOUT1(S, A...)	printk(KERN_DEBUG S "\n", A)
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    47
#else
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    48
#define DEBUGOUT(S)
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    49
#define DEBUGOUT1(S, A...)
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    50
#endif
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    51
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    52
#define DEBUGFUNC(F) DEBUGOUT(F "\n")
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    53
#define DEBUGOUT2 DEBUGOUT1
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    54
#define DEBUGOUT3 DEBUGOUT2
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    55
#define DEBUGOUT7 DEBUGOUT3
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    56
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    57
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    58
#define er32(reg)							\
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    59
	(readl(hw->hw_addr + ((hw->mac_type >= e1000_82543)		\
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    60
			       ? E1000_##reg : E1000_82542_##reg)))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    61
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    62
#define ew32(reg, value)						\
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    63
	(writel((value), (hw->hw_addr + ((hw->mac_type >= e1000_82543)	\
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    64
					 ? E1000_##reg : E1000_82542_##reg))))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    65
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    66
#define E1000_WRITE_REG_ARRAY(a, reg, offset, value) ( \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    67
    writel((value), ((a)->hw_addr + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    68
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    69
        ((offset) << 2))))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    70
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    71
#define E1000_READ_REG_ARRAY(a, reg, offset) ( \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    72
    readl((a)->hw_addr + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    73
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    74
        ((offset) << 2)))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    75
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    76
#define E1000_READ_REG_ARRAY_DWORD E1000_READ_REG_ARRAY
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    77
#define E1000_WRITE_REG_ARRAY_DWORD E1000_WRITE_REG_ARRAY
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    78
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    79
#define E1000_WRITE_REG_ARRAY_WORD(a, reg, offset, value) ( \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    80
    writew((value), ((a)->hw_addr + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    81
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    82
        ((offset) << 1))))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    83
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    84
#define E1000_READ_REG_ARRAY_WORD(a, reg, offset) ( \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    85
    readw((a)->hw_addr + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    86
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    87
        ((offset) << 1)))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    88
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    89
#define E1000_WRITE_REG_ARRAY_BYTE(a, reg, offset, value) ( \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    90
    writeb((value), ((a)->hw_addr + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    91
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    92
        (offset))))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    93
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    94
#define E1000_READ_REG_ARRAY_BYTE(a, reg, offset) ( \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    95
    readb((a)->hw_addr + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    96
        (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    97
        (offset)))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    98
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    99
#define E1000_WRITE_FLUSH() er32(STATUS)
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   100
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   101
#define E1000_WRITE_ICH_FLASH_REG(a, reg, value) ( \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   102
    writel((value), ((a)->flash_address + reg)))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   103
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   104
#define E1000_READ_ICH_FLASH_REG(a, reg) ( \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   105
    readl((a)->flash_address + reg))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   106
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   107
#define E1000_WRITE_ICH_FLASH_REG16(a, reg, value) ( \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   108
    writew((value), ((a)->flash_address + reg)))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   109
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   110
#define E1000_READ_ICH_FLASH_REG16(a, reg) ( \
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   111
    readw((a)->flash_address + reg))
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   112
25f848e2fbf4 Added e1000 driver for 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   113
#endif /* _E1000_OSDEP_H_ */