Hi Tony, [...] >> I've applied these into dmtimer branch with some changes to simplify >> things further. I've also merged it into linux-omap master branch >> for further testing. >> >> I'll reply to your patches with the changes I've done. Care give the >> dmtimer branch a try and see if I've missed something? > Sure, I will go through the changes and do testing on it. Please find the missing/correction in the patch below. You can include them as part of patch 9. Thanks. -- Tarun >From 98cb7949054214684d7361eed2e382fa716ab0da Mon Sep 17 00:00:00 2001 From: Tarun Kanti DebBarma <tarun.kanti@xxxxxx> Date: Fri, 23 Sep 2011 14:48:56 +0530 Subject: [correction] [PATCH 09/12] OMAP: dmtimer: low-power mode support These are some missing content as well as correction to this patch. Signed-off-by: Tarun Kanti DebBarma <tarun.kanti@xxxxxx> --- arch/arm/plat-omap/dmtimer.c | 21 ++++++++++++++++++--- 1 files changed, 18 insertions(+), 3 deletions(-) diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c index de7896f..81a2305 100644 --- a/arch/arm/plat-omap/dmtimer.c +++ b/arch/arm/plat-omap/dmtimer.c @@ -79,9 +79,9 @@ static void omap_dm_timer_write_reg(struct omap_dm_timer *timer, u32 reg, static void omap_timer_restore_context(struct omap_dm_timer *timer) { - omap_dm_timer_write_reg(timer, OMAP_TIMER_OCP_CFG_OFFSET, - timer->context.tiocp_cfg); - if (timer->revision > 1) + __raw_writel(timer->context.tiocp_cfg, + timer->io_base + OMAP_TIMER_OCP_CFG_OFFSET); + if (timer->revision == 1) __raw_writel(timer->context.tistat, timer->sys_stat); __raw_writel(timer->context.tisr, timer->irq_stat); @@ -356,6 +356,21 @@ int omap_dm_timer_stop(struct omap_dm_timer *timer) __omap_dm_timer_stop(timer, timer->posted, rate); + if (timer->loses_context) { + if (timer->get_context_loss_count) + timer->ctx_loss_count = + timer->get_context_loss_count(&timer->pdev->dev); + } + + /* + * Since the register values are computed and written within + * __omap_dm_timer_stop, we need to use read to retrieve the + * context. + */ + timer->context.tclr = + omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG); + timer->context.tisr = __raw_readl(timer->irq_stat); + omap_dm_timer_disable(timer); return 0; } EXPORT_SYMBOL_GPL(omap_dm_timer_stop); -- 1.7.0.4 -- 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