aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJerrold Jones <digireco@gmail.com>2007-10-22 00:59:47 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2007-10-22 00:59:47 -0400
commit14e4020630b364cc564172a476cd6a6ac4bc7393 (patch)
tree08c56cb99138275991993b62bb28ce3b92dee833
parent858711c55f757872b11574599bfa836df8ab34c9 (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/Kconfig6
-rw-r--r--drivers/input/touchscreen/usbtouchscreen.c36
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
263config 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
262endif 268endif
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
120static struct usb_device_id usbtouch_devices[] = { 122static 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
515static 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 */
506static struct usbtouch_device_info usbtouch_dev_info[] = { 528static 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