DRM pipelines utilising the VSP must stop all frame processing as part of the suspend operation to ensure the hardware is idle. Upon resume, the pipeline must not be started until the DU performs an atomic flush to restore the hardware configuration and state.
Therefore the vsp1_pipeline_resume() call is not needed for DRM pipelines, and we can disable it in this instance. CC: linux-media@vger.kernel.org Signed-off-by: Kieran Bingham <kieran.bingham+rene...@ideasonboard.com> --- drivers/media/platform/vsp1/vsp1_drv.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/vsp1/vsp1_drv.c b/drivers/media/platform/vsp1/vsp1_drv.c index 962e4c304076..7604c7994c74 100644 --- a/drivers/media/platform/vsp1/vsp1_drv.c +++ b/drivers/media/platform/vsp1/vsp1_drv.c @@ -582,7 +582,13 @@ static int __maybe_unused vsp1_pm_resume(struct device *dev) struct vsp1_device *vsp1 = dev_get_drvdata(dev); pm_runtime_force_resume(vsp1->dev); - vsp1_pipelines_resume(vsp1); + + /* + * DRM pipelines are stopped before suspend, and will be resumed after + * the DRM subsystem has reconfigured its pipeline with an atomic flush + */ + if (!vsp1->drm) + vsp1_pipelines_resume(vsp1); return 0; } -- git-series 0.9.1