Hi Dan,
I think I got it - we need to set irq_enabled to true. The documentation says so: " * @irq_enabled: * * Indicates that interrupt handling is enabled, specifically vblank * handling. Drivers which don't use drm_irq_install() need to set this * to true manually. "
Can you try to add the following line:
+static int atmel_hlcdc_dc_irq_install(struct drm_device *dev, unsigned int irq) +{
int ret;
if (irq == IRQ_NOTCONNECTED)
return -ENOTCONN;
dev->irq_enabled = true; <= THIS LINE
atmel_hlcdc_dc_irq_disable(dev);
ret = request_irq(irq, atmel_hlcdc_dc_irq_handler, 0, dev->driver->name, dev);
if (ret)
return ret;
I hope this fixes it.
It does! With the irq_enabled line added everything is looking good.
Great, thanks for testing.
Thomas - I assume you will do a re-spin and there is likely some fixes for the applied IRQ conversions too.
Note - irq_enabled must be cleared if request_irq fails. I did not include this in the testing here.
Sam