diff options
author | Jon Medhurst <tixy@linaro.org> | 2015-08-12 18:00:02 +0100 |
---|---|---|
committer | Jon Medhurst <tixy@linaro.org> | 2015-11-02 09:40:57 +0000 |
commit | ac8ca9d390d6d35a1ef7cfc688a5a4089cd5270a (patch) | |
tree | deaa183039f10d0c2308a2dd8bb14baf4ce97d11 | |
parent | d87fa636bbf20ddea30bca3d0ccb90eb0246d785 (diff) |
drm: hdlcd: Add implementation of mode_set_base
This prevents drm_crtc_helper_set_config from doing a full mode_set when
just the the framebuffer start address is changed. E.g. when userside is
implementing double buffering. Without this change, such uses cause
monitors to be in a permanent state of lost signal synchronisation.
Signed-off-by: Jon Medhurst <tixy@linaro.org>
-rw-r--r-- | drivers/gpu/drm/arm/hdlcd_crtc.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/arm/hdlcd_crtc.c b/drivers/gpu/drm/arm/hdlcd_crtc.c index 3b37a0149f64..8db213d27fe2 100644 --- a/drivers/gpu/drm/arm/hdlcd_crtc.c +++ b/drivers/gpu/drm/arm/hdlcd_crtc.c @@ -185,6 +185,15 @@ static int hdlcd_crtc_colour_set(struct hdlcd_drm_private *hdlcd, return 0; } +static int hdlcd_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, + struct drm_framebuffer *old_fb) +{ + struct hdlcd_drm_private *hdlcd = crtc_to_hdlcd_priv(crtc); + hdlcd_set_scanout(hdlcd); + return 0; +} + + static int hdlcd_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode, @@ -254,6 +263,7 @@ static const struct drm_crtc_helper_funcs hdlcd_crtc_helper_funcs = { .prepare = hdlcd_crtc_prepare, .commit = hdlcd_crtc_commit, .mode_set = hdlcd_crtc_mode_set, + .mode_set_base = hdlcd_crtc_mode_set_base, .load_lut = hdlcd_crtc_load_lut, }; |