From d6aafa2bf3bc1ca43405a4b753d91d7549224fdc Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 20 Aug 2013 18:35:53 +0200 Subject: [PATCH] dma: cpp41: enable pm_runtime during init With enabled pm_runtime in the kernel the device won't work because it is not "on" during the probe function. This patch enables the device via pm_runtime on probe so it remains activated. Acked-by: Vinod Koul Signed-off-by: Sebastian Andrzej Siewior Signed-off-by: Felipe Balbi --- drivers/dma/cppi41.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/dma/cppi41.c b/drivers/dma/cppi41.c index e696178..6c4e64f 100644 --- a/drivers/dma/cppi41.c +++ b/drivers/dma/cppi41.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "dmaengine.h" #define DESC_TYPE 27 @@ -960,6 +961,11 @@ static int cppi41_dma_probe(struct platform_device *pdev) goto err_remap; } + pm_runtime_enable(&pdev->dev); + ret = pm_runtime_get_sync(&pdev->dev); + if (ret) + goto err_get_sync; + cdd->queues_rx = glue_info->queues_rx; cdd->queues_tx = glue_info->queues_tx; cdd->td_queue = glue_info->td_queue; @@ -1005,6 +1011,9 @@ err_irq: err_chans: deinit_cpii41(pdev, cdd); err_init_cppi: + pm_runtime_put(&pdev->dev); +err_get_sync: + pm_runtime_disable(&pdev->dev); iounmap(cdd->usbss_mem); iounmap(cdd->ctrl_mem); iounmap(cdd->sched_mem); @@ -1029,6 +1038,8 @@ static int cppi41_dma_remove(struct platform_device *pdev) iounmap(cdd->ctrl_mem); iounmap(cdd->sched_mem); iounmap(cdd->qmgr_mem); + pm_runtime_put(&pdev->dev); + pm_runtime_disable(&pdev->dev); kfree(cdd); return 0; } -- 2.7.4