]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
ARM: OMAP4: Fix the init code to have OMAP4460 errata available in DT build
authorSantosh Shilimkar <santosh.shilimkar@ti.com>
Mon, 25 Feb 2013 08:42:58 +0000 (14:12 +0530)
committerSantosh Shilimkar <santosh.shilimkar@ti.com>
Thu, 28 Mar 2013 07:26:00 +0000 (12:56 +0530)
OMAP4460 ROM code bug needs the GIC distributor and local timer
bases to be available for the bug work around. In current code, dt
case these bases are not initialized leading to failure of the
errata work-around.

Fix it by extracting the bases from dt blob and populating them.

Reported-by: Sourav Poddar <sourav.poddar@ti.com>
Tested-by: Sourav Poddar <sourav.poddar@ti.com>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
arch/arm/mach-omap2/omap4-common.c

index 708bb115a27ff8e54f0e760eaebaf2c10c9f4af1..20bf3c754bfde25b20cb12469a94dc21e6b4384e 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/of_platform.h>
 #include <linux/export.h>
 #include <linux/irqchip/arm-gic.h>
+#include <linux/of_address.h>
 
 #include <asm/hardware/cache-l2x0.h>
 #include <asm/mach/map.h>
@@ -258,6 +259,21 @@ omap_early_initcall(omap4_sar_ram_init);
 
 void __init omap_gic_of_init(void)
 {
+       struct device_node *np;
+
+       /* Extract GIC distributor and TWD bases for OMAP4460 ROM Errata WA */
+       if (!cpu_is_omap446x())
+               goto skip_errata_init;
+
+       np = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-gic");
+       gic_dist_base_addr = of_iomap(np, 0);
+       WARN_ON(!gic_dist_base_addr);
+
+       np = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-twd-timer");
+       twd_base = of_iomap(np, 0);
+       WARN_ON(!twd_base);
+
+skip_errata_init:
        omap_wakeupgen_init();
        irqchip_init();
 }