On Thu, Jan 16, 2025 at 02:43:37AM +0200, Dmitry Baryshkov wrote: > 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? Yeah you can only look at this when either holding the corresponding modesetlock, or in atomic commit. But in the latter it's a much cleaner design pattern to instead look up the state from the drm_atomic_state, since that pointer is the magic thing which guarantees lifetim/ownership for lockless access in atomic commit code. -Sima > > > + */ > > +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 -- Simona Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch