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 <quic_dsolanki@quicinc.com>
Signed-off-by: Vikas Reddy Pachika <quic_vikasred@quicinc.com>
This commit is contained in:
Vikas Reddy Pachika 2024-10-09 17:33:19 +05:30
commit 94e81e5d2d

View file

@ -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;
}