Index: uspace/drv/bus/isa/ebus.dev
===================================================================
--- uspace/drv/bus/isa/ebus.dev	(revision 06f10ac669769c5153b94682f2807b60a365293a)
+++ uspace/drv/bus/isa/ebus.dev	(revision 7fc81da1fa798e3f7a52bc8d00553155f47140d4)
@@ -3,2 +3,8 @@
 	irq 2027
 	io_range 3f8 8
+
+i8042:
+	match 100 isa/i8042
+	irq 2025
+	irq 2026
+	io_range 060 5
Index: uspace/drv/char/i8042/i8042.c
===================================================================
--- uspace/drv/char/i8042/i8042.c	(revision 06f10ac669769c5153b94682f2807b60a365293a)
+++ uspace/drv/char/i8042/i8042.c	(revision 7fc81da1fa798e3f7a52bc8d00553155f47140d4)
@@ -2,5 +2,5 @@
  * Copyright (c) 2001-2004 Jakub Jermar
  * Copyright (c) 2006 Josef Cejka
- * Copyright (c) 2017 Jiri Svoboda
+ * Copyright (c) 2021 Jiri Svoboda
  * Copyright (c) 2011 Jan Vesely
  * All rights reserved.
@@ -146,4 +146,7 @@
 	fibril_mutex_unlock(&port->buf_lock);
 	fibril_condvar_broadcast(&port->buf_cv);
+
+	async_sess_t *parent_sess = ddf_dev_parent_sess_get(dev);
+	hw_res_clear_interrupt(parent_sess, port->irq);
 }
 
@@ -202,4 +205,5 @@
 	dev->kbd->cds.ops = &i8042_chardev_ops;
 	dev->kbd->cds.sarg = dev->kbd;
+	dev->kbd->irq = irq_kbd;
 	fibril_mutex_initialize(&dev->kbd->buf_lock);
 	fibril_condvar_initialize(&dev->kbd->buf_cv);
@@ -226,4 +230,5 @@
 	dev->aux->cds.ops = &i8042_chardev_ops;
 	dev->aux->cds.sarg = dev->aux;
+	dev->aux->irq = irq_mouse;
 	fibril_mutex_initialize(&dev->aux->buf_lock);
 	fibril_condvar_initialize(&dev->aux->buf_cv);
Index: uspace/drv/char/i8042/i8042.h
===================================================================
--- uspace/drv/char/i8042/i8042.h	(revision 06f10ac669769c5153b94682f2807b60a365293a)
+++ uspace/drv/char/i8042/i8042.h	(revision 7fc81da1fa798e3f7a52bc8d00553155f47140d4)
@@ -76,4 +76,6 @@
 	/** Signal new data in buffer */
 	fibril_condvar_t buf_cv;
+	/** Interrupt number */
+	int irq;
 } i8042_port_t;
 
