[2/4] cpuidle / omap4 : use CPUIDLE_FLAG_TIMER_STOP flag

Message ID 1363868494-5503-2-git-send-email-daniel.lezcano@linaro.org
State New
Headers show

Commit Message

Daniel Lezcano March 21, 2013, 12:21 p.m.
Use the CPUIDLE_FLAG_TIMER_STOP and let the cpuidle framework
to handle the CLOCK_EVT_NOTIFY_BROADCAST_ENTER/EXIT when entering
this state.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Len Brown <lenb@kernel.org>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
Cc: Rajendra Nayak <rnayak@ti.com>
Cc: Sascha Hauer <kernel@pengutronix.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
---
 arch/arm/mach-omap2/cpuidle44xx.c |   11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

Comments

Santosh Shilimkar March 21, 2013, 1:01 p.m. | #1
$subject
s/'cpuidle/omap4' /ARM: CPUidle: OMAP4:

On Thursday 21 March 2013 05:51 PM, Daniel Lezcano wrote:
> Use the CPUIDLE_FLAG_TIMER_STOP and let the cpuidle framework
> to handle the CLOCK_EVT_NOTIFY_BROADCAST_ENTER/EXIT when entering
> this state.
> 
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> Cc: Len Brown <lenb@kernel.org>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
> Cc: Rajendra Nayak <rnayak@ti.com>
> Cc: Sascha Hauer <kernel@pengutronix.de>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> ---
Otherwise
Akced-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Santosh Shilimkar March 21, 2013, 1:05 p.m. | #2
On Thursday 21 March 2013 06:31 PM, Santosh Shilimkar wrote:
> $subject
> s/'cpuidle/omap4' /ARM: CPUidle: OMAP4:
> 
> On Thursday 21 March 2013 05:51 PM, Daniel Lezcano wrote:
>> Use the CPUIDLE_FLAG_TIMER_STOP and let the cpuidle framework
>> to handle the CLOCK_EVT_NOTIFY_BROADCAST_ENTER/EXIT when entering
>> this state.
>>
>> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>> Cc: Len Brown <lenb@kernel.org>
>> Cc: Linus Walleij <linus.walleij@linaro.org>
>> Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
>> Cc: Rajendra Nayak <rnayak@ti.com>
>> Cc: Sascha Hauer <kernel@pengutronix.de>
>> Cc: Thomas Gleixner <tglx@linutronix.de>
>> ---
> Otherwise
> Akced-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
> 
One more comment for this patch as well as imx and ux500 one.

Remove "#include <linux/clockchips.h>" since it is not needed
anymore.

Regards,
Santosh
Daniel Lezcano March 21, 2013, 1:14 p.m. | #3
On 03/21/2013 02:05 PM, Santosh Shilimkar wrote:
> On Thursday 21 March 2013 06:31 PM, Santosh Shilimkar wrote:
>> $subject
>> s/'cpuidle/omap4' /ARM: CPUidle: OMAP4:
>>
>> On Thursday 21 March 2013 05:51 PM, Daniel Lezcano wrote:
>>> Use the CPUIDLE_FLAG_TIMER_STOP and let the cpuidle framework
>>> to handle the CLOCK_EVT_NOTIFY_BROADCAST_ENTER/EXIT when entering
>>> this state.
>>>
>>> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>>> Cc: Len Brown <lenb@kernel.org>
>>> Cc: Linus Walleij <linus.walleij@linaro.org>
>>> Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
>>> Cc: Rajendra Nayak <rnayak@ti.com>
>>> Cc: Sascha Hauer <kernel@pengutronix.de>
>>> Cc: Thomas Gleixner <tglx@linutronix.de>
>>> ---
>> Otherwise
>> Akced-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
>>
> One more comment for this patch as well as imx and ux500 one.
> 
> Remove "#include <linux/clockchips.h>" since it is not needed
> anymore.

Actually, it is still needed for:

omap_setup_broadcast_timer
imx6q_setup_broadcast_timer
ux500_setup_broadcast_timer

