Commit 2812c3c5 authored by Mirela Rabulea's avatar Mirela Rabulea Committed by Guido Gunther
Browse files

drm/mxsfb: Signal mode changed when bpp changed



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: default avatarMirela Rabulea <mirela.rabulea@nxp.com>
Signed-off-by: default avatarRobert Chiras <robert.chiras@nxp.com>
parent 7c653d4b
......@@ -26,6 +26,7 @@
#include <drm/drm_drv.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_irq.h>
......@@ -108,9 +109,51 @@ 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 *new_state;
int i, ret;
ret = drm_atomic_helper_check(dev, state);
if (ret)
return ret;
for_each_new_crtc_in_state(state, crtc, new_state, i) {
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)
new_state->mode_changed = true;
}
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,
};
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment