io mapping: clean up #ifdefs
Impact: cleanup clean up ifdefs: change #ifdef CONFIG_X86_32/64 to CONFIG_HAVE_ATOMIC_IOMAP. flip around the #ifdef sections to clean up the structure. Signed-off-by: Keith Packard <keithp@keithp.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
8d5c6603c4
commit
e5beae1690
|
@ -1894,6 +1894,10 @@ config SYSVIPC_COMPAT
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
|
||||||
|
config HAVE_ATOMIC_IOMAP
|
||||||
|
def_bool y
|
||||||
|
depends on X86_32
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
|
@ -33,48 +33,15 @@
|
||||||
/* this struct isn't actually defined anywhere */
|
/* this struct isn't actually defined anywhere */
|
||||||
struct io_mapping;
|
struct io_mapping;
|
||||||
|
|
||||||
#ifdef CONFIG_X86_64
|
#ifdef CONFIG_HAVE_ATOMIC_IOMAP
|
||||||
|
|
||||||
/* Create the io_mapping object*/
|
/*
|
||||||
static inline struct io_mapping *
|
* For small address space machines, mapping large objects
|
||||||
io_mapping_create_wc(unsigned long base, unsigned long size)
|
* into the kernel virtual space isn't practical. Where
|
||||||
{
|
* available, use fixmap support to dynamically map pages
|
||||||
return (struct io_mapping *) ioremap_wc(base, size);
|
* of the object at run time.
|
||||||
}
|
*/
|
||||||
|
|
||||||
static inline void
|
|
||||||
io_mapping_free(struct io_mapping *mapping)
|
|
||||||
{
|
|
||||||
iounmap(mapping);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Atomic map/unmap */
|
|
||||||
static inline void *
|
|
||||||
io_mapping_map_atomic_wc(struct io_mapping *mapping, unsigned long offset)
|
|
||||||
{
|
|
||||||
return ((char *) mapping) + offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void
|
|
||||||
io_mapping_unmap_atomic(void *vaddr)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Non-atomic map/unmap */
|
|
||||||
static inline void *
|
|
||||||
io_mapping_map_wc(struct io_mapping *mapping, unsigned long offset)
|
|
||||||
{
|
|
||||||
return ((char *) mapping) + offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void
|
|
||||||
io_mapping_unmap(void *vaddr)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* CONFIG_X86_64 */
|
|
||||||
|
|
||||||
#ifdef CONFIG_X86_32
|
|
||||||
static inline struct io_mapping *
|
static inline struct io_mapping *
|
||||||
io_mapping_create_wc(unsigned long base, unsigned long size)
|
io_mapping_create_wc(unsigned long base, unsigned long size)
|
||||||
{
|
{
|
||||||
|
@ -113,6 +80,46 @@ io_mapping_unmap(void *vaddr)
|
||||||
{
|
{
|
||||||
iounmap(vaddr);
|
iounmap(vaddr);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_X86_32 */
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/* Create the io_mapping object*/
|
||||||
|
static inline struct io_mapping *
|
||||||
|
io_mapping_create_wc(unsigned long base, unsigned long size)
|
||||||
|
{
|
||||||
|
return (struct io_mapping *) ioremap_wc(base, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
io_mapping_free(struct io_mapping *mapping)
|
||||||
|
{
|
||||||
|
iounmap(mapping);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Atomic map/unmap */
|
||||||
|
static inline void *
|
||||||
|
io_mapping_map_atomic_wc(struct io_mapping *mapping, unsigned long offset)
|
||||||
|
{
|
||||||
|
return ((char *) mapping) + offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
io_mapping_unmap_atomic(void *vaddr)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Non-atomic map/unmap */
|
||||||
|
static inline void *
|
||||||
|
io_mapping_map_wc(struct io_mapping *mapping, unsigned long offset)
|
||||||
|
{
|
||||||
|
return ((char *) mapping) + offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
io_mapping_unmap(void *vaddr)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* HAVE_ATOMIC_IOMAP */
|
||||||
|
|
||||||
#endif /* _LINUX_IO_MAPPING_H */
|
#endif /* _LINUX_IO_MAPPING_H */
|
||||||
|
|
Loading…
Reference in New Issue