ソースを参照

OMAP: hwmod: Do not disable clocks if hwmod already in idle

The disable function was disabling clocks and dependencies
from both enable and idle state. Since idle function is already
disabling both, an enable -> idle -> disable sequence will
try to disable twice the clocks and thus generate a
"Trying disable clock XXX with 0 usecount" warning.

Signed-off-by: Benoit Cousson <b-cousson@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Tested-by: Kevin Hilman <khilman@deeprootsystems.com>
Benoit Cousson 14 年 前
コミット
3827f9492b
1 ファイル変更7 行追加3 行削除
  1. 7 3
      arch/arm/mach-omap2/omap_hwmod.c

+ 7 - 3
arch/arm/mach-omap2/omap_hwmod.c

@@ -982,9 +982,13 @@ static int _shutdown(struct omap_hwmod *oh)
 
 
 	if (oh->class->sysc)
 	if (oh->class->sysc)
 		_sysc_shutdown(oh);
 		_sysc_shutdown(oh);
-	_del_initiator_dep(oh, mpu_oh);
-	/* XXX what about the other system initiators here? DMA, tesla, d2d */
-	_disable_clocks(oh);
+
+	/* clocks and deps are already disabled in idle */
+	if (oh->_state == _HWMOD_STATE_ENABLED) {
+		_del_initiator_dep(oh, mpu_oh);
+		/* XXX what about the other system initiators here? dma, dsp */
+		_disable_clocks(oh);
+	}
 	/* XXX Should this code also force-disable the optional clocks? */
 	/* XXX Should this code also force-disable the optional clocks? */
 
 
 	/* XXX mux any associated balls to safe mode */
 	/* XXX mux any associated balls to safe mode */