Index: kernel/genarch/include/drivers/dsrln/dsrlnin.h
===================================================================
--- kernel/genarch/include/drivers/dsrln/dsrlnin.h	(revision 149d14e522aa5c449b696ad4420f3caa33ca9b8e)
+++ kernel/genarch/include/drivers/dsrln/dsrlnin.h	(revision d797054cdc54aa797b379a8dad9eefeafc99acf6)
@@ -50,8 +50,9 @@
 	irq_t irq;
 	dsrlnin_t *dsrlnin;
-	indev_t kbrdin;
+	indev_t *srlnin;
 } dsrlnin_instance_t;
 
-extern indev_t *dsrlnin_init(dsrlnin_t *, inr_t);
+extern dsrlnin_instance_t *dsrlnin_init(dsrlnin_t *, inr_t);
+extern void dsrlnin_wire(dsrlnin_instance_t *, indev_t *);
 
 #endif
Index: kernel/genarch/include/drivers/i8042/i8042.h
===================================================================
--- kernel/genarch/include/drivers/i8042/i8042.h	(revision 149d14e522aa5c449b696ad4420f3caa33ca9b8e)
+++ kernel/genarch/include/drivers/i8042/i8042.h	(revision d797054cdc54aa797b379a8dad9eefeafc99acf6)
@@ -50,8 +50,9 @@
 	irq_t irq;
 	i8042_t *i8042;
-	indev_t kbrdin;
+	indev_t *kbrdin;
 } i8042_instance_t;
 
-extern indev_t *i8042_init(i8042_t *, inr_t);
+extern i8042_instance_t *i8042_init(i8042_t *, inr_t);
+extern void i8042_wire(i8042_instance_t *, indev_t *);
 extern void i8042_cpu_reset(i8042_t *);
 
Index: kernel/genarch/include/drivers/ns16550/ns16550.h
===================================================================
--- kernel/genarch/include/drivers/ns16550/ns16550.h	(revision 149d14e522aa5c449b696ad4420f3caa33ca9b8e)
+++ kernel/genarch/include/drivers/ns16550/ns16550.h	(revision d797054cdc54aa797b379a8dad9eefeafc99acf6)
@@ -63,10 +63,11 @@
 /** Structure representing the ns16550 device. */
 typedef struct {
+	irq_t irq;
 	ns16550_t *ns16550;
-	irq_t irq;
-	indev_t kbrdin;
+	indev_t *kbrdin;
 } ns16550_instance_t;
 
-extern indev_t *ns16550_init(ns16550_t *, inr_t, cir_t, void *);
+extern ns16550_instance_t *ns16550_init(ns16550_t *, inr_t, cir_t, void *);
+extern void ns16550_wire(ns16550_instance_t *, indev_t *);
 
 #endif
Index: kernel/genarch/include/drivers/via-cuda/cuda.h
===================================================================
--- kernel/genarch/include/drivers/via-cuda/cuda.h	(revision d797054cdc54aa797b379a8dad9eefeafc99acf6)
+++ kernel/genarch/include/drivers/via-cuda/cuda.h	(revision d797054cdc54aa797b379a8dad9eefeafc99acf6)
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2006 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup genarch
+ * @{
+ */
+/** @file
+ */
+
+#ifndef KERN_CUDA_H_
+#define KERN_CUDA_H_
+
+#include <ddi/irq.h>
+#include <arch/types.h>
+#include <console/chardev.h>
+
+typedef struct {
+} cuda_t;
+
+typedef struct {
+	irq_t irq;
+	cuda_t *cuda;
+	indev_t *kbrdin;
+} cuda_instance_t;
+
+extern cuda_instance_t *cuda_init(cuda_t *, inr_t, cir_t, void *);
+extern void cuda_wire(cuda_instance_t *, indev_t *);
+
+#endif
+
+/** @}
+ */
Index: kernel/genarch/include/drivers/z8530/z8530.h
===================================================================
--- kernel/genarch/include/drivers/z8530/z8530.h	(revision 149d14e522aa5c449b696ad4420f3caa33ca9b8e)
+++ kernel/genarch/include/drivers/z8530/z8530.h	(revision d797054cdc54aa797b379a8dad9eefeafc99acf6)
@@ -117,8 +117,9 @@
 	irq_t irq;
 	z8530_t *z8530;
-	indev_t kbrdin;
+	indev_t *kbrdin;
 } z8530_instance_t;
 
-extern indev_t *z8530_init(z8530_t *, inr_t, cir_t, void *);
+extern z8530_instance_t *z8530_init(z8530_t *, inr_t, cir_t, void *);
+extern void z8530_wire(z8530_instance_t *, indev_t *);
 
 #endif
