On Wed, Jun 01, 2016 at 03:48:38PM +0100, Liviu Dudau wrote: > Because the HDLCD lacks a hardware counter for vsync signal, the DRM > framework expects that the vsync interrupts are left running to feed > the internal software counter. Currently the HDLCD is masking/unmasking > the vsync interrupt on vblank enable/disable calls, which break that > expectation. Fix that. > > Signed-off-by: Liviu Dudau <Liviu.Dudau@xxxxxxx> As discussed, this is actually not needed. The only thing you need to do is set max_vblank_count = 0. If vblank enable/disable is causing problems, then that would indicate an issue in the core drm_irq.c code, and should be fixed there. And if the docs are confusion, then please update those insted. This patch here shouldn't be needed at all. -Daniel > --- > drivers/gpu/drm/arm/hdlcd_drv.c | 15 +++++---------- > 1 file changed, 5 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c > index fb172d2..3f92dfa 100644 > --- a/drivers/gpu/drm/arm/hdlcd_drv.c > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c > @@ -183,9 +183,13 @@ static int hdlcd_irq_postinstall(struct drm_device *drm) > > /* enable debug interrupts */ > irq_mask |= HDLCD_DEBUG_INT_MASK; > +#endif > + > + /* enable vsync interrupts */ > + irq_mask |= HDLCD_INTERRUPT_VSYNC; > > hdlcd_write(hdlcd, HDLCD_REG_INT_MASK, irq_mask); > -#endif > + > return 0; > } > > @@ -208,20 +212,11 @@ static void hdlcd_irq_uninstall(struct drm_device *drm) > > 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 > -- > 2.8.2 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel