diff options
author | Olof Johansson <olof@lixom.net> | 2013-02-12 18:33:39 -0500 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2013-02-12 18:33:39 -0500 |
commit | ebcfe0faf969fe64060132a455db64bcc3517e5c (patch) | |
tree | fadeb32f8820bfa53a5a37f967bf0d58aafeb82f /arch/arm/mach-omap2/omap_hwmod.c | |
parent | 488c77c961e65894d864af4da720a880a5fbb066 (diff) | |
parent | 93b23711b7132400d4d76f31c660d27a2bb0afdb (diff) |
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 30657b7c3e33..ffe7a69cd17f 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) | |||
2055 | } | 2055 | } |
2056 | 2056 | ||
2057 | /** | 2057 | /** |
2058 | * _enable_preprogram - Pre-program an IP block during the _enable() process | ||
2059 | * @oh: struct omap_hwmod * | ||
2060 | * | ||
2061 | * Some IP blocks (such as AESS) require some additional programming | ||
2062 | * after enable before they can enter idle. If a function pointer to | ||
2063 | * do so is present in the hwmod data, then call it and pass along the | ||
2064 | * return value; otherwise, return 0. | ||
2065 | */ | ||
2066 | static int __init _enable_preprogram(struct omap_hwmod *oh) | ||
2067 | { | ||
2068 | if (!oh->class->enable_preprogram) | ||
2069 | return 0; | ||
2070 | |||
2071 | return oh->class->enable_preprogram(oh); | ||
2072 | } | ||
2073 | |||
2074 | /** | ||
2058 | * _enable - enable an omap_hwmod | 2075 | * _enable - enable an omap_hwmod |
2059 | * @oh: struct omap_hwmod * | 2076 | * @oh: struct omap_hwmod * |
2060 | * | 2077 | * |
@@ -2160,6 +2177,7 @@ static int _enable(struct omap_hwmod *oh) | |||
2160 | _update_sysc_cache(oh); | 2177 | _update_sysc_cache(oh); |
2161 | _enable_sysc(oh); | 2178 | _enable_sysc(oh); |
2162 | } | 2179 | } |
2180 | r = _enable_preprogram(oh); | ||
2163 | } else { | 2181 | } else { |
2164 | if (soc_ops.disable_module) | 2182 | if (soc_ops.disable_module) |
2165 | soc_ops.disable_module(oh); | 2183 | soc_ops.disable_module(oh); |