drivers/gpu/drm/bridge/panel.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
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>
---
drivers/gpu/drm/bridge/panel.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c
index c57036b06493a6922e2cae38bcd1733930ff0073..ed23de0478312a26a5d3434e63bd2fe4a6099bfc 100644
--- a/drivers/gpu/drm/bridge/panel.c
+++ b/drivers/gpu/drm/bridge/panel.c
@@ -302,6 +302,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);
@@ -416,8 +417,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);
@@ -459,8 +458,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);
---
base-commit: 8936cec5cb6e27649b86fabf383d7ce4113bba49
change-id: 20250220-panel_prev_first-fc90c6c8aefa
Best regards,
--
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Hi,
On Thu, 20 Feb 2025 17:07:26 +0200, Dmitry Baryshkov wrote:
> 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.
>
> [...]
Thanks, Applied to https://gitlab.freedesktop.org/drm/misc/kernel.git (drm-misc-fixes)
[1/1] drm/bridge: panel: move prepare_prev_first handling to drm_panel_bridge_add_typed
https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/eb028cd884e1b0976ff8c5944ee6650fe3ed0a6c
--
Neil
On 20/02/2025 16:07, Dmitry Baryshkov wrote:
> 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>
> ---
> drivers/gpu/drm/bridge/panel.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c
> index c57036b06493a6922e2cae38bcd1733930ff0073..ed23de0478312a26a5d3434e63bd2fe4a6099bfc 100644
> --- a/drivers/gpu/drm/bridge/panel.c
> +++ b/drivers/gpu/drm/bridge/panel.c
> @@ -302,6 +302,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);
>
> @@ -416,8 +417,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);
>
> @@ -459,8 +458,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);
>
> ---
> base-commit: 8936cec5cb6e27649b86fabf383d7ce4113bba49
> change-id: 20250220-panel_prev_first-fc90c6c8aefa
>
> Best regards,
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
© 2016 - 2025 Red Hat, Inc.