Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24050956 authored by Magnus Damm's avatar Magnus Damm Committed by Rafael J. Wysocki
Browse files

PM / Clocks: Only disable enabled clocks in pm_clk_suspend()



Refrain from running clk_disable() on clocks that
have not been enabled. A typical case when this can
happen is during Suspend-to-RAM for devices that have
no driver associated with them. In such case the clock
may be in default ACQUIRED state.

Without this patch the sh7372 Mackerel board crashes
in __clk_disable() during Suspend-to-RAM with:
"Trying to disable clock 0xdeadbeef with 0 usecount"
This happens for the CEU device which is added during
boot. The test case has no CEU driver included in the
kernel configuration. Needed for v3.2-rc1.

Signed-off-by: default avatarMagnus Damm <damm@opensource.se>
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent 056879d2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -229,6 +229,7 @@ int pm_clk_suspend(struct device *dev)

	list_for_each_entry_reverse(ce, &psd->clock_list, node) {
		if (ce->status < PCE_STATUS_ERROR) {
			if (ce->status == PCE_STATUS_ENABLED)
				clk_disable(ce->clk);
			ce->status = PCE_STATUS_ACQUIRED;
		}