Кажется, сделал все, что нужно. При инициализации модуля
enable_irq(dev.irq_line);
if (0 != request_irq(dev.irq_line, irq_hndl, IRQF_SHARED, DRV_NAME, dev.dev_id)) {
/* printk error code */
}
iowrite32(some_command, BAR0+8);
wait_event_interruptible_timeout(my_queue,
dev.irq_flag != 0,
500);