aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/omap_hwmod.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-09-01 15:18:40 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-09-01 15:18:40 -0400
commit50686e8a3aed2f5d295e9d2e79ff43df461c7b76 (patch)
treee5de912d74c6e1d75e6ecf75f2a62c313955baff /arch/arm/mach-omap2/omap_hwmod.c
parentc5fc249862af862df027030188cc083e072ecd19 (diff)
parent1ec6f701707e4e97e451ff8b662360f1262a6c59 (diff)
Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC platform updates from Olof Johansson: "New or improved SoC support: - add support for Atmel's SAMA5D2 SoC - add support for Freescale i.MX6UL - improved support for TI's DM814x platform - misc fixes and improvements for RockChip platforms - Marvell MVEBU suspend/resume support A few driver changes that ideally would belong in the drivers branch are also here (acked by appropriate maintainers): - power key input driver for Freescale platforms (svns) - RTC driver updates for Freescale platforms (svns/mxc) - clk fixes for TI DM814/816X + a bunch of other changes for various platforms" * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (83 commits) ARM: rockchip: pm: Fix PTR_ERR() argument ARM: imx: mach-imx6ul: Fix allmodconfig build clk: ti: fix for definition movement ARM: uniphier: drop v7_invalidate_l1 call at secondary entry memory: kill off set_irq_flags usage rtc: snvs: select option REGMAP_MMIO ARM: brcmstb: select ARCH_DMA_ADDR_T_64BIT for LPAE ARM: BCM: Enable ARM erratum 798181 for BRCMSTB ARM: OMAP2+: Fix power domain operations regression caused by 81xx ARM: rockchip: enable PMU_GPIOINT_WAKEUP_EN when entering shallow suspend ARM: rockchip: set correct stabilization thresholds in suspend ARM: rockchip: rename osc_switch_to_32k variable ARM: imx6ul: add fec MAC refrence clock and phy fixup init ARM: imx6ul: add fec bits to GPR syscon definition rtc: mxc: add support of device tree dt-binding: document the binding for mxc rtc rtc: mxc: use a second rtc clock ARM: davinci: cp_intc: use IRQCHIP_SKIP_SET_WAKE instead of irq_set_wake callback soc: mediatek: Fix SCPSYS compilation ARM: at91/soc: add basic support for new sama5d2 SoC ...
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod.c')
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 6ef9e6341d96..cc8a987149e2 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -300,7 +300,20 @@ static void _write_sysconfig(u32 v, struct omap_hwmod *oh)
300 300
301 /* Module might have lost context, always update cache and register */ 301 /* Module might have lost context, always update cache and register */
302 oh->_sysc_cache = v; 302 oh->_sysc_cache = v;
303
304 /*
305 * Some IP blocks (such as RTC) require unlocking of IP before
306 * accessing its registers. If a function pointer is present
307 * to unlock, then call it before accessing sysconfig and
308 * call lock after writing sysconfig.
309 */
310 if (oh->class->unlock)
311 oh->class->unlock(oh);
312
303 omap_hwmod_write(v, oh, oh->class->sysc->sysc_offs); 313 omap_hwmod_write(v, oh, oh->class->sysc->sysc_offs);
314
315 if (oh->class->lock)
316 oh->class->lock(oh);
304} 317}
305 318
306/** 319/**
@@ -3887,7 +3900,8 @@ void __init omap_hwmod_init(void)
3887 soc_ops.init_clkdm = _init_clkdm; 3900 soc_ops.init_clkdm = _init_clkdm;
3888 soc_ops.update_context_lost = _omap4_update_context_lost; 3901 soc_ops.update_context_lost = _omap4_update_context_lost;
3889 soc_ops.get_context_lost = _omap4_get_context_lost; 3902 soc_ops.get_context_lost = _omap4_get_context_lost;
3890 } else if (cpu_is_ti816x() || soc_is_am33xx() || soc_is_am43xx()) { 3903 } else if (cpu_is_ti814x() || cpu_is_ti816x() || soc_is_am33xx() ||
3904 soc_is_am43xx()) {
3891 soc_ops.enable_module = _omap4_enable_module; 3905 soc_ops.enable_module = _omap4_enable_module;
3892 soc_ops.disable_module = _omap4_disable_module; 3906 soc_ops.disable_module = _omap4_disable_module;
3893 soc_ops.wait_target_ready = _omap4_wait_target_ready; 3907 soc_ops.wait_target_ready = _omap4_wait_target_ready;