From: Maxime Ripard Date: Thu, 13 Mar 2025 11:59:56 +0000 (+0100) Subject: drm/bridge: Provide a helper to retrieve current bridge state X-Git-Tag: v6.16-rc1~33^2~30^2~180 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=93b244866cf641f83130bb08946f84a6fdeeca4c;p=linux-block.git drm/bridge: Provide a helper to retrieve current bridge state The current bridge state is accessible from the drm_bridge structure, but since it's fairly indirect it's not easy to figure out. Provide a helper to retrieve it. Reviewed-by: Dmitry Baryshkov Link: https://patchwork.freedesktop.org/patch/msgid/20250313-bridge-connector-v6-2-511c54a604fb@kernel.org Signed-off-by: Maxime Ripard --- diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index 884ff1faa4c8..cdad3b78a195 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -957,6 +957,38 @@ static inline struct drm_bridge *of_drm_find_bridge(struct device_node *np) } #endif +/** + * drm_bridge_get_current_state() - Get the current bridge state + * @bridge: bridge object + * + * This function must be called with the modeset lock held. + * + * RETURNS: + * + * The current bridge state, or NULL if there is none. + */ +static inline struct drm_bridge_state * +drm_bridge_get_current_state(struct drm_bridge *bridge) +{ + if (!bridge) + return NULL; + + /* + * Only atomic bridges will have bridge->base initialized by + * drm_atomic_private_obj_init(), so we need to make sure we're + * working with one before we try to use the lock. + */ + if (!bridge->funcs || !bridge->funcs->atomic_reset) + return NULL; + + drm_modeset_lock_assert_held(&bridge->base.lock); + + if (!bridge->base.state) + return NULL; + + return drm_priv_to_bridge_state(bridge->base.state); +} + /** * drm_bridge_get_next_bridge() - Get the next bridge in the chain * @bridge: bridge object