I am preparing another round of patches to move these initialization to
the cpuidle framework but I have to take into account the multiple
drivers support which could be impacted, this is why it is a separated
patchset.
Santosh Shilimkar March 21, 2013, 1:21 p.m. | #4
On Thursday 21 March 2013 06:44 PM, Daniel Lezcano wrote:
> On 03/21/2013 02:05 PM, Santosh Shilimkar wrote:
>> On Thursday 21 March 2013 06:31 PM, Santosh Shilimkar wrote:
>>> $subject
>>> s/'cpuidle/omap4' /ARM: CPUidle: OMAP4:
>>>
>>> On Thursday 21 March 2013 05:51 PM, Daniel Lezcano wrote:
>>>> Use the CPUIDLE_FLAG_TIMER_STOP and let the cpuidle framework
>>>> to handle the CLOCK_EVT_NOTIFY_BROADCAST_ENTER/EXIT when entering
>>>> this state.
>>>>
>>>> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>>>> Cc: Len Brown <lenb@kernel.org>
>>>> Cc: Linus Walleij <linus.walleij@linaro.org>
>>>> Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
>>>> Cc: Rajendra Nayak <rnayak@ti.com>
>>>> Cc: Sascha Hauer <kernel@pengutronix.de>
>>>> Cc: Thomas Gleixner <tglx@linutronix.de>
>>>> ---
>>> Otherwise
>>> Akced-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
>>>
>> One more comment for this patch as well as imx and ux500 one.
>>
>> Remove "#include <linux/clockchips.h>" since it is not needed
>> anymore.
> 
> Actually, it is still needed for:
> 
> omap_setup_broadcast_timer
> imx6q_setup_broadcast_timer
> ux500_setup_broadcast_timer
> 
Indeed !!

> I am preparing another round of patches to move these initialization to
> the cpuidle framework but I have to take into account the multiple
> drivers support which could be impacted, this is why it is a separated
> patchset.
> 
fair enough.

Regards,
Santosh
Kevin Hilman March 22, 2013, 5:05 p.m. | #5
Daniel Lezcano <daniel.lezcano@linaro.org> writes:

> Use the CPUIDLE_FLAG_TIMER_STOP and let the cpuidle framework
> to handle the CLOCK_EVT_NOTIFY_BROADCAST_ENTER/EXIT when entering
> this state.
>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> Cc: Len Brown <lenb@kernel.org>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
> Cc: Rajendra Nayak <rnayak@ti.com>
> Cc: Sascha Hauer <kernel@pengutronix.de>
> Cc: Thomas Gleixner <tglx@linutronix.de>

OMAP changes look good.

Reviewed-by: Kevin Hilman <khilman@linaro.org>

Patch

diff --git a/arch/arm/mach-omap2/cpuidle44xx.c b/arch/arm/mach-omap2/cpuidle44xx.c
index d639aef..fe0e025 100644
--- a/arch/arm/mach-omap2/cpuidle44xx.c
+++ b/arch/arm/mach-omap2/cpuidle44xx.c
@@ -82,7 +82,6 @@  static int omap4_enter_idle_coupled(struct cpuidle_device *dev,
 			int index)
 {
 	struct omap4_idle_statedata *cx = &omap4_idle_data[index];
-	int cpu_id = smp_processor_id();
 
 	local_fiq_disable();
 
@@ -109,8 +108,6 @@  static int omap4_enter_idle_coupled(struct cpuidle_device *dev,
 		}
 	}
 
-	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &cpu_id);
-
 	/*
 	 * Call idle CPU PM enter notifier chain so that
 	 * VFP and per CPU interrupt context is saved.
@@ -152,8 +149,6 @@  static int omap4_enter_idle_coupled(struct cpuidle_device *dev,
 	if (omap4_mpuss_read_prev_context_state())
 		cpu_cluster_pm_exit();
 
-	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &cpu_id);
-
 fail:
 	cpuidle_coupled_parallel_barrier(dev, &abort_barrier);
 	cpu_done[dev->cpu] = false;
@@ -193,7 +188,8 @@  static struct cpuidle_driver omap4_idle_driver = {
 			/* C2 - CPU0 OFF + CPU1 OFF + MPU CSWR */
 			.exit_latency = 328 + 440,
 			.target_residency = 960,
-			.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED,
+			.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED |
+			         CPUIDLE_FLAG_TIMER_STOP,
 			.enter = omap4_enter_idle_coupled,
 			.name = "C2",
 			.desc = "MPUSS CSWR",
@@ -202,7 +198,8 @@  static struct cpuidle_driver omap4_idle_driver = {
 			/* C3 - CPU0 OFF + CPU1 OFF + MPU OSWR */
 			.exit_latency = 460 + 518,
 			.target_residency = 1100,
-			.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED,
+			.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED |
+			         CPUIDLE_FLAG_TIMER_STOP,
 			.enter = omap4_enter_idle_coupled,
 			.name = "C3",
 			.desc = "MPUSS OSWR",