linux-stable/drivers/input/keyboard
Alberto Panizzo 76cdc083f4 Input: add imx-keypad driver to support the IMX Keypad Port
The IMX family of Application Processors is shipped with a Keypad Port
supported by this driver.

The peripheral can control up to an 8x8 matrix key pad where all the
scanning is done via software.  The hardware provides two interrupts:
one for key presses (KDI) and one for all key releases (KRI). There is
also a simple circuit for glitch reduction (said for synchronization)
made by two series of 3 D-latches clocked by the keypad-clock that
stabilize the interrupts sources. KDI and KRI are fired only if the
respective conditions are maintained for at last 4 keypad-clock cycle.

Since those circuits are poor for a correct debounce process (the
keypad-clock frequency is 32K and bounces longer than 94us are not
masked) the driver, when an interrupt arrives, samples the matrix
with a period of 10ms until the readins are stable for
IMX_KEYPAD_SCANS_FOR_STABILITY times (currently set at 3). After
getting stable result appropriate events are sent through the input
stack.

If some keys are maintained pressed, the driver continues to scan
the matrix with a longer period (60ms) to catch possible multiple
key presses without overloading the cpu. This process ends when all
keys are released.

This driver is tested to build in kernel or as a module and follow
the specification of Freescale Application processors:
i.MX25 i.MX27 i.MX31 i.MX35 i.MX51 especially tested on i.MX31.

Signed-off-by: Alberto Panizzo <maramaopercheseimorto@gmail.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2010-01-31 17:52:57 -08:00
..
aaed2000_kbd.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
adp5520-keys.c input/keyboard: new driver for ADP5520 MFD PMICs 2009-12-13 19:20:53 +01:00
adp5588-keys.c Merge commit 'v2.6.33-rc5' into next 2010-01-21 23:55:25 -08:00
amikbd.c Input: remove CVS keywords 2008-05-20 12:17:39 -04:00
atakbd.c m68k: Return -ENODEV if no device is found 2008-07-20 17:24:38 -07:00
atkbd.c Merge commit 'v2.6.33-rc5' into next 2010-01-21 23:55:25 -08:00
bf54x-keys.c Input: bf54x-keys - convert printk() to dev_*() 2009-07-23 01:16:11 -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
davinci_keyscan.c Input: davinci_keyscan - add device_enable method to platform data 2010-01-06 00:17:11 -08:00
ep93xx_keypad.c Input: ep93xx_keypad - cleanup and use matrix_keypad helpers 2010-01-13 00:37:16 -08:00
gpio_keys.c Input: gpio_keys - scan gpio state at probe and resume time 2009-11-30 00:05:20 -08:00
hil_kbd.c Input: combine hil_kbd and hil_ptr drivers 2009-08-09 13:27:27 -07:00
hilkbd.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
hpps2atkbd.h
imx_keypad.c Input: add imx-keypad driver to support the IMX Keypad Port 2010-01-31 17:52:57 -08:00
jornada680_kbd.c MODULE_LICENSE expects "GPL v2", not "GPLv2" 2008-05-21 16:56:00 -07:00
jornada720_kbd.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
Kconfig Input: add imx-keypad driver to support the IMX Keypad Port 2010-01-31 17:52:57 -08:00
lkkbd.c Input: lkkbd - change formatting style to match the rest of the kernel 2009-10-13 23:58:20 -07:00
lm8323.c Input: introduce lm8323 keypad driver 2009-05-15 20:13:25 -07:00
locomokbd.c Input: locomokbd - add 'off' button support for Sharp Collie/Poodle 2008-04-02 00:42:42 -04:00
Makefile Input: add imx-keypad driver to support the IMX Keypad Port 2010-01-31 17:52:57 -08:00
maple_keyb.c sh: maple: Support block reads and writes. 2009-02-27 16:07:32 +09:00
matrix_keypad.c Input: matrix-keypad - handle cases when GPIOs can't be wakeup sources 2009-12-24 22:50:55 -08:00
max7359_keypad.c Input: max7359 - use threaded IRQs 2009-09-21 22:27:49 -07:00
newtonkbd.c get rid of input BIT* duplicate defines 2007-10-19 11:53:42 -07:00
omap-keypad.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
opencores-kbd.c Input: add driver for OpenCores Keyboard Controller 2009-09-17 23:24:02 -07:00
pxa27x_keypad.c Nicolas Pitre has a new email address 2009-09-15 09:37:12 -07:00
pxa930_rotary.c Input: add support for enhanced rotary controller on pxa930 and pxa935 2008-12-29 04:59:16 -08:00
qt2160.c Input: make i2c device ids constant 2010-01-09 23:28:33 -08:00
sh_keysc.c Merge commit 'v2.6.33-rc5' into next 2010-01-21 23:55:25 -08: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 get rid of input BIT* duplicate defines 2007-10-19 11:53:42 -07:00
sunkbd.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
tosakbd.c Input: tosakbd - fix cleaning up KEY_STROBEs after error 2009-08-27 22:02:47 -07:00
twl4030_keypad.c Input: twl4030_keypad - switch to using threaded IRQ 2009-12-29 23:20:42 -08:00
w90p910_keypad.c Input: w90p910_keypad - move a dereference below a NULL test 2009-08-30 11:55:47 -07:00
xtkbd.c Input: remove CVS keywords 2008-05-20 12:17:39 -04:00