2a68457cb907188297e6c84510200a5091b908fa
[lede.git] / target / linux / generic-2.6 / patches-2.6.25 / 930-ppc_big_endian_io_memory_accessors.patch
1 From a.othieno@bluewin.ch Tue Oct 11 07:50:21 2005
2 From: Arthur Othieno <a.othieno@bluewin.ch>
3 Subject: Big-endian I/O memory accessors.
4 Date: Tue, 11 Oct 2005 07:50:21 +1000
5 X-Patchwork-ID: 2759
6
7 From: Arthur Othieno <a.othieno@bluewin.ch>
8
9 I/O memory accessors. Big endian version. For those busses/devices
10 that do export big-endian I/O memory.
11
12 Of notable relevance/reference:
13
14   http://lwn.net/Articles/132804/
15   http://ozlabs.org/pipermail/linuxppc-embedded/2005-August/019798.html
16   http://ozlabs.org/pipermail/linuxppc-embedded/2005-August/019752.html
17
18 Signed-off-by: Arthur Othieno <a.othieno@bluewin.ch>
19 ---
20
21 Paulus, 
22
23 A similar patch for ppc64 made it upstream with your big ppc64 merge.
24 This one is still sitting in http://patchwork.ozlabs.org/linuxppc/
25 and didn't make it with the ppc32 equivalent. Thanks.
26
27
28  include/asm-ppc/io.h |   20 ++++++++++++++++++++
29  1 file changed, 20 insertions(+)
30
31
32 ---
33 Index: linux-2.6.25.1/include/asm-ppc/io.h
34 ===================================================================
35 --- linux-2.6.25.1.orig/include/asm-ppc/io.h
36 +++ linux-2.6.25.1/include/asm-ppc/io.h
37 @@ -413,11 +413,21 @@ static inline unsigned int ioread16(void
38         return readw(addr);
39  }
40  
41 +static inline unsigned int ioread16be(void __iomem *addr)
42 +{
43 +       return in_be16(addr);
44 +}
45 +
46  static inline unsigned int ioread32(void __iomem *addr)
47  {
48         return readl(addr);
49  }
50  
51 +static inline unsigned int ioread32be(void __iomem *addr)
52 +{
53 +       return in_be32(addr);
54 +}
55 +
56  static inline void iowrite8(u8 val, void __iomem *addr)
57  {
58         writeb(val, addr);
59 @@ -428,11 +438,21 @@ static inline void iowrite16(u16 val, vo
60         writew(val, addr);
61  }
62  
63 +static inline void iowrite16be(u16 val, void __iomem *addr)
64 +{
65 +       out_be16(addr, val);
66 +}
67 +
68  static inline void iowrite32(u32 val, void __iomem *addr)
69  {
70         writel(val, addr);
71  }
72  
73 +static inline void iowrite32be(u32 val, void __iomem *addr)
74 +{
75 +       out_be32(addr, val);
76 +}
77 +
78  static inline void ioread8_rep(void __iomem *addr, void *dst, unsigned long count)
79  {
80         _insb(addr, dst, count);