linux/drivers/input/keyboard
Eric Miao bab7614d6d Input: add support for generic GPIO-based matrix keypad
Original patch by Marek Vasut, modified by Eric in:

1. use delayed work to simplify the debouncing
2. combine col_polarity/row_polarity into a single active_low field
3. use a generic bit array based XOR algorithm to detect key
   press/release, which should make the column assertion time
   shorter and code a bit cleaner
4. remove the ALT_FN handling, which is no way generic, the ALT_FN
   key should be treated as no different from other keys, and
   translation will be done by user space by commands like 'loadkeys'.
5. explicitly disable row IRQs and flush potential pending work,
   and schedule an immediate scan after resuming as suggested
   by Uli Luckas
6. incorporate review comments from many others

Patch tested on Littleton/PXA310 (though PXA310 has a dedicate keypad
controller, I have to configure those pins as generic GPIO to use this
driver, works quite well, though), and Sharp Zaurus model SL-C7x0
and SL-C1000.

[dtor@mail.ru: fix error unwinding path, support changing keymap
 from userspace]
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Reviewed-by: Trilok Soni <soni.trilok@gmail.com>
Reviewed-by: Uli Luckas <u.luckas@road.de>
Reviewed-by: Russell King <linux@arm.linux.org.uk>
Reviewed-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2009-06-29 00:30:16 -07:00
..
Kconfig Input: add support for generic GPIO-based matrix keypad 2009-06-29 00:30:16 -07:00
Makefile Input: add support for generic GPIO-based matrix keypad 2009-06-29 00:30:16 -07:00
aaed2000_kbd.c
amikbd.c
atakbd.c
atkbd.c Input: atkbd - add force release keys quirk for Amilo Xi 3650 2009-05-11 15:30:45 -07:00
bf54x-keys.c Input: bf54x-keys - remove depreciated IRQF_SAMPLE_RANDOM flag 2009-04-15 08:58:23 -07:00
corgikbd.c Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel 2009-03-13 21:44:51 +00:00
ep93xx_keypad.c Input: add matrix keypad driver for Cirrus EP93xx 2009-04-18 23:44:59 -07:00
gpio_keys.c Input: gpio-keys - avoid possibility of sleeping in timer function 2009-06-28 23:59:23 -07:00
hil_kbd.c Input: HIL drivers - add MODULE_ALIAS() 2008-12-30 00:57:12 -08:00
hilkbd.c Input: hilkbd - fix crash when removing hilkbd module 2009-03-08 16:35:45 -07:00
hpps2atkbd.h
jornada680_kbd.c
jornada720_kbd.c
lkkbd.c
lm8323.c Input: introduce lm8323 keypad driver 2009-05-15 20:13:25 -07:00
locomokbd.c
maple_keyb.c sh: maple: Support block reads and writes. 2009-02-27 16:07:32 +09:00
matrix_keypad.c Input: add support for generic GPIO-based matrix keypad 2009-06-29 00:30:16 -07:00
newtonkbd.c
omap-keypad.c Input: omap-keypad - use disable_irq_nosync() in irq handler 2009-04-17 20:41:44 -07:00
pxa27x_keypad.c
pxa930_rotary.c Input: add support for enhanced rotary controller on pxa930 and pxa935 2008-12-29 04:59:16 -08:00
sh_keysc.c input: sh_keysc: use enable/disable_irq_wake() 2009-04-02 11:20:43 +09:00
spitzkbd.c Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel 2009-03-13 21:44:51 +00:00
stowaway.c
sunkbd.c
tosakbd.c
xtkbd.c