[PATCH v5 4/4] drm/panel: simple: Use managed helpers in panel-simple
From: Osama Abdelkader
Date: Tue Sep 15 2026 - 11:01:56 EST
Use the managed panel add helper in panel-simple and drop the manual
panel remove call from the remove path.
Keep the MIPI DSI attach and detach manual, since panel-simple's
remove callback also unprepares/disables the panel and releases the
DDC adapter; deferring the detach to devm would run it after that
cleanup instead of before, changing the teardown order.
Suggested-by: Luca Ceresoli <luca.ceresoli@xxxxxxxxxxx>
Signed-off-by: Osama Abdelkader <osama.abdelkader@xxxxxxxxx>
---
drivers/gpu/drm/panel/panel-simple.c | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index c95964ba25a9..02d21dde5766 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -737,7 +737,9 @@ static struct panel_simple *panel_simple_probe(struct device *dev)
goto disable_pm_runtime;
}
- drm_panel_add(&panel->base);
+ err = devm_drm_panel_add(dev, &panel->base);
+ if (err)
+ goto disable_pm_runtime;
return panel;
@@ -785,7 +787,6 @@ static void panel_simple_remove(struct device *dev)
{
struct panel_simple *panel = dev_get_drvdata(dev);
- drm_panel_remove(&panel->base);
panel_simple_shutdown(dev);
pm_runtime_dont_use_autosuspend(dev);
@@ -6540,7 +6541,6 @@ static int panel_simple_dsi_probe(struct mipi_dsi_device *dsi)
{
const struct panel_desc_dsi *desc;
struct panel_simple *panel;
- int err;
panel = panel_simple_probe(&dsi->dev);
if (IS_ERR(panel))
@@ -6551,14 +6551,7 @@ static int panel_simple_dsi_probe(struct mipi_dsi_device *dsi)
dsi->format = desc->format;
dsi->lanes = desc->lanes;
- err = mipi_dsi_attach(dsi);
- if (err) {
- struct panel_simple *panel = mipi_dsi_get_drvdata(dsi);
-
- drm_panel_remove(&panel->base);
- }
-
- return err;
+ return mipi_dsi_attach(dsi);
}
static void panel_simple_dsi_remove(struct mipi_dsi_device *dsi)
--
2.43.0