From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752435Ab0LVVls (ORCPT ); Wed, 22 Dec 2010 16:41:48 -0500 Received: from mail-ew0-f45.google.com ([209.85.215.45]:39486 "EHLO mail-ew0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752000Ab0LVVlq (ORCPT ); Wed, 22 Dec 2010 16:41:46 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=EWVBOtIIij4pqhHFoj6FeTfKVjxEOOXADx6OCS0qCnRYNFspq5nvcMI6sRxen2AZea 9jjB8WKYO2xwwneSPYSv6Pc+XkpqsIUEsfeKShvZWlwCocIWgCEd0q+6+X0ydJI6kJjR j0Q33pLzMpKo46RlpBDLvHUKg39coh8zuKhPw= Date: Thu, 23 Dec 2010 00:41:41 +0300 From: Alexey Charkov To: Dmitry Torokhov Cc: Alexey Charkov , linux-arm-kernel@lists.infradead.org, vt8500-wm8505-linux-kernel@googlegroups.com, Tony Lindgren , Feng Tang , Janusz Krzysztofik , Dmitry Eremin-Solenikov , linux-input@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/6 v3] input: Add support for VIA VT8500 and compatibles in i8042 Message-ID: <20101222214141.GA31173@alchark-u3s> References: <1289147348-31969-1-git-send-email-alchark@gmail.com> <1289147348-31969-3-git-send-email-alchark@gmail.com> <20101112233013.GA30946@core.coreip.homeip.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20101112233013.GA30946@core.coreip.homeip.net> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- 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 + +/* + * 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