> Gesendet: Donnerstag, 08. Juli 2021 um 14:30 Uhr > Von: "Dafna Hirschfeld" <dafna.hirschfeld@xxxxxxxxxxxxx> > > i see both messages, but mtk_crtc_ddp_irq is never called and so the other 2 not. > > Yes, In my case the irq isr is also not called after resume which cause the warning > even though "enable_vblank" do get called. Don't know why is that. > > comp->funcs->enable_vblank should be mtk_drm_crtc_enable_vblank, right? > > No, this is a bit confusing , there are also the funcs of the components, see in file mtk_drm_ddp_comp.c > so for mt7623 it is mtk_ovl_enable_vblank. thanks for pointing to this. in this function another struct is filled with the callback+data, and this callback seems to be called mtk_disp_ovl_irq_handler which name suggests also a irq as trigger 412 ret = devm_request_irq(dev, irq, mtk_disp_ovl_irq_handler, 413 IRQF_TRIGGER_NONE, dev_name(dev), priv); 414 if (ret < 0) { 415 dev_err(dev, "Failed to request irq %d: %d\n", irq, ret); 416 return ret; 417 } as i don't see this error in dmesg, i guess the registration was successful. added again some debug and it looks like the interrupt callback (mtk_disp_ovl_irq_handler) is not called [ 5.125002] DEBUG: Passed mtk_disp_ovl_probe 416 int reg:0 [ 6.344029] DEBUG: Passed mtk_drm_crtc_enable_vblank 510 [ 6.344051] DEBUG: Passed mtk_ddp_comp_enable_vblank 117 [ 6.344057] DEBUG: Passed mtk_ovl_enable_vblank 107 [ 6.344062] DEBUG: Passed mtk_ovl_enable_vblank 112 [ 6.344066] DEBUG: Passed mtk_ddp_comp_enable_vblank 121 --- a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c +++ b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c @@ -86,6 +86,7 @@ static irqreturn_t mtk_disp_ovl_irq_handler(int irq, void *dev_id) { struct mtk_disp_ovl *priv = dev_id; +printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__); /* Clear frame completion interrupt */ writel(0x0, priv->regs + DISP_REG_OVL_INTSTA); @@ -93,6 +94,7 @@ static irqreturn_t mtk_disp_ovl_irq_handler(int irq, void *dev_id) return IRQ_NONE; priv->vblank_cb(priv->vblank_cb_data); +printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__); return IRQ_HANDLED; } @@ -102,11 +104,12 @@ void mtk_ovl_enable_vblank(struct device *dev, void *vblank_cb_data) { struct mtk_disp_ovl *ovl = dev_get_drvdata(dev); - +printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__); ovl->vblank_cb = vblank_cb; ovl->vblank_cb_data = vblank_cb_data; writel(0x0, ovl->regs + DISP_REG_OVL_INTSTA); writel_relaxed(OVL_FME_CPL_INT, ovl->regs + DISP_REG_OVL_INTEN); +printk(KERN_ALERT "DEBUG: Passed %s %d \n",__FUNCTION__,__LINE__); } void mtk_ovl_disable_vblank(struct device *dev) @@ -410,6 +413,7 @@ static int mtk_disp_ovl_probe(struct platform_device *pdev) ret = devm_request_irq(dev, irq, mtk_disp_ovl_irq_handler, IRQF_TRIGGER_NONE, dev_name(dev), priv); +printk(KERN_ALERT "DEBUG: Passed %s %d int reg:%d\n",__FUNCTION__,__LINE__,ret); if (ret < 0) { dev_err(dev, "Failed to request irq %d: %d\n", irq, ret); return ret; how can we trace this further? maybe watchdog related? > > > > "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?