diff options
Diffstat (limited to 'drivers/input')
| -rw-r--r-- | drivers/input/touchscreen/usbtouchscreen.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/drivers/input/touchscreen/usbtouchscreen.c b/drivers/input/touchscreen/usbtouchscreen.c index 0b0ae2e17a60..82227b00d4b9 100644 --- a/drivers/input/touchscreen/usbtouchscreen.c +++ b/drivers/input/touchscreen/usbtouchscreen.c @@ -857,6 +857,11 @@ static int nexio_read_data(struct usbtouch_usb *usbtouch, unsigned char *pkt)  	if ((pkt[0] & 0xe0) != 0xe0)  		return 0; +	if (be16_to_cpu(packet->data_len) > 0xff) +		packet->data_len = cpu_to_be16(be16_to_cpu(packet->data_len) - 0x100); +	if (be16_to_cpu(packet->x_len) > 0xff) +		packet->x_len = cpu_to_be16(be16_to_cpu(packet->x_len) - 0x80); +  	/* send ACK */  	ret = usb_submit_urb(priv->ack, GFP_ATOMIC); @@ -1112,7 +1117,7 @@ static struct usbtouch_device_info usbtouch_dev_info[] = {  #ifdef CONFIG_TOUCHSCREEN_USB_NEXIO  	[DEVTYPE_NEXIO] = { -		.rept_size	= 128, +		.rept_size	= 1024,  		.irq_always	= true,  		.read_data	= nexio_read_data,  		.init		= nexio_init, | 
