diff options
author | Jerrold Jones <digireco@gmail.com> | 2007-10-22 00:59:47 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2007-10-22 00:59:47 -0400 |
commit | 14e4020630b364cc564172a476cd6a6ac4bc7393 (patch) | |
tree | 08c56cb99138275991993b62bb28ce3b92dee833 | |
parent | 858711c55f757872b11574599bfa836df8ab34c9 (diff) |
Input: usbtouchscreen - add support for GoTop tablet devices
Add support for GoTop Super_Q2/GogoPen/PenPower tablets to usbtouchscreen.
Protocol discovery was done by Yick Yan Lam.
Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
-rw-r--r-- | drivers/input/touchscreen/Kconfig | 6 | ||||
-rw-r--r-- | drivers/input/touchscreen/usbtouchscreen.c | 36 |
2 files changed, 40 insertions, 2 deletions
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig index e3e0baa1a158..fa8442b6241c 100644 --- a/drivers/input/touchscreen/Kconfig +++ b/drivers/input/touchscreen/Kconfig | |||
@@ -202,6 +202,7 @@ config TOUCHSCREEN_USB_COMPOSITE | |||
202 | - DMC TSC-10/25 | 202 | - DMC TSC-10/25 |
203 | - IRTOUCHSYSTEMS/UNITOP | 203 | - IRTOUCHSYSTEMS/UNITOP |
204 | - IdealTEK URTC1000 | 204 | - IdealTEK URTC1000 |
205 | - GoTop Super_Q2/GogoPen/PenPower tablets | ||
205 | 206 | ||
206 | Have a look at <http://linux.chapter7.ch/touchkit/> for | 207 | Have a look at <http://linux.chapter7.ch/touchkit/> for |
207 | a usage description and the required user-space stuff. | 208 | a usage description and the required user-space stuff. |
@@ -259,4 +260,9 @@ config TOUCHSCREEN_USB_GENERAL_TOUCH | |||
259 | bool "GeneralTouch Touchscreen device support" if EMBEDDED | 260 | bool "GeneralTouch Touchscreen device support" if EMBEDDED |
260 | depends on TOUCHSCREEN_USB_COMPOSITE | 261 | depends on TOUCHSCREEN_USB_COMPOSITE |
261 | 262 | ||
263 | config TOUCHSCREEN_USB_GOTOP | ||
264 | default y | ||
265 | bool "GoTop Super_Q2/GogoPen/PenPower tablet device support" if EMBEDDED | ||
266 | depends on TOUCHSCREEN_USB_COMPOSITE | ||
267 | |||
262 | endif | 268 | endif |
diff --git a/drivers/input/touchscreen/usbtouchscreen.c b/drivers/input/touchscreen/usbtouchscreen.c index 9fb3d5c30999..f7d4a3b1ee7b 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 | ||