diff options
Diffstat (limited to 'drivers/input/touchscreen/usbtouchscreen.c')
-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 29a8bbf3f08..567d57215c2 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) | |||
857 | if ((pkt[0] & 0xe0) != 0xe0) | 857 | if ((pkt[0] & 0xe0) != 0xe0) |
858 | return 0; | 858 | return 0; |
859 | 859 | ||
860 | if (be16_to_cpu(packet->data_len) > 0xff) | ||
861 | packet->data_len = cpu_to_be16(be16_to_cpu(packet->data_len) - 0x100); | ||
862 | if (be16_to_cpu(packet->x_len) > 0xff) | ||
863 | packet->x_len = cpu_to_be16(be16_to_cpu(packet->x_len) - 0x80); | ||
864 | |||
860 | /* send ACK */ | 865 | /* send ACK */ |
861 | ret = usb_submit_urb(priv->ack, GFP_ATOMIC); | 866 | ret = usb_submit_urb(priv->ack, GFP_ATOMIC); |
862 | 867 | ||
@@ -1112,7 +1117,7 @@ static struct usbtouch_device_info usbtouch_dev_info[] = { | |||
1112 | 1117 | ||
1113 | #ifdef CONFIG_TOUCHSCREEN_USB_NEXIO | 1118 | #ifdef CONFIG_TOUCHSCREEN_USB_NEXIO |
1114 | [DEVTYPE_NEXIO] = { | 1119 | [DEVTYPE_NEXIO] = { |
1115 | .rept_size = 128, | 1120 | .rept_size = 1024, |
1116 | .irq_always = true, | 1121 | .irq_always = true, |
1117 | .read_data = nexio_read_data, | 1122 | .read_data = nexio_read_data, |
1118 | .init = nexio_init, | 1123 | .init = nexio_init, |