Implementing the function "mode_set_base" for i.MX6 IPU enables the fast-path in function drm_crtc_helper_set_config. The fast-path is used when flag 'mode_changed' is false and flag 'fb_changed' is true. The fast-patch is needed for applications using the legcay framebuffer ioctl FBIOPAN_DISPLAY for buffer flipping. When the fast-patch is not present, the ioctl FBIOPAN_DISPLAY causes a complete mode set which is too interruptive. Signed-off-by: Stefan Christ <s.christ@xxxxxxxxx> --- drivers/gpu/drm/imx/ipuv3-crtc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/imx/ipuv3-crtc.c b/drivers/gpu/drm/imx/ipuv3-crtc.c index fc04041..9858a57 100644 --- a/drivers/gpu/drm/imx/ipuv3-crtc.c +++ b/drivers/gpu/drm/imx/ipuv3-crtc.c @@ -234,6 +234,15 @@ static const struct drm_crtc_funcs ipu_crtc_funcs = { .page_flip = ipu_page_flip, }; +int ipu_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, + struct drm_framebuffer *old_fb) +{ + struct ipu_crtc *ipu_crtc = to_ipu_crtc(crtc); + struct ipu_plane *plane = ipu_crtc->plane[0]; + + return ipu_plane_set_base(plane, crtc->primary->fb, x, y); +} + static int ipu_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *orig_mode, struct drm_display_mode *mode, @@ -378,6 +387,7 @@ static const struct drm_crtc_helper_funcs ipu_helper_funcs = { .dpms = ipu_crtc_dpms, .mode_fixup = ipu_crtc_mode_fixup, .mode_set = ipu_crtc_mode_set, + .mode_set_base = ipu_crtc_mode_set_base, .prepare = ipu_crtc_prepare, .commit = ipu_crtc_commit, }; -- 1.9.1 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel