Hello Arnd On Thu, Jan 29, 2015 at 11:11 PM, Arnd Bergmann <arnd@xxxxxxxx> wrote: >> > I think the definitions in include/asm-generic/iomap.h are actually wrong, >> > as they lack a const: >> > >> > extern unsigned int ioread8(void __iomem *); >> > extern unsigned int ioread16(void __iomem *); >> > extern unsigned int ioread16be(void __iomem *); >> > extern unsigned int ioread32(void __iomem *); >> > extern unsigned int ioread32be(void __iomem *); >> > >> > Note that the definitions in include/asm-generic/io.h do have the const: >> > >> > static inline u8 ioread8(const volatile void __iomem *addr) >> > static inline u16 ioread16(const volatile void __iomem *addr) >> > static inline u32 ioread32(const volatile void __iomem *addr) >> > static inline u16 ioread16be(const volatile void __iomem *addr) >> > static inline u32 ioread32be(const volatile void __iomem *addr) >> > I think we don't need the 'volatile' keyword here. The main reason > we have it on readl() is to shut up the compiler when dealing with > ancient driver code that annotates iomem pointers as volatile. > > This is generally considered a (minor) driver mistake though, and > modern drivers that for some reason use ioread*() typically don't > do that (or they get a warning). What about the different return type? u8 vs int Thanks -- Ricardo Ribalda -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html