From 4b5afc532e44f0929e17a14325807289f041c085 Mon Sep 17 00:00:00 2001 From: Noe Rubinstein Date: Wed, 28 Mar 2012 10:34:00 +0200 Subject: Debug register accesses --- drivers/net/ethernet/intel/e1000/e1000_osdep.h | 49 ++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 7 deletions(-) (limited to 'drivers/net') 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 -- cgit v1.2.3