diff options
Diffstat (limited to 'drivers/input/touchscreen/usbtouchscreen.c')
-rw-r--r-- | drivers/input/touchscreen/usbtouchscreen.c | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/drivers/input/touchscreen/usbtouchscreen.c b/drivers/input/touchscreen/usbtouchscreen.c index 5f34b78d5ddb..19055e7381f8 100644 --- a/drivers/input/touchscreen/usbtouchscreen.c +++ b/drivers/input/touchscreen/usbtouchscreen.c | |||
@@ -11,8 +11,9 @@ | |||
11 | * - DMC TSC-10/25 | 11 | * - DMC TSC-10/25 |
12 | * - IRTOUCHSYSTEMS/UNITOP | 12 | * - IRTOUCHSYSTEMS/UNITOP |
13 | * - IdealTEK URTC1000 | 13 | * - IdealTEK URTC1000 |
14 | * - GoTop Super_Q2/GogoPen/PenPower tablets | ||
14 | * | 15 | * |
15 | * Copyright (C) 2004-2006 by Daniel Ritz <daniel.ritz@gmx.ch> | 16 | * Copyright (C) 2004-2007 by Daniel Ritz <daniel.ritz@gmx.ch> |
16 | * Copyright (C) by Todd E. Johnson (mtouchusb.c) | 17 | * Copyright (C) by Todd E. Johnson (mtouchusb.c) |
17 | * | 18 | * |
18 | * This program is free software; you can redistribute it and/or | 19 | * This program is free software; you can redistribute it and/or |
@@ -115,6 +116,7 @@ enum { | |||
115 | DEVTYPE_IRTOUCH, | 116 | DEVTYPE_IRTOUCH, |
116 | DEVTYPE_IDEALTEK, | 117 | DEVTYPE_IDEALTEK, |
117 | DEVTYPE_GENERAL_TOUCH, | 118 | DEVTYPE_GENERAL_TOUCH, |
119 | DEVTYPE_GOTOP, | ||
118 | }; | 120 | }; |
119 | 121 | ||
120 | static struct usb_device_id usbtouch_devices[] = { | 122 | static struct usb_device_id usbtouch_devices[] = { |
@@ -168,6 +170,12 @@ static struct usb_device_id usbtouch_devices[] = { | |||
168 | {USB_DEVICE(0x0dfc, 0x0001), .driver_info = DEVTYPE_GENERAL_TOUCH}, | 170 | {USB_DEVICE(0x0dfc, 0x0001), .driver_info = DEVTYPE_GENERAL_TOUCH}, |
169 | #endif | 171 | #endif |
170 | 172 | ||
173 | #ifdef CONFIG_TOUCHSCREEN_USB_GOTOP | ||
174 | {USB_DEVICE(0x08f2, 0x007f), .driver_info = DEVTYPE_GOTOP}, | ||
175 | {USB_DEVICE(0x08f2, 0x00ce), .driver_info = DEVTYPE_GOTOP}, | ||
176 | {USB_DEVICE(0x08f2, 0x00f4), .driver_info = DEVTYPE_GOTOP}, | ||
177 | #endif | ||
178 | |||
171 | {} | 179 | {} |
172 | }; | 180 | }; |
173 | 181 | ||
@@ -501,6 +509,20 @@ static int general_touch_read_data(struct usbtouch_usb *dev, unsigned char *pkt) | |||
501 | #endif | 509 | #endif |
502 | 510 | ||
503 | /***************************************************************************** | 511 | /***************************************************************************** |
512 | * GoTop Part | ||
513 | */ | ||
514 | #ifdef CONFIG_TOUCHSCREEN_USB_GOTOP | ||
515 | static int gotop_read_data(struct usbtouch_usb *dev, unsigned char *pkt) | ||
516 | { | ||
517 | dev->x = ((pkt[1] & 0x38) << 4) | pkt[2]; | ||
518 | dev->y = ((pkt[1] & 0x07) << 7) | pkt[3]; | ||
519 | dev->touch = pkt[0] & 0x01; | ||
520 | return 1; | ||
521 | } | ||
522 | #endif | ||
523 | |||
524 | |||
525 | /***************************************************************************** | ||
504 | * the different device descriptors | 526 | * the different device descriptors |
505 | */ | 527 | */ |
506 | static struct usbtouch_device_info usbtouch_dev_info[] = { | 528 | static struct usbtouch_device_info usbtouch_dev_info[] = { |
@@ -623,9 +645,19 @@ static struct usbtouch_device_info usbtouch_dev_info[] = { | |||
623 | .max_yc = 0x0500, | 645 | .max_yc = 0x0500, |
624 | .rept_size = 7, | 646 | .rept_size = 7, |
625 | .read_data = general_touch_read_data, | 647 | .read_data = general_touch_read_data, |
626 | } | 648 | }, |
627 | #endif | 649 | #endif |
628 | 650 | ||
651 | #ifdef CONFIG_TOUCHSCREEN_USB_GOTOP | ||
652 | [DEVTYPE_GOTOP] = { | ||
653 | .min_xc = 0x0, | ||
654 | .max_xc = 0x03ff, | ||
655 | .min_yc = 0x0, | ||
656 | .max_yc = 0x03ff, | ||
657 | .rept_size = 4, | ||
658 | .read_data = gotop_read_data, | ||
659 | }, | ||
660 | #endif | ||
629 | }; | 661 | }; |
630 | 662 | ||
631 | 663 | ||