aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/powernv/opal-xscom.c
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2013-12-13 15:53:43 +1100
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-12-13 15:53:59 +1100
commit01a9dbccbdfc7a93950b791405e476c510f73ab0 (patch)
tree7a16519c620adeb98dbbdbf8ec0d0f40bad49ff3 /arch/powerpc/platforms/powernv/opal-xscom.c
parentpowerpc: Fix endian issues in crash dump code (diff)
downloadlinux-dev-01a9dbccbdfc7a93950b791405e476c510f73ab0.tar.xz
linux-dev-01a9dbccbdfc7a93950b791405e476c510f73ab0.zip
powerpc/powernv: Fix endian issue in opal_xscom_read
opal_xscom_read uses a pointer to return the data so we need to byteswap it on LE builds. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to '')
-rw-r--r--arch/powerpc/platforms/powernv/opal-xscom.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/powernv/opal-xscom.c b/arch/powerpc/platforms/powernv/opal-xscom.c
index 4d99a8fd55ac..4fbf276ac99e 100644
--- a/arch/powerpc/platforms/powernv/opal-xscom.c
+++ b/arch/powerpc/platforms/powernv/opal-xscom.c
@@ -96,9 +96,11 @@ static int opal_scom_read(scom_map_t map, u64 reg, u64 *value)
{
struct opal_scom_map *m = map;
int64_t rc;
+ __be64 v;
reg = opal_scom_unmangle(reg);
- rc = opal_xscom_read(m->chip, m->addr + reg, (uint64_t *)__pa(value));
+ rc = opal_xscom_read(m->chip, m->addr + reg, (__be64 *)__pa(&v));
+ *value = be64_to_cpu(v);
return opal_xscom_err_xlate(rc);
}