From 53ccce2395cdc3693c22b9a94764b66dc1a4fcb4 Mon Sep 17 00:00:00 2001 From: Jan-Bernd Themann Date: Thu, 14 Sep 2006 13:51:56 +0200 Subject: [PATCH] [PATCH] ehea: bugfix for register access functions Hi Jeff, sorry to bother you again. We figured out that the readq function we included in the eHEA patch we sent yesterday to access eHEA registers is defined as little endian on POWER. This collides with our adapter. We talked to some PPC people who told us there is a discussion going on about new access functions. We were told to use __raw_readq / __raw_writeq for now. This patch fixes this bug found by our internal tests today. Please apply this small patch on the latest patch we sent you yesterday. If it is easier for you I can also give you the entire eHEA patch again. sorry and thanks a lot, Jan-Bernd Signed-off-by: Jan-Bernd Themann drivers/net/ehea/ehea.h | 2 +- drivers/net/ehea/ehea_hw.h | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) Signed-off-by: Jeff Garzik --- drivers/net/ehea/ehea.h | 2 +- drivers/net/ehea/ehea_hw.h | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h index 87c510f22aca..23b451a8ae12 100644 --- a/drivers/net/ehea/ehea.h +++ b/drivers/net/ehea/ehea.h @@ -39,7 +39,7 @@ #include #define DRV_NAME "ehea" -#define DRV_VERSION "EHEA_0027" +#define DRV_VERSION "EHEA_0028" #define EHEA_MSG_DEFAULT (NETIF_MSG_LINK | NETIF_MSG_TIMER \ | NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR) diff --git a/drivers/net/ehea/ehea_hw.h b/drivers/net/ehea/ehea_hw.h index e3a7d07f88cc..1246757f2c22 100644 --- a/drivers/net/ehea/ehea_hw.h +++ b/drivers/net/ehea/ehea_hw.h @@ -189,20 +189,25 @@ struct ehea_eqtemm { u64 eqx_it; }; +/* + * These access functions will be changed when the dissuccsion about + * the new access methods for POWER has settled. + */ + static inline u64 epa_load(struct h_epa epa, u32 offset) { - return readq((void __iomem *)(epa.addr + offset)); + return __raw_readq((void __iomem *)(epa.addr + offset)); } static inline void epa_store(struct h_epa epa, u32 offset, u64 value) { - writeq(value, (void __iomem *)(epa.addr + offset)); + __raw_writeq(value, (void __iomem *)(epa.addr + offset)); epa_load(epa, offset); /* synchronize explicitly to eHEA */ } static inline void epa_store_acc(struct h_epa epa, u32 offset, u64 value) { - writeq(value, (void __iomem *)(epa.addr + offset)); + __raw_writeq(value, (void __iomem *)(epa.addr + offset)); } #define epa_store_eq(epa, offset, value)\ -- 2.20.1