}
 }
 
-static void ingenic_drm_atomic_helper_commit_tail(struct drm_atomic_state *old_state)
-{
-       /*
-        * Just your regular drm_atomic_helper_commit_tail(), but only calls
-        * drm_atomic_helper_wait_for_vblanks() if priv->no_vblank.
-        */
-       struct drm_device *dev = old_state->dev;
-       struct ingenic_drm *priv = drm_device_get_priv(dev);
-
-       drm_atomic_helper_commit_modeset_disables(dev, old_state);
-
-       drm_atomic_helper_commit_planes(dev, old_state, 0);
-
-       drm_atomic_helper_commit_modeset_enables(dev, old_state);
-
-       drm_atomic_helper_commit_hw_done(old_state);
-
-       if (!priv->no_vblank)
-               drm_atomic_helper_wait_for_vblanks(dev, old_state);
-
-       drm_atomic_helper_cleanup_planes(dev, old_state);
-}
-
 static irqreturn_t ingenic_drm_irq_handler(int irq, void *arg)
 {
        struct ingenic_drm *priv = drm_device_get_priv(arg);
 {
        struct ingenic_drm *priv = drm_crtc_get_priv(crtc);
 
+       if (priv->no_vblank)
+               return -EINVAL;
+
        regmap_update_bits(priv->map, JZ_REG_LCD_CTRL,
                           JZ_LCD_CTRL_EOF_IRQ, JZ_LCD_CTRL_EOF_IRQ);
 
 };
 
 static struct drm_mode_config_helper_funcs ingenic_drm_mode_config_helpers = {
-       .atomic_commit_tail = ingenic_drm_atomic_helper_commit_tail,
+       .atomic_commit_tail = drm_atomic_helper_commit_tail,
 };
 
 static void ingenic_drm_unbind_all(void *d)