From 0bc83a3cd1dbc55f8e968fc94fec416a377d0822 Mon Sep 17 00:00:00 2001 From: Santosh Shilimkar Date: Tue, 17 Apr 2012 15:09:20 +0530 Subject: [PATCH] --- yaml --- r: 321254 b: refs/heads/master c: b93d70aeb8f3b5ed2d74643f5009239a55634e1d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/arm/mach-omap2/cpuidle44xx.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 74e4ffdfc8a3..d1a41aae365d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5b4d5bcc68940497722d98d99abee72a0ab1d6f1 +refs/heads/master: b93d70aeb8f3b5ed2d74643f5009239a55634e1d diff --git a/trunk/arch/arm/mach-omap2/cpuidle44xx.c b/trunk/arch/arm/mach-omap2/cpuidle44xx.c index eb93e45d3271..45e6a54d5818 100644 --- a/trunk/arch/arm/mach-omap2/cpuidle44xx.c +++ b/trunk/arch/arm/mach-omap2/cpuidle44xx.c @@ -202,6 +202,16 @@ struct cpuidle_driver omap4_idle_driver = { .safe_state_index = 0, }; +/* + * For each cpu, setup the broadcast timer because local timers + * stops for the states above C1. + */ +static void omap_setup_broadcast_timer(void *arg) +{ + int cpu = smp_processor_id(); + clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ON, &cpu); +} + /** * omap4_idle_init - Init routine for OMAP4 idle * @@ -224,6 +234,9 @@ int __init omap4_idle_init(void) if (!cpu_clkdm[0] || !cpu_clkdm[1]) return -ENODEV; + /* Configure the broadcast timer on each cpu */ + on_each_cpu(omap_setup_broadcast_timer, NULL, 1); + for_each_cpu(cpu_id, cpu_online_mask) { dev = &per_cpu(omap4_idle_dev, cpu_id); dev->cpu = cpu_id;