[PATCH v13 02/18] drm: bridge: panel: Support nodrm case for drmm_panel_bridge_add
Jagan Teki
jagan at amarulasolutions.com
Mon Feb 27 03:39:09 PST 2023
drmm_panel_bridge_add DRM-managed action helper is useful for the bridge
which automatically removes the bridge when drm pointer is cleaned.
Supporting the same on non-component bridges like host DSI bridge requires
a drm pointer which is indeed available only when a panel-bridge is found.
For these use cases, the caller would call the drmm_panel_bridge_add by
passing NULL to drm pointer.
So, assign the bridge->dev to drm pointer for those cases.
Cc: Maxime Ripard <mripard at kernel.org>
Cc: Laurent Pinchart <Laurent.pinchart at ideasonboard.com>
Cc: Linus Walleij <linus.walleij at linaro.org>
Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>
---
Changes for v13:
- new patch
Note: use case on
"[PATCH v13 04/18] drm: exynos: dsi: Switch to DSI panel or bridge find helper"
drivers/gpu/drm/bridge/panel.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c
index d4b112911a99..45a0c6671000 100644
--- a/drivers/gpu/drm/bridge/panel.c
+++ b/drivers/gpu/drm/bridge/panel.c
@@ -402,6 +402,13 @@ struct drm_bridge *drmm_panel_bridge_add(struct drm_device *drm,
if (IS_ERR(bridge))
return bridge;
+ /*
+ * For non-component bridges, like host DSI bridge the DRM pointer
+ * can be available only when a panel-bridge is found.
+ */
+ if (!drm)
+ drm = bridge->dev;
+
ret = drmm_add_action_or_reset(drm, drmm_drm_panel_bridge_release,
bridge);
if (ret)
--
2.25.1
More information about the linux-arm-kernel
mailing list