Re: Bringing back gptimer_wakeup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jun 18, 2012 at 2:48 PM, Tasslehoff Kjappfot
<tasskjapp@xxxxxxxxx> wrote:
> The support for using a timer to wake from suspend was removed in:
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=98e182a26bbbf5575457622337684ef61493e864
>
> I found an alternative patch
> (http://www.mail-archive.com/linux-omap@xxxxxxxxxxxxxxx/msg47836.html) that
> claimed to keep it working using GPTIMER1 instead, but I haven't been able
> to make it work (likely because the timer code has changed a good deal since
> the patch was posted).
>
> Anyone got
> a) a patch that enables this feature on newer kernels, or
> b) an idea how the patch above can be made to work?
>
I had one working against 3.4. may be you can try this out and see it helps.

Regards
Santosh

---
 arch/arm/mach-omap2/pm-debug.c |    5 +++++
 arch/arm/mach-omap2/timer.c    |   12 ++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c
index 814bcd9..8f59a70 100644
--- a/arch/arm/mach-omap2/pm-debug.c
+++ b/arch/arm/mach-omap2/pm-debug.c
@@ -39,6 +39,7 @@
 #include "pm.h"

 u32 enable_off_mode;
+u32 wakeup_timer_seconds = 0;

 #ifdef CONFIG_DEBUG_FS
 #include <linux/debugfs.h>
@@ -276,6 +277,10 @@ static int __init pm_dbg_init(void)

 	(void) debugfs_create_file("enable_off_mode", S_IRUGO | S_IWUSR, d,
 				   &enable_off_mode, &pm_dbg_option_fops);
+
+	(void) debugfs_create_file("wakeup_timer_seconds", S_IRUGO | S_IWUSR, d,
+				   &wakeup_timer_seconds, &pm_dbg_option_fops);
+
 	pm_dbg_init_done = 1;

 	return 0;
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index b28ea5e..31a0628 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -82,6 +82,9 @@
 #define MAX_GPTIMER_ID		12

 static u32 sys_timer_reserved;
+#ifdef CONFIG_PM_DEBUG
+extern u32	wakeup_timer_seconds;
+#endif

 /* Clockevent code */

@@ -138,6 +141,15 @@ static void omap2_gp_timer_set_mode(enum
clock_event_mode mode,
 		break;
 	case CLOCK_EVT_MODE_UNUSED:
 	case CLOCK_EVT_MODE_SHUTDOWN:
+#ifdef CONFIG_PM_DEBUG
+		if (wakeup_timer_seconds) {
+			__omap_dm_timer_write(&clkev, OMAP_TIMER_LOAD_REG,
+			0xffffffff - (clkev.rate * wakeup_timer_seconds), 1);
+			__omap_dm_timer_load_start(&clkev, OMAP_TIMER_CTRL_ST,
+			0xffffffff - (clkev.rate * wakeup_timer_seconds), 1);
+		}
+#endif
+		break;
 	case CLOCK_EVT_MODE_RESUME:
 		break;
 	}
-- 
1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux