On Wed, Jan 15, 2025 at 10:05:30PM +0100, Maxime Ripard wrote: > 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. > > Signed-off-by: Maxime Ripard <mripard@xxxxxxxxxx> > --- > include/drm/drm_bridge.h | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h > index 8e18130be8bb85fc2463917dde9bf1d281934184..95c5037a6335e4c1be511e6c31308202015c7754 100644 > --- a/include/drm/drm_bridge.h > +++ b/include/drm/drm_bridge.h > @@ -955,10 +955,27 @@ static inline struct drm_bridge *of_drm_find_bridge(struct device_node *np) > { > return NULL; > } > #endif > > +/** > + * @drm_bridge_get_current_state() - Get the current bridge state > + * @bridge: bridge object > + * > + * RETURNS: > + * > + * The current bridge state, or NULL if there is none. Are there any kind of limitations on when and how this function can be used? I don't think we can be accessing the state randomly, as the framework can change it at some points. E.g. what if the driver uses this state from audio or cec callbacks, while the DRM framework performs atomic commit and changes / frees the state right concurrently? > + */ > +static inline struct drm_bridge_state * > +drm_bridge_get_current_state(struct drm_bridge *bridge) > +{ > + if (!bridge) > + 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 > * > * RETURNS: > > -- > 2.47.1 > -- With best wishes Dmitry