aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/omap_hwmod.c
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2015-07-24 00:14:02 -0400
committerTony Lindgren <tony@atomide.com>2015-07-24 00:14:02 -0400
commit97d9a3d0967f711e271ef950f1745307720c95d5 (patch)
tree0fe61791923a06a61e2512feb49b30504550b32c /arch/arm/mach-omap2/omap_hwmod.c
parent228e5fadba3c7d6ef39bac087cd086ab9d68d945 (diff)
parent3b86616e3058462c340710dc7a5ac34ec8453944 (diff)
Merge tag 'for-v4.3/omap-hwmod-prcm-a' of git://git.kernel.org/pub/scm/linux/kernel/git/pjw/omap-pending into omap-for-v4.3/soc
ARM: OMAP2+: PRCM and hwmod changes for v4.3 This series adds: - I/O wakeup support for AM43xx - register lock and unlock support to the hwmod code (needed for the RTC IP blocks on some chips) - several fixes for sparse warnings and an unnecessary null pointer test - a DRA7xx clockdomain configuration workaround, to deal with some hardware bugs Basic build, boot, and PM tests are here: http://www.pwsan.com/omap/testlogs/hwmod-prcm-for-v4.3/20150723080012/ Since I do not have an AM43xx or DRA7xx device, I can't test on those platforms.
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod.c')
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index d78c12e7cb5e..2ceed3192f22 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -299,7 +299,20 @@ static void _write_sysconfig(u32 v, struct omap_hwmod *oh)
299 299
300 /* Module might have lost context, always update cache and register */ 300 /* Module might have lost context, always update cache and register */
301 oh->_sysc_cache = v; 301 oh->_sysc_cache = v;
302
303 /*
304 * Some IP blocks (such as RTC) require unlocking of IP before
305 * accessing its registers. If a function pointer is present
306 * to unlock, then call it before accessing sysconfig and
307 * call lock after writing sysconfig.
308 */
309 if (oh->class->unlock)
310 oh->class->unlock(oh);
311
302 omap_hwmod_write(v, oh, oh->class->sysc->sysc_offs); 312 omap_hwmod_write(v, oh, oh->class->sysc->sysc_offs);
313
314 if (oh->class->lock)
315 oh->class->lock(oh);
303} 316}
304 317
305/** 318/**