On Sun, Jan 22, 2017 at 02:09:03PM +0800, 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: Liviu Dudau <liviu.dudau@xxxxxxx> Acked-by: Liviu Dudau <liviu.dudau@xxxxxxx> > --- > drivers/gpu/drm/arm/hdlcd_crtc.c | 20 ++++++++++++++++++++ > drivers/gpu/drm/arm/hdlcd_drv.c | 20 -------------------- > 2 files changed, 20 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/arm/hdlcd_crtc.c b/drivers/gpu/drm/arm/hdlcd_crtc.c > index 20ebfb4fbdfa..798a3cc480a2 100644 > --- a/drivers/gpu/drm/arm/hdlcd_crtc.c > +++ b/drivers/gpu/drm/arm/hdlcd_crtc.c > @@ -42,6 +42,24 @@ static void hdlcd_crtc_cleanup(struct drm_crtc *crtc) > drm_crtc_cleanup(crtc); > } > > +static int hdlcd_crtc_enable_vblank(struct drm_crtc *crtc) > +{ > + struct hdlcd_drm_private *hdlcd = crtc_to_hdlcd_priv(crtc); > + unsigned int mask = hdlcd_read(hdlcd, HDLCD_REG_INT_MASK); > + > + hdlcd_write(hdlcd, HDLCD_REG_INT_MASK, mask | HDLCD_INTERRUPT_VSYNC); > + > + return 0; > +} > + > +static void hdlcd_crtc_disable_vblank(struct drm_crtc *crtc) > +{ > + struct hdlcd_drm_private *hdlcd = crtc_to_hdlcd_priv(crtc); > + unsigned int mask = hdlcd_read(hdlcd, HDLCD_REG_INT_MASK); > + > + hdlcd_write(hdlcd, HDLCD_REG_INT_MASK, mask & ~HDLCD_INTERRUPT_VSYNC); > +} > + > static const struct drm_crtc_funcs hdlcd_crtc_funcs = { > .destroy = hdlcd_crtc_cleanup, > .set_config = drm_atomic_helper_set_config, > @@ -49,6 +67,8 @@ static void hdlcd_crtc_cleanup(struct drm_crtc *crtc) > .reset = drm_atomic_helper_crtc_reset, > .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state, > .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state, > + .enable_vblank = hdlcd_crtc_enable_vblank, > + .disable_vblank = hdlcd_crtc_disable_vblank, > }; > > static struct simplefb_format supported_formats[] = SIMPLEFB_FORMATS; > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c > index e5f4f4a6546d..6598ba4cc958 100644 > --- a/drivers/gpu/drm/arm/hdlcd_drv.c > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c > @@ -199,24 +199,6 @@ static void hdlcd_irq_uninstall(struct drm_device *drm) > hdlcd_write(hdlcd, HDLCD_REG_INT_MASK, irq_mask); > } > > -static int hdlcd_enable_vblank(struct drm_device *drm, unsigned int crtc) > -{ > - struct hdlcd_drm_private *hdlcd = drm->dev_private; > - unsigned int mask = hdlcd_read(hdlcd, HDLCD_REG_INT_MASK); > - > - hdlcd_write(hdlcd, HDLCD_REG_INT_MASK, mask | HDLCD_INTERRUPT_VSYNC); > - > - return 0; > -} > - > -static void hdlcd_disable_vblank(struct drm_device *drm, unsigned int crtc) > -{ > - struct hdlcd_drm_private *hdlcd = drm->dev_private; > - unsigned int mask = hdlcd_read(hdlcd, HDLCD_REG_INT_MASK); > - > - hdlcd_write(hdlcd, HDLCD_REG_INT_MASK, mask & ~HDLCD_INTERRUPT_VSYNC); > -} > - > #ifdef CONFIG_DEBUG_FS > static int hdlcd_show_underrun_count(struct seq_file *m, void *arg) > { > @@ -285,8 +267,6 @@ static void hdlcd_debugfs_cleanup(struct drm_minor *minor) > .irq_postinstall = hdlcd_irq_postinstall, > .irq_uninstall = hdlcd_irq_uninstall, > .get_vblank_counter = drm_vblank_no_hw_counter, > - .enable_vblank = hdlcd_enable_vblank, > - .disable_vblank = hdlcd_disable_vblank, > .gem_free_object_unlocked = drm_gem_cma_free_object, > .gem_vm_ops = &drm_gem_cma_vm_ops, > .dumb_create = drm_gem_cma_dumb_create, > -- > 1.9.1 > -- ==================== | I would like to | | fix the world, | | but they're not | | giving me the | \ source code! / --------------- ¯\_(ツ)_/¯ _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel