|
@@ -571,7 +571,13 @@ static int __maybe_unused vsp1_pm_suspend(struct device *dev)
|
|
{
|
|
{
|
|
struct vsp1_device *vsp1 = dev_get_drvdata(dev);
|
|
struct vsp1_device *vsp1 = dev_get_drvdata(dev);
|
|
|
|
|
|
- vsp1_pipelines_suspend(vsp1);
|
|
|
|
|
|
+ /*
|
|
|
|
+ * When used as part of a display pipeline, the VSP is stopped and
|
|
|
|
+ * restarted explicitly by the DU.
|
|
|
|
+ */
|
|
|
|
+ if (!vsp1->drm)
|
|
|
|
+ vsp1_pipelines_suspend(vsp1);
|
|
|
|
+
|
|
pm_runtime_force_suspend(vsp1->dev);
|
|
pm_runtime_force_suspend(vsp1->dev);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
@@ -582,7 +588,13 @@ static int __maybe_unused vsp1_pm_resume(struct device *dev)
|
|
struct vsp1_device *vsp1 = dev_get_drvdata(dev);
|
|
struct vsp1_device *vsp1 = dev_get_drvdata(dev);
|
|
|
|
|
|
pm_runtime_force_resume(vsp1->dev);
|
|
pm_runtime_force_resume(vsp1->dev);
|
|
- vsp1_pipelines_resume(vsp1);
|
|
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * When used as part of a display pipeline, the VSP is stopped and
|
|
|
|
+ * restarted explicitly by the DU.
|
|
|
|
+ */
|
|
|
|
+ if (!vsp1->drm)
|
|
|
|
+ vsp1_pipelines_resume(vsp1);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|