]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge()
authorLuca Ceresoli <luca.ceresoli@bootlin.com>
Fri, 1 Aug 2025 17:05:25 +0000 (19:05 +0200)
committerLuca Ceresoli <luca.ceresoli@bootlin.com>
Tue, 2 Sep 2025 09:38:29 +0000 (11:38 +0200)
Use drm_bridge_chain_get_last_bridge() instead of open coding a loop with
two invocations of drm_bridge_get_next_bridge() per iteration.

Besides being cleaner and more efficient, this change is necessary in
preparation for drm_bridge_get_next_bridge() to get a reference to the
returned bridge.

Reviewed-by: Maxime Ripard <mripard@kernel.org>
Reviewed-by: Liu Ying <victor.liu@nxp.com>
Link: https://lore.kernel.org/r/20250801-drm-bridge-alloc-getput-drm_bridge_get_next_bridge-v2-3-888912b0be13@bootlin.com
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c

index bea8346515b8c8ce150040f58d288ac564eeb563..8f7a0d46601a41e1bfc04587398b0f1536a6a16c 100644 (file)
@@ -492,14 +492,12 @@ static int imx93_dsi_get_phy_configure_opts(struct imx93_dsi *dsi,
 static enum drm_mode_status
 imx93_dsi_validate_mode(struct imx93_dsi *dsi, const struct drm_display_mode *mode)
 {
-       struct drm_bridge *bridge = dw_mipi_dsi_get_bridge(dsi->dmd);
+       struct drm_bridge *dmd_bridge = dw_mipi_dsi_get_bridge(dsi->dmd);
+       struct drm_bridge *last_bridge __free(drm_bridge_put) =
+               drm_bridge_chain_get_last_bridge(dmd_bridge->encoder);
 
-       /* Get the last bridge */
-       while (drm_bridge_get_next_bridge(bridge))
-               bridge = drm_bridge_get_next_bridge(bridge);
-
-       if ((bridge->ops & DRM_BRIDGE_OP_DETECT) &&
-           (bridge->ops & DRM_BRIDGE_OP_EDID)) {
+       if ((last_bridge->ops & DRM_BRIDGE_OP_DETECT) &&
+           (last_bridge->ops & DRM_BRIDGE_OP_EDID)) {
                unsigned long pixel_clock_rate = mode->clock * 1000;
                unsigned long rounded_rate;