Index: uspace/drv/char/i8042/i8042.c
===================================================================
--- uspace/drv/char/i8042/i8042.c	(revision 9ff60d1d86dc713dd4c4af34e484c72b732d6621)
+++ uspace/drv/char/i8042/i8042.c	(revision 336f03bf72bd3628c749144880de926db2120c70)
@@ -57,19 +57,23 @@
 static int i8042_write_aux(ddf_fun_t *, char *, size_t);
 static int i8042_read_aux(ddf_fun_t *, char *, size_t);
-
+/*----------------------------------------------------------------------------*/
+/** Primary port interface structure. */
 static char_dev_ops_t kbd_iface = {
     .read = i8042_read_kbd,
     .write = i8042_write_kbd,
 };
-
+/*----------------------------------------------------------------------------*/
+/** Auxiliary port interface structure. */
 static char_dev_ops_t aux_iface = {
     .read = i8042_read_aux,
     .write = i8042_write_aux,
 };
-
+/*----------------------------------------------------------------------------*/
+/** Primary port function operations. */
 static ddf_dev_ops_t kbd_ops = {
 	.interfaces[CHAR_DEV_IFACE] = &kbd_iface
 };
-
+/*----------------------------------------------------------------------------*/
+/** Auxiliary port function operations. */
 static ddf_dev_ops_t aux_ops = {
 	.interfaces[CHAR_DEV_IFACE] = &aux_iface
@@ -92,4 +96,5 @@
 #define i8042_KBD_TRANSLATE	0x40 /* Use this to switch to XT scancodes */
 
+/** i8042 Interrupt pseudo-code. */
 static const irq_cmd_t i8042_cmds[] = {
 	{
@@ -119,4 +124,5 @@
 };
 /*----------------------------------------------------------------------------*/
+/** Wait until it is safe to write to the device. */
 static void wait_ready(i8042_t *dev)
 {
@@ -125,10 +131,10 @@
 }
 /*----------------------------------------------------------------------------*/
-static void wait_ready_write(i8042_t *dev)
-{
-	assert(dev);
-	while (pio_read_8(&dev->regs->status) & i8042_OUTPUT_FULL);
-}
-/*----------------------------------------------------------------------------*/
+/** Interrupt handler routine.
+ * Writes new data to the corresponding buffer.
+ * @param dev Device that caued the interrupt.
+ * @param iid Call id.
+ * @param call pointerr to call data.
+ */
 static void i8042_irq_handler(
     ddf_dev_t *dev, ipc_callid_t iid, ipc_call_t *call)
@@ -145,4 +151,13 @@
 }
 /*----------------------------------------------------------------------------*/
+/** Initialize i8042 driver structure.
+ * @param dev Driver structure to initialize.
+ * @param regs I/O address of registers.
+ * @param reg_size size of the reserved I/O address space.
+ * @param irq_kbd IRQ for primary port.
+ * @param irq_mouse IRQ for aux port.
+ * @param ddf_dev DDF device structure of the device.
+ * @return Error code.
+ */
 int i8042_init(i8042_t *dev, void *regs, size_t reg_size, int irq_kbd,
     int irq_mouse, ddf_dev_t *ddf_dev)
@@ -273,4 +288,10 @@
 }
 /*----------------------------------------------------------------------------*/
+/** Write data to i8042 primary port.
+ * @param fun DDF function.
+ * @param buffer Data source.
+ * @param size Data size.
+ * @return Bytes written.
+ */
 static int i8042_write_kbd(ddf_fun_t *fun, char *buffer, size_t size)
 {
@@ -280,5 +301,5 @@
 	fibril_mutex_lock(&controller->write_guard);
 	for (size_t i = 0; i < size; ++i) {
-		wait_ready_write(controller);
+		wait_ready(controller);
 		pio_write_8(&controller->regs->data, buffer[i]);
 	}
@@ -287,4 +308,10 @@
 }
 /*----------------------------------------------------------------------------*/
+/** Read data from i8042 primary port.
+ * @param fun DDF function.
+ * @param buffer Data place.
+ * @param size Data place size.
+ * @return Bytes read.
+ */
 static int i8042_read_kbd(ddf_fun_t *fun, char *buffer, size_t size)
 {
@@ -301,4 +328,10 @@
 }
 /*----------------------------------------------------------------------------*/
