Index: uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c
===================================================================
--- uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c	(revision 1ae74c6cce175c398f5c387eb9c2127110cca7b1)
+++ uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c	(revision 35b8bfec4fe9165e74e88a84c760fdfb3fffcde9)
@@ -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. */
