linux/drivers/mfd
Russell King 0af5e4c36e MFD: ucb1x00-ts: fix resume failure
If the ucb1x00 touchscreen is resumed while the touchscreen is being
touched, the main thread stops responding.  This occurs because two
things happen:

1. When we suspended, we were woken up, and executed the loop.
   Finding that the touchscreen was not pressed, we prepare to
   schedule for a maximum timeout, before being stopped in
   try_to_freeze().

2. an irq occurs, we disable the irq, and mark it as disabled,
   and wake the thread.  This wake occurs while the thread is
   still within __refrigerator()

3. The thread is unfrozen, and __refrigerator() sets the threads
   state back to INTERRUPTIBLE.

We then drop into schedule_timeout() with an infinite timeout and the
IRQ disabled.  This prevents any further screen touches activating
the thread.

Fix this by using kthread_freezable_should_stop() which handles the
freezing issues for us outside of the hotspot where the task state
matters.  Include a flag to ignore the touchscreen until it is
released to avoid sending unintended data to the application.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2012-01-22 21:10:40 +00:00
..
88pm860x-core.c
88pm860x-i2c.c mfd: Introduce missing kfree in 88pm860x probe routine 2012-01-09 00:37:47 +01:00
aat2870-core.c mfd: Convert aat2870 to dev_pm_ops 2012-01-09 00:37:48 +01:00
ab3100-core.c
ab3100-otp.c
ab5500-core.c mfd: Unify abx500 headers in mfd/abx500 2012-01-09 00:37:39 +01:00
ab5500-core.h
ab5500-debugfs.c mfd: Unify abx500 headers in mfd/abx500 2012-01-09 00:37:39 +01:00
ab5500-debugfs.h
ab8500-core.c mfd: Unify abx500 headers in mfd/abx500 2012-01-09 00:37:39 +01:00
ab8500-debugfs.c mfd: Unify abx500 headers in mfd/abx500 2012-01-09 00:37:39 +01:00
ab8500-gpadc.c mfd: Unify abx500 headers in mfd/abx500 2012-01-09 00:37:39 +01:00
ab8500-i2c.c mfd: Unify abx500 headers in mfd/abx500 2012-01-09 00:37:39 +01:00
ab8500-sysctrl.c mfd: Unify abx500 headers in mfd/abx500 2012-01-09 00:37:39 +01:00
abx500-core.c
adp5520.c mfd: Set adp5520 bits if new value is different from the old one 2011-12-20 18:50:55 +01:00
asic3.c
cs5535-mfd.c mfd: Convert to DEFINE_PCI_DEVICE_TABLE 2012-01-09 00:37:37 +01:00
da903x.c mfd: Set da903x bits if new value is different from the old one 2011-12-20 18:50:56 +01:00
da9052-core.c mfd: Clearing events requires event registers to be writable for da9052-core 2012-01-03 20:18:11 +00:00
da9052-i2c.c MFD: DA9052/53 MFD core module 2011-12-14 19:53:32 +08:00
da9052-spi.c MFD: DA9052/53 MFD core module add SPI support v2 2011-12-14 19:53:45 +08:00
davinci_voicecodec.c
db5500-prcmu.c
db8500-prcmu.c mfd/db8500-prcmu: remove support for early silicon revisions 2012-01-03 21:47:04 +00:00
dbx500-prcmu-regs.h
dm355evm_msp.c mfd: Use gpio_request_one from dm355evm_msp 2012-01-09 00:37:38 +01:00
ezx-pcap.c
htc-egpio.c
htc-i2cpld.c
htc-pasic3.c
intel_msic.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
janz-cmodio.c module_param: check type correctness for module_param_array 2012-01-13 09:32:16 +10:30
jz4740-adc.c mfd: Don't declare jz4740_adc_cells const 2012-01-09 00:37:36 +01:00
Kconfig Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 2012-01-13 20:43:32 -08:00
lpc_sch.c mfd: Convert to DEFINE_PCI_DEVICE_TABLE 2012-01-09 00:37:37 +01:00
Makefile Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 2012-01-13 20:43:32 -08:00
max8925-core.c
max8925-i2c.c mfd: Add pm ops to max8925 2012-01-09 01:03:34 +01:00
max8997-irq.c
max8997.c mfd: Add platform data and devices for MAX8997 LED control 2012-01-09 00:37:41 +01:00
max8998-irq.c
max8998.c mfd: Use standard device wakeup for handling max8998 wakeup device 2012-01-09 00:37:36 +01:00
mc13xxx-core.c mfd: Add device tree probe support for mc13xxx 2012-01-09 00:37:35 +01:00
mcp-core.c MFD: mcp-core: fix complaints from the genirq layer 2012-01-20 17:57:35 +00:00
mcp-sa11x0.c Revert "ARM: sa11x0: Implement autoloading of codec and codec pdata for mcp bus." 2012-01-20 17:38:58 +00:00
menelaus.c
mfd-core.c
omap-usb-host.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 2012-01-13 20:43:32 -08:00
pcf50633-adc.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
pcf50633-core.c
pcf50633-gpio.c
pcf50633-irq.c
pm8xxx-irq.c
pm8921-core.c
rdc321x-southbridge.c
s5m-core.c mfd: Add S5M core driver 2012-01-09 00:37:46 +01:00
s5m-irq.c mfd: Add s5m series irq driver 2012-01-09 00:37:46 +01:00
sm501.c mfd: Convert to DEFINE_PCI_DEVICE_TABLE 2012-01-09 00:37:37 +01:00
stmpe-i2c.c mfd: Add support for stmpe variant 801 2012-01-09 00:37:44 +01:00
stmpe-spi.c mfd: Add support for stmpe variant 801 2012-01-09 00:37:44 +01:00
stmpe.c mfd: Fix stmpe section mismatch 2012-01-09 00:37:45 +01:00
stmpe.h mfd: Add support for stmpe variant 801 2012-01-09 00:37:44 +01:00
t7l66xb.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
tc3589x.c
tc6387xb.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
tc6393xb.c
ti-ssp.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
timberdale.c mfd: Convert to DEFINE_PCI_DEVICE_TABLE 2012-01-09 00:37:37 +01:00
timberdale.h
tmio_core.c
tps6105x.c
tps6507x.c
tps6586x.c mfd: Set tps6586x bits if new value is different from the old one 2011-12-20 18:50:56 +01:00
tps65010.c
tps65910-irq.c mfd: Make TPS65910 usable without interrupts 2012-01-09 00:37:40 +01:00
tps65910.c mfd: Make TPS65910 usable without interrupts 2012-01-09 00:37:40 +01:00
tps65911-comparator.c
tps65912-core.c
tps65912-i2c.c
tps65912-irq.c
tps65912-spi.c mfd: Remove redundant spi driver bus initialization 2012-01-09 00:37:31 +01:00
twl4030-audio.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
twl4030-irq.c mfd: Fix twl4030-irq typo 2012-01-09 00:37:33 +01:00
twl4030-madc.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
twl4030-power.c mfd: Add power off functionality to TWL 2012-01-09 00:37:40 +01:00
twl6030-irq.c
twl6030-pwm.c
twl6040-core.c mfd: Use gpio_request_one from twl6040-core 2012-01-09 00:37:38 +01:00
twl6040-irq.c
twl-core.c mfd: twl-core: Add initial DT support for twl4030/twl6030 2012-01-09 00:37:40 +01:00
twl-core.h
ucb1x00-assabet.c
ucb1x00-core.c MFD: ucb1x00-core: fix gpiolib direction_output handling 2012-01-21 18:34:46 +00:00
ucb1x00-ts.c MFD: ucb1x00-ts: fix resume failure 2012-01-22 21:10:40 +00:00
ucb1400_core.c
vx855.c mfd: Convert to DEFINE_PCI_DEVICE_TABLE 2012-01-09 00:37:37 +01:00
wl1273-core.c
wm831x-auxadc.c
wm831x-core.c mfd: Return an error on failed wm831x register writes 2012-01-09 00:37:40 +01:00
wm831x-i2c.c mfd: Convert wm831x core driver to devm_kzalloc() 2012-01-09 00:37:28 +01:00
wm831x-irq.c mfd: Still check other interrupts if we get a wm831x touchscreen IRQ 2012-01-09 00:37:47 +01:00
wm831x-otp.c
wm831x-spi.c mfd: Remove redundant spi driver bus initialization 2012-01-09 00:37:31 +01:00
wm8350-core.c mfd: Store wm8350 struct in core device driver data 2012-01-09 00:37:31 +01:00
wm8350-gpio.c
wm8350-i2c.c mfd: Convert WM8350 to devm_kzalloc() 2012-01-09 00:37:32 +01:00
wm8350-irq.c
wm8350-regmap.c
wm8400-core.c mfd: Convert WM8400 to devm_kzalloc() 2012-01-09 00:37:39 +01:00
wm8994-core.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound 2012-01-12 08:00:30 -08:00
wm8994-irq.c mfd: Convert wm8994 to use generic regmap irq_chip 2011-12-13 00:14:06 +08:00
wm8994-regmap.c mfd: Mark WM1811 GPIO6 register volatile for later revisions 2011-12-13 00:11:49 +08:00
wm8994.h mfd: Initialise WM8994 register cache after reading chip ID registers 2011-12-13 00:11:13 +08:00