summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/omap4-common.c
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2014-09-26 00:00:02 +0200
committerArnd Bergmann <arnd@arndb.de>2014-09-26 00:00:02 +0200
commitcd954274817e33004c64d9fb6e13821ab7f6e204 (patch)
treea0dbcd813b0ad0b86f83c35f8feed030580c87a3 /arch/arm/mach-omap2/omap4-common.c
parente1e85e76ef327d4b013453ddd7b2c673aa304a71 (diff)
parent1306c08a7cd7e6136490ab2bc728d2c39741003e (diff)
Merge tag 'soc-part2-for-v3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/soc
Pull "part 2 of omap SoC changes" from Tony Lindgren: Few hwmod changes to support upcoming 8250 driver with DMA, start using the SRAM driver for some omaps, and update the defconfig. Signed-off-by: Arnd Bergmann <arnd@arndb.de> * tag 'soc-part2-for-v3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: ARM: OMAP4+: Remove static iotable mappings for SRAM ARM: OMAP4+: Move SRAM data to DT ARM: AM335x: Get rid of unused sram init function ARM: omap2plus_defconfig: Enable some display features ARM: omap2plus_defconfig: Enable battery and reset drivers ARM: omap2plus_defconfig: Add support for distros with systemd ARM: omap2plus_defconfig: Add cpufreq to defconfig ARM: omap2plus_defconfig: Shrink with savedefconfig ARM: OMAP3: Use manual idle for UARTs because of DMA errata ARM: OMAP2+: Add hwmod flag for HWMOD_RECONFIG_IO_CHAIN
Diffstat (limited to 'arch/arm/mach-omap2/omap4-common.c')
-rw-r--r--arch/arm/mach-omap2/omap4-common.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/omap4-common.c b/arch/arm/mach-omap2/omap4-common.c
index a0fe747634c..16b20cedc38 100644
--- a/arch/arm/mach-omap2/omap4-common.c
+++ b/arch/arm/mach-omap2/omap4-common.c
@@ -25,6 +25,7 @@
#include <linux/irqchip/irq-crossbar.h>
#include <linux/of_address.h>
#include <linux/reboot.h>
+#include <linux/genalloc.h>
#include <asm/hardware/cache-l2x0.h>
#include <asm/mach/map.h>
@@ -71,6 +72,26 @@ void omap_bus_sync(void)
}
EXPORT_SYMBOL(omap_bus_sync);
+static int __init omap4_sram_init(void)
+{
+ struct device_node *np;
+ struct gen_pool *sram_pool;
+
+ np = of_find_compatible_node(NULL, NULL, "ti,omap4-mpu");
+ if (!np)
+ pr_warn("%s:Unable to allocate sram needed to handle errata I688\n",
+ __func__);
+ sram_pool = of_get_named_gen_pool(np, "sram", 0);
+ if (!sram_pool)
+ pr_warn("%s:Unable to get sram pool needed to handle errata I688\n",
+ __func__);
+ else
+ sram_sync = (void *)gen_pool_alloc(sram_pool, PAGE_SIZE);
+
+ return 0;
+}
+omap_arch_initcall(omap4_sram_init);
+
/* Steal one page physical memory for barrier implementation */
int __init omap_barrier_reserve_memblock(void)
{
@@ -91,7 +112,6 @@ void __init omap_barriers_init(void)
dram_io_desc[0].type = MT_MEMORY_RW_SO;
iotable_init(dram_io_desc, ARRAY_SIZE(dram_io_desc));
dram_sync = (void __iomem *) dram_io_desc[0].virtual;
- sram_sync = (void __iomem *) OMAP4_SRAM_VA;
pr_info("OMAP4: Map 0x%08llx to 0x%08lx for dram barrier\n",
(long long) paddr, dram_io_desc[0].virtual);