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 /drivers/input/touchscreen | |
| 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>
Diffstat (limited to 'drivers/input/touchscreen')
| -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 | ||
