diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
index 72e612a6b07c2e38ae9ab253f7eff63d253b56af..aa51b73ddb0219461c7040e3e0a3ebfac66a1147 100644
--- a/drivers/gpu/drm/imx/imx-ldb.c
+++ b/drivers/gpu/drm/imx/imx-ldb.c
@@ -1482,6 +1482,14 @@ static void imx_ldb_unbind(struct device *dev, struct device *master,
 		if (channel->panel)
 			drm_panel_detach(channel->panel);
 
+		/* make sure the connector exists, and then cleanup */
+		if (channel->connector.dev)
+			imx_drm_connector_destroy(&channel->connector);
+
+		/* make sure the encoder exists, and then cleanup */
+		if (channel->encoder.dev)
+			imx_drm_encoder_destroy(&channel->encoder);
+
 		kfree(channel->edid);
 		i2c_put_adapter(channel->ddc);
 	}