The current davinci init sets up SRAM in iotables. There has been an observed failure to boot a da850 with 128K specified in the iotable.
Make the davinci sram allocator -- now based on RMK's consolidated SRAM support -- do an ioremap of the region specified by the entries in davinci_soc_info before registering with pv_pool_create(). This commit breaks runtime of davinci boards since the regions that the sram init is now trying to ioremap have been iomapped by their iotable entries. The iotable entries will be removed in the patches to come. Signed-off-by: Ben Gardiner <[email protected]> --- arch/arm/mach-davinci/sram.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-davinci/sram.c b/arch/arm/mach-davinci/sram.c index 219d4c5..96026df 100644 --- a/arch/arm/mach-davinci/sram.c +++ b/arch/arm/mach-davinci/sram.c @@ -8,6 +8,7 @@ * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ +#include <linux/io.h> #include <linux/module.h> #include <linux/init.h> #include <asm/pv-pool.h> @@ -26,16 +27,23 @@ EXPORT_SYMBOL_GPL(davinci_pv_pool); */ static int __init sram_init(void) { + void *addr; unsigned len = davinci_soc_info.sram_len; int status = 0; if (len) { len = min_t(unsigned, len, SRAM_SIZE); - davinci_pv_pool = pv_pool_create((void *)SRAM_VIRT, + addr = ioremap(davinci_soc_info.sram_phys, len); + if (!addr) + return -EIO; + + davinci_pv_pool = pv_pool_create(addr, davinci_soc_info.sram_phys, len, ilog2(SRAM_GRANULARITY)); - if (!davinci_pv_pool) + if (!davinci_pv_pool) { + iounmap(addr); status = -ENOMEM; + } } return status; } -- 1.7.4.1 _______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
