Index: kernel/genarch/include/drivers/dsrln/dsrlnin.h
===================================================================
--- kernel/genarch/include/drivers/dsrln/dsrlnin.h	(revision 969383551290fbbbc07fb4c7ee15832d490665b5)
+++ kernel/genarch/include/drivers/dsrln/dsrlnin.h	(revision 84afc7bf42bf4b5e22750a7f377f4bfc31636630)
@@ -48,5 +48,4 @@
 
 typedef struct {
-	devno_t devno;
 	irq_t irq;
 	dsrlnin_t *dsrlnin;
@@ -54,5 +53,5 @@
 } dsrlnin_instance_t;
 
-extern indev_t *dsrlnin_init(dsrlnin_t *, devno_t, inr_t);
+extern indev_t *dsrlnin_init(dsrlnin_t *, inr_t);
 
 #endif
Index: kernel/genarch/include/drivers/i8042/i8042.h
===================================================================
--- kernel/genarch/include/drivers/i8042/i8042.h	(revision 969383551290fbbbc07fb4c7ee15832d490665b5)
+++ kernel/genarch/include/drivers/i8042/i8042.h	(revision 84afc7bf42bf4b5e22750a7f377f4bfc31636630)
@@ -48,5 +48,4 @@
 
 typedef struct {
-	devno_t devno;
 	irq_t irq;
 	i8042_t *i8042;
@@ -54,5 +53,5 @@
 } i8042_instance_t;
 
-extern indev_t *i8042_init(i8042_t *, devno_t, inr_t);
+extern indev_t *i8042_init(i8042_t *, inr_t);
 
 #endif
Index: kernel/genarch/include/drivers/ns16550/ns16550.h
===================================================================
--- kernel/genarch/include/drivers/ns16550/ns16550.h	(revision 969383551290fbbbc07fb4c7ee15832d490665b5)
+++ kernel/genarch/include/drivers/ns16550/ns16550.h	(revision 84afc7bf42bf4b5e22750a7f377f4bfc31636630)
@@ -63,5 +63,4 @@
 /** Structure representing the ns16550 device. */
 typedef struct {
-	devno_t devno;
 	ns16550_t *ns16550;
 	irq_t irq;
@@ -69,5 +68,5 @@
 } ns16550_instance_t;
 
-extern indev_t *ns16550_init(ns16550_t *, devno_t, inr_t, cir_t, void *);
+extern indev_t *ns16550_init(ns16550_t *, inr_t, cir_t, void *);
 
 #endif
Index: kernel/genarch/include/drivers/z8530/z8530.h
===================================================================
--- kernel/genarch/include/drivers/z8530/z8530.h	(revision 969383551290fbbbc07fb4c7ee15832d490665b5)
+++ kernel/genarch/include/drivers/z8530/z8530.h	(revision 84afc7bf42bf4b5e22750a7f377f4bfc31636630)
@@ -115,5 +115,4 @@
 /** Structure representing the z8530 device. */
 typedef struct {
-	devno_t devno;
 	irq_t irq;
 	z8530_t *z8530;
@@ -121,5 +120,5 @@
 } z8530_instance_t;
 
-extern indev_t *z8530_init(z8530_t *, devno_t, inr_t, cir_t, void *);
+extern indev_t *z8530_init(z8530_t *, inr_t, cir_t, void *);
 
 #endif
Index: kernel/genarch/src/drivers/dsrln/dsrlnin.c
===================================================================
--- kernel/genarch/src/drivers/dsrln/dsrlnin.c	(revision 969383551290fbbbc07fb4c7ee15832d490665b5)
+++ kernel/genarch/src/drivers/dsrln/dsrlnin.c	(revision 84afc7bf42bf4b5e22750a7f377f4bfc31636630)
@@ -39,4 +39,5 @@
 #include <mm/slab.h>
 #include <arch/asm.h>
+#include <ddi/device.h>
 
 static indev_operations_t kbrdin_ops = {
@@ -57,5 +58,5 @@
 }
 
