Index: uspace/drv/audio/hdaudio/hdaudio.c
===================================================================
--- uspace/drv/audio/hdaudio/hdaudio.c	(revision 8d2dd7f2d52fbc7693f94b66e451eeff3756d061)
+++ uspace/drv/audio/hdaudio/hdaudio.c	(revision e9d15d9f0efb393d698245b131a15268dc1cd68f)
@@ -263,7 +263,8 @@
 	}
 
-	rc = register_interrupt_handler(dev, res.irqs.irqs[0],
+	int irq_cap = register_interrupt_handler(dev, res.irqs.irqs[0],
 	    hdaudio_interrupt, &irq_code);
-	if (rc != EOK) {
+	if (irq_cap < 0) {
+		rc = irq_cap;
 		ddf_msg(LVL_ERROR, "Failed registering interrupt handler. (%d)",
 		    rc);
Index: uspace/drv/audio/sb16/main.c
===================================================================
--- uspace/drv/audio/sb16/main.c	(revision 8d2dd7f2d52fbc7693f94b66e451eeff3756d061)
+++ uspace/drv/audio/sb16/main.c	(revision e9d15d9f0efb393d698245b131a15268dc1cd68f)
@@ -94,4 +94,5 @@
 	irq_cmd_t irq_cmds[irq_cmd_count];
 	irq_pio_range_t irq_ranges[1];
+	int irq_cap;
 
 	sb16_t *soft_state = ddf_dev_data_alloc(device, sizeof(sb16_t));
@@ -123,6 +124,8 @@
 	};
 
-	rc = register_interrupt_handler(device, irq, irq_handler, &irq_code);
-	if (rc != EOK) {
+	irq_cap = register_interrupt_handler(device, irq, irq_handler,
+	    &irq_code);
+	if (irq_cap < 0) {
+		rc = irq_cap;
 		ddf_log_error("Failed to register irq handler: %s.",
 		    str_error(rc));
@@ -168,5 +171,5 @@
 error:
 	if (handler_regd)
-		unregister_interrupt_handler(device, irq);
+		unregister_interrupt_handler(device, irq_cap);
 	return rc;
 }
