diff --git a/drivers/mbox/mbox_nrf_vevif_task_rx.c b/drivers/mbox/mbox_nrf_vevif_task_rx.c index 8a4d81e0e6e..a489d4d3717 100644 --- a/drivers/mbox/mbox_nrf_vevif_task_rx.c +++ b/drivers/mbox/mbox_nrf_vevif_task_rx.c @@ -116,9 +116,25 @@ static const struct mbox_driver_api vevif_task_rx_driver_api = { .set_enabled = vevif_task_rx_set_enabled, }; +#if defined(CONFIG_GEN_SW_ISR_TABLE) #define VEVIF_IRQ_CONNECT(idx, _) \ IRQ_CONNECT(DT_INST_IRQ_BY_IDX(0, idx, irq), DT_INST_IRQ_BY_IDX(0, idx, priority), \ vevif_task_rx_isr, &vevif_irqs[idx], 0) +#else + +#define VEVIF_IRQ_FUN(idx, _) \ +ISR_DIRECT_DECLARE(vevif_task_##idx##_rx_isr) \ +{ \ + vevif_task_rx_isr(&vevif_irqs[idx]); \ + return 1; \ +} + +LISTIFY(DT_NUM_IRQS(DT_DRV_INST(0)), VEVIF_IRQ_FUN, ()) + +#define VEVIF_IRQ_CONNECT(idx, _) \ + IRQ_DIRECT_CONNECT(DT_INST_IRQ_BY_IDX(0, idx, irq), DT_INST_IRQ_BY_IDX(0, idx, priority), \ + vevif_task_##idx##_rx_isr, 0) +#endif static int vevif_task_rx_init(const struct device *dev) {