|
@@ -201,7 +201,8 @@ void sun4i_tcon_enable_vblank(struct sun4i_tcon *tcon, bool enable)
|
|
DRM_DEBUG_DRIVER("%sabling VBLANK interrupt\n", enable ? "En" : "Dis");
|
|
DRM_DEBUG_DRIVER("%sabling VBLANK interrupt\n", enable ? "En" : "Dis");
|
|
|
|
|
|
mask = SUN4I_TCON_GINT0_VBLANK_ENABLE(0) |
|
|
mask = SUN4I_TCON_GINT0_VBLANK_ENABLE(0) |
|
|
- SUN4I_TCON_GINT0_VBLANK_ENABLE(1);
|
|
|
|
|
|
+ SUN4I_TCON_GINT0_VBLANK_ENABLE(1) |
|
|
|
|
+ SUN4I_TCON_GINT0_TCON0_TRI_FINISH_ENABLE;
|
|
|
|
|
|
if (enable)
|
|
if (enable)
|
|
val = mask;
|
|
val = mask;
|
|
@@ -582,7 +583,8 @@ static irqreturn_t sun4i_tcon_handler(int irq, void *private)
|
|
regmap_read(tcon->regs, SUN4I_TCON_GINT0_REG, &status);
|
|
regmap_read(tcon->regs, SUN4I_TCON_GINT0_REG, &status);
|
|
|
|
|
|
if (!(status & (SUN4I_TCON_GINT0_VBLANK_INT(0) |
|
|
if (!(status & (SUN4I_TCON_GINT0_VBLANK_INT(0) |
|
|
- SUN4I_TCON_GINT0_VBLANK_INT(1))))
|
|
|
|
|
|
+ SUN4I_TCON_GINT0_VBLANK_INT(1) |
|
|
|
|
+ SUN4I_TCON_GINT0_TCON0_TRI_FINISH_INT)))
|
|
return IRQ_NONE;
|
|
return IRQ_NONE;
|
|
|
|
|
|
drm_crtc_handle_vblank(&scrtc->crtc);
|
|
drm_crtc_handle_vblank(&scrtc->crtc);
|
|
@@ -591,7 +593,8 @@ static irqreturn_t sun4i_tcon_handler(int irq, void *private)
|
|
/* Acknowledge the interrupt */
|
|
/* Acknowledge the interrupt */
|
|
regmap_update_bits(tcon->regs, SUN4I_TCON_GINT0_REG,
|
|
regmap_update_bits(tcon->regs, SUN4I_TCON_GINT0_REG,
|
|
SUN4I_TCON_GINT0_VBLANK_INT(0) |
|
|
SUN4I_TCON_GINT0_VBLANK_INT(0) |
|
|
- SUN4I_TCON_GINT0_VBLANK_INT(1),
|
|
|
|
|
|
+ SUN4I_TCON_GINT0_VBLANK_INT(1) |
|
|
|
|
+ SUN4I_TCON_GINT0_TCON0_TRI_FINISH_INT,
|
|
0);
|
|
0);
|
|
|
|
|
|
if (engine->ops->vblank_quirk)
|
|
if (engine->ops->vblank_quirk)
|