Index: uspace/srv/hw/bus/cuda_adb/cuda_adb.c
===================================================================
--- uspace/srv/hw/bus/cuda_adb/cuda_adb.c	(revision bf9cb2ff74be98b6ea519f4cd121a9fe9ff54ebc)
+++ uspace/srv/hw/bus/cuda_adb/cuda_adb.c	(revision 0c91cff933f97a7076e264d09bcbd815027707cd)
@@ -55,5 +55,5 @@
 static void cuda_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg);
 static int cuda_init(void);
-static void cuda_irq_handler(ipc_callid_t iid, ipc_call_t *call);
+static void cuda_irq_handler(ipc_callid_t iid, ipc_call_t *call, void *arg);
 
 static void cuda_irq_listen(void);
@@ -282,6 +282,6 @@
 	cuda_irq_code.ranges[0].base = (uintptr_t) instance->cuda_physical;
 	cuda_irq_code.cmds[0].addr = (void *) &((cuda_t *) instance->cuda_physical)->ifr;
-	async_set_interrupt_received(cuda_irq_handler);
-	irq_register(10, device_assign_devno(), 0, &cuda_irq_code);
+	async_irq_subscribe(10, device_assign_devno(), cuda_irq_handler, NULL,
+	    &cuda_irq_code);
 
 	/* Enable SR interrupt. */
@@ -295,5 +295,5 @@
 }
 
-static void cuda_irq_handler(ipc_callid_t iid, ipc_call_t *call)
+static void cuda_irq_handler(ipc_callid_t iid, ipc_call_t *call, void *arg)
 {
 	uint8_t rbuf[CUDA_RCV_BUF_SIZE];
Index: uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c
===================================================================
--- uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c	(revision bf9cb2ff74be98b6ea519f4cd121a9fe9ff54ebc)
+++ uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c	(revision 0c91cff933f97a7076e264d09bcbd815027707cd)
@@ -68,9 +68,8 @@
 static s3c24xx_uart_t *uart;
 
-static void s3c24xx_uart_connection(ipc_callid_t iid, ipc_call_t *icall,
-    void *arg);
-static void s3c24xx_uart_irq_handler(ipc_callid_t iid, ipc_call_t *call);
-static int s3c24xx_uart_init(s3c24xx_uart_t *uart);
-static void s3c24xx_uart_sendb(s3c24xx_uart_t *uart, uint8_t byte);
+static void s3c24xx_uart_connection(ipc_callid_t, ipc_call_t *, void *);
+static void s3c24xx_uart_irq_handler(ipc_callid_t, ipc_call_t *, void *);
+static int s3c24xx_uart_init(s3c24xx_uart_t *);
+static void s3c24xx_uart_sendb(s3c24xx_uart_t *, uint8_t);
 
 int main(int argc, char *argv[])
@@ -150,7 +149,10 @@
 }
 
-static void s3c24xx_uart_irq_handler(ipc_callid_t iid, ipc_call_t *call)
-{
-	(void) iid; (void) call;
+static void s3c24xx_uart_irq_handler(ipc_callid_t iid, ipc_call_t *call,
+    void *arg)
+{
+	(void) iid;
+	(void) call;
+	(void) arg;
 
 	while ((pio_read_32(&uart->io->ufstat) & S3C24XX_UFSTAT_RX_COUNT) != 0) {
@@ -192,7 +194,6 @@
 	    (void *) uart->paddr, inr);
 
-	async_set_interrupt_received(s3c24xx_uart_irq_handler);
-
-	irq_register(inr, device_assign_devno(), 0, &uart_irq_code);
+	async_irq_subscribe(inr, device_assign_devno(), s3c24xx_uart_irq_handler,
+	    NULL, &uart_irq_code);
 
 	/* Enable FIFO, Tx trigger level: empty, Rx trigger level: 1 byte. */
