
Dear Wolfgang,
Am 25.05.2010 13:29, schrieb Wolfgang Denk:
In message 4BFB8708.4010408@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