From 67f5de2563fe696d55a82bdf34e245dea928afa7 Mon Sep 17 00:00:00 2001 From: Philippe Schenker Date: Thu, 25 Aug 2022 16:19:34 +0200 Subject: sec_mipi_dsim-imx: properly clean up if probe fails It is possible that component_add() does return -EPROBE_DEFER if something else is not ready. At that stage of the probe sec_dsim_of_parse_resets() has already been called so the resets need to be cleaned up to leave it in a clean state for the next try. Signed-off-by: Philippe Schenker --- drivers/gpu/drm/imx/sec_mipi_dsim-imx.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/imx/sec_mipi_dsim-imx.c b/drivers/gpu/drm/imx/sec_mipi_dsim-imx.c index cd80096477b0..048a2c700b5e 100644 --- a/drivers/gpu/drm/imx/sec_mipi_dsim-imx.c +++ b/drivers/gpu/drm/imx/sec_mipi_dsim-imx.c @@ -456,7 +456,14 @@ static int imx_sec_dsim_probe(struct platform_device *pdev) pm_runtime_enable(dev); - return component_add(dev, &imx_sec_dsim_ops); + ret = component_add(dev, &imx_sec_dsim_ops); + if (ret) { + pm_runtime_disable(&pdev->dev); + sec_dsim_of_put_resets(dsim_dev); + return ret; + } + + return 0; } static int imx_sec_dsim_remove(struct platform_device *pdev) -- cgit v1.2.3