@@ -1261,16 +1261,8 @@ static int sprd_dma_probe(struct platform_device *pdev)
}
platform_set_drvdata(pdev, sdev);
- ret = sprd_dma_enable(sdev);
- if (ret)
- return ret;
-
- pm_runtime_set_active(&pdev->dev);
pm_runtime_enable(&pdev->dev);
-
- ret = pm_runtime_get_sync(&pdev->dev);
- if (ret < 0)
- goto err_rpm;
+ pm_runtime_get_noresume(&pdev->dev);
ret = dma_async_device_register(&sdev->dma_dev);
if (ret < 0) {
@@ -1284,7 +1276,7 @@ static int sprd_dma_probe(struct platform_device *pdev)
if (ret)
goto err_of_register;
- pm_runtime_put(&pdev->dev);
+ pm_runtime_put_noidle(&pdev->dev);
return 0;
err_of_register:
@@ -1292,8 +1284,6 @@ static int sprd_dma_probe(struct platform_device *pdev)
err_register:
pm_runtime_put_noidle(&pdev->dev);
pm_runtime_disable(&pdev->dev);
-err_rpm:
- sprd_dma_disable(sdev);
return ret;
}
In the probe of dma, it will allocate device memory and do some initalization settings. All operations are only at the software level and don't need the DMA hardware power on, here modify relative code. Signed-off-by: Kaiwei Liu <kaiwei.liu@unisoc.com> --- drivers/dma/sprd-dma.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)