Hi Tarun,

On 12/20/2010 11:05 PM, DebBarma, Tarun Kanti wrote:
For some reason the wakeup enable bit is not getting set on OMAP2430,
OMAP2420. This is inspite of the fact that SYSC_HAS_ENAWAKEUP flag is
present in the hwmod database.

This is indeed strange. Did you observe that on OMAP3 & 4?
Did you use the patch that Kevin did recently to fix an issue with the ENAWAKEUP bit?
http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=commit;h=d15ae13fc7428a95b02c1935ebf92324fcb80a5f

The point is that this fix is not really acceptable for my point of view:-(
You really have to check what is going on in the hwmod _enable_wakeup function.

Regards,
Benoit


I am not sure if there is already a patch to fix this problem. Until the
reason is found we need this patch to boot on the above platforms.

Signed-off-by: Tarun Kanti DebBarma<[email protected]>
---
  arch/arm/plat-omap/dmtimer.c |   13 +++++++++++++
  1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index f4aa4a1..007b754 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -227,6 +227,7 @@ static void omap_dm_timer_write_reg(struct omap_dm_timer 
*timer, u32 reg,

  static void omap_dm_timer_prepare(struct omap_dm_timer *timer)
  {
+       u32 l;
        struct dmtimer_platform_data *pdata = timer->pdev->dev.platform_data;

        if (!pdata->is_omap16xx) {
@@ -243,6 +244,18 @@ static void omap_dm_timer_prepare(struct omap_dm_timer 
*timer)
        if (pdata->dm_timer_reset)
                pdata->dm_timer_reset(timer);

+       /*
+        * Enable wake-up on OMAP2420, OMAP2430 CPUs.
+        * FIXME: SYSC_HAS_ENAWAKEUP flag is already set in hwmod database.
+        * But the setting does not seem to work. Need to investigate why
+        * this is happening.
+        */
+       if (cpu_is_omap2430() || cpu_is_omap2420()) {
+               l = omap_dm_timer_read_reg(timer, OMAP_TIMER_OCP_CFG_REG);
+               l |= 1<<  2;
+               omap_dm_timer_write_reg(timer, OMAP_TIMER_OCP_CFG_REG, l);
+       }
+
        omap_dm_timer_set_source(timer, OMAP_TIMER_SRC_32_KHZ);

        /* Match hardware reset default of posted mode */

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to