-indev_t *dsrlnin_init(dsrlnin_t *dev, devno_t devno, inr_t inr)
+indev_t *dsrlnin_init(dsrlnin_t *dev, inr_t inr)
 {
 	dsrlnin_instance_t *instance
@@ -66,9 +67,8 @@
 	indev_initialize("dsrlnin", &instance->kbrdin, &kbrdin_ops);
 	
-	instance->devno = devno;
 	instance->dsrlnin = dev;
 	
 	irq_initialize(&instance->irq);
-	instance->irq.devno = devno;
+	instance->irq.devno = device_assign_devno();
 	instance->irq.inr = inr;
 	instance->irq.claim = dsrlnin_claim;
Index: kernel/genarch/src/drivers/i8042/i8042.c
===================================================================
--- kernel/genarch/src/drivers/i8042/i8042.c	(revision 969383551290fbbbc07fb4c7ee15832d490665b5)
+++ kernel/genarch/src/drivers/i8042/i8042.c	(revision 84afc7bf42bf4b5e22750a7f377f4bfc31636630)
@@ -42,4 +42,5 @@
 #include <console/chardev.h>
 #include <mm/slab.h>
+#include <ddi/device.h>
 
 static indev_operations_t kbrdin_ops = {
@@ -77,5 +78,5 @@
 
 /** Initialize i8042. */
-indev_t *i8042_init(i8042_t *dev, devno_t devno, inr_t inr)
+indev_t *i8042_init(i8042_t *dev, inr_t inr)
 {
 	i8042_instance_t *instance
@@ -86,9 +87,8 @@
 	indev_initialize("i8042", &instance->kbrdin, &kbrdin_ops);
 	
-	instance->devno = devno;
 	instance->i8042 = dev;
 	
 	irq_initialize(&instance->irq);
-	instance->irq.devno = devno;
+	instance->irq.devno = device_assign_devno();
 	instance->irq.inr = inr;
 	instance->irq.claim = i8042_claim;
Index: kernel/genarch/src/drivers/ns16550/ns16550.c
===================================================================
--- kernel/genarch/src/drivers/ns16550/ns16550.c	(revision 969383551290fbbbc07fb4c7ee15832d490665b5)
+++ kernel/genarch/src/drivers/ns16550/ns16550.c	(revision 84afc7bf42bf4b5e22750a7f377f4bfc31636630)
@@ -40,4 +40,5 @@
 #include <console/chardev.h>
 #include <mm/slab.h>
+#include <ddi/device.h>
 
 #define LSR_DATA_READY  0x01
@@ -80,5 +81,5 @@
  *
  */
-indev_t *ns16550_init(ns16550_t *dev, devno_t devno, inr_t inr, cir_t cir, void *cir_arg)
+indev_t *ns16550_init(ns16550_t *dev, inr_t inr, cir_t cir, void *cir_arg)
 {
 	ns16550_instance_t *instance
@@ -89,9 +90,8 @@
 	indev_initialize("ns16550", &instance->kbrdin, &kbrdin_ops);
 	
-	instance->devno = devno;
 	instance->ns16550 = dev;
 	
 	irq_initialize(&instance->irq);
-	instance->irq.devno = devno;
+	instance->irq.devno = device_assign_devno();
 	instance->irq.inr = inr;
 	instance->irq.claim = ns16550_claim;
Index: kernel/genarch/src/drivers/z8530/z8530.c
===================================================================
--- kernel/genarch/src/drivers/z8530/z8530.c	(revision 969383551290fbbbc07fb4c7ee15832d490665b5)
+++ kernel/genarch/src/drivers/z8530/z8530.c	(revision 84afc7bf42bf4b5e22750a7f377f4bfc31636630)
@@ -40,4 +40,5 @@
 #include <arch/asm.h>
 #include <mm/slab.h>
+#include <ddi/device.h>
 
 static indev_operations_t kbrdin_ops = {
@@ -88,5 +89,5 @@
 
 /** Initialize z8530. */
-indev_t *z8530_init(z8530_t *dev, devno_t devno, inr_t inr, cir_t cir, void *cir_arg)
+indev_t *z8530_init(z8530_t *dev, inr_t inr, cir_t cir, void *cir_arg)
 {
 	z8530_instance_t *instance
@@ -97,9 +98,8 @@
 	indev_initialize("z8530", &instance->kbrdin, &kbrdin_ops);
 	
-	instance->devno = devno;
 	instance->z8530 = dev;
 	
 	irq_initialize(&instance->irq);
-	instance->irq.devno = devno;
+	instance->irq.devno = device_assign_devno();
 	instance->irq.inr = inr;
 	instance->irq.claim = z8530_claim;
