[U-Boot] [PATCH] arm:io.h: define __io() macro if not defined erlier

Andreas Bießmann biessmann at corscience.de
Wed May 26 11:49:21 CEST 2010


Dear Wolfgang,

Am 25.05.2010 13:29, schrieb Wolfgang Denk:
> In message <4BFB8708.4010408 at corscience.de> you wrote:

>> I think the easiest way to solve this is to create another patch
>> including exactely the changes sent before plus removing {in|out}[bwl]
>> macros in omap1510.h.

Well ... this statement was a bit precipitate. Just defining __io() to
get {in|out}[bwl] macros in asm/io.h for arch arm is dangerous cause the
enabled macros do conversion from/to little endian. This is ok for
some/most current arm devices but may be wrong for older ones (eg.
omap1510).

> Sounds like a plan to me.

I can not test the generated code on omap1510 therefore my current
suggestion is to modify commit a45dde2293c816138e53c26eca6fd0322583f9a6
to something like attached at end of this message. Each devices asm/io.h
using dm9000x defines __raw_{read|write}[bwl] and therefore it would be
an easy task (easier than rewriting arm asm/io.h).

Ben and Mike, can you please give a statement to this suggestion?

regards

Andreas Bießmann

---
diff --git a/drivers/net/dm9000x.c b/drivers/net/dm9000x.c
index f121286..84f67b1 100644
--- a/drivers/net/dm9000x.c
+++ b/drivers/net/dm9000x.c
@@ -117,12 +117,12 @@ static void DM9000_iow(int reg, u8 value);

 /* DM9000 network board routine ---------------------------- */

-#define DM9000_outb(d,r) outb(d, r)
-#define DM9000_outw(d,r) outw(d, r)
-#define DM9000_outl(d,r) outl(d, r)
-#define DM9000_inb(r) inb(r)
-#define DM9000_inw(r) inw(r)
-#define DM9000_inl(r) inl(r)
+#define DM9000_outb(d,r) __raw_writeb(d, r)
+#define DM9000_outw(d,r) __raw_writew(d, r)
+#define DM9000_outl(d,r) __raw_writel(d, r)
+#define DM9000_inb(r) __raw_readb(r)
+#define DM9000_inw(r) __raw_readw(r)
+#define DM9000_inl(r) __raw_readl(r)

 #ifdef CONFIG_DM9000_DEBUG
 static void


More information about the U-Boot mailing list