linux/drivers/input
Mark Brown f534666815 Input: wm831x-ts - fix races with IRQ management
If the WM831x pen down and data IRQs run in parallel it is possible for the
data and pen down IRQs to deadlock themselves as one is part way through
disabling its operation while the other is part way through enabling. Fix
this by always disabling the pen down interrupt while data is active and
vice versa.  When a changeover is required we disable the IRQ that is to
be stopped then schedule work that will enable the new IRQ.

We need to handle the data flow in the data IRQ as the readback from the
device needs to be ordered correctly with the IRQ for robust operation.

This also fixes an issue when using the built in IRQs due to enable_irq()
not being valid from interrupt context on an interrupt controller with bus
operations like the built in IRQ controller - this issue may also have
affected other interrupt controllers.  We can't rely on having the data
and pen down IRQs available via GPIOs on the CPU on every system.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2011-04-27 23:12:12 -07:00
..
gameport Merge branch 'next' into for-linus 2011-03-18 23:38:50 -07:00
joystick Merge branch 'next' into for-linus 2011-01-11 22:01:45 -08:00
keyboard Input: twl4030_keypad - fix potential NULL dereference in twl4030_kp_probe() 2011-04-11 23:51:18 -07:00
misc Input: xen-kbdfront - fix mouse getting stuck after save/restore 2011-04-18 10:17:45 -07:00
mouse Input: synaptics - fix crash in synaptics_module_init() 2011-03-31 00:04:52 -07:00
serio Input: rpckbd - fix a leak of the IRQ during init failure 2011-04-02 21:47:53 -07:00
tablet Input: wacom - add support for Lenovo tablet ID (0xE6) 2011-03-31 22:41:24 -07:00
touchscreen Input: wm831x-ts - fix races with IRQ management 2011-04-27 23:12:12 -07:00
apm-power.c Input: use pr_fmt and pr_<level> 2010-11-30 23:10:26 -08:00
evbug.c Input: use pr_fmt and pr_<level> 2010-11-30 23:10:26 -08:00
evdev.c Input: evdev - indicate buffer overrun with SYN_DROPPED 2011-04-12 23:35:24 -07:00
ff-core.c Input: use pr_fmt and pr_<level> 2010-11-30 23:10:26 -08:00
ff-memless.c Input: use pr_fmt and pr_<level> 2010-11-30 23:10:26 -08:00
fixp-arith.h changed email 2007-10-20 00:47:32 +02:00
input-compat.c Input: refactor evdev 32bit compat to be shareable with uinput 2008-10-27 22:03:42 -04:00
input-compat.h [IA64] Remove COMPAT_IA32 support 2010-02-08 10:42:17 -08:00
input-mt.c input: mt: Move tracking and pointer emulation to input-mt 2010-12-16 10:41:38 +01:00
input-polldev.c Input: input-polldev - fix a couple of typos 2011-01-31 21:17:41 -08:00
input.c Input: estimate number of events per packet 2011-04-18 10:15:43 -07:00
joydev.c Input: use pr_fmt and pr_<level> 2010-11-30 23:10:26 -08:00
Kconfig Input: xen-kbdfront - move to drivers/input/misc 2011-03-16 23:26:01 -07:00
Makefile Input: xen-kbdfront - move to drivers/input/misc 2011-03-16 23:26:01 -07:00
mousedev.c Input: use pr_fmt and pr_<level> 2010-11-30 23:10:26 -08:00
sparse-keymap.c Input: sparse-keymap - report KEY_UNKNOWN for unknown scan codes 2011-03-28 23:34:52 -07:00