DRM: move irq request after crtc created.

PD#168985: fix vblank irq panic when crtc not created.

Change-Id: I369a8a0159549001ae0ef216391be730664a4690
Signed-off-by: sky zhou <sky.zhou@amlogic.com>
This commit is contained in:
sky zhou
2018-06-21 12:49:06 +08:00
committed by Yixun Lan
parent caafd46cc9
commit fa6fba6130

View File

@@ -732,20 +732,6 @@ static int am_meson_vpu_bind(struct device *dev,
dev_set_drvdata(dev, amcrtc);
irq = platform_get_irq(pdev, 0);
if (irq < 0) {
dev_err(dev, "cannot find irq for vpu\n");
return irq;
}
amcrtc->irq = (unsigned int)irq;
ret = devm_request_irq(dev, amcrtc->irq, am_meson_vpu_irq,
IRQF_SHARED, dev_name(dev), drm_dev);
if (ret)
return ret;
/* IRQ is initially disabled; it gets enabled in crtc_enable */
disable_irq(amcrtc->irq);
/* init reserved memory */
ret = of_reserved_mem_device_init(&pdev->dev);
if (ret != 0)
@@ -782,6 +768,22 @@ static int am_meson_vpu_bind(struct device *dev,
return ret;
am_meson_register_crtc_funcs(private->crtc, &meson_private_crtc_funcs);
/*vsync irq.*/
irq = platform_get_irq(pdev, 0);
if (irq < 0) {
dev_err(dev, "cannot find irq for vpu\n");
return irq;
}
amcrtc->irq = (unsigned int)irq;
ret = devm_request_irq(dev, amcrtc->irq, am_meson_vpu_irq,
IRQF_SHARED, dev_name(dev), drm_dev);
if (ret)
return ret;
/* IRQ is initially disabled; it gets enabled in crtc_enable */
disable_irq(amcrtc->irq);
INIT_DELAYED_WORK(&osd_dwork, mem_free_work);
schedule_delayed_work(&osd_dwork, msecs_to_jiffies(60 * 1000));