Index: uspace/srv/hid/kbd/Makefile
===================================================================
--- uspace/srv/hid/kbd/Makefile	(revision 9be360ee65739363f6f9a07bfff0dac29a8b2888)
+++ uspace/srv/hid/kbd/Makefile	(revision 4f3f965940e579307e6112d4e795398b00737d2c)
@@ -59,5 +59,4 @@
 	port/sgcn.c \
 	port/ski.c \
-	port/sun.c \
 	port/z8530.c \
 	ctl/apple.c \
Index: uspace/srv/hid/kbd/generic/kbd.c
===================================================================
--- uspace/srv/hid/kbd/generic/kbd.c	(revision 9be360ee65739363f6f9a07bfff0dac29a8b2888)
+++ uspace/srv/hid/kbd/generic/kbd.c	(revision 4f3f965940e579307e6112d4e795398b00737d2c)
@@ -304,5 +304,6 @@
 #endif
 #if defined(UARCH_sparc64) && defined(MACHINE_generic)
-	kbd_add_dev(&sun_port, &sun_ctl);
+	kbd_add_dev(&z8530_port, &sun_ctl);
+	kbd_add_dev(&ns16550_port, &sun_ctl);
 #endif
 	/* Silence warning on abs32le about kbd_add_dev() being unused */
Index: uspace/srv/hid/kbd/include/kbd_port.h
===================================================================
--- uspace/srv/hid/kbd/include/kbd_port.h	(revision 9be360ee65739363f6f9a07bfff0dac29a8b2888)
+++ uspace/srv/hid/kbd/include/kbd_port.h	(revision 4f3f965940e579307e6112d4e795398b00737d2c)
@@ -59,5 +59,4 @@
 extern kbd_port_ops_t sgcn_port;
 extern kbd_port_ops_t ski_port;
-extern kbd_port_ops_t sun_port;
 extern kbd_port_ops_t z8530_port;
 
Index: pace/srv/hid/kbd/include/sun.h
===================================================================
--- uspace/srv/hid/kbd/include/sun.h	(revision 9be360ee65739363f6f9a07bfff0dac29a8b2888)
+++ 	(revision )
@@ -1,49 +1,0 @@
-/*
- * Copyright (c) 2009 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 kbdgen generic
- * @brief Sun keyboard virtual port driver.
- * @ingroup kbd
- * @{
- */
-/** @file
- */
-
-#ifndef KBD_SUN_H_
-#define KBD_SUN_H_
-
-#include <kbd.h>
-
-extern int ns16550_port_init(kbd_dev_t *);
-extern int z8530_port_init(kbd_dev_t *);
-
-#endif
-
-/**
- * @}
- */
Index: uspace/srv/hid/kbd/port/ns16550.c
===================================================================
--- uspace/srv/hid/kbd/port/ns16550.c	(revision 9be360ee65739363f6f9a07bfff0dac29a8b2888)
+++ uspace/srv/hid/kbd/port/ns16550.c	(revision 4f3f965940e579307e6112d4e795398b00737d2c)
@@ -1,4 +1,5 @@
 /*
  * Copyright (c) 2006 Josef Cejka
+ * Copyright (c) 2011 Jiri Svoboda
  * All rights reserved.
  *
@@ -41,7 +42,20 @@
 #include <kbd.h>
 #include <kbd_port.h>
-#include <sun.h>
 #include <ddi.h>
 #include <errno.h>
+
+static int ns16550_port_init(kbd_dev_t *);
+static void ns16550_port_yield(void);
+static void ns16550_port_reclaim(void);
+static void ns16550_port_write(uint8_t data);
+
+kbd_port_ops_t ns16550_port = {
+	.init = ns16550_port_init,
+	.yield = ns16550_port_yield,
+	.reclaim = ns16550_port_reclaim,
+	.write = ns16550_port_write
+};
+
+static kbd_dev_t *kbd_dev;
 
 /* NS16550 registers */
@@ -91,14 +105,20 @@
 
 static uintptr_t ns16550_physical;
-static uintptr_t ns16550_kernel; 
+static uintptr_t ns16550_kernel;
 
 static kbd_dev_t *kbd_dev;
 
-int ns16550_port_init(kbd_dev_t *kdev)
+static int ns16550_port_init(kbd_dev_t *kdev)
 {
 	void *vaddr;
-
+	
 	kbd_dev = kdev;
-
+	
+	sysarg_t ns16550;
+	if (sysinfo_get_value("kbd.type.ns16550", &ns16550) != EOK)
+		return -1;
+	if (!ns16550)
+		return -1;
+	
 	if (sysinfo_get_value("kbd.address.physical", &ns16550_physical) != EOK)
 		return -1;
@@ -120,4 +140,17 @@
 }
 
