Input: usbtouchscreen - add ELO IntelliTouch 2700 support
authorMichael Gebetsroither <michael@mgeb.org>
Sat, 5 Nov 2011 06:56:05 +0000 (23:56 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 5 Nov 2011 07:02:27 +0000 (00:02 -0700)
Signed-off-by: Michael Gebetsroither <michael@mgeb.org>
Reviewed-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/touchscreen/Kconfig
drivers/input/touchscreen/usbtouchscreen.c

index 3488ffe1fa0a16bc7b5c5a53802607a11fb340fb..3c986cf48904ba43c455e89d8f3e83138a851f2c 100644 (file)
@@ -541,6 +541,7 @@ config TOUCHSCREEN_USB_COMPOSITE
          - GoTop Super_Q2/GogoPen/PenPower tablets
          - JASTEC USB Touch Controller/DigiTech DTR-02U
          - Zytronic controllers
+         - Elo TouchSystems 2700 IntelliTouch
 
          Have a look at <http://linux.chapter7.ch/touchkit/> for
          a usage description and the required user-space stuff.
@@ -620,6 +621,11 @@ config TOUCHSCREEN_USB_JASTEC
        bool "JASTEC/DigiTech DTR-02U USB touch controller device support" if EXPERT
        depends on TOUCHSCREEN_USB_COMPOSITE
 
+config TOUCHSCREEN_USB_ELO
+       default y
+       bool "Elo TouchSystems 2700 IntelliTouch controller device support" if EXPERT
+       depends on TOUCHSCREEN_USB_COMPOSITE
+
 config TOUCHSCREEN_USB_E2I
        default y
        bool "e2i Touchscreen controller (e.g. from Mimo 740)"
index 73fd6642b681b92a074b6e8ab2619b65768292f7..9dbd8b4d9a6e77a8d8393044af2c15fd2a8f731a 100644 (file)
@@ -16,6 +16,7 @@
  *  - JASTEC USB touch controller/DigiTech DTR-02U
  *  - Zytronic capacitive touchscreen
  *  - NEXIO/iNexio
+ *  - Elo TouchSystems 2700 IntelliTouch
  *
  * Copyright (C) 2004-2007 by Daniel Ritz <daniel.ritz@gmx.ch>
  * Copyright (C) by Todd E. Johnson (mtouchusb.c)
@@ -138,6 +139,7 @@ enum {
        DEVTYPE_ZYTRONIC,
        DEVTYPE_TC45USB,
        DEVTYPE_NEXIO,
+       DEVTYPE_ELO,
 };
 
 #define USB_DEVICE_HID_CLASS(vend, prod) \
@@ -239,6 +241,10 @@ static const struct usb_device_id usbtouch_devices[] = {
                .driver_info = DEVTYPE_NEXIO},
 #endif
 
+#ifdef CONFIG_TOUCHSCREEN_USB_ELO
+       {USB_DEVICE(0x04e7, 0x0020), .driver_info = DEVTYPE_ELO},
+#endif
+
        {}
 };
 
@@ -944,6 +950,24 @@ static int nexio_read_data(struct usbtouch_usb *usbtouch, unsigned char *pkt)
 #endif
 
 
+/*****************************************************************************
+ * ELO part
+ */
+
+#ifdef CONFIG_TOUCHSCREEN_USB_ELO
+
+static int elo_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
+{
+       dev->x = (pkt[3] << 8) | pkt[2];
+       dev->y = (pkt[5] << 8) | pkt[4];
+       dev->touch = pkt[6] > 0;
+       dev->press = pkt[6];
+
+       return 1;
+}
+#endif
+
+
 /*****************************************************************************
  * the different device descriptors
  */
@@ -953,6 +977,18 @@ static void usbtouch_process_multi(struct usbtouch_usb *usbtouch,
 #endif
 
 static struct usbtouch_device_info usbtouch_dev_info[] = {
+#ifdef CONFIG_TOUCHSCREEN_USB_ELO
+       [DEVTYPE_ELO] = {
+               .min_xc         = 0x0,
+               .max_xc         = 0x0fff,
+               .min_yc         = 0x0,
+               .max_yc         = 0x0fff,
+               .max_press      = 0xff,
+               .rept_size      = 8,
+               .read_data      = elo_read_data,
+       },
+#endif
+
 #ifdef CONFIG_TOUCHSCREEN_USB_EGALAX
        [DEVTYPE_EGALAX] = {
                .min_xc         = 0x0,