diff options
Diffstat (limited to 'include/asm-generic/io.h')
| -rw-r--r-- | include/asm-generic/io.h | 71 | 
1 files changed, 67 insertions, 4 deletions
| diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index 002b81f6f2bc..7ef015eb3403 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h @@ -585,6 +585,16 @@ static inline u32 ioread32(const volatile void __iomem *addr)  }  #endif +#ifdef CONFIG_64BIT +#ifndef ioread64 +#define ioread64 ioread64 +static inline u64 ioread64(const volatile void __iomem *addr) +{ +	return readq(addr); +} +#endif +#endif /* CONFIG_64BIT */ +  #ifndef iowrite8  #define iowrite8 iowrite8  static inline void iowrite8(u8 value, volatile void __iomem *addr) @@ -609,11 +619,21 @@ static inline void iowrite32(u32 value, volatile void __iomem *addr)  }  #endif +#ifdef CONFIG_64BIT +#ifndef iowrite64 +#define iowrite64 iowrite64 +static inline void iowrite64(u64 value, volatile void __iomem *addr) +{ +	writeq(value, addr); +} +#endif +#endif /* CONFIG_64BIT */ +  #ifndef ioread16be  #define ioread16be ioread16be  static inline u16 ioread16be(const volatile void __iomem *addr)  { -	return __be16_to_cpu(__raw_readw(addr)); +	return swab16(readw(addr));  }  #endif @@ -621,15 +641,25 @@ static inline u16 ioread16be(const volatile void __iomem *addr)  #define ioread32be ioread32be  static inline u32 ioread32be(const volatile void __iomem *addr)  { -	return __be32_to_cpu(__raw_readl(addr)); +	return swab32(readl(addr)); +} +#endif + +#ifdef CONFIG_64BIT +#ifndef ioread64be +#define ioread64be ioread64be +static inline u64 ioread64be(const volatile void __iomem *addr) +{ +	return swab64(readq(addr));  }  #endif +#endif /* CONFIG_64BIT */  #ifndef iowrite16be  #define iowrite16be iowrite16be  static inline void iowrite16be(u16 value, void volatile __iomem *addr)  { -	__raw_writew(__cpu_to_be16(value), addr); +	writew(swab16(value), addr);  }  #endif @@ -637,10 +667,20 @@ static inline void iowrite16be(u16 value, void volatile __iomem *addr)  #define iowrite32be iowrite32be  static inline void iowrite32be(u32 value, volatile void __iomem *addr)  { -	__raw_writel(__cpu_to_be32(value), addr); +	writel(swab32(value), addr);  }  #endif +#ifdef CONFIG_64BIT +#ifndef iowrite64be +#define iowrite64be iowrite64be +static inline void iowrite64be(u64 value, volatile void __iomem *addr) +{ +	writeq(swab64(value), addr); +} +#endif +#endif /* CONFIG_64BIT */ +  #ifndef ioread8_rep  #define ioread8_rep ioread8_rep  static inline void ioread8_rep(const volatile void __iomem *addr, void *buffer, @@ -668,6 +708,17 @@ static inline void ioread32_rep(const volatile void __iomem *addr,  }  #endif +#ifdef CONFIG_64BIT +#ifndef ioread64_rep +#define ioread64_rep ioread64_rep +static inline void ioread64_rep(const volatile void __iomem *addr, +				void *buffer, unsigned int count) +{ +	readsq(addr, buffer, count); +} +#endif +#endif /* CONFIG_64BIT */ +  #ifndef iowrite8_rep  #define iowrite8_rep iowrite8_rep  static inline void iowrite8_rep(volatile void __iomem *addr, @@ -697,6 +748,18 @@ static inline void iowrite32_rep(volatile void __iomem *addr,  	writesl(addr, buffer, count);  }  #endif + +#ifdef CONFIG_64BIT +#ifndef iowrite64_rep +#define iowrite64_rep iowrite64_rep +static inline void iowrite64_rep(volatile void __iomem *addr, +				 const void *buffer, +				 unsigned int count) +{ +	writesq(addr, buffer, count); +} +#endif +#endif /* CONFIG_64BIT */  #endif /* CONFIG_GENERIC_IOMAP */  #ifdef __KERNEL__ |