Hi Sam On Mon, 4 Jul 2022 at 17:18, Sam Ravnborg <s...@ravnborg.org> wrote: > > Move away from the deprecated enable/disable operations in > drm_bridge_funcs and enable atomic use.
If you're moving to the atomic API, shouldn't you also be getting the mode from the provided state, rather than ti_sn_bridge_set_video_timings() having a rummage to find the crtc and encoder state via &pdata->bridge.encoder->crtc->state->adjusted_mode? https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/bridge/ti-sn65dsi86.c#L904 Dave > v3: > - Drop use of DRM_BRIDGE_STATE_OPS > > v2: > - fix build (kernel test robot <l...@intel.com>) > > Signed-off-by: Sam Ravnborg <s...@ravnborg.org> > Cc: Kieran Bingham <kieran.bing...@ideasonboard.com> > Cc: Douglas Anderson <diand...@chromium.org> > Cc: Andrzej Hajda <a.ha...@samsung.com> > Cc: Neil Armstrong <narmstr...@baylibre.com> > Cc: Robert Foss <robert.f...@linaro.org> > Cc: Laurent Pinchart <laurent.pinch...@ideasonboard.com> > Cc: Jonas Karlman <jo...@kwiboo.se> > Cc: Jernej Skrabec <jernej.skra...@gmail.com> > --- > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 23 +++++++++++++++-------- > 1 file changed, 15 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c > b/drivers/gpu/drm/bridge/ti-sn65dsi86.c > index c2b9227f7042..d6dd4d99a229 100644 > --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c > +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c > @@ -752,7 +752,8 @@ ti_sn_bridge_mode_valid(struct drm_bridge *bridge, > return MODE_OK; > } > > -static void ti_sn_bridge_disable(struct drm_bridge *bridge) > +static void ti_sn_bridge_atomic_disable(struct drm_bridge *bridge, > + struct drm_bridge_state > *old_bridge_state) > { > struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge); > > @@ -1011,7 +1012,8 @@ static int ti_sn_link_training(struct ti_sn65dsi86 > *pdata, int dp_rate_idx, > return ret; > } > > -static void ti_sn_bridge_enable(struct drm_bridge *bridge) > +static void ti_sn_bridge_atomic_enable(struct drm_bridge *bridge, > + struct drm_bridge_state > *old_bridge_state) > { > struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge); > const char *last_err_str = "No supported DP rate"; > @@ -1080,7 +1082,8 @@ static void ti_sn_bridge_enable(struct drm_bridge > *bridge) > VSTREAM_ENABLE); > } > > -static void ti_sn_bridge_pre_enable(struct drm_bridge *bridge) > +static void ti_sn_bridge_atomic_pre_enable(struct drm_bridge *bridge, > + struct drm_bridge_state > *old_bridge_state) > { > struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge); > > @@ -1093,7 +1096,8 @@ static void ti_sn_bridge_pre_enable(struct drm_bridge > *bridge) > usleep_range(100, 110); > } > > -static void ti_sn_bridge_post_disable(struct drm_bridge *bridge) > +static void ti_sn_bridge_atomic_post_disable(struct drm_bridge *bridge, > + struct drm_bridge_state > *old_bridge_state) > { > struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge); > > @@ -1114,10 +1118,13 @@ static const struct drm_bridge_funcs > ti_sn_bridge_funcs = { > .attach = ti_sn_bridge_attach, > .detach = ti_sn_bridge_detach, > .mode_valid = ti_sn_bridge_mode_valid, > - .pre_enable = ti_sn_bridge_pre_enable, > - .enable = ti_sn_bridge_enable, > - .disable = ti_sn_bridge_disable, > - .post_disable = ti_sn_bridge_post_disable, > + .atomic_pre_enable = ti_sn_bridge_atomic_pre_enable, > + .atomic_enable = ti_sn_bridge_atomic_enable, > + .atomic_disable = ti_sn_bridge_atomic_disable, > + .atomic_post_disable = ti_sn_bridge_atomic_post_disable, > + .atomic_reset = drm_atomic_helper_bridge_reset, > + .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state, > + .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state, > }; > > static void ti_sn_bridge_parse_lanes(struct ti_sn65dsi86 *pdata, > -- > 2.34.1 >