From: Leonardo Costa The input bus flags set at each bridge's timings are never actually added to the bridge state and are not considered during modeset. Implement the atomic_check function, to allow simple bridges to declare their required input bus flags. Existing bridges that configure specific flags (currently the ADV7123 and THS813* bridges, which set DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE) now write them to their bridge state, and have them propagated to the previous bridge in the pipeline. Fixes: 0a01de65a741 ("drm/bridge: simple-bridge: Switch to atomic bridge callbacks") Cc: stable@vger.kernel.org Signed-off-by: Leonardo Costa --- drivers/gpu/drm/bridge/simple-bridge.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/bridge/simple-bridge.c b/drivers/gpu/drm/bridge/simple-bridge.c index 3fba7002322e9..848c2df2a276a 100644 --- a/drivers/gpu/drm/bridge/simple-bridge.c +++ b/drivers/gpu/drm/bridge/simple-bridge.c @@ -158,11 +158,23 @@ static void simple_bridge_disable(struct drm_bridge *bridge, regulator_disable(sbridge->vdd); } +static int simple_bridge_atomic_check(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state, + struct drm_crtc_state *crtc_state, + struct drm_connector_state *conn_state) +{ + if (bridge->timings) + bridge_state->input_bus_cfg.flags = bridge->timings->input_bus_flags; + + return 0; +} + static const struct drm_bridge_funcs simple_bridge_bridge_funcs = { .atomic_create_state = drm_atomic_helper_bridge_create_state, .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state, .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state, .attach = simple_bridge_attach, + .atomic_check = simple_bridge_atomic_check, .atomic_enable = simple_bridge_enable, .atomic_disable = simple_bridge_disable, }; --- base-commit: 6c2cb8b8b843d216ab549b678a0d8831c43153e0 change-id: 20261001-v1-simple-bridge-atomic-check-e7b7eb8381e9 Best regards, -- Leonardo Costa