diff options
Diffstat (limited to 'include/linux/mtd/doc2000.h')
| -rw-r--r-- | include/linux/mtd/doc2000.h | 22 | 
1 files changed, 18 insertions, 4 deletions
diff --git a/include/linux/mtd/doc2000.h b/include/linux/mtd/doc2000.h index 0f6fea73a1f..407d1e556c3 100644 --- a/include/linux/mtd/doc2000.h +++ b/include/linux/mtd/doc2000.h @@ -92,12 +92,26 @@   * Others use readb/writeb   */  #if defined(__arm__) -#define ReadDOC_(adr, reg)      ((unsigned char)(*(volatile __u32 *)(((unsigned long)adr)+((reg)<<2)))) -#define WriteDOC_(d, adr, reg)  do{ *(volatile __u32 *)(((unsigned long)adr)+((reg)<<2)) = (__u32)d; wmb();} while(0) +static inline u8 ReadDOC_(u32 __iomem *addr, unsigned long reg) +{ +	return __raw_readl(addr + reg); +} +static inline void WriteDOC_(u8 data, u32 __iomem *addr, unsigned long reg) +{ +	__raw_writel(data, addr + reg); +	wmb(); +}  #define DOC_IOREMAP_LEN 0x8000  #elif defined(__ppc__) -#define ReadDOC_(adr, reg)      ((unsigned char)(*(volatile __u16 *)(((unsigned long)adr)+((reg)<<1)))) -#define WriteDOC_(d, adr, reg)  do{ *(volatile __u16 *)(((unsigned long)adr)+((reg)<<1)) = (__u16)d; wmb();} while(0) +static inline u8 ReadDOC_(u16 __iomem *addr, unsigned long reg) +{ +	return __raw_readw(addr + reg); +} +static inline void WriteDOC_(u8 data, u16 __iomem *addr, unsigned long reg) +{ +	__raw_writew(data, addr + reg); +	wmb(); +}  #define DOC_IOREMAP_LEN 0x4000  #else  #define ReadDOC_(adr, reg)      readb((void __iomem *)(adr) + (reg))  |