Hi, On Wed, Jan 09, 2019 at 02:13:47PM +0000, Robert Chiras wrote: > From: Mirela Rabulea <mirela.rabulea@xxxxxxx> > > Add mxsfb_atomic_helper_check to signal mode changed when bpp changed. > This will trigger the execution of disable/enable on > a modeset with different bpp than the current one. > > Signed-off-by: Mirela Rabulea <mirela.rabulea@xxxxxxx> > --- > drivers/gpu/drm/mxsfb/mxsfb_drv.c | 48 ++++++++++++++++++++++++++++++++++++++- > 1 file changed, 47 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c > index d3fb3a8..f528a37 100644 > --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c > +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c > @@ -115,9 +115,55 @@ void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb) > clk_disable_unprepare(mxsfb->clk_axi); > } > > +/** > + * mxsfb_atomic_helper_check - validate state object > + * @dev: DRM device > + * @state: the driver state object > + * > + * On top of the drm imlementation drm_atomic_helper_check, > + * check if the bpp is changed, if so, signal mode_changed, > + * this will trigger disable/enable > + * > + * RETURNS: > + * Zero for success or -errno > + */ > +static int mxsfb_atomic_helper_check(struct drm_device *dev, > + struct drm_atomic_state *state) > +{ > + struct drm_crtc *crtc; > + struct drm_crtc_state *crtc_state; > + int i, ret; > + > + ret = drm_atomic_helper_check(dev, state); > + if (ret) > + return ret; > + > + for_each_crtc_in_state(state, crtc, crtc_state, i) { This does not exist anymore in recent drm, see 9ba29fcb76a559078491adffc74f66bf92b9dbea. Cheers, -- Guido > + struct drm_plane_state *primary_state; > + int old_bpp = 0; > + int new_bpp = 0; > + > + if (!crtc->primary || !crtc->primary->old_fb) > + continue; > + primary_state = > + drm_atomic_get_plane_state(state, crtc->primary); > + if (!primary_state || !primary_state->fb) > + continue; > + old_bpp = crtc->primary->old_fb->format->depth; > + new_bpp = primary_state->fb->format->depth; > + if (old_bpp != new_bpp) { > + crtc_state->mode_changed = true; > + DRM_DEBUG_ATOMIC( > + "[CRTC:%d:%s] mode changed, bpp %d->%d\n", > + crtc->base.id, crtc->name, old_bpp, new_bpp); > + } > + } > + return ret; > +} > + > static const struct drm_mode_config_funcs mxsfb_mode_config_funcs = { > .fb_create = drm_gem_fb_create, > - .atomic_check = drm_atomic_helper_check, > + .atomic_check = mxsfb_atomic_helper_check, > .atomic_commit = drm_atomic_helper_commit, > }; > > -- > 2.7.4 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel