aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/common.h
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2012-10-18 05:20:08 -0400
committerKevin Hilman <khilman@ti.com>2012-11-05 17:26:43 -0500
commitcd8ce159031813eb870a5f3d5b27c3be36cd6e3a (patch)
treedeaa9a4ccac205b288aff709f39c0b622d0b91b7 /arch/arm/mach-omap2/common.h
parentff999b8a0983ee15668394ed49e38d3568fc6859 (diff)
ARM: OMAP4: retrigger localtimers after re-enabling gic
'Workaround for ROM bug because of CA9 r2pX gic control' register change disables the gic distributor while the secondary cpu is being booted. If a localtimer interrupt on the primary cpu occurs when the distributor is turned off, the interrupt is lost, and the localtimer never fires again. Make the primary cpu wait for the secondary cpu to reenable the gic distributor (with interrupts off for safety), and then check if the pending bit is set in the localtimer but not the gic. If so, ack it in the localtimer, and reset the timer with the minimum timeout to trigger a new timer interrupt. Signed-off-by: Colin Cross <ccross@android.com> [s-jan@ti.com: adapted to k3.4 + validated functionality] Signed-off-by: Sebastien Jan <s-jan@ti.com> [t-kristo@ti.com: dropped generic ARM kernel exports from the code, rebased to mainline] Signed-off-by: Tero Kristo <t-kristo@ti.com> Signed-off-by: Kevin Hilman <khilman@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2/common.h')
-rw-r--r--arch/arm/mach-omap2/common.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 70993a9fcb50..d29dbaa29621 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -276,6 +276,8 @@ static inline void __iomem *omap4_get_scu_base(void)
276 276
277extern void __init gic_init_irq(void); 277extern void __init gic_init_irq(void);
278extern void gic_dist_disable(void); 278extern void gic_dist_disable(void);
279extern bool gic_dist_disabled(void);
280extern void gic_timer_retrigger(void);
279extern void omap_smc1(u32 fn, u32 arg); 281extern void omap_smc1(u32 fn, u32 arg);
280extern void __iomem *omap4_get_sar_ram_base(void); 282extern void __iomem *omap4_get_sar_ram_base(void);
281extern void omap_do_wfi(void); 283extern void omap_do_wfi(void);