2008-01-28 15:36:09 +02:00
|
|
|
From a.othieno@bluewin.ch Tue Oct 11 07:50:21 2005
|
|
|
|
From: Arthur Othieno <a.othieno@bluewin.ch>
|
|
|
|
Subject: Big-endian I/O memory accessors.
|
|
|
|
Date: Tue, 11 Oct 2005 07:50:21 +1000
|
|
|
|
X-Patchwork-ID: 2759
|
|
|
|
|
|
|
|
From: Arthur Othieno <a.othieno@bluewin.ch>
|
|
|
|
|
|
|
|
I/O memory accessors. Big endian version. For those busses/devices
|
|
|
|
that do export big-endian I/O memory.
|
|
|
|
|
|
|
|
Of notable relevance/reference:
|
|
|
|
|
|
|
|
http://lwn.net/Articles/132804/
|
|
|
|
http://ozlabs.org/pipermail/linuxppc-embedded/2005-August/019798.html
|
|
|
|
http://ozlabs.org/pipermail/linuxppc-embedded/2005-August/019752.html
|
|
|
|
|
|
|
|
Signed-off-by: Arthur Othieno <a.othieno@bluewin.ch>
|
|
|
|
---
|
|
|
|
|
|
|
|
Paulus,
|
|
|
|
|
|
|
|
A similar patch for ppc64 made it upstream with your big ppc64 merge.
|
|
|
|
This one is still sitting in http://patchwork.ozlabs.org/linuxppc/
|
|
|
|
and didn't make it with the ppc32 equivalent. Thanks.
|
|
|
|
|
|
|
|
|
|
|
|
include/asm-ppc/io.h | 20 ++++++++++++++++++++
|
|
|
|
1 file changed, 20 insertions(+)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
2008-05-30 20:19:24 +03:00
|
|
|
--- a/include/asm-ppc/io.h
|
|
|
|
+++ b/include/asm-ppc/io.h
|
2009-02-08 21:16:45 +02:00
|
|
|
@@ -413,11 +413,21 @@ static inline unsigned int ioread16(void
|
2008-01-28 15:36:09 +02:00
|
|
|
return readw(addr);
|
|
|
|
}
|
|
|
|
|
|
|
|
+static inline unsigned int ioread16be(void __iomem *addr)
|
|
|
|
+{
|
|
|
|
+ return in_be16(addr);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
static inline unsigned int ioread32(void __iomem *addr)
|
|
|
|
{
|
|
|
|
return readl(addr);
|
|
|
|
}
|
|
|
|
|
|
|
|
+static inline unsigned int ioread32be(void __iomem *addr)
|
|
|
|
+{
|
|
|
|
+ return in_be32(addr);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
static inline void iowrite8(u8 val, void __iomem *addr)
|
|
|
|
{
|
|
|
|
writeb(val, addr);
|
2009-02-08 21:16:45 +02:00
|
|
|
@@ -428,11 +438,21 @@ static inline void iowrite16(u16 val, vo
|
2008-01-28 15:36:09 +02:00
|
|
|
writew(val, addr);
|
|
|
|
}
|
|
|
|
|
|
|
|
+static inline void iowrite16be(u16 val, void __iomem *addr)
|
|
|
|
+{
|
|
|
|
+ out_be16(addr, val);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
static inline void iowrite32(u32 val, void __iomem *addr)
|
|
|
|
{
|
|
|
|
writel(val, addr);
|
|
|
|
}
|
|
|
|
|
|
|
|
+static inline void iowrite32be(u32 val, void __iomem *addr)
|
|
|
|
+{
|
|
|
|
+ out_be32(addr, val);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
static inline void ioread8_rep(void __iomem *addr, void *dst, unsigned long count)
|
|
|
|
{
|
|
|
|
_insb(addr, dst, count);
|