summaryrefslogtreecommitdiffstats
path: root/target/linux/generic-2.6/patches-2.6.25/930-ppc_big_endian_io_memory_accessors.patch
blob: 5b3755e8716b63124736655c39df857878ebf013 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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(+)


---
--- a/include/asm-ppc/io.h
+++ b/include/asm-ppc/io.h
@@ -413,11 +413,21 @@
 	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);
@@ -428,11 +438,21 @@
 	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);