Речь идет о встроенном FlexCAN или это подключенный извне CAN-контроллер, такой как MCP2515? В ядре уже есть драйвер FlexCAN. Для встроенных периферийных устройств IRQ уже определены в Техническом справочном руководстве. Для iMX6D / Q смотрите Главу 3 Прерывания и события DMA. Прерывания указываются в дереве устройств и извлекаются с использованием request_irq. Для контроллера CAN, скажем, подключенного через SPI, в качестве прерывания можно использовать GPIO, и прерывание будет указано в дереве устройств с использованием свойств «interrupt-parent» и «interrupts».
Для точного отношения рассмотрим пример. Узел CAN1 здесь со свойством «interrupts», имеющим номер 110. Если вы посмотрите на Раздел 3 TRM, предполагается, что FlexCAN1 имеет номер IRQ 142. Поскольку доменные номера ARM Cortex A9 начать с 32, просто вычтите это из 142, чтобы получить число 110.
Редактировать: Кажется, я не совсем ясно и говорил из дерева устройств POV. Номер IRQ для request_irq должен был поступить из вызова platform_get_irq, который возвращает номера Linux IRQ. Также см. это .