diff options
author | Rob Herring <rob.herring@calxeda.com> | 2012-02-29 20:56:15 +0400 |
---|---|---|
committer | Rob Herring <rob.herring@calxeda.com> | 2012-03-07 07:23:18 +0400 |
commit | 1dfe34ae794c13b11192baac022826f9c53fe377 (patch) | |
tree | 7a54775a34316da1c10e8850dc1885091de96922 /arch/arm/mach-iop13xx/io.c | |
parent | b12e9ba59c83f7df846602b201b64e4ddf28ccee (diff) | |
download | linux-1dfe34ae794c13b11192baac022826f9c53fe377.tar.xz |
ARM: iop13xx: use runtime ioremap hook
Convert iop13xx platforms to use run-time ioremap hook instead of the
compile time hook. The custom ioremap is still needed for 64-bit address
handling.
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-iop13xx/io.c')
-rw-r--r-- | arch/arm/mach-iop13xx/io.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/arch/arm/mach-iop13xx/io.c b/arch/arm/mach-iop13xx/io.c index 48642e66c566..6dd5b4924107 100644 --- a/arch/arm/mach-iop13xx/io.c +++ b/arch/arm/mach-iop13xx/io.c @@ -40,8 +40,8 @@ void * __iomem __iop13xx_io(unsigned long io_addr) } EXPORT_SYMBOL(__iop13xx_io); -void * __iomem __iop13xx_ioremap(unsigned long cookie, size_t size, - unsigned int mtype) +static void __iomem *__iop13xx_ioremap_caller(unsigned long cookie, + size_t size, unsigned int mtype, void *caller) { void __iomem * retval; @@ -76,17 +76,14 @@ void * __iomem __iop13xx_ioremap(unsigned long cookie, size_t size, break; default: retval = __arm_ioremap_caller(cookie, size, mtype, - __builtin_return_address(0)); + caller); } return retval; } -EXPORT_SYMBOL(__iop13xx_ioremap); -void __iop13xx_iounmap(void __iomem *addr) +static void __iop13xx_iounmap(volatile void __iomem *addr) { - extern void __iounmap(volatile void __iomem *addr); - if (iop13xx_atue_mem_base) if (addr >= (void __iomem *) iop13xx_atue_mem_base && addr < (void __iomem *) (iop13xx_atue_mem_base + @@ -110,4 +107,9 @@ void __iop13xx_iounmap(void __iomem *addr) skip: return; } -EXPORT_SYMBOL(__iop13xx_iounmap); + +void __init iop13xx_init_early(void) +{ + arch_ioremap_caller = __iop13xx_ioremap_caller; + arch_iounmap = __iop13xx_iounmap; +} |