Hi Shawn, Thank you for the patch. On Tuesday 07 Feb 2017 17:16:28 Shawn Guo wrote: > From: Shawn Guo <shawn.guo@xxxxxxxxxx> > > The vblank hooks in struct drm_driver are deprecated and only meant for > legacy drivers. For modern drivers with DRIVER_MODESET flag, the hooks > in struct drm_crtc_funcs should be used instead. > > Signed-off-by: Shawn Guo <shawn.guo@xxxxxxxxxx> > Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 29 +++++++++++++++++++---------- > drivers/gpu/drm/rcar-du/rcar_du_crtc.h | 1 - > drivers/gpu/drm/rcar-du/rcar_du_drv.c | 19 ------------------- > 3 files changed, 19 insertions(+), 30 deletions(-) > > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c > b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c index a2ec6d8796a0..edcbe2e3625d > 100644 > --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c > +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c > @@ -529,6 +529,23 @@ static void rcar_du_crtc_atomic_flush(struct drm_crtc > *crtc, .atomic_flush = rcar_du_crtc_atomic_flush, > }; > > +static int rcar_du_crtc_enable_vblank(struct drm_crtc *crtc) > +{ > + struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc); > + > + rcar_du_crtc_write(rcrtc, DSRCR, DSRCR_VBCL); > + rcar_du_crtc_set(rcrtc, DIER, DIER_VBE); > + > + return 0; > +} > + > +static void rcar_du_crtc_disable_vblank(struct drm_crtc *crtc) > +{ > + struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc); > + > + rcar_du_crtc_clr(rcrtc, DIER, DIER_VBE); > +} > + > static const struct drm_crtc_funcs crtc_funcs = { > .reset = drm_atomic_helper_crtc_reset, > .destroy = drm_crtc_cleanup, > @@ -536,6 +553,8 @@ static void rcar_du_crtc_atomic_flush(struct drm_crtc > *crtc, .page_flip = drm_atomic_helper_page_flip, > .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state, > .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state, > + .enable_vblank = rcar_du_crtc_enable_vblank, > + .disable_vblank = rcar_du_crtc_disable_vblank, > }; > > /* > --------------------------------------------------------------------------- > -- @@ -650,13 +669,3 @@ int rcar_du_crtc_create(struct rcar_du_group *rgrp, > unsigned int index) > > return 0; > } > - > -void rcar_du_crtc_enable_vblank(struct rcar_du_crtc *rcrtc, bool enable) > -{ > - if (enable) { > - rcar_du_crtc_write(rcrtc, DSRCR, DSRCR_VBCL); > - rcar_du_crtc_set(rcrtc, DIER, DIER_VBE); > - } else { > - rcar_du_crtc_clr(rcrtc, DIER, DIER_VBE); > - } > -} > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.h > b/drivers/gpu/drm/rcar-du/rcar_du_crtc.h index 6f08b7e7db06..a7194812997e > 100644 > --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.h > +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.h > @@ -66,7 +66,6 @@ enum rcar_du_output { > }; > > int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int index); > -void rcar_du_crtc_enable_vblank(struct rcar_du_crtc *rcrtc, bool enable); > void rcar_du_crtc_suspend(struct rcar_du_crtc *rcrtc); > void rcar_du_crtc_resume(struct rcar_du_crtc *rcrtc); > > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c > b/drivers/gpu/drm/rcar-du/rcar_du_drv.c index 094da3ef49d1..192346d4fb34 > 100644 > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c > @@ -26,7 +26,6 @@ > #include <drm/drm_fb_cma_helper.h> > #include <drm/drm_gem_cma_helper.h> > > -#include "rcar_du_crtc.h" > #include "rcar_du_drv.h" > #include "rcar_du_kms.h" > #include "rcar_du_regs.h" > @@ -227,22 +226,6 @@ static void rcar_du_lastclose(struct drm_device *dev) > drm_fbdev_cma_restore_mode(rcdu->fbdev); > } > > -static int rcar_du_enable_vblank(struct drm_device *dev, unsigned int pipe) > -{ > - struct rcar_du_device *rcdu = dev->dev_private; > - > - rcar_du_crtc_enable_vblank(&rcdu->crtcs[pipe], true); > - > - return 0; > -} > - > -static void rcar_du_disable_vblank(struct drm_device *dev, unsigned int > pipe) -{ > - struct rcar_du_device *rcdu = dev->dev_private; > - > - rcar_du_crtc_enable_vblank(&rcdu->crtcs[pipe], false); > -} > - > static const struct file_operations rcar_du_fops = { > .owner = THIS_MODULE, > .open = drm_open, > @@ -259,8 +242,6 @@ static void rcar_du_disable_vblank(struct drm_device > *dev, unsigned int pipe) .driver_features = DRIVER_GEM | DRIVER_MODESET | > DRIVER_PRIME > > | DRIVER_ATOMIC, > > .lastclose = rcar_du_lastclose, > - .enable_vblank = rcar_du_enable_vblank, > - .disable_vblank = rcar_du_disable_vblank, > .gem_free_object_unlocked = drm_gem_cma_free_object, > .gem_vm_ops = &drm_gem_cma_vm_ops, > .prime_handle_to_fd = drm_gem_prime_handle_to_fd, -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel