diff options
author | Paul Walmsley <paul@pwsan.com> | 2009-12-08 18:34:14 -0500 |
---|---|---|
committer | paul <paul@twilight.(none)> | 2009-12-11 19:00:43 -0500 |
commit | b835d0142196466c5ff3695b90cff1e3ea635c8e (patch) | |
tree | e48bec55ff5805e8a438cf19784bc80d92f80ffd | |
parent | 6f8b7ff5b01e16a65c3b17865ce047faeca40907 (diff) |
OMAP3 hwmod: reprogram OCP_SYSCONFIG register after setting SOFTRESET
Reprogram the module's OCP_SYSCONFIG register after module reset (SOFTRESET
= 1). This may not be needed, but the definition of the reset performed by
the SOFTRESET bit is unclear.
Kevin Hilman <khilman@deeprootsystems.com> tested an earlier version of
this patch.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Tested-by: Kevin Hilman <khilman@deeprootsystems.com>
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 7aaf5f1eea7a..65a8e0ae394f 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
@@ -945,11 +945,19 @@ static int _setup(struct omap_hwmod *oh) | |||
945 | 945 | ||
946 | _enable(oh); | 946 | _enable(oh); |
947 | 947 | ||
948 | if (!(oh->flags & HWMOD_INIT_NO_RESET)) | 948 | if (!(oh->flags & HWMOD_INIT_NO_RESET)) { |
949 | _reset(oh); | 949 | /* |
950 | 950 | * XXX Do the OCP_SYSCONFIG bits need to be | |
951 | /* XXX OCP AUTOIDLE bit? */ | 951 | * reprogrammed after a reset? If not, then this can |
952 | /* XXX OCP ENAWAKEUP bit? */ | 952 | * be removed. If they do, then probably the |
953 | * _enable() function should be split to avoid the | ||
954 | * rewrite of the OCP_SYSCONFIG register. | ||
955 | */ | ||
956 | if (oh->sysconfig) { | ||
957 | _update_sysc_cache(oh); | ||
958 | _sysc_enable(oh); | ||
959 | } | ||
960 | } | ||
953 | 961 | ||
954 | if (!(oh->flags & HWMOD_INIT_NO_IDLE)) | 962 | if (!(oh->flags & HWMOD_INIT_NO_IDLE)) |
955 | _idle(oh); | 963 | _idle(oh); |