Re: Missing release event for Synaptics touchscreen

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

 



HI Arek,

On 05/09/2017 04:17 PM, Arek Burdach wrote:
Hi,

I've tried described by you solution:

diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 37084b645785..81f271554b6c 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -2510,6 +2510,7 @@ static const struct hid_device_id hid_ignore_list[] = {

You need to add this to the hid_have_special_driver[] and not the hid_ignore_list[].

But, if you do success in binding hid-rmi to a touchscreen it won't work. The firmware between touchpads and touchscreens are different enough that the hid-rmi driver will be looking for data which does not exist in touchscreen's HID report. These differences also mean that it really isn't a good idea to try to support touchscreens with hid-rmi. It would actually result in more transactions and be less efficient then simply using hid-multitouch. That's why hid-core checks for the HID_SCAN_FLAG_GD_POINTER in an attempt to make sure it's binding to a touchpad and not a touchscreen.

{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_WTP) }, { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DPAD) },
 #endif
+       { HID_I2C_DEVICE(USB_VENDOR_ID_SYNAPTICS, 0x1786) },
{ HID_USB_DEVICE(USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) },
        { }
 };
diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
index 5b40c2614599..ac2ea6ad2e53 100644
--- a/drivers/hid/hid-rmi.c
+++ b/drivers/hid/hid-rmi.c
@@ -714,6 +714,7 @@ static void rmi_remove(struct hid_device *hdev)
 }

 static const struct hid_device_id rmi_id[] = {
+       { HID_I2C_DEVICE(USB_VENDOR_ID_SYNAPTICS, 0x1786) },
{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER, USB_DEVICE_ID_RAZER_BLADE_14),
                .driver_data = RMI_DEVICE_HAS_PHYS_BUTTONS },
{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_COVER) },


and now neither hid-touchscreen nor hid-rmi peaking up my touchscreen (also missing hidraw device)

Any other idea how to force hid-rmi to peak the device?

Cheers,
Arek

On 09.05.2017 16:02, Benjamin Tissoires wrote:
On Tue, May 9, 2017 at 2:51 PM, Arek Burdach <arek.burdach@xxxxxxxxx> wrote:
On 09.05.2017 14:20, Benjamin Tissoires wrote:
On Tue, May 9, 2017 at 11:20 AM, Arek Burdach <arek.burdach@xxxxxxxxx>
wrote:
Hi,

Thank you for response.

On 09.05.2017 10:35, Benjamin Tissoires wrote:
On Sat, May 6, 2017 at 9:28 PM, Arek Burdach <arek.burdach@xxxxxxxxx>
wrote:
Hi,

A week ago I've reported a bug:
https://bugzilla.kernel.org/show_bug.cgi?id=195625 Is there anybody
that
can
help me with it?
I can have a look at it.
Please attach the full outputs of hid-recorder and evemu-record in the
bugs, or it'll be difficult for us to debug it.
I've attached full logs for two situations. More details in the issue.
Thanks, looks like a firmware issue (I'll comment in the bug).
Sorry for my noob questions, but do you suggest that it can't be fixed by
changes in kernel modules and I need to report it to the manufacturer?
Yes. Though Andrew, in CC, works for Synaptics and might give us some pointers.

If it so, do you have an idea why it works well on Windows? Do they have
some strange hacks in their drivers?
I have no ideas how well it works under Windows, and I have no ideas
if there are some strange hacks in the Windows nor in the Syanptics
driver (I would assume so).


We don't provide any drivers for touchscreens on Windows. So I don't know how Microsoft is handling a situation like this.

Andrew



I found out that some touchpads (and possible touchscreens?) are
handled
by
both hid-multitouch and hid-rmi drivers. Is there a way to verify how
the
touchscreen would work on hid-rmi drivers? I've tested it with kernel
4.11.0-rc1 version where was this change:
279967a65b320d174a507498aea7d44db3fee7f4 HID: rmi: Handle all Synaptics
touchpads using hid-rmi
which was reverted in later kernel's version. On this version, only my
touchpad was handled by hid-rmi, touchscreen was still handled by
hid-multitouch. Maybe I should change something in code or in
compilation
configuration to force hid-rmi?
Well, with 279967a65 applied, the system would know if the device can
be handled through hid-rmi or not. If hid-multitouch was still used,
that means that the device was not designed to be used as a rmi device
at all (i.e. hid-rmi will not be able to talk to it).
In this patch, there is verified if hid group is
HID_GROUP_MULTITOUCH_WIN_8.
Maybe this touchscreen is in group with greater priority during
recognition.
Can I verify it somehow?
With the logs you gave, the touchscreen is indeed Win 8 certified.

Also HID_GROUP_MULTITOUCH_WIN_8 recognition is done by this:
usage == 0xff0000c5 && parser->global.report_count == 256 &&
parser->global.report_size == 8
I assume that it is correct way to verify that. I wonder if it is
possible
that something changed for a new devices.
Nope, looks good for your device. The reason why hid-rmi is not
picking up your device is because of the check "parser->scan_flags &
HID_SCAN_FLAG_GD_POINTER": this matches only to indirect devices
(touchpads).

If you can recompile your hid and hid-rmi modules, you can try giving a
shot at:
- adding HID_I2C_DEVICE(USB_VENDOR_ID_SYNAPTICS, 0x1786) }, in
hid_have_special_driver[] in hid-core.c
- adding a corresponding line in rmi_id[] in file hid-rmi.c.

This should force the device to bind to hid-rmi and you'll be able to
see if the device works better in this situation or not.
Sorry for another noob question, but if I switch to hid-rmi, it should
potentially produce other output in both /dev/hidraw output and
/dev/input/event output or only in the second one?
The more, the better. Please provide all logs, hidraw and evemu.

I'm just wonder what is the pipeline.

I'll give a try to it and revert back to you with results. Thank you for
tip!
No worries.

Cheers,
Benjamin


Cheers,
Benjamin

Cheers,
Arek


Cheers,
Benjamin

Or it is a wrong way to go? I would be grateful for your help.

Regards,
Arek



--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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