On Sat, May 05, 2012 at 11:36:40PM +0200, Krzysztof Halasa wrote: > Signed-off-by: Krzysztof Hałasa <khc@xxxxxxxxx> > > diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h > index 3f0f5a2..8480acf 100644 > --- a/include/asm-generic/io.h > +++ b/include/asm-generic/io.h > @@ -35,8 +35,8 @@ > #endif > > #define readb __raw_readb > -#define readw(addr) __le16_to_cpu(__raw_readw(addr)) > -#define readl(addr) __le32_to_cpu(__raw_readl(addr)) > +#define readw(addr) __cpu_to_le16(__raw_readw(addr)) > +#define readl(addr) __cpu_to_le32(__raw_readl(addr)) This seems wrong. readw/l are supposed to do little endian reads and that is exactly what the code you remove does: It reads in cpu native endianess and interprets that as a little endian word which is then converted into cpu native endian word. (Also the code is copied from the kernel which makes me quite confident that it's correct) Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox