linux-uconsole/drivers/input/touchscreen
Christian Engelmayer c3d8edeff2 Input: usbtouchscreen - separate report and transmit buffer size handling
commit 4ef38351d7 upstream.

This patch supports the separate handling of the USB transfer buffer length
and the length of the buffer used for multi packet support. For devices
supporting multiple report or diagnostic packets, the USB transfer size is now
limited to the USB endpoints wMaxPacketSize - otherwise it defaults to the
configured report packet size as before.

This fixes an issue where event reporting can be delayed for an arbitrary
time for multi packet devices. For instance the report size for eGalax devices
is defined to the 16 byte maximum diagnostic packet size as opposed to the 5
byte report packet size. In case the driver requests 16 byte from the USB
interrupt endpoint, the USB host controller driver needs to split up the
request into 2 accesses according to the endpoints wMaxPacketSize of 8 byte.
When the first transfer is answered by the eGalax device with not less than
the full 8 byte requested, the host controller has got no way of knowing
whether the touch controller has got additional data queued and will issue
the second transfer. If per example a liftoff event finishes at such a
wMaxPacketSize boundary, the data will not be available to the usbtouch driver
until a further event is triggered and transfered to the host. From user
perspective the BTN_TOUCH release event in this case is stuck until the next
touch down event.

Signed-off-by: Christian Engelmayer <christian.engelmayer@frequentis.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-20 07:45:08 -08:00
..
88pm860x-ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
ad7877.c Input: ad7877 - use spi_get_drvdata() and spi_set_drvdata() 2013-04-07 21:02:25 -07:00
ad7879-i2c.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
ad7879-spi.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
ad7879.c Merge branch 'for-linus' to bring in change ensuring that drivers that 2012-07-07 16:07:48 -07:00
ad7879.h Input: ad7879 - consolidate PM methods 2011-11-15 22:24:22 -08:00
ads7846.c Input: ads7846 - use spi_get_drvdata() and spi_set_drvdata() 2013-04-07 21:02:21 -07:00
atmel-wm97xx.c Input: atmel-wm97xx - use module_platform_driver_probe macro 2013-03-17 21:37:35 -07:00
atmel_mxt_ts.c Atmel MXT touchscreen: increase reset timeouts 2013-03-09 10:31:01 -08:00
atmel_tsadcc.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2012-12-18 12:46:37 -08:00
auo-pixcir-ts.c Input: auo-pixcir-ts - switch to using managed resources 2013-02-25 23:02:57 -08:00
bu21013_ts.c Input: bu21013_ts - add support for Device Tree booting 2012-11-27 23:05:19 -08:00
cy8ctmg110_ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
cyttsp_core.c Input: cyttsp - add missing handshake 2013-06-05 22:46:34 -07:00
cyttsp_core.h Input: cyttsp - fix swapped mfg_stat and mfg_cmd registers 2013-06-05 22:46:37 -07:00
cyttsp_i2c.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
cyttsp_spi.c Input: cyttsp-spi - remove duplicate MODULE_ALIAS() 2013-02-16 22:12:45 -08:00
da9034-ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
da9052_tsi.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2012-12-18 12:46:37 -08:00
dynapro.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
edt-ft5x06.c Input: edt-ft5x06 - remove redundant null check before kfree 2013-03-31 00:21:34 -07:00
eeti_ts.c Input: eeti_ts - remove redundant null check 2013-03-31 00:22:27 -07:00
egalax_ts.c Input: egalax_ts - ABS_MT_POSITION_Y not reported well 2013-05-05 20:13:10 -07:00
elo.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
fujitsu_ts.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
gunze.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
hampshire.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
hp680_ts_input.c Input: hp680_ts_input - ensure arguments to request_irq and free_irq are compatible 2012-03-12 22:17:56 -07:00
htcpen.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
ili210x.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
inexio.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
intel-mid-touch.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
jornada720_ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
Kconfig Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2013-02-20 11:00:43 -08:00
lpc32xx_ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
mainstone-wm97xx.c Input: touchscreen - use macro module_platform_driver() 2011-11-30 23:41:43 -08:00
Makefile Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2012-12-18 12:46:37 -08:00
max11801_ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
mc13783_ts.c Input: mc13783_ts - use module_platform_driver_probe() 2013-03-17 21:37:39 -07:00
mcs5000_ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
migor_ts.c Input: convert I2C drivers to use module_i2c_driver() 2012-03-16 23:06:19 -07:00
mk712.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
mms114.c Input: mms114 - Fix regulator enable and disable paths 2013-03-10 18:34:07 -07:00
mtouch.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
pcap_ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
penmount.c Input: MT - Add flags to input_mt_init_slots() 2012-09-19 19:50:18 +02:00
pixcir_i2c_ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
s3c2410_ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
st1232.c Input: st1232 - add reset pin handling 2013-04-15 10:00:44 -07:00
stmpe-ts.c Input: stmpe-ts - report BTN_TOUCH event 2012-12-16 23:16:03 -08:00
ti_am335x_tsc.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2012-12-18 12:46:37 -08:00
tnetv107x-ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
touchit213.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
touchright.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
touchwin.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
tps6507x-ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
tsc40.c Input: tsc40 - remove wrong announcement of pressure support 2012-10-30 23:40:07 -07:00
tsc2005.c Input: tsc2005 - add MODULE_ALIAS 2013-02-16 22:12:40 -08:00
tsc2007.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
ucb1400_ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
usbtouchscreen.c Input: usbtouchscreen - separate report and transmit buffer size handling 2013-12-20 07:45:08 -08:00
w90p910_ts.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
wacom_i2c.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
wacom_w8001.c Input: MT - Add flags to input_mt_init_slots() 2012-09-19 19:50:18 +02:00
wm97xx-core.c Input: wm97xx - drop out of range inputs 2013-03-12 08:50:18 -07:00
wm831x-ts.c Input: wm831x-ts - convert to devm_input_allocate_device() 2012-12-24 09:52:25 -08:00
wm9705.c Input: wm97xx - mark channels which need pen_down 2011-07-04 19:31:47 -07:00
wm9712.c Input: wm9712 - fix dev_dbg newlines 2013-03-12 08:50:20 -07:00
wm9713.c Input: wm97xx - mark channels which need pen_down 2011-07-04 19:31:47 -07:00
zylonite-wm97xx.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2012-01-10 10:55:52 -08:00