Can't use request_irq () with "virtual" IRQs?

I have a problem with request_irq () when porting a driver from 3.14 kernel to 4.1. Our driver uses an IRQ, which is shared with the third party driver that comes first at boot time.

When it was running on kernel 3.14, the IRQ was static and could be obtained using request_irq (), for example:

request_irq(irq_number, irq_handler,
    IRQF_SHARED | IRQF_TRIGGER_HIGH,
    "irq name", device_context);

      

But now on kernel 4.1 the chopper controller makes the IRQ "virtual" and I don't know how to get the IRQ. This interrupt controller is used by a third party driver, I can't even give it up and continue the old way with request_irq()

.

The new "virtual" interrupt is not visible from:

cat /proc/interrupts

      

(which I think is fine).

I have been browsing the web looking for examples such as about irq_domain

. But I have so little experience with Linux integration that I got lost trying to figure out how to get a shared virtual IRQ.

How do I work with shared virtual IRQs?

+3


source to share





All Articles