Re: Elo TouchSystems touchscreen support? (04e7:0022)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 1, 2011 at 13:01, Bastien Nocera <hadess@xxxxxxxxxx> wrote:
> On Tue, 2011-02-01 at 10:00 +0100, Benjamin Tissoires wrote:
>> Hi Bastien, Henrik,
>>
>> On Mon, Jan 31, 2011 at 22:28, Henrik Rydberg <rydberg@xxxxxxxxxxx> wrote:
>> > Hi Bastien,
>> >
>> >> Built into my Lenovo A700 all-in-one is a touchscreen. lsusb says:
>> >> $ lsusb | grep -i touch
>> >> Bus 002 Device 006: ID 04e7:0022 Elo TouchSystems
>> >
>> > I take it this is a dual-touch device?
>> >
>> >> The touchscreen "works", in that tapping it will create a click event,
>> >> though that click event is always in the top left of the screen.
>> >
>> > This is quite common for HID multitouch devices without proper driver
>> > support. Sometimes using the HID_MULTI_INPUT quirk helps. Check
>> > usbhid/hid-quirks.c for examples.
>> >
>> >> Full output of lsusb -vvv attached.
>> >>
>> >> Anybody with ideas as to what I'm missing, or whether that particular
>> >> device is supported?
>> >
>> > You probably noted already that the 04e7:0020 device is listed in
>> > usbhid. Unless the device claims to be win7 compliant (implying
>> > patching up hid-multitouch), going with the evtouch X driver might get
>> > you a bit on the way. Or - god forbid - the binary blob drivers...
>>
>> To know if the device is "win7 compliant" or not, we need the full
>> output of lsusb (with the report descriptors).
>> You need to tell usbhid to release the device before calling lsusb -v.
>>
>> Please use the script at
>> http://lii-enac.fr/en/architecture/linux-input/report.py
>> and run, as root: python report.py > descriptors.txt
>>
>> This will do the job. You can then send us the descriptors.txt, and we
>> will see what we can do.
>
> Attached (with the rest of the input devices stripped).
>
>> >> Using kernel 2.6.38-rc2-git5 (from Fedora rawhide).
>>
>> If your device is "win7 compliant" you will have to recompile a new kernel.
>
> That's alright, I've done this before ;)
>

Hi Bastian,

well, apparently your device should be supported by hid-multitouch.

We will have to do this in two passes:
1) we enable it with hid-multitouch to be able to understand the protocol.
2) we tune the driver in order not making useless operations in the kernel.


First pass:
- please get the branch multitouch of jiri's tree (at
http://git.kernel.org/?p=linux/kernel/git/jikos/hid.git;a=shortlog;h=refs/heads/multitouch)
- then apply the attached patch (git am
0001-hid-multitouch-Introduce-Elo-TouchSystems-2515-Intel.patch)
- get your config from your current kernel (check that hid-multitouch
is enabled as a module)
- compile, install, reboot
- Now your device should still work and must be handled by hid-multitouch
if it's the case:
- mount -t debugfs none /sys/kernel/debug
- tail -f -n0 /sys/kernel/debug/hid/0003:04e7:0022:*/events | tee
logs_04e7_0022.txt

do one finger move on the screen, release
do 2 fingers move on the screen, release the first finger, then the second.

hit Ctrl-C in the terminal (lots of debug info should have been printed).

And send me the logs_04e7_0022.txt to got to the second pass.

Thanks,
Benjamin
From e398db4b75f1164e8a684f0a1b15218eaabb5606 Mon Sep 17 00:00:00 2001
From: Benjamin Tissoires <benjamin.tissoires@xxxxxxx>
Date: Tue, 1 Feb 2011 14:07:12 +0100
Subject: [PATCH] hid-multitouch: Introduce Elo TouchSystems 2515 IntelliTouch Plus

This patch adds support for Elo TouchSystems 2515 IntelliTouch Plus
that can be found in Lenovo A700 all-in-one.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@xxxxxxx>
---
 drivers/hid/Kconfig          |    1 +
 drivers/hid/hid-core.c       |    1 +
 drivers/hid/hid-ids.h        |    1 +
 drivers/hid/hid-multitouch.c |    5 +++++
 4 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index a0b117d..d373635 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -303,6 +303,7 @@ config HID_MULTITOUCH
 
 	  Say Y here if you have one of the following devices:
 	  - Cypress TrueTouch panels
+	  - Elo TouchSystems IntelliTouch Plus panels
 	  - Hanvon dual touch panels
 	  - IrTouch Infrared USB panels
 	  - Pixcir dual touch panels
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index d678cf3..e701e57 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1334,6 +1334,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH3) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH4) },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2515) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_EMS, USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR) },
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index b1dd7ad..7780c48 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -216,6 +216,7 @@
 #define USB_VENDOR_ID_DREAM_CHEEKY	0x1d34
 
 #define USB_VENDOR_ID_ELO		0x04E7
+#define USB_DEVICE_ID_ELO_TS2515	0x0022
 #define USB_DEVICE_ID_ELO_TS2700	0x0020
 
 #define USB_VENDOR_ID_EMS		0x2006
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index 69f8744..a721710 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -466,6 +466,11 @@ static const struct hid_device_id mt_devices[] = {
 		HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS,
 			USB_DEVICE_ID_CYPRESS_TRUETOUCH) },
 
+	/* Elo TouchSystems IntelliTouch Plus panel */
+	{ .driver_data = MT_CLS_DEFAULT,
+		HID_USB_DEVICE(USB_VENDOR_ID_ELO,
+			USB_DEVICE_ID_ELO_TS2515) },
+
 	/* GeneralTouch panel */
 	{ .driver_data = MT_CLS_DUAL_INRANGE_CONTACTNUMBER,
 		HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH,
-- 
1.7.3.4


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux