Hi just a small update, added debug in the vendor-specific functions for page_flip and vblank and it seems they never get called --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c @@ -87,21 +87,25 @@ static void mtk_drm_crtc_finish_page_flip(struct mtk_drm_crtc *mtk_crtc) { struct drm_crtc *crtc = &mtk_crtc->base; unsigned long flags; - +printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__); spin_lock_irqsave(&crtc->dev->event_lock, flags); drm_crtc_send_vblank_event(crtc, mtk_crtc->event); drm_crtc_vblank_put(crtc); mtk_crtc->event = NULL; spin_unlock_irqrestore(&crtc->dev->event_lock, flags); +printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__); } static void mtk_drm_finish_page_flip(struct mtk_drm_crtc *mtk_crtc) { +printk(KERN_ALERT "DEBUG: Passed %s %d update:%d,needsvblank:%d\n",__FUNCTION__,__LINE__,mtk_crtc->config_updating,mtk_crtc->pending_needs_vblank); drm_crtc_handle_vblank(&mtk_crtc->base); if (!mtk_crtc->config_updating && mtk_crtc->pending_needs_vblank) { +printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__); mtk_drm_crtc_finish_page_flip(mtk_crtc); mtk_crtc->pending_needs_vblank = false; } +printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__); } static void mtk_drm_crtc_destroy(struct drm_crtc *crtc) finish_page_flip is called by mtk_crtc_ddp_irq. this seems to be set in mtk_drm_crtc_enable_vblank with mtk_ddp_comp_enable_vblank. this is called correctly 113 static inline void mtk_ddp_comp_enable_vblank(struct mtk_ddp_comp *comp, 114 void (*vblank_cb)(void *), 115 void *vblank_cb_data) 116 { 117 printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__); 118 if (comp->funcs && comp->funcs->enable_vblank) 119 { 120 comp->funcs->enable_vblank(comp->dev, vblank_cb, vblank_cb_data); 121 printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__); 122 } 123 } i see both messages, but mtk_crtc_ddp_irq is never called and so the other 2 not. root@bpi-r2:~# dmesg | grep -i DEBUG [ 6.433509] DEBUG: Passed mtk_drm_crtc_enable_vblank 510 [ 6.433530] DEBUG: Passed mtk_ddp_comp_enable_vblank 117 [ 6.433537] DEBUG: Passed mtk_ddp_comp_enable_vblank 121 <<< comp->funcs->enable_vblank should be mtk_drm_crtc_enable_vblank, right? 641 static const struct drm_crtc_funcs mtk_crtc_funcs = { 642 .set_config = drm_atomic_helper_set_config, 643 .page_flip = drm_atomic_helper_page_flip, 644 .destroy = mtk_drm_crtc_destroy, 645 .reset = mtk_drm_crtc_reset, 646 .atomic_duplicate_state = mtk_drm_crtc_duplicate_state, 647 .atomic_destroy_state = mtk_drm_crtc_destroy_state, 648 .enable_vblank = mtk_drm_crtc_enable_vblank, <<<<<<< 649 .disable_vblank = mtk_drm_crtc_disable_vblank, 650 }; but it looks like a recursion: mtk_drm_crtc_enable_vblank calls mtk_ddp_comp_enable_vblank => enable_vblank (=mtk_drm_crtc_enable_vblank), but i see the messages not repeating mtk_drm_crtc_enable_vblank(struct drm_crtc *crtc) 511 mtk_ddp_comp_enable_vblank(comp, mtk_crtc_ddp_irq, &mtk_crtc->base); 113 static inline void mtk_ddp_comp_enable_vblank(struct mtk_ddp_comp *comp, 114 void (*vblank_cb)(void *), 115 void *vblank_cb_data) 116 { 118 if (comp->funcs && comp->funcs->enable_vblank) 120 comp->funcs->enable_vblank(comp->dev, vblank_cb, vblank_cb_data); but params do not match...comp->funcs->enable_vblank takes 3 arguments but comp->funcs->enable_vblank has only one.something i miss here... i guess not, but is watchdog somehow involved? i ask because i see this on reboot/poweroff: "watchdog: watchdog0: watchdog did not stop!" i see this with my 5.13, 5.12-drm (5.12.0+mtk/core drm-patches) and 5.12.14 too (hdmi is working there), but not 5.12.0! that means something in drm-patches (mtk/core) breaks watchdog. maybe the recursion mentioned above? regards Frank > Gesendet: Donnerstag, 08. Juli 2021 um 09:22 Uhr > Von: "Dafna Hirschfeld" <dafna.hirschfeld@xxxxxxxxxxxxx> > > Hi Frank, > > > On 06.07.21 11:54, Frank Wunderlich wrote: > > Hi, > > > > i've noticed that HDMI is broken at least on my board (Bananapi-r2,mt7623) on 5.13. > > > > after some research i noticed that it is working till > > > > commit 2e477391522354e763aa62ee3e281c1ad9e8eb1b > > Author: Dafna Hirschfeld <dafna.hirschfeld@xxxxxxxxxxxxx> > > We also encountered that warning on mt8173 device - Acer Chromebook R13. It happen after resuming from suspend to ram. > We could not find a version that works and we were not able to find the fix of the bug. > It seems like the irq isr is not called after resuming from suspend. > Please share if you have new findings regarding that bug. > > Thanks, > Dafna