]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
Input: usbtouchscreen - support bigger iNexio touchscreens
authorOndrej Zary <linux@rainbow-software.org>
Thu, 27 May 2010 06:30:54 +0000 (23:30 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 27 May 2010 06:39:24 +0000 (23:39 -0700)
Bigger Nexio touchscreens not only send more data but also the header
values are modified somewhat.  Fix the header (it's a guesswork but
it works at least on one 46" touchscreen with 2.00SMS firmware) and
also increase rept_size.

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/touchscreen/usbtouchscreen.c

index 0b0ae2e17a60c360722e2d21ee9ddda0707f4314..82227b00d4b9c5f1d815c098473b3b4e071bc65c 100644 (file)
@@ -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,