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