aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ehea/ehea_hw.h
diff options
context:
space:
mode:
authorJan-Bernd Themann <ossthema@de.ibm.com>2006-09-14 07:51:56 -0400
committerJeff Garzik <jeff@garzik.org>2006-09-19 00:05:45 -0400
commit53ccce2395cdc3693c22b9a94764b66dc1a4fcb4 (patch)
tree91a884aafe61608be29dcdf8deba6810dd921bae /drivers/net/ehea/ehea_hw.h
parent72e8d6bbc151ca670c66d58a37e5bbfbc041db69 (diff)
[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 <themann@de.ibm.com> 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 <jeff@garzik.org>
Diffstat (limited to 'drivers/net/ehea/ehea_hw.h')
-rw-r--r--drivers/net/ehea/ehea_hw.h11
1 files changed, 8 insertions, 3 deletions
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 {
189 u64 eqx_it; 189 u64 eqx_it;
190}; 190};
191 191
192/*
193 * These access functions will be changed when the dissuccsion about
194 * the new access methods for POWER has settled.
195 */
196
192static inline u64 epa_load(struct h_epa epa, u32 offset) 197static inline u64 epa_load(struct h_epa epa, u32 offset)
193{ 198{
194 return readq((void __iomem *)(epa.addr + offset)); 199 return __raw_readq((void __iomem *)(epa.addr + offset));
195} 200}
196 201
197static inline void epa_store(struct h_epa epa, u32 offset, u64 value) 202static inline void epa_store(struct h_epa epa, u32 offset, u64 value)
198{ 203{
199 writeq(value, (void __iomem *)(epa.addr + offset)); 204 __raw_writeq(value, (void __iomem *)(epa.addr + offset));
200 epa_load(epa, offset); /* synchronize explicitly to eHEA */ 205 epa_load(epa, offset); /* synchronize explicitly to eHEA */
201} 206}
202 207
203static inline void epa_store_acc(struct h_epa epa, u32 offset, u64 value) 208static inline void epa_store_acc(struct h_epa epa, u32 offset, u64 value)
204{ 209{
205 writeq(value, (void __iomem *)(epa.addr + offset)); 210 __raw_writeq(value, (void __iomem *)(epa.addr + offset));
206} 211}
207 212
208#define epa_store_eq(epa, offset, value)\ 213#define epa_store_eq(epa, offset, value)\