From 9d5657db8c4a485b56b5c9174b52bab39b2fd16e Mon Sep 17 00:00:00 2001 From: Ilya Frolov Date: Fri, 12 Oct 2007 14:19:40 -0400 Subject: [PATCH] Input: usbtouchscreen - add support for GeneralTouch devices Signed-off-by: Ilya Frolov Signed-off-by: Dmitry Torokhov --- drivers/input/touchscreen/Kconfig | 5 ++++ drivers/input/touchscreen/usbtouchscreen.c | 31 ++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig index e73ce6ba3dc1..e3e0baa1a158 100644 --- a/drivers/input/touchscreen/Kconfig +++ b/drivers/input/touchscreen/Kconfig @@ -254,4 +254,9 @@ config TOUCHSCREEN_USB_IDEALTEK bool "IdealTEK URTC1000 device support" if EMBEDDED depends on TOUCHSCREEN_USB_COMPOSITE +config TOUCHSCREEN_USB_GENERAL_TOUCH + default y + bool "GeneralTouch Touchscreen device support" if EMBEDDED + depends on TOUCHSCREEN_USB_COMPOSITE + endif diff --git a/drivers/input/touchscreen/usbtouchscreen.c b/drivers/input/touchscreen/usbtouchscreen.c index 13fbda0895b5..9b3a26cd1a8d 100644 --- a/drivers/input/touchscreen/usbtouchscreen.c +++ b/drivers/input/touchscreen/usbtouchscreen.c @@ -114,6 +114,7 @@ enum { DEVTYPE_DMC_TSC10, DEVTYPE_IRTOUCH, DEVTYPE_IDEALTEK, + DEVTYPE_GENERAL_TOUCH, }; static struct usb_device_id usbtouch_devices[] = { @@ -163,6 +164,10 @@ static struct usb_device_id usbtouch_devices[] = { {USB_DEVICE(0x1391, 0x1000), .driver_info = DEVTYPE_IDEALTEK}, #endif +#ifdef CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH + {USB_DEVICE(0x0dfc, 0x0001), .driver_info = DEVTYPE_GENERAL_TOUCH}, +#endif + {} }; @@ -480,6 +485,20 @@ static int idealtek_read_data(struct usbtouch_usb *dev, unsigned char *pkt) } #endif +/***************************************************************************** + * General Touch Part + */ +#ifdef CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH +static int general_touch_read_data(struct usbtouch_usb *dev, unsigned char *pkt) +{ + dev->x = ((pkt[2] & 0x0F) << 8) | pkt[1] ; + dev->y = ((pkt[4] & 0x0F) << 8) | pkt[3] ; + dev->press = pkt[5] & 0xff; + dev->touch = pkt[0] & 0x01; + + return 1; +} +#endif /***************************************************************************** * the different device descriptors @@ -595,6 +614,18 @@ static struct usbtouch_device_info usbtouch_dev_info[] = { .read_data = idealtek_read_data, }, #endif + +#ifdef CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH + [DEVTYPE_GENERAL_TOUCH] = { + .min_xc = 0x0, + .max_xc = 0x0500, + .min_yc = 0x0, + .max_yc = 0x0500, + .rept_size = 7, + .read_data = general_touch_read_data, + } +#endif + }; -- 2.39.5