Commit 9e3b2583 authored by Florian Echtler's avatar Florian Echtler Committed by Dmitry Torokhov

Input: usbtouchscreen - add support for e2i touchscreen controller

This patch adds support for the e2i touchscreen controller used in the
Mimo 740 (and probably in other e2i touchscreen products). Tested on
Mimo 740.
Signed-off-by: default avatarFlorian Echtler <floe@butterbrot.org>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 703490ff
...@@ -474,6 +474,11 @@ config TOUCHSCREEN_USB_JASTEC ...@@ -474,6 +474,11 @@ config TOUCHSCREEN_USB_JASTEC
bool "JASTEC/DigiTech DTR-02U USB touch controller device support" if EMBEDDED bool "JASTEC/DigiTech DTR-02U USB touch controller device support" if EMBEDDED
depends on TOUCHSCREEN_USB_COMPOSITE depends on TOUCHSCREEN_USB_COMPOSITE
config TOUCHSCREEN_USB_E2I
default y
bool "e2i Touchscreen controller (e.g. from Mimo 740)"
depends on TOUCHSCREEN_USB_COMPOSITE
config TOUCHSCREEN_TOUCHIT213 config TOUCHSCREEN_TOUCHIT213
tristate "Sahara TouchIT-213 touchscreen" tristate "Sahara TouchIT-213 touchscreen"
select SERIO select SERIO
......
...@@ -120,6 +120,7 @@ enum { ...@@ -120,6 +120,7 @@ enum {
DEVTYPE_GENERAL_TOUCH, DEVTYPE_GENERAL_TOUCH,
DEVTYPE_GOTOP, DEVTYPE_GOTOP,
DEVTYPE_JASTEC, DEVTYPE_JASTEC,
DEVTYPE_E2I,
}; };
#define USB_DEVICE_HID_CLASS(vend, prod) \ #define USB_DEVICE_HID_CLASS(vend, prod) \
...@@ -197,10 +198,46 @@ static struct usb_device_id usbtouch_devices[] = { ...@@ -197,10 +198,46 @@ static struct usb_device_id usbtouch_devices[] = {
{USB_DEVICE(0x0f92, 0x0001), .driver_info = DEVTYPE_JASTEC}, {USB_DEVICE(0x0f92, 0x0001), .driver_info = DEVTYPE_JASTEC},
#endif #endif
#ifdef CONFIG_TOUCHSCREEN_USB_E2I
{USB_DEVICE(0x1ac7, 0x0001), .driver_info = DEVTYPE_E2I},
#endif
{} {}
}; };
/*****************************************************************************
* e2i Part
*/
#ifdef CONFIG_TOUCHSCREEN_USB_E2I
static int e2i_init(struct usbtouch_usb *usbtouch)
{
int ret;
ret = usb_control_msg(usbtouch->udev, usb_rcvctrlpipe(usbtouch->udev, 0),
0x01, 0x02, 0x0000, 0x0081,
NULL, 0, USB_CTRL_SET_TIMEOUT);
dbg("%s - usb_control_msg - E2I_RESET - bytes|err: %d",
__func__, ret);
return ret;
}
static int e2i_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
{
int tmp = (pkt[0] << 8) | pkt[1];
dev->x = (pkt[2] << 8) | pkt[3];
dev->y = (pkt[4] << 8) | pkt[5];
tmp = tmp - 0xA000;
dev->touch = (tmp > 0);
dev->press = (tmp > 0 ? tmp : 0);
return 1;
}
#endif
/***************************************************************************** /*****************************************************************************
* eGalax part * eGalax part
*/ */
...@@ -734,6 +771,18 @@ static struct usbtouch_device_info usbtouch_dev_info[] = { ...@@ -734,6 +771,18 @@ static struct usbtouch_device_info usbtouch_dev_info[] = {
.read_data = jastec_read_data, .read_data = jastec_read_data,
}, },
#endif #endif
#ifdef CONFIG_TOUCHSCREEN_USB_E2I
[DEVTYPE_E2I] = {
.min_xc = 0x0,
.max_xc = 0x7fff,
.min_yc = 0x0,
.max_yc = 0x7fff,
.rept_size = 6,
.init = e2i_init,
.read_data = e2i_read_data,
},
#endif
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment