OMAP2+: hwmod: Update the sysc_cache in case module context is lost
authorRajendra Nayak <rnayak@ti.com>
Tue, 14 Dec 2010 19:42:36 +0000 (12:42 -0700)
committerPaul Walmsley <paul@pwsan.com>
Wed, 22 Dec 2010 02:55:13 +0000 (19:55 -0700)
Do not skip the sysc programming in the hmwod framework based
on the cached value alone, since at times the module might have lost
context (due to the Powerdomain in which the module belongs
transitions to either Open Switch RET or OFF).

Identifying if a module has lost context requires atleast one
register read, and since a register read has more latency than
a write, it makes sense to do a blind write always.

Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Acked-by: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Benoit Cousson <b-cousson@ti.com>
Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
arch/arm/mach-omap2/omap_hwmod.c

index 31990e92c57356a26129b78c3546a7d24f8ef6a2..a039b37b8e0ccfc15a35a04ae2453dad56dbcc8d 100644 (file)
@@ -210,10 +210,9 @@ static void _write_sysconfig(u32 v, struct omap_hwmod *oh)
 
        /* XXX ensure module interface clock is up */
 
-       if (oh->_sysc_cache != v) {
-               oh->_sysc_cache = v;
-               omap_hwmod_write(v, oh, oh->class->sysc->sysc_offs);
-       }
+       /* Module might have lost context, always update cache and register */
+       oh->_sysc_cache = v;
+       omap_hwmod_write(v, oh, oh->class->sysc->sysc_offs);
 }
 
 /**