summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/intel/e1000/e1000_osdep.h49
1 files changed, 42 insertions, 7 deletions
diff --git a/drivers/net/ethernet/intel/e1000/e1000_osdep.h b/drivers/net/ethernet/intel/e1000/e1000_osdep.h
index 69538aff9f8..1c4eddb243d 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_osdep.h
+++ b/drivers/net/ethernet/intel/e1000/e1000_osdep.h
@@ -51,13 +51,46 @@
#define GBE_CONFIG_FLASH_READ(base, offset, count, data) \
(ioread16_rep(base + (offset << 1), data, count))
-#define er32(reg) \
- (readl(hw->hw_addr + ((hw->mac_type >= e1000_82543) \
- ? E1000_##reg : E1000_82542_##reg)))
-
-#define ew32(reg, value) \
- (writel((value), (hw->hw_addr + ((hw->mac_type >= e1000_82543) \
- ? E1000_##reg : E1000_82542_##reg))))
+#define er32(reg) E1000_READ_REG(hw, reg)
+#define ew32(reg, value) E1000_WRITE_REG(hw, reg, value)
+
+#ifdef DEBUG_REGS
+static inline void e1000_write_reg(struct e1000_hw *a, u32 reg, u32 value, char *regname)
+{
+ dbg_printf("%s <- 0x%08x\n", regname, value);
+ writel((value), ((a)->hw_addr + E1000_REGISTER(a, reg)));
+}
+
+static inline u32 e1000_read_reg(struct e1000_hw *a, u32 reg, char *regname)
+{
+ u32 res = readl((a)->hw_addr + E1000_REGISTER(a, reg));
+ dbg_printf("%s -> 0x%08x\n", regname, res);
+ return res;
+}
+
+static inline void e1000_write_reg_array(struct e1000_hw *a, u32 reg, int offset, u32 value, char *regname)
+{
+ dbg_printf("%s[%d] <- 0x%08x\n", regname, offset, value);
+ writel((value), ((a)->hw_addr + E1000_REGISTER(a, reg) + ((offset) << 2)));
+}
+
+static inline u32 e1000_read_reg_array(struct e1000_hw *a, u32 reg, int offset, char *regname)
+{
+ u32 res = readl((a)->hw_addr + E1000_REGISTER(a, reg) + ((offset) << 2));
+ dbg_printf("%s[%d] -> 0x%08x\n", regname, offset, res);
+ return res;
+}
+
+#define E1000_WRITE_REG(a, reg, value) \
+ e1000_write_reg(a, E1000_##reg, value, #reg)
+#define E1000_READ_REG(a, reg) \
+ e1000_read_reg(a, E1000_##reg, #reg)
+#define E1000_WRITE_REG_ARRAY(a, reg, offset, value) \
+ e1000_write_reg_array(a, E1000_##reg, offset, value, #reg)
+#define E1000_READ_REG_ARRAY(a, reg, offset) \
+ e1000_read_reg_array(a, E1000_##reg, offset, #reg)
+
+#else
#define E1000_WRITE_REG(a, reg, value) ( \
writel((value), ((a)->hw_addr + \
@@ -79,6 +112,8 @@
(((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
((offset) << 2)))
+#endif
+
#define E1000_READ_REG_ARRAY_DWORD E1000_READ_REG_ARRAY
#define E1000_WRITE_REG_ARRAY_DWORD E1000_WRITE_REG_ARRAY