|
@@ -1333,6 +1333,11 @@ static int bam_dma_probe(struct platform_device *pdev)
|
|
if (ret)
|
|
if (ret)
|
|
goto err_unregister_dma;
|
|
goto err_unregister_dma;
|
|
|
|
|
|
|
|
+ if (bdev->controlled_remotely) {
|
|
|
|
+ pm_runtime_disable(&pdev->dev);
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
pm_runtime_irq_safe(&pdev->dev);
|
|
pm_runtime_irq_safe(&pdev->dev);
|
|
pm_runtime_set_autosuspend_delay(&pdev->dev, BAM_DMA_AUTOSUSPEND_DELAY);
|
|
pm_runtime_set_autosuspend_delay(&pdev->dev, BAM_DMA_AUTOSUSPEND_DELAY);
|
|
pm_runtime_use_autosuspend(&pdev->dev);
|
|
pm_runtime_use_autosuspend(&pdev->dev);
|
|
@@ -1416,7 +1421,8 @@ static int __maybe_unused bam_dma_suspend(struct device *dev)
|
|
{
|
|
{
|
|
struct bam_device *bdev = dev_get_drvdata(dev);
|
|
struct bam_device *bdev = dev_get_drvdata(dev);
|
|
|
|
|
|
- pm_runtime_force_suspend(dev);
|
|
|
|
|
|
+ if (!bdev->controlled_remotely)
|
|
|
|
+ pm_runtime_force_suspend(dev);
|
|
|
|
|
|
clk_unprepare(bdev->bamclk);
|
|
clk_unprepare(bdev->bamclk);
|
|
|
|
|
|
@@ -1432,7 +1438,8 @@ static int __maybe_unused bam_dma_resume(struct device *dev)
|
|
if (ret)
|
|
if (ret)
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
- pm_runtime_force_resume(dev);
|
|
|
|
|
|
+ if (!bdev->controlled_remotely)
|
|
|
|
+ pm_runtime_force_resume(dev);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|