1.1 --- a/pkg/devices/lib/dma/src/x1600.cc Wed Feb 21 00:33:55 2024 +0100
1.2 +++ b/pkg/devices/lib/dma/src/x1600.cc Fri Feb 23 22:52:35 2024 +0100
1.3 @@ -22,11 +22,14 @@
1.4 #include <l4/devices/dma-x1600.h>
1.5 #include <l4/devices/hw_mmio_register_block.h>
1.6
1.7 -#include <l4/sys/icu.h>
1.8 #include <l4/sys/ipc.h>
1.9 #include <l4/sys/irq.h>
1.10 +#include <l4/sys/rcv_endpoint.h>
1.11 #include <l4/util/util.h>
1.12
1.13 +#include <pthread.h>
1.14 +#include <pthread-l4.h>
1.15 +
1.16 #include <stdio.h>
1.17
1.18
1.19 @@ -348,6 +351,9 @@
1.20 bool
1.21 Dma_x1600_channel::wait_for_irq()
1.22 {
1.23 + if (l4_error(l4_rcv_ep_bind_thread(_irq, pthread_l4_cap(pthread_self()), 0)))
1.24 + return false;
1.25 +
1.26 return !l4_error(l4_irq_receive(_irq, L4_IPC_NEVER)) && _chip->have_interrupt(_channel);
1.27 }
1.28
1.29 @@ -357,6 +363,9 @@
1.30 bool
1.31 Dma_x1600_channel::wait_for_irq(unsigned int timeout)
1.32 {
1.33 + if (l4_error(l4_rcv_ep_bind_thread(_irq, pthread_l4_cap(pthread_self()), 0)))
1.34 + return false;
1.35 +
1.36 return !l4_error(l4_irq_receive(_irq, l4_timeout(L4_IPC_TIMEOUT_NEVER, l4util_micros2l4to(timeout)))) && _chip->have_interrupt(_channel);
1.37 }
1.38