[PATCH 2/2] drm/kmb: unwind partially enabled DSI clocks on error

From: Osama Abdelkader

Date: Mon Apr 20 2026 - 11:43:32 EST


If enabling clk_mipi_ecfg or clk_mipi_cfg fails, disable any clocks that
were successfully prepared/enabled earlier in kmb_dsi_clk_enable().

This avoids leaking enabled clocks on probe failure paths.
Signed-off-by: Osama Abdelkader <osama.abdelkader@xxxxxxxxx>
---
drivers/gpu/drm/kmb/kmb_dsi.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/kmb/kmb_dsi.c b/drivers/gpu/drm/kmb/kmb_dsi.c
index 500dc00ba6ae..3ec16b1aa16c 100644
--- a/drivers/gpu/drm/kmb/kmb_dsi.c
+++ b/drivers/gpu/drm/kmb/kmb_dsi.c
@@ -1526,17 +1526,23 @@ static int kmb_dsi_clk_enable(struct kmb_dsi *kmb_dsi)
ret = clk_prepare_enable(kmb_dsi->clk_mipi_ecfg);
if (ret) {
dev_err(dev, "Failed to enable MIPI_ECFG clock: %d\n", ret);
- return ret;
+ goto err_disable_mipi;
}

ret = clk_prepare_enable(kmb_dsi->clk_mipi_cfg);
if (ret) {
dev_err(dev, "Failed to enable MIPI_CFG clock: %d\n", ret);
- return ret;
+ goto err_disable_mipi_ecfg;
}

dev_info(dev, "SUCCESS : enabled MIPI clocks\n");
return 0;
+
+err_disable_mipi_ecfg:
+ clk_disable_unprepare(kmb_dsi->clk_mipi_ecfg);
+err_disable_mipi:
+ clk_disable_unprepare(kmb_dsi->clk_mipi);
+ return ret;
}

int kmb_dsi_clk_init(struct kmb_dsi *kmb_dsi)
--
2.43.0