+/** Write data to i8042 auxiliary port.
+ * @param fun DDF function.
+ * @param buffer Data source.
+ * @param size Data size.
+ * @return Bytes written.
+ */
 static int i8042_write_aux(ddf_fun_t *fun, char *buffer, size_t size)
 {
@@ -308,5 +341,5 @@
 	fibril_mutex_lock(&controller->write_guard);
 	for (size_t i = 0; i < size; ++i) {
-		wait_ready_write(controller);
+		wait_ready(controller);
 		pio_write_8(&controller->regs->status, i8042_CMD_WRITE_AUX);
 		pio_write_8(&controller->regs->data, buffer[i]);
@@ -316,4 +349,10 @@
 }
 /*----------------------------------------------------------------------------*/
+/** Read data from i8042 auxiliary port.
+ * @param fun DDF function.
+ * @param buffer Data place.
+ * @param size Data place size.
+ * @return Bytes read.
+ */
 static int i8042_read_aux(ddf_fun_t *fun, char *buffer, size_t size)
 {
Index: uspace/drv/char/i8042/i8042.h
===================================================================
--- uspace/drv/char/i8042/i8042.h	(revision 9ff60d1d86dc713dd4c4af34e484c72b732d6621)
+++ uspace/drv/char/i8042/i8042.h	(revision 336f03bf72bd3628c749144880de926db2120c70)
@@ -53,16 +53,15 @@
 } __attribute__ ((packed)) i8042_regs_t;
 
-typedef struct i8042 i8042_t;
-
-struct i8042 {
-	i8042_regs_t *regs;
-	ddf_fun_t *kbd_fun;
-	ddf_fun_t *mouse_fun;
-	buffer_t aux_buffer;
-	buffer_t kbd_buffer;
-	uint8_t aux_data[BUFFER_SIZE];
-	uint8_t kbd_data[BUFFER_SIZE];
-	fibril_mutex_t write_guard;
-};
+/** i8042 driver structure. */
+typedef struct i8042 {
+	i8042_regs_t *regs;    /**< I/O registers. */
+	ddf_fun_t *kbd_fun;    /**< Pirmary port device function. */
+	ddf_fun_t *mouse_fun;  /**< Auxiliary port device function. */
+	buffer_t kbd_buffer;   /**< Primary port buffer. */
+	buffer_t aux_buffer;   /**< Aux. port buffer. */
+	uint8_t aux_data[BUFFER_SIZE];  /**< Primary port buffer space. */
+	uint8_t kbd_data[BUFFER_SIZE];  /**< Aux. port buffer space. */
+	fibril_mutex_t write_guard;     /**< Prevents simultanous port writes.*/
+} i8042_t;
 
 int i8042_init(i8042_t *, void *, size_t, int, int, ddf_dev_t *);
Index: uspace/drv/char/i8042/main.c
===================================================================
--- uspace/drv/char/i8042/main.c	(revision 9ff60d1d86dc713dd4c4af34e484c72b732d6621)
+++ uspace/drv/char/i8042/main.c	(revision 336f03bf72bd3628c749144880de926db2120c70)
@@ -48,16 +48,17 @@
 static int get_my_registers(const ddf_dev_t *dev,
     uintptr_t *io_reg_address, size_t *io_reg_size, int *kbd, int *mouse);
-
 static int i8042_dev_add(ddf_dev_t *device);
-
+/*----------------------------------------------------------------------------*/
+/** DDF driver operations. */
 static driver_ops_t i8042_driver_ops = {
 	.dev_add = i8042_dev_add,
 };
-
+/*----------------------------------------------------------------------------*/
+/** DDF driver. */
 static driver_t i8042_driver = {
 	.name = NAME,
 	.driver_ops = &i8042_driver_ops
 };
-
+/*----------------------------------------------------------------------------*/
 /** Initialize global driver structures (NONE).
  *
@@ -71,8 +72,8 @@
 {
 	printf(NAME ": HelenOS ps/2 driver.\n");
-	ddf_log_init(NAME, LVL_DEBUG2);
+	ddf_log_init(NAME, LVL_NOTE);
 	return ddf_driver_main(&i8042_driver);
 }
-
+/*----------------------------------------------------------------------------*/
 /** Initialize a new ddf driver instance of i8042 driver
  *
@@ -120,4 +121,6 @@
  * @param[out] io_reg_address Base address of the memory range.
  * @param[out] io_reg_size Size of the memory range.
+ * @param[out] kbd_irq Primary port IRQ.
+ * @param[out] mouse_irq Auxiliary port IRQ.
  * @return Error code.
  */
