aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000/e1000_osdep.h
diff options
context:
space:
mode:
author <jgarzik@pretzel.yyz.us>2005-05-25 13:57:03 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-05-25 13:57:03 -0400
commit34812c9e188b47b1d6c9fff8ba530e6f2365ebc4 (patch)
tree63e968991d043a30b80f7e3f99a3f6445455a704 /drivers/net/e1000/e1000_osdep.h
parentd6d78f63cea62851806bf6ac40c6f53349de442b (diff)
parent2648345fcbadfae8e7113112ff9402e465a184dc (diff)
downloadkernel_samsung_espresso10-34812c9e188b47b1d6c9fff8ba530e6f2365ebc4.zip
kernel_samsung_espresso10-34812c9e188b47b1d6c9fff8ba530e6f2365ebc4.tar.gz
kernel_samsung_espresso10-34812c9e188b47b1d6c9fff8ba530e6f2365ebc4.tar.bz2
Automatic merge of /spare/repo/netdev-2.6 branch e1000
Diffstat (limited to 'drivers/net/e1000/e1000_osdep.h')
-rw-r--r--drivers/net/e1000/e1000_osdep.h32
1 files changed, 30 insertions, 2 deletions
diff --git a/drivers/net/e1000/e1000_osdep.h b/drivers/net/e1000/e1000_osdep.h
index 970c656..aac64de 100644
--- a/drivers/net/e1000/e1000_osdep.h
+++ b/drivers/net/e1000/e1000_osdep.h
@@ -1,7 +1,7 @@
/*******************************************************************************
- Copyright(c) 1999 - 2004 Intel Corporation. All rights reserved.
+ Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
@@ -42,7 +42,12 @@
#include <linux/sched.h>
#ifndef msec_delay
-#define msec_delay(x) msleep(x)
+#define msec_delay(x) do { if(in_interrupt()) { \
+ /* Don't mdelay in interrupt context! */ \
+ BUG(); \
+ } else { \
+ msleep(x); \
+ } } while(0)
/* Some workarounds require millisecond delays and are run during interrupt
* context. Most notably, when establishing link, the phy may need tweaking
@@ -96,6 +101,29 @@ typedef enum {
(((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
((offset) << 2)))
+#define E1000_READ_REG_ARRAY_DWORD E1000_READ_REG_ARRAY
+#define E1000_WRITE_REG_ARRAY_DWORD E1000_WRITE_REG_ARRAY
+
+#define E1000_WRITE_REG_ARRAY_WORD(a, reg, offset, value) ( \
+ writew((value), ((a)->hw_addr + \
+ (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
+ ((offset) << 1))))
+
+#define E1000_READ_REG_ARRAY_WORD(a, reg, offset) ( \
+ readw((a)->hw_addr + \
+ (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
+ ((offset) << 1)))
+
+#define E1000_WRITE_REG_ARRAY_BYTE(a, reg, offset, value) ( \
+ writeb((value), ((a)->hw_addr + \
+ (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
+ (offset))))
+
+#define E1000_READ_REG_ARRAY_BYTE(a, reg, offset) ( \
+ readb((a)->hw_addr + \
+ (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
+ (offset)))
+
#define E1000_WRITE_FLUSH(a) E1000_READ_REG(a, STATUS)
#endif /* _E1000_OSDEP_H_ */