spi: qup: skip clk_disable_unprepare if the device is already runtime suspended
authorSudeep Holla <sudeep.holla@arm.com>
Thu, 25 Aug 2016 12:33:28 +0000 (13:33 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 1 Sep 2016 20:29:11 +0000 (21:29 +0100)
If the spi device is already runtime suspended, if spi_qup_suspend is
executed during suspend-to-idle or suspend-to-ram it will result in the
a splat from unpreparing a non-prepared clock.

This patch fixes the issue by executing clk_disable_unprepare conditionally
in spi_qup_suspend.

[Reworded commit message to remove irrelevant backtrace -- broonie]
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-qup.c

index c338ef1136f6c6052b72b9394f74ef89b58273a5..a047e9882da8f0b39ac54cd6a0e812a74adeca63 100644 (file)
@@ -982,8 +982,10 @@ static int spi_qup_suspend(struct device *device)
        if (ret)
                return ret;
 
-       clk_disable_unprepare(controller->cclk);
-       clk_disable_unprepare(controller->iclk);
+       if (!pm_runtime_suspended(device)) {
+               clk_disable_unprepare(controller->cclk);
+               clk_disable_unprepare(controller->iclk);
+       }
        return 0;
 }