diff options
| -rw-r--r-- | arch/x86/include/asm/io.h | 46 |
1 files changed, 35 insertions, 11 deletions
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h index d34bd370074b..7afb0e2f07f4 100644 --- a/arch/x86/include/asm/io.h +++ b/arch/x86/include/asm/io.h | |||
| @@ -164,6 +164,17 @@ static inline unsigned int isa_virt_to_bus(volatile void *address) | |||
| 164 | #define virt_to_bus virt_to_phys | 164 | #define virt_to_bus virt_to_phys |
| 165 | #define bus_to_virt phys_to_virt | 165 | #define bus_to_virt phys_to_virt |
| 166 | 166 | ||
| 167 | /* | ||
| 168 | * The default ioremap() behavior is non-cached; if you need something | ||
| 169 | * else, you probably want one of the following. | ||
| 170 | */ | ||
| 171 | extern void __iomem *ioremap_nocache(resource_size_t offset, unsigned long size); | ||
| 172 | extern void __iomem *ioremap_uc(resource_size_t offset, unsigned long size); | ||
| 173 | #define ioremap_uc ioremap_uc | ||
| 174 | |||
| 175 | extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size); | ||
| 176 | extern void __iomem *ioremap_prot(resource_size_t offset, unsigned long size, unsigned long prot_val); | ||
| 177 | |||
| 167 | /** | 178 | /** |
| 168 | * ioremap - map bus memory into CPU space | 179 | * ioremap - map bus memory into CPU space |
| 169 | * @offset: bus address of the memory | 180 | * @offset: bus address of the memory |
| @@ -178,17 +189,6 @@ static inline unsigned int isa_virt_to_bus(volatile void *address) | |||
| 178 | * If the area you are trying to map is a PCI BAR you should have a | 189 | * If the area you are trying to map is a PCI BAR you should have a |
| 179 | * look at pci_iomap(). | 190 | * look at pci_iomap(). |
| 180 | */ | 191 | */ |
| 181 | extern void __iomem *ioremap_nocache(resource_size_t offset, unsigned long size); | ||
| 182 | extern void __iomem *ioremap_uc(resource_size_t offset, unsigned long size); | ||
| 183 | #define ioremap_uc ioremap_uc | ||
| 184 | |||
| 185 | extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size); | ||
| 186 | extern void __iomem *ioremap_prot(resource_size_t offset, unsigned long size, | ||
| 187 | unsigned long prot_val); | ||
| 188 | |||
| 189 | /* | ||
| 190 | * The default ioremap() behavior is non-cached: | ||
| 191 | */ | ||
| 192 | static inline void __iomem *ioremap(resource_size_t offset, unsigned long size) | 192 | static inline void __iomem *ioremap(resource_size_t offset, unsigned long size) |
| 193 | { | 193 | { |
| 194 | return ioremap_nocache(offset, size); | 194 | return ioremap_nocache(offset, size); |
| @@ -207,18 +207,42 @@ extern void set_iounmap_nonlazy(void); | |||
| 207 | */ | 207 | */ |
| 208 | #define xlate_dev_kmem_ptr(p) p | 208 | #define xlate_dev_kmem_ptr(p) p |
| 209 | 209 | ||
| 210 | /** | ||
| 211 | * memset_io Set a range of I/O memory to a constant value | ||
| 212 | * @addr: The beginning of the I/O-memory range to set | ||
| 213 | * @val: The value to set the memory to | ||
| 214 | * @count: The number of bytes to set | ||
| 215 | * | ||
| 216 | * Set a range of I/O memory to a given value. | ||
| 217 | */ | ||
| 210 | static inline void | 218 | static inline void |
| 211 | memset_io(volatile void __iomem *addr, unsigned char val, size_t count) | 219 | memset_io(volatile void __iomem *addr, unsigned char val, size_t count) |
| 212 | { | 220 | { |
| 213 | memset((void __force *)addr, val, count); | 221 | memset((void __force *)addr, val, count); |
| 214 | } | 222 | } |
| 215 | 223 | ||
| 224 | /** | ||
| 225 | * memcpy_fromio Copy a block of data from I/O memory | ||
| 226 | * @dst: The (RAM) destination for the copy | ||
| 227 | * @src: The (I/O memory) source for the data | ||
| 228 | * @count: The number of bytes to copy | ||
| 229 | * | ||
| 230 | * Copy a block of data from I/O memory. | ||
| 231 | */ | ||
| 216 | static inline void | 232 | static inline void |
| 217 | memcpy_fromio(void *dst, const volatile void __iomem *src, size_t count) | 233 | memcpy_fromio(void *dst, const volatile void __iomem *src, size_t count) |
| 218 | { | 234 | { |
| 219 | memcpy(dst, (const void __force *)src, count); | 235 | memcpy(dst, (const void __force *)src, count); |
| 220 | } | 236 | } |
| 221 | 237 | ||
| 238 | /** | ||
| 239 | * memcpy_toio Copy a block of data into I/O memory | ||
| 240 | * @dst: The (I/O memory) destination for the copy | ||
| 241 | * @src: The (RAM) source for the data | ||
| 242 | * @count: The number of bytes to copy | ||
| 243 | * | ||
| 244 | * Copy a block of data to I/O memory. | ||
| 245 | */ | ||
| 222 | static inline void | 246 | static inline void |
| 223 | memcpy_toio(volatile void __iomem *dst, const void *src, size_t count) | 247 | memcpy_toio(volatile void __iomem *dst, const void *src, size_t count) |
| 224 | { | 248 | { |
