MLK-11385 dma: imx-sdma: enable clock before context restored
authorRobin Gong <b38343@freescale.com>
Wed, 19 Aug 2015 07:32:44 +0000 (15:32 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:47:33 +0000 (14:47 -0500)
fix sdma driver resume back failed if SDMA clock disabled before suspend:

PM: noirq resume of devices complete after 0.802 msecs
imx-sdma 30bd0000.sdma: Timeout waiting for CH0 ready
imx-sdma 30bd0000.sdma: loaded firmware 4.1
imx-sdma 30bd0000.sdma: restore context error!
dpm_run_callback(): sdma_resume+0x0/0x1c8 returns -110
PM: Device 30bd0000.sdma failed to resume early: error -110

Signed-off-by: Robin Gong <b38343@freescale.com>
drivers/dma/imx-sdma.c

index 239d7ee..24dfcac 100644 (file)
@@ -2241,8 +2241,6 @@ static int sdma_resume(struct device *dev)
 
        /* prepare priority for channel0 to start */
        sdma_set_channel_priority(&sdma->channel[0], MXC_SDMA_DEFAULT_PRIORITY);
-       clk_disable(sdma->clk_ipg);
-       clk_disable(sdma->clk_ahb);
 
        ret = sdma_get_firmware(sdma, sdma->fw_name);
        if (ret) {
@@ -2256,6 +2254,9 @@ static int sdma_resume(struct device *dev)
                return ret;
        }
 
+       clk_disable(sdma->clk_ipg);
+       clk_disable(sdma->clk_ahb);
+
        return 0;
 }
 #endif