[PATCH 3/6 v3] input: Add support for VIA VT8500 and compatibles ini8042

From: Alexey Charkov
Date: Wed Dec 22 2010 - 16:41:52 EST


VIA and WonderMedia Systems-on-Chip feature a standard i8042-compatible
keyboard and mouse controller. This adds necessary glue to enable use
of the standard driver with these systems.

Signed-off-by: Alexey Charkov <alchark@xxxxxxxxx>
---

This version of the patch introduces yet another trivial update to
follow changes in arch code (namely variables that hold the register
and interrupt numbers). Otherwise it is identical to v2.

Best regards,
Alexey

drivers/input/serio/Kconfig | 3 +-
drivers/input/serio/i8042-vt8500.h | 73 ++++++++++++++++++++++++++++++++++++
drivers/input/serio/i8042.h | 2 +
3 files changed, 77 insertions(+), 1 deletions(-)
create mode 100644 drivers/input/serio/i8042-vt8500.h

diff --git a/drivers/input/serio/Kconfig b/drivers/input/serio/Kconfig
index 6256233..ff799f3 100644
--- a/drivers/input/serio/Kconfig
+++ b/drivers/input/serio/Kconfig
@@ -21,7 +21,8 @@ if SERIO
config SERIO_I8042
tristate "i8042 PC Keyboard controller" if EMBEDDED || !X86
default y
- depends on !PARISC && (!ARM || ARCH_SHARK || FOOTBRIDGE_HOST) && \
+ depends on !PARISC && \
+ (!ARM || ARCH_SHARK || ARCH_VT8500 || FOOTBRIDGE_HOST) && \
(!SUPERH || SH_CAYMAN) && !M68K && !BLACKFIN
help
i8042 is the chip over which the standard AT keyboard and PS/2
diff --git a/drivers/input/serio/i8042-vt8500.h b/drivers/input/serio/i8042-vt8500.h
new file mode 100644
index 0000000..a7e6673
--- /dev/null
+++ b/drivers/input/serio/i8042-vt8500.h
@@ -0,0 +1,73 @@
+#ifndef _I8042_VT8500_H
+#define _I8042_VT8500_H
+
+#include <mach/i8042.h>
+
+/*
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published by
+ * the Free Software Foundation.
+ */
+
+static void __iomem *regbase;
+
+/*
+ * Names.
+ */
+
+#define I8042_KBD_PHYS_DESC "vt8500ps2/serio0"
+#define I8042_AUX_PHYS_DESC "vt8500ps2/serio1"
+#define I8042_MUX_PHYS_DESC "vt8500ps2/serio%d"
+
+/*
+ * IRQs.
+ */
+
+#define I8042_KBD_IRQ (wmt_i8042_kbd_irq)
+#define I8042_AUX_IRQ (wmt_i8042_aux_irq)
+
+
+/*
+ * Register numbers.
+ */
+
+#define I8042_COMMAND_REG (regbase + 0x4)
+#define I8042_STATUS_REG (regbase + 0x4)
+#define I8042_DATA_REG (regbase + 0x0)
+
+static inline int i8042_read_data(void)
+{
+ return readl(I8042_DATA_REG);
+}
+
+static inline int i8042_read_status(void)
+{
+ return readl(I8042_STATUS_REG);
+}
+
+static inline void i8042_write_data(int val)
+{
+ writel(val, I8042_DATA_REG);
+}
+
+static inline void i8042_write_command(int val)
+{
+ writel(val, I8042_COMMAND_REG);
+}
+
+static inline int i8042_platform_init(void)
+{
+ i8042_reset = true;
+ regbase = ioremap(wmt_i8042_base, SZ_1K);
+ if (!regbase)
+ return -ENODEV;
+
+ return 0;
+}
+
+static inline void i8042_platform_exit(void)
+{
+ iounmap(regbase);
+}
+
+#endif /* _I8042_VT8500_H */
diff --git a/drivers/input/serio/i8042.h b/drivers/input/serio/i8042.h
index cbc1beb..bdb2aeb 100644
--- a/drivers/input/serio/i8042.h
+++ b/drivers/input/serio/i8042.h
@@ -16,6 +16,8 @@

#if defined(CONFIG_MACH_JAZZ)
#include "i8042-jazzio.h"
+#elif defined(CONFIG_ARCH_VT8500)
+#include "i8042-vt8500.h"
#elif defined(CONFIG_SGI_HAS_I8042)
#include "i8042-ip22io.h"
#elif defined(CONFIG_SNI_RM)
--
1.7.3.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/