diff --git a/drivers/gpu/drm/imx/dpu/dpu-crtc.c b/drivers/gpu/drm/imx/dpu/dpu-crtc.c
index 1bc701b0879fa82c223948e90b70250444fedb16..cde5007f2450f156bd3c7b0ddf57baecacbe017f 100644
--- a/drivers/gpu/drm/imx/dpu/dpu-crtc.c
+++ b/drivers/gpu/drm/imx/dpu/dpu-crtc.c
@@ -1099,6 +1099,10 @@ static void dpu_crtc_unbind(struct device *dev, struct device *master,
 	struct dpu_crtc *dpu_crtc = dev_get_drvdata(dev);
 
 	dpu_crtc_put_resources(dpu_crtc);
+
+	/* make sure the crtc exists, and then cleanup */
+	if (dpu_crtc->base.dev)
+		drm_crtc_cleanup(&dpu_crtc->base);
 }
 
 static const struct component_ops dpu_crtc_ops = {