diff options
| author | Olof Johansson <olof@lixom.net> | 2013-02-12 15:33:39 -0800 | 
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2013-02-12 15:33:39 -0800 | 
| commit | ebcfe0faf969fe64060132a455db64bcc3517e5c (patch) | |
| tree | fadeb32f8820bfa53a5a37f967bf0d58aafeb82f /arch/arm/mach-omap2/omap_hwmod.c | |
| parent | 488c77c961e65894d864af4da720a880a5fbb066 (diff) | |
| parent | 93b23711b7132400d4d76f31c660d27a2bb0afdb (diff) | |
| download | olio-linux-3.10-ebcfe0faf969fe64060132a455db64bcc3517e5c.tar.xz olio-linux-3.10-ebcfe0faf969fe64060132a455db64bcc3517e5c.zip  | |
Merge tag 'omap-for-v3.9/pm-omap4-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into late/omap
From Tony Lindgren:
omap4 pm changes via Paul Walmsley <paul@pwsan.com>:
Some OMAP4 power management fixes and audio device integration
patches.  This pull request contains a fix for an issue discovered during
branch integration.
Basic test logs are available at:
    http://www.pwsan.com/omap/testlogs/omap4_prcm_devel_a_3.9/20130210112717/
* tag 'omap-for-v3.9/pm-omap4-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: OMAP4: hwmod data: Enable AESS hwmod device
  ARM: OMAP4: hwmod data: Update AESS data with memory bank area
  ARM: OMAP4+: AESS: enable internal auto-gating during initial setup
  ASoC: TI AESS: add autogating-enable function, callable from architecture code
  ARM: OMAP2+: hwmod: add enable_preprogram hook
  ARM: OMAP2+: PM: Fix the dt return condition in pm_late_init()
  ARM: OMAP4: PM: Warn users about usage of older bootloaders
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.c | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 30657b7c3e3..ffe7a69cd17 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -2055,6 +2055,23 @@ static int _omap4_get_context_lost(struct omap_hwmod *oh)  }  /** + * _enable_preprogram - Pre-program an IP block during the _enable() process + * @oh: struct omap_hwmod * + * + * Some IP blocks (such as AESS) require some additional programming + * after enable before they can enter idle.  If a function pointer to + * do so is present in the hwmod data, then call it and pass along the + * return value; otherwise, return 0. + */ +static int __init _enable_preprogram(struct omap_hwmod *oh) +{ +	if (!oh->class->enable_preprogram) +		return 0; + +	return oh->class->enable_preprogram(oh); +} + +/**   * _enable - enable an omap_hwmod   * @oh: struct omap_hwmod *   * @@ -2160,6 +2177,7 @@ static int _enable(struct omap_hwmod *oh)  				_update_sysc_cache(oh);  			_enable_sysc(oh);  		} +		r = _enable_preprogram(oh);  	} else {  		if (soc_ops.disable_module)  			soc_ops.disable_module(oh);  |