ARM: io: convert ioremap*() to functions
Convert the ioremap*() preprocessor macros to real functions, moving them out of line. This allows us to kill off __arm_ioremap(), and __arm_iounmap() helpers, and remove __arm_ioremap_pfn_caller() from global view. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
1e2c727f6c
commit
20a1080dff
|
@ -140,16 +140,11 @@ static inline u32 __raw_readl(const volatile void __iomem *addr)
|
||||||
* The _caller variety takes a __builtin_return_address(0) value for
|
* The _caller variety takes a __builtin_return_address(0) value for
|
||||||
* /proc/vmalloc to use - and should only be used in non-inline functions.
|
* /proc/vmalloc to use - and should only be used in non-inline functions.
|
||||||
*/
|
*/
|
||||||
extern void __iomem *__arm_ioremap_pfn_caller(unsigned long, unsigned long,
|
|
||||||
size_t, unsigned int, void *);
|
|
||||||
extern void __iomem *__arm_ioremap_caller(phys_addr_t, size_t, unsigned int,
|
extern void __iomem *__arm_ioremap_caller(phys_addr_t, size_t, unsigned int,
|
||||||
void *);
|
void *);
|
||||||
|
|
||||||
extern void __iomem *__arm_ioremap_pfn(unsigned long, unsigned long, size_t, unsigned int);
|
extern void __iomem *__arm_ioremap_pfn(unsigned long, unsigned long, size_t, unsigned int);
|
||||||
extern void __iomem *__arm_ioremap(phys_addr_t, size_t, unsigned int);
|
|
||||||
extern void __iomem *__arm_ioremap_exec(phys_addr_t, size_t, bool cached);
|
extern void __iomem *__arm_ioremap_exec(phys_addr_t, size_t, bool cached);
|
||||||
extern void __iounmap(volatile void __iomem *addr);
|
extern void __iounmap(volatile void __iomem *addr);
|
||||||
extern void __arm_iounmap(volatile void __iomem *addr);
|
|
||||||
|
|
||||||
extern void __iomem * (*arch_ioremap_caller)(phys_addr_t, size_t,
|
extern void __iomem * (*arch_ioremap_caller)(phys_addr_t, size_t,
|
||||||
unsigned int, void *);
|
unsigned int, void *);
|
||||||
|
@ -390,12 +385,19 @@ static inline void memcpy_toio(volatile void __iomem *to, const void *from,
|
||||||
* Eg, a CPU not implementing read allocate but implementing write allocate
|
* Eg, a CPU not implementing read allocate but implementing write allocate
|
||||||
* will provide a write allocate mapping instead.
|
* will provide a write allocate mapping instead.
|
||||||
*/
|
*/
|
||||||
#define ioremap(cookie,size) __arm_ioremap((cookie), (size), MT_DEVICE)
|
void __iomem *ioremap(resource_size_t res_cookie, size_t size);
|
||||||
#define ioremap_nocache(cookie,size) __arm_ioremap((cookie), (size), MT_DEVICE)
|
#define ioremap ioremap
|
||||||
#define ioremap_cache(cookie,size) __arm_ioremap((cookie), (size), MT_DEVICE_CACHED)
|
#define ioremap_nocache ioremap
|
||||||
#define ioremap_wc(cookie,size) __arm_ioremap((cookie), (size), MT_DEVICE_WC)
|
|
||||||
#define ioremap_wt(cookie,size) __arm_ioremap((cookie), (size), MT_DEVICE_WC)
|
void __iomem *ioremap_cache(resource_size_t res_cookie, size_t size);
|
||||||
#define iounmap __arm_iounmap
|
#define ioremap_cache ioremap_cache
|
||||||
|
|
||||||
|
void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size);
|
||||||
|
#define ioremap_wc ioremap_wc
|
||||||
|
#define ioremap_wt ioremap_wc
|
||||||
|
|
||||||
|
void iounmap(volatile void __iomem *iomem_cookie);
|
||||||
|
#define iounmap iounmap
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* io{read,write}{16,32}be() macros
|
* io{read,write}{16,32}be() macros
|
||||||
|
|
|
@ -255,7 +255,7 @@ remap_area_supersections(unsigned long virt, unsigned long pfn,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void __iomem * __arm_ioremap_pfn_caller(unsigned long pfn,
|
static void __iomem * __arm_ioremap_pfn_caller(unsigned long pfn,
|
||||||
unsigned long offset, size_t size, unsigned int mtype, void *caller)
|
unsigned long offset, size_t size, unsigned int mtype, void *caller)
|
||||||
{
|
{
|
||||||
const struct mem_type *type;
|
const struct mem_type *type;
|
||||||
|
@ -363,7 +363,7 @@ __arm_ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size,
|
||||||
unsigned int mtype)
|
unsigned int mtype)
|
||||||
{
|
{
|
||||||
return __arm_ioremap_pfn_caller(pfn, offset, size, mtype,
|
return __arm_ioremap_pfn_caller(pfn, offset, size, mtype,
|
||||||
__builtin_return_address(0));
|
__builtin_return_address(0));
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__arm_ioremap_pfn);
|
EXPORT_SYMBOL(__arm_ioremap_pfn);
|
||||||
|
|
||||||
|
@ -371,13 +371,26 @@ void __iomem * (*arch_ioremap_caller)(phys_addr_t, size_t,
|
||||||
unsigned int, void *) =
|
unsigned int, void *) =
|
||||||
__arm_ioremap_caller;
|
__arm_ioremap_caller;
|
||||||
|
|
||||||
void __iomem *
|
void __iomem *ioremap(resource_size_t res_cookie, size_t size)
|
||||||
__arm_ioremap(phys_addr_t phys_addr, size_t size, unsigned int mtype)
|
|
||||||
{
|
{
|
||||||
return arch_ioremap_caller(phys_addr, size, mtype,
|
return arch_ioremap_caller(res_cookie, size, MT_DEVICE,
|
||||||
__builtin_return_address(0));
|
__builtin_return_address(0));
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__arm_ioremap);
|
EXPORT_SYMBOL(ioremap);
|
||||||
|
|
||||||
|
void __iomem *ioremap_cache(resource_size_t res_cookie, size_t size)
|
||||||
|
{
|
||||||
|
return arch_ioremap_caller(res_cookie, size, MT_DEVICE_CACHED,
|
||||||
|
__builtin_return_address(0));
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(ioremap_cache);
|
||||||
|
|
||||||
|
void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size)
|
||||||
|
{
|
||||||
|
return arch_ioremap_caller(res_cookie, size, MT_DEVICE_WC,
|
||||||
|
__builtin_return_address(0));
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(ioremap_wc);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Remap an arbitrary physical address space into the kernel virtual
|
* Remap an arbitrary physical address space into the kernel virtual
|
||||||
|
@ -431,11 +444,11 @@ void __iounmap(volatile void __iomem *io_addr)
|
||||||
|
|
||||||
void (*arch_iounmap)(volatile void __iomem *) = __iounmap;
|
void (*arch_iounmap)(volatile void __iomem *) = __iounmap;
|
||||||
|
|
||||||
void __arm_iounmap(volatile void __iomem *io_addr)
|
void iounmap(volatile void __iomem *cookie)
|
||||||
{
|
{
|
||||||
arch_iounmap(io_addr);
|
arch_iounmap(cookie);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__arm_iounmap);
|
EXPORT_SYMBOL(iounmap);
|
||||||
|
|
||||||
#ifdef CONFIG_PCI
|
#ifdef CONFIG_PCI
|
||||||
static int pci_ioremap_mem_type = MT_DEVICE;
|
static int pci_ioremap_mem_type = MT_DEVICE;
|
||||||
|
|
|
@ -351,30 +351,43 @@ void __iomem *__arm_ioremap_pfn(unsigned long pfn, unsigned long offset,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__arm_ioremap_pfn);
|
EXPORT_SYMBOL(__arm_ioremap_pfn);
|
||||||
|
|
||||||
void __iomem *__arm_ioremap_pfn_caller(unsigned long pfn, unsigned long offset,
|
|
||||||
size_t size, unsigned int mtype, void *caller)
|
|
||||||
{
|
|
||||||
return __arm_ioremap_pfn(pfn, offset, size, mtype);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __iomem *__arm_ioremap(phys_addr_t phys_addr, size_t size,
|
|
||||||
unsigned int mtype)
|
|
||||||
{
|
|
||||||
return (void __iomem *)phys_addr;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(__arm_ioremap);
|
|
||||||
|
|
||||||
void __iomem * (*arch_ioremap_caller)(phys_addr_t, size_t, unsigned int, void *);
|
|
||||||
|
|
||||||
void __iomem *__arm_ioremap_caller(phys_addr_t phys_addr, size_t size,
|
void __iomem *__arm_ioremap_caller(phys_addr_t phys_addr, size_t size,
|
||||||
unsigned int mtype, void *caller)
|
unsigned int mtype, void *caller)
|
||||||
{
|
{
|
||||||
return __arm_ioremap(phys_addr, size, mtype);
|
return (void __iomem *)phys_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void __iomem * (*arch_ioremap_caller)(phys_addr_t, size_t, unsigned int, void *);
|
||||||
|
|
||||||
|
void __iomem *ioremap(resource_size_t res_cookie, size_t size)
|
||||||
|
{
|
||||||
|
return __arm_ioremap_caller(res_cookie, size, MT_DEVICE,
|
||||||
|
__builtin_return_address(0));
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(ioremap);
|
||||||
|
|
||||||
|
void __iomem *ioremap_cache(resource_size_t res_cookie, size_t size)
|
||||||
|
{
|
||||||
|
return __arm_ioremap_caller(res_cookie, size, MT_DEVICE_CACHED,
|
||||||
|
__builtin_return_address(0));
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(ioremap_cache);
|
||||||
|
|
||||||
|
void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size)
|
||||||
|
{
|
||||||
|
return __arm_ioremap_caller(res_cookie, size, MT_DEVICE_WC,
|
||||||
|
__builtin_return_address(0));
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(ioremap_wc);
|
||||||
|
|
||||||
|
void __iounmap(volatile void __iomem *addr)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(__iounmap);
|
||||||
|
|
||||||
void (*arch_iounmap)(volatile void __iomem *);
|
void (*arch_iounmap)(volatile void __iomem *);
|
||||||
|
|
||||||
void __arm_iounmap(volatile void __iomem *addr)
|
void iounmap(volatile void __iomem *addr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__arm_iounmap);
|
EXPORT_SYMBOL(iounmap);
|
||||||
|
|
Loading…
Reference in New Issue