]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/bridge: panel: move prepare_prev_first handling to drm_panel_bridge_add_typed
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Thu, 20 Feb 2025 15:07:26 +0000 (17:07 +0200)
committerNeil Armstrong <neil.armstrong@linaro.org>
Mon, 30 Jun 2025 15:42:32 +0000 (17:42 +0200)
The commit 5ea6b1702781 ("drm/panel: Add prepare_prev_first flag to
drm_panel") and commit 0974687a19c3 ("drm/bridge: panel: Set
pre_enable_prev_first from drmm_panel_bridge_add") added handling of
panel's prepare_prev_first to devm_panel_bridge_add() and
drmm_panel_bridge_add(). However if the driver calls
drm_panel_bridge_add_typed() directly, then the flag won't be handled
and thus the drm_bridge.pre_enable_prev_first will not be set.

Move prepare_prev_first handling to the drm_panel_bridge_add_typed() so
that there is no way to miss the flag.

Fixes: 5ea6b1702781 ("drm/panel: Add prepare_prev_first flag to drm_panel")
Fixes: 0974687a19c3 ("drm/bridge: panel: Set pre_enable_prev_first from drmm_panel_bridge_add")
Reported-by: Svyatoslav Ryhel <clamor95@gmail.com>
Closes: https://lore.kernel.org/dri-devel/CAPVz0n3YZass3Bns1m0XrFxtAC0DKbEPiW6vXimQx97G243sXw@mail.gmail.com/
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20250220-panel_prev_first-v1-1-b9e787825a1a@linaro.org
drivers/gpu/drm/bridge/panel.c

index 79b009ab9396048eac57ad47631a902e949d77c6..29b0358a7b6d82667931937319786db939101da5 100644 (file)
@@ -299,6 +299,7 @@ struct drm_bridge *drm_panel_bridge_add_typed(struct drm_panel *panel,
        panel_bridge->bridge.of_node = panel->dev->of_node;
        panel_bridge->bridge.ops = DRM_BRIDGE_OP_MODES;
        panel_bridge->bridge.type = connector_type;
+       panel_bridge->bridge.pre_enable_prev_first = panel->prepare_prev_first;
 
        drm_bridge_add(&panel_bridge->bridge);
 
@@ -413,8 +414,6 @@ struct drm_bridge *devm_drm_panel_bridge_add_typed(struct device *dev,
                return bridge;
        }
 
-       bridge->pre_enable_prev_first = panel->prepare_prev_first;
-
        *ptr = bridge;
        devres_add(dev, ptr);
 
@@ -456,8 +455,6 @@ struct drm_bridge *drmm_panel_bridge_add(struct drm_device *drm,
        if (ret)
                return ERR_PTR(ret);
 
-       bridge->pre_enable_prev_first = panel->prepare_prev_first;
-
        return bridge;
 }
 EXPORT_SYMBOL(drmm_panel_bridge_add);