+static void ns16550_port_yield(void)
+{
+}
+
+static void ns16550_port_reclaim(void)
+{
+}
+
+static void ns16550_port_write(uint8_t data)
+{
+	(void) data;
+}
+
 static void ns16550_irq_handler(ipc_callid_t iid, ipc_call_t *call)
 {
Index: pace/srv/hid/kbd/port/sun.c
===================================================================
--- uspace/srv/hid/kbd/port/sun.c	(revision 9be360ee65739363f6f9a07bfff0dac29a8b2888)
+++ 	(revision )
@@ -1,103 +1,0 @@
-/*
- * Copyright (c) 2009 Martin Decky
- * Copyright (c) 2011 Jiri Svoboda
- * 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 kbd_port
- * @ingroup  kbd
- * @{
- */
-/** @file
- * @brief Sun keyboard virtual port driver.
- */
-
-#include <kbd.h>
-#include <kbd_port.h>
-#include <sun.h>
-#include <sysinfo.h>
-#include <errno.h>
-#include <bool.h>
-
-static int sun_port_init(kbd_dev_t *);
-static void sun_port_yield(void);
-static void sun_port_reclaim(void);
-static void sun_port_write(uint8_t data);
-
-kbd_port_ops_t sun_port = {
-	.init = sun_port_init,
-	.yield = sun_port_yield,
-	.reclaim = sun_port_reclaim,
-	.write = sun_port_write
-};
-
-
-/** Sun keyboard virtual port driver.
- *
- * This is a virtual port driver which can use
- * both ns16550_port_init and z8530_port_init
- * according to the information passed from the
- * kernel. This is just a temporal hack.
- *
- */
-static int sun_port_init(kbd_dev_t *kdev)
-{
-	sysarg_t z8530;
-	if (sysinfo_get_value("kbd.type.z8530", &z8530) != EOK)
-		z8530 = false;
-	
-	sysarg_t ns16550;
-	if (sysinfo_get_value("kbd.type.ns16550", &ns16550) != EOK)
-		ns16550 = false;
-	
-	if (z8530) {
-		if (z8530_port_init(kdev) == 0)
-			return 0;
-	}
-	
-	if (ns16550) {
-		if (ns16550_port_init(kdev) == 0)
-			return 0;
-	}
-	
-	return -1;
-}
-
-static void sun_port_yield(void)
-{
-}
-
-static void sun_port_reclaim(void)
-{
-}
-
-static void sun_port_write(uint8_t data)
-{
-	(void) data;
-}
-
-/** @}
-*/
Index: uspace/srv/hid/kbd/port/z8530.c
===================================================================
--- uspace/srv/hid/kbd/port/z8530.c	(revision 9be360ee65739363f6f9a07bfff0dac29a8b2888)
+++ uspace/srv/hid/kbd/port/z8530.c	(revision 4f3f965940e579307e6112d4e795398b00737d2c)
@@ -1,4 +1,5 @@
 /*
  * Copyright (c) 2006 Martin Decky
+ * Copyright (c) 2011 Jiri Svoboda
  * All rights reserved.
  *
@@ -41,8 +42,19 @@
 #include <kbd.h>
 #include <kbd_port.h>
-#include <sun.h>
 #include <sys/types.h>
 #include <ddi.h>
 #include <errno.h>
+
+static int z8530_port_init(kbd_dev_t *);
+static void z8530_port_yield(void);
+static void z8530_port_reclaim(void);
+static void z8530_port_write(uint8_t data);
+
+kbd_port_ops_t z8530_port = {
+	.init = z8530_port_init,
+	.yield = z8530_port_yield,
+	.reclaim = z8530_port_reclaim,
+	.write = z8530_port_write
+};
 
 static kbd_dev_t *kbd_dev;
@@ -87,7 +99,13 @@
 static void z8530_irq_handler(ipc_callid_t iid, ipc_call_t *call);
 
-int z8530_port_init(kbd_dev_t *kdev)
+static int z8530_port_init(kbd_dev_t *kdev)
 {
 	kbd_dev = kdev;
+	
+	sysarg_t z8530;
+	if (sysinfo_get_value("kbd.type.z8530", &z8530) != EOK)
+		return -1;
+	if (!z8530)
+		return -1;
 	
 	sysarg_t kaddr;
@@ -108,4 +126,17 @@
 }
 
+static void z8530_port_yield(void)
+{
+}
+
+static void z8530_port_reclaim(void)
+{
+}
+
+static void z8530_port_write(uint8_t data)
+{
+	(void) data;
+}
+
 static void z8530_irq_handler(ipc_callid_t iid, ipc_call_t *call)
 {
