Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/bridge: panel: move prepare_prev_first handling to drm_panel_bridge_add_typed

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

authored by

Dmitry Baryshkov and committed by
Neil Armstrong
eb028cd8 97e000ac

+1 -4
+1 -4
drivers/gpu/drm/bridge/panel.c
··· 299 299 panel_bridge->bridge.of_node = panel->dev->of_node; 300 300 panel_bridge->bridge.ops = DRM_BRIDGE_OP_MODES; 301 301 panel_bridge->bridge.type = connector_type; 302 + panel_bridge->bridge.pre_enable_prev_first = panel->prepare_prev_first; 302 303 303 304 drm_bridge_add(&panel_bridge->bridge); 304 305 ··· 414 413 return bridge; 415 414 } 416 415 417 - bridge->pre_enable_prev_first = panel->prepare_prev_first; 418 - 419 416 *ptr = bridge; 420 417 devres_add(dev, ptr); 421 418 ··· 454 455 bridge); 455 456 if (ret) 456 457 return ERR_PTR(ret); 457 - 458 - bridge->pre_enable_prev_first = panel->prepare_prev_first; 459 458 460 459 return bridge; 461 460 }