Index: uspace/drv/bus/isa/isa.c
===================================================================
--- uspace/drv/bus/isa/isa.c	(revision ee3f6f6d3d003ebc47b38e91f789327c8d9b1ab2)
+++ uspace/drv/bus/isa/isa.c	(revision ebc9c2cfd20bdd5c2f62803f849f0b88de5212c0)
@@ -54,10 +54,6 @@
 #include <ipc/irc.h>
 #include <ipc/services.h>
-#include <sysinfo.h>
-#include <ns.h>
 #include <sys/stat.h>
-#include <ipc/irc.h>
-#include <ipc/services.h>
-#include <sysinfo.h>
+#include <irc.h>
 #include <ns.h>
 
@@ -120,37 +116,16 @@
 	assert(fun);
 
-	sysarg_t apic;
-	sysarg_t i8259;
-
-	async_sess_t *irc_sess = NULL;
-
-	if (((sysinfo_get_value("apic", &apic) == EOK) && (apic))
-	    || ((sysinfo_get_value("i8259", &i8259) == EOK) && (i8259))) {
-		irc_sess = service_connect_blocking(EXCHANGE_SERIALIZE,
-		    SERVICE_IRC, 0, 0);
-	}
-
-	if (!irc_sess)
-		return false;
-
 	const hw_resource_list_t *res = &fun->hw_resources;
 	assert(res);
 	for (size_t i = 0; i < res->count; ++i) {
 		if (res->resources[i].type == INTERRUPT) {
-			const int irq = res->resources[i].res.interrupt.irq;
-
-			async_exch_t *exch = async_exchange_begin(irc_sess);
-			const int rc =
-			    async_req_1_0(exch, IRC_ENABLE_INTERRUPT, irq);
-			async_exchange_end(exch);
-
-			if (rc != EOK) {
-				async_hangup(irc_sess);
+			int rc = irc_enable_interrupt(
+			    res->resources[i].res.interrupt.irq);
+
+			if (rc != EOK)
 				return false;
-			}
-		}
-	}
-
-	async_hangup(irc_sess);
+		}
+	}
+
 	return true;
 }
Index: uspace/drv/bus/pci/pciintel/pci.c
===================================================================
--- uspace/drv/bus/pci/pciintel/pci.c	(revision ee3f6f6d3d003ebc47b38e91f789327c8d9b1ab2)
+++ uspace/drv/bus/pci/pciintel/pci.c	(revision ebc9c2cfd20bdd5c2f62803f849f0b88de5212c0)
@@ -51,8 +51,5 @@
 #include <ddf/log.h>
 #include <ipc/dev_iface.h>
-#include <ipc/irc.h>
-#include <ns.h>
-#include <ipc/services.h>
-#include <sysinfo.h>
+#include <irc.h>
 #include <ops/hw_res.h>
 #include <device/hw_res.h>
@@ -107,37 +104,16 @@
 	pci_fun_t *dev_data = pci_fun(fnode);
 	
-	sysarg_t apic;
-	sysarg_t i8259;
-	
-	async_sess_t *irc_sess = NULL;
-	
-	if (((sysinfo_get_value("apic", &apic) == EOK) && (apic))
-	    || ((sysinfo_get_value("i8259", &i8259) == EOK) && (i8259))) {
-		irc_sess = service_connect_blocking(EXCHANGE_SERIALIZE,
-		    SERVICE_IRC, 0, 0);
-	}
-	
-	if (!irc_sess)
-		return false;
-	
 	size_t i = 0;
 	hw_resource_list_t *res = &dev_data->hw_resources;
 	for (; i < res->count; i++) {
 		if (res->resources[i].type == INTERRUPT) {
-			const int irq = res->resources[i].res.interrupt.irq;
-			
-			async_exch_t *exch = async_exchange_begin(irc_sess);
-			const int rc =
-			    async_req_1_0(exch, IRC_ENABLE_INTERRUPT, irq);
-			async_exchange_end(exch);
-			
-			if (rc != EOK) {
-				async_hangup(irc_sess);
+			int rc = irc_enable_interrupt(
+			    res->resources[i].res.interrupt.irq);
+			
+			if (rc != EOK)
 				return false;
-			}
 		}
 	}
 	
-	async_hangup(irc_sess);
 	return true;
 }
