[PATCH 3/6 v3] input: Add support for VIA VT8500 and compatibles in i8042
Alexey Charkov
alchark at gmail.com
Wed Dec 22 16:41:41 EST 2010
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 at gmail.com>
---
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
More information about the linux-arm-kernel
mailing list