From 94e81e5d2da5953d468542b58feaf0c796413f81 Mon Sep 17 00:00:00 2001 From: Vikas Reddy Pachika Date: Wed, 9 Oct 2024 17:33:19 +0530 Subject: [PATCH] disp: msm: dsi: fix error path for dsi_display init Handle dsi_display init errors with proper de-init sequence. Change-Id: I7d029980a06c8069264c3b1b2b7a6cdb781e1198 Signed-off-by: Deven Solanki Signed-off-by: Vikas Reddy Pachika --- msm/dsi/dsi_display.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index 6962049ee8fb..91682051c5e2 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved. */ @@ -5971,15 +5971,25 @@ static int dsi_display_init(struct dsi_display *display) if (rc) { DSI_ERR("[%s] failed to enable vregs, rc=%d\n", display->panel->name, rc); - return rc; + goto vreg_fail; } } rc = component_add(&pdev->dev, &dsi_display_comp_ops); - if (rc) + if (rc) { DSI_ERR("component add failed, rc=%d\n", rc); + goto comp_add_fail; + } DSI_DEBUG("component add success: %s\n", display->name); + return rc; + +comp_add_fail: + if (display->panel) + dsi_pwr_enable_regulator(&display->panel->power_info, false); +vreg_fail: + _dsi_display_dev_deinit(display); + end: return rc; }