ARM: exynos: Adapt to cpuidle core time keeping and irq enable
Subsystems (3)
PATCH 1/1 ARM: exynos: Adapt to cpuidle core time keeping and irq enable
This patch enables core cpuidle timekeeping and irq enabling and remove those redundant parts from the exynos cpuidle drivers
--- arch/arm/mach-exynos/cpuidle.c | 53 ++++----------------------------------- 1 files changed, 6 insertions(+), 47 deletions(-)
arch/arm/mach-exynos/cpuidle.c +6 -47
@@ -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); }
Signature · 1 line
1.7.1
PATCH 1/1 ARM: exynos: Adapt to cpuidle core time keeping and irq enable
Quoted 108 lines · Amit Daniel Kachhap
This patch enables core cpuidle timekeeping and irq enabling and remove those redundant parts from the exynos cpuidle drivers
CC Daniel Lezcano<[email protected]>CC Robert Lee<[email protected]>Signed-off-by Amit Daniel<[email protected]>--- arch/arm/mach-exynos/cpuidle.c | 53 ++++----------------------------------- 1 files changed, 6 insertions(+), 47 deletions(-)arch/arm/mach-exynos/cpuidle.c +5
-46@@ -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; }
arch/arm/mach-exynos/cpuidle.c static int exynos4_enter_lowpower(struct cpuidle_device *dev, · line 157
Quoted 8 lines
arch/arm/mach-exynos/cpuidle.c +1
-1@@ -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); }
Signature · 5 lines
<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
PATCH 1/1 ARM: exynos: Adapt to cpuidle core time keeping and irq enable
Quoted 118 lines · Daniel Lezcano
Quoted 117 lines · Amit Daniel Kachhap
This patch enables core cpuidle timekeeping and irq enabling and remove those redundant parts from the exynos cpuidle drivers
CC Daniel Lezcano<[email protected]>CC Robert Lee<[email protected]>Signed-off-by Amit Daniel<[email protected]>---
?arch/arm/mach-exynos/cpuidle.c | ? 53
++++-----------------------------------
?1 files changed, 6 insertions(+), 47 deletions(-)arch/arm/mach-exynos/cpuidle.c +0
-0@@ -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>arch/arm/mach-exynos/cpuidle.c +0
-0@@ -34,22 +35,12 @@?#define
S5P_CHECK_AFTR? ? ? ? ? ? ? ?0xFCBA0D10-static int exynos4_enter_idle(struct
cpuidle_device*dev,
- ? ? ? ? ? ? ? ? ? ? ? structcpuidle_driver*drv,
- ? ? ? ? ? ? ? ? ? ? ? ? ? ? int index);
?static int exynos4_enter_lowpower(structcpuidle_device*dev, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?structcpuidle_driver*drv, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int index);?static struct
cpuidle_stateexynos4_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,arch/arm/mach-exynos/cpuidle.c +3
-2@@ -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 */
arch/arm/mach-exynos/cpuidle.c +0
-5@@ -103,13 +95,8 @@ static int exynos4_enter_core0_aftr(structcpuidle_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 */
arch/arm/mach-exynos/cpuidle.c +0
-0@@ -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);arch/arm/mach-exynos/cpuidle.c +0
-27- - ? ? ? 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;
?}arch/arm/mach-exynos/cpuidle.c +0
-0@@ -192,7 +151,7 @@ static int exynos4_enter_lowpower(structcpuidle_device *dev, ? ? ? ? ? ? ? ?new_index = drv->safe_state_index;
Quoted 6 lines
Quoted 6 lines
arch/arm/mach-exynos/cpuidle.c +1
-1? ? ? ?if (new_index == 0) - ? ? ? ? ? ? ? return exynos4_enter_idle(dev, drv, new_index); + ? ? ? ? ? ? ? return arm_cpuidle_simple_enter(dev, drv, new_index);? ? ? ?else
? ? ? ? ? ? ? ?returnexynos4_enter_core0_aftr(dev, drv, new_index); ?}
Quoted 11 lines
Acked-by Daniel Lezcano <[email protected]>--
?<http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCsFollow Linaro: ?<http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
PATCH 1/1 ARM: exynos: Adapt to cpuidle core time keeping and irq enable
Hi Mr Kukjin,
Any comment or update about this patch?
Regards,
Amit Daniel
Quoted 144 lines · Rob Lee
Quoted 118 lines · Daniel Lezcano
Quoted 117 lines · Amit Daniel Kachhap
This patch enables core cpuidle timekeeping and irq enabling and remove those redundant parts from the exynos cpuidle drivers
CC Daniel Lezcano<[email protected]>CC Robert Lee<[email protected]>Signed-off-by Amit Daniel<[email protected]>---
?arch/arm/mach-exynos/cpuidle.c | ? 53
++++-----------------------------------
?1 files changed, 6 insertions(+), 47 deletions(-)arch/arm/mach-exynos/cpuidle.c +0
-0@@ -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>arch/arm/mach-exynos/cpuidle.c +0
-0@@ -34,22 +35,12 @@?#define
S5P_CHECK_AFTR? ? ? ? ? ? ? ?0xFCBA0D10-static int exynos4_enter_idle(struct
cpuidle_device*dev,
- ? ? ? ? ? ? ? ? ? ? ? structcpuidle_driver*drv,
- ? ? ? ? ? ? ? ? ? ? ? ? ? ? int index);
?static int exynos4_enter_lowpower(structcpuidle_device*dev, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?structcpuidle_driver*drv, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int index);?static struct
cpuidle_stateexynos4_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,arch/arm/mach-exynos/cpuidle.c +3
-2@@ -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 */
arch/arm/mach-exynos/cpuidle.c +0
-5@@ -103,13 +95,8 @@ static int exynos4_enter_core0_aftr(structcpuidle_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 */
arch/arm/mach-exynos/cpuidle.c +0
-0@@ -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);arch/arm/mach-exynos/cpuidle.c +0
-27- - ? ? ? 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;
?}arch/arm/mach-exynos/cpuidle.c +0
-0@@ -192,7 +151,7 @@ static int exynos4_enter_lowpower(structcpuidle_device *dev, ? ? ? ? ? ? ? ?new_index = drv->safe_state_index;Quoted 6 lines
Quoted 6 lines
arch/arm/mach-exynos/cpuidle.c +1
-1? ? ? ?if (new_index == 0) - ? ? ? ? ? ? ? return exynos4_enter_idle(dev, drv, new_index); + ? ? ? ? ? ? ? return arm_cpuidle_simple_enter(dev, drv, new_index);? ? ? ?else
? ? ? ? ? ? ? ?returnexynos4_enter_core0_aftr(dev, drv, new_index); ?}Acked-by Robert Lee <[email protected]>Quoted 11 lines
Acked-by Daniel Lezcano <[email protected]>--
?<http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCsFollow Linaro: ?<http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo at vger.kernel.org
More majordomo info at ?http://vger.kernel.org/majordomo-info.html
PATCH 1/1 ARM: exynos: Adapt to cpuidle core time keeping and irq enable
Quoted 5 lines · amit kachhap
Hi Mr Kukjin,
Any comment or update about this patch?
I'm not sure we don't need to check the idle_time? Others, looks ok to me.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
Quoted 150 lines
Regards,
Amit DanielQuoted 120 lines · Rob Lee
Quoted 118 lines · Daniel Lezcano
Quoted 117 lines · Amit Daniel Kachhap
This patch enables core cpuidle timekeeping and irq enabling and remove those redundant parts from the exynos cpuidle drivers
CC Daniel Lezcano<[email protected]>CC Robert Lee<[email protected]>Signed-off-by Amit Daniel<[email protected]>--- arch/arm/mach-exynos/cpuidle.c | 53 ++++----------------------------------- 1 files changed, 6 insertions(+), 47 deletions(-)arch/arm/mach-exynos/cpuidle.c +5
-13@@ -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 */
arch/arm/mach-exynos/cpuidle.c +0
-5@@ -103,13 +95,8 @@ static int exynos4_enter_core0_aftr(structcpuidle_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 */arch/arm/mach-exynos/cpuidle.c +0
-28@@ -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(structcpuidle_device *dev, new_index = drv->safe_state_index;Quoted 15 lines
Quoted 6 lines
Quoted 6 lines
arch/arm/mach-exynos/cpuidle.c +1
-1if (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 Robert Lee <[email protected]>Quoted 6 lines
Acked-by Daniel Lezcano <[email protected]>--
<http://www.linaro.org/> Linaro.org ? Open source software for ARMSoCs
Quoted 7 lines
Quoted 5 lines
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
Quoted 2 lines
the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 1/1 ARM: exynos: Adapt to cpuidle core time keeping and irq enable
Quoted 8 lines · Kukjin Kim
Quoted 5 lines · amit kachhap
Hi Mr Kukjin,
Any comment or update about this patch?
I'm not sure we don't need to check the
idle_time? Others, looks ok to me.
Hi,
may be I misunderstood your question but the behavior is not changed here, just the code is refactored and using a common routine where the time is computed.
The idle_time computation is done by the cpuidle core now if the en_core_tk_irqen flag is enabled. That allows to remove a lot of duplicated code across the cpuidle drivers.
Thanks
-- Daniel
PATCH 1/1 ARM: exynos: Adapt to cpuidle core time keeping and irq enable
Quoted 13 lines · Daniel Lezcano
Quoted 8 lines · Kukjin Kim
Quoted 5 lines · amit kachhap
Hi Mr Kukjin,
Any comment or update about this patch?
I'm not sure we don't need to check the
idle_time? Others, looks ok to me.Hi,
Quoted 8 lines
may be I misunderstood your question but the behavior is not changed here, just the code is refactored and using a common routine where the time is computed.
The
idle_timecomputation is done by the cpuidle core now if theen_core_tk_irqenflag is enabled. That allows to remove a lot of duplicated code across the cpuidle drivers.
OK, I see and checked. Daniel, thanks.
Amit, this looks ok to me, will apply.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.