diff mbox series

Aw: Re: Re: BUG: MTK DRM/HDMI broken on 5.13 (mt7623/bpi-r2)

Message ID trinity-4ed3af00-b67c-468b-be4c-1e4b2379eca6-1625752868027@3c-app-gmx-bap19 (mailing list archive)
State New, archived
Headers show
Series Aw: Re: Re: BUG: MTK DRM/HDMI broken on 5.13 (mt7623/bpi-r2) | expand

Commit Message

Frank Wunderlich July 8, 2021, 2:01 p.m. UTC
> Gesendet: Donnerstag, 08. Juli 2021 um 14:30 Uhr
> Von: "Dafna Hirschfeld" <dafna.hirschfeld@collabora.com>
> > 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



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?
diff mbox series

Patch

--- 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;