From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Amit Daniel Kachhap <amit.kachhap@linaro.org>
Cc: linux-samsung-soc@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, kgene.kim@samsung.com,
linaro-dev@lists.linaro.org, patches@linaro.org,
Robert Lee <rob.lee@linaro.org>
Subject: Re: [PATCH] ARM: exynos: Adapt to cpuidle core time keeping and irq enable
Date: Wed, 25 Apr 2012 16:44:54 +0200 [thread overview]
Message-ID: <4F980DE6.1020504@linaro.org> (raw)
In-Reply-To: <1335355912-26063-1-git-send-email-amit.kachhap@linaro.org>
On 04/25/2012 02:11 PM, Amit Daniel Kachhap wrote:
> This patch enables core cpuidle timekeeping and irq enabling and
> remove those redundant parts from the exynos cpuidle drivers
>
> CC: Daniel Lezcano<daniel.lezcano@linaro.org>
> CC: Robert Lee<rob.lee@linaro.org>
> Signed-off-by: Amit Daniel<amit.kachhap@linaro.org>
> ---
> arch/arm/mach-exynos/cpuidle.c | 53 ++++-----------------------------------
> 1 files changed, 6 insertions(+), 47 deletions(-)
>
> diff --git a/arch/arm/mach-exynos/cpuidle.c b/arch/arm/mach-exynos/cpuidle.c
> index 33ab4e7..26dac28 100644
> --- a/arch/arm/mach-exynos/cpuidle.c
> +++ b/arch/arm/mach-exynos/cpuidle.c
> @@ -20,6 +20,7 @@
> #include<asm/smp_scu.h>
> #include<asm/suspend.h>
> #include<asm/unified.h>
> +#include<asm/cpuidle.h>
> #include<mach/regs-pmu.h>
> #include<mach/pmu.h>
>
> @@ -34,22 +35,12 @@
>
> #define S5P_CHECK_AFTR 0xFCBA0D10
>
> -static int exynos4_enter_idle(struct cpuidle_device *dev,
> - struct cpuidle_driver *drv,
> - int index);
> static int exynos4_enter_lowpower(struct cpuidle_device *dev,
> struct cpuidle_driver *drv,
> int index);
>
> static struct cpuidle_state exynos4_cpuidle_set[] __initdata = {
> - [0] = {
> - .enter = exynos4_enter_idle,
> - .exit_latency = 1,
> - .target_residency = 100000,
> - .flags = CPUIDLE_FLAG_TIME_VALID,
> - .name = "C0",
> - .desc = "ARM clock gating(WFI)",
> - },
> + [0] = ARM_CPUIDLE_WFI_STATE,
> [1] = {
> .enter = exynos4_enter_lowpower,
> .exit_latency = 300,
> @@ -63,8 +54,9 @@ static struct cpuidle_state exynos4_cpuidle_set[] __initdata = {
> static DEFINE_PER_CPU(struct cpuidle_device, exynos4_cpuidle_device);
>
> static struct cpuidle_driver exynos4_idle_driver = {
> - .name = "exynos4_idle",
> - .owner = THIS_MODULE,
> + .name = "exynos4_idle",
> + .owner = THIS_MODULE,
> + .en_core_tk_irqen = 1,
> };
>
> /* Ext-GIC nIRQ/nFIQ is the only wakeup source in AFTR */
> @@ -103,13 +95,8 @@ static int exynos4_enter_core0_aftr(struct cpuidle_device *dev,
> struct cpuidle_driver *drv,
> int index)
> {
> - struct timeval before, after;
> - int idle_time;
> unsigned long tmp;
>
> - local_irq_disable();
> - do_gettimeofday(&before);
> -
> exynos4_set_wakeupmask();
>
> /* Set value of power down register for aftr mode */
> @@ -150,34 +137,6 @@ static int exynos4_enter_core0_aftr(struct cpuidle_device *dev,
> /* Clear wakeup state register */
> __raw_writel(0x0, S5P_WAKEUP_STAT);
>
> - do_gettimeofday(&after);
> -
> - local_irq_enable();
> - idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC +
> - (after.tv_usec - before.tv_usec);
> -
> - dev->last_residency = idle_time;
> - return index;
> -}
> -
> -static int exynos4_enter_idle(struct cpuidle_device *dev,
> - struct cpuidle_driver *drv,
> - int index)
> -{
> - struct timeval before, after;
> - int idle_time;
> -
> - local_irq_disable();
> - do_gettimeofday(&before);
> -
> - cpu_do_idle();
> -
> - do_gettimeofday(&after);
> - local_irq_enable();
> - idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC +
> - (after.tv_usec - before.tv_usec);
> -
> - dev->last_residency = idle_time;
> return index;
> }
>
> @@ -192,7 +151,7 @@ static int exynos4_enter_lowpower(struct cpuidle_device *dev,
> new_index = drv->safe_state_index;
>
> if (new_index == 0)
> - return exynos4_enter_idle(dev, drv, new_index);
> + return arm_cpuidle_simple_enter(dev, drv, new_index);
> else
> return exynos4_enter_core0_aftr(dev, drv, new_index);
> }
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
WARNING: multiple messages have this Message-ID (diff)
From: daniel.lezcano@linaro.org (Daniel Lezcano)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: exynos: Adapt to cpuidle core time keeping and irq enable
Date: Wed, 25 Apr 2012 16:44:54 +0200 [thread overview]
Message-ID: <4F980DE6.1020504@linaro.org> (raw)
In-Reply-To: <1335355912-26063-1-git-send-email-amit.kachhap@linaro.org>
On 04/25/2012 02:11 PM, Amit Daniel Kachhap wrote:
> This patch enables core cpuidle timekeeping and irq enabling and
> remove those redundant parts from the exynos cpuidle drivers
>
> CC: Daniel Lezcano<daniel.lezcano@linaro.org>
> CC: Robert Lee<rob.lee@linaro.org>
> Signed-off-by: Amit Daniel<amit.kachhap@linaro.org>
> ---
> arch/arm/mach-exynos/cpuidle.c | 53 ++++-----------------------------------
> 1 files changed, 6 insertions(+), 47 deletions(-)
>
> diff --git a/arch/arm/mach-exynos/cpuidle.c b/arch/arm/mach-exynos/cpuidle.c
> index 33ab4e7..26dac28 100644
> --- a/arch/arm/mach-exynos/cpuidle.c
> +++ b/arch/arm/mach-exynos/cpuidle.c
> @@ -20,6 +20,7 @@
> #include<asm/smp_scu.h>
> #include<asm/suspend.h>
> #include<asm/unified.h>
> +#include<asm/cpuidle.h>
> #include<mach/regs-pmu.h>
> #include<mach/pmu.h>
>
> @@ -34,22 +35,12 @@
>
> #define S5P_CHECK_AFTR 0xFCBA0D10
>
> -static int exynos4_enter_idle(struct cpuidle_device *dev,
> - struct cpuidle_driver *drv,
> - int index);
> static int exynos4_enter_lowpower(struct cpuidle_device *dev,
> struct cpuidle_driver *drv,
> int index);
>
> static struct cpuidle_state exynos4_cpuidle_set[] __initdata = {
> - [0] = {
> - .enter = exynos4_enter_idle,
> - .exit_latency = 1,
> - .target_residency = 100000,
> - .flags = CPUIDLE_FLAG_TIME_VALID,
> - .name = "C0",
> - .desc = "ARM clock gating(WFI)",
> - },
> + [0] = ARM_CPUIDLE_WFI_STATE,
> [1] = {
> .enter = exynos4_enter_lowpower,
> .exit_latency = 300,
> @@ -63,8 +54,9 @@ static struct cpuidle_state exynos4_cpuidle_set[] __initdata = {
> static DEFINE_PER_CPU(struct cpuidle_device, exynos4_cpuidle_device);
>
> static struct cpuidle_driver exynos4_idle_driver = {
> - .name = "exynos4_idle",
> - .owner = THIS_MODULE,
> + .name = "exynos4_idle",
> + .owner = THIS_MODULE,
> + .en_core_tk_irqen = 1,
> };
>
> /* Ext-GIC nIRQ/nFIQ is the only wakeup source in AFTR */
> @@ -103,13 +95,8 @@ static int exynos4_enter_core0_aftr(struct cpuidle_device *dev,
> struct cpuidle_driver *drv,
> int index)
> {
> - struct timeval before, after;
> - int idle_time;
> unsigned long tmp;
>
> - local_irq_disable();
> - do_gettimeofday(&before);
> -
> exynos4_set_wakeupmask();
>
> /* Set value of power down register for aftr mode */
> @@ -150,34 +137,6 @@ static int exynos4_enter_core0_aftr(struct cpuidle_device *dev,
> /* Clear wakeup state register */
> __raw_writel(0x0, S5P_WAKEUP_STAT);
>
> - do_gettimeofday(&after);
> -
> - local_irq_enable();
> - idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC +
> - (after.tv_usec - before.tv_usec);
> -
> - dev->last_residency = idle_time;
> - return index;
> -}
> -
> -static int exynos4_enter_idle(struct cpuidle_device *dev,
> - struct cpuidle_driver *drv,
> - int index)
> -{
> - struct timeval before, after;
> - int idle_time;
> -
> - local_irq_disable();
> - do_gettimeofday(&before);
> -
> - cpu_do_idle();
> -
> - do_gettimeofday(&after);
> - local_irq_enable();
> - idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC +
> - (after.tv_usec - before.tv_usec);
> -
> - dev->last_residency = idle_time;
> return index;
> }
>
> @@ -192,7 +151,7 @@ static int exynos4_enter_lowpower(struct cpuidle_device *dev,
> new_index = drv->safe_state_index;
>
> if (new_index == 0)
> - return exynos4_enter_idle(dev, drv, new_index);
> + return arm_cpuidle_simple_enter(dev, drv, new_index);
> else
> return exynos4_enter_core0_aftr(dev, drv, new_index);
> }
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
--
<http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
next prev parent reply other threads:[~2012-04-25 14:44 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-25 12:11 [PATCH] ARM: exynos: Adapt to cpuidle core time keeping and irq enable Amit Daniel Kachhap
2012-04-25 12:11 ` Amit Daniel Kachhap
2012-04-25 14:44 ` Daniel Lezcano [this message]
2012-04-25 14:44 ` Daniel Lezcano
2012-04-30 16:43 ` Rob Lee
2012-04-30 16:43 ` Rob Lee
2012-05-08 4:01 ` amit kachhap
2012-05-08 4:01 ` amit kachhap
2012-05-09 11:53 ` Kukjin Kim
2012-05-09 11:53 ` Kukjin Kim
2012-05-09 12:09 ` Daniel Lezcano
2012-05-09 12:09 ` Daniel Lezcano
2012-05-09 12:18 ` Kukjin Kim
2012-05-09 12:18 ` Kukjin Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F980DE6.1020504@linaro.org \
--to=daniel.lezcano@linaro.org \
--cc=amit.kachhap@linaro.org \
--cc=kgene.kim@samsung.com \
--cc=linaro-dev@lists.linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=patches@linaro.org \
--cc=rob.lee@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.