ARM: OMAP2+: hwmod: call to _omap4_disable_module() should use the SoC-specific call
authorPaul Walmsley <paul@pwsan.com>
Tue, 30 Oct 2012 02:57:55 +0000 (20:57 -0600)
committerPaul Walmsley <paul@pwsan.com>
Thu, 8 Nov 2012 22:09:26 +0000 (15:09 -0700)
The hwmod code unconditionally calls _omap4_disable_module() on all
SoCs when a module doesn't enable correctly.  This "worked" due to the
weak function omap4_cminst_wait_module_idle() in
arch/arm/mach-omap2/prcm.c, which was a no-op.  But now those weak
functions are going away - they should not be used.  So this patch
will now call the SoC-specific disable_module code, assuming it
exists.

Needs to be done before the weak function is removed, otherwise AM33xx
will crash early in boot.

Signed-off-by: Paul Walmsley <paul@pwsan.com>
Tested-by: Vaibhav Hiremath <hvaibhav@ti.com>
arch/arm/mach-omap2/omap_hwmod.c

index 54b68121734cbf8f733e55bd1d953564204427fc..9658e6b8ed846691831f341e7abcb2daa0ef56e6 100644 (file)
@@ -2062,7 +2062,8 @@ static int _enable(struct omap_hwmod *oh)
                        _enable_sysc(oh);
                }
        } else {
-               _omap4_disable_module(oh);
+               if (soc_ops.disable_module)
+                       soc_ops.disable_module(oh);
                _disable_clocks(oh);
                pr_debug("omap_hwmod: %s: _wait_target_ready: %d\n",
                         oh->name, r);