Re: ELAN Touchpad double finger tap problem (on Asus ROG laptop)

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

 



Hi Mustafa,

[Adding Jiri, the HID maintainer, as a FYI]

On Mon, Sep 3, 2018 at 9:32 PM Mustafa Kuscu <mustafakuscu@xxxxxxxxx> wrote:
>
> On Mon, Sep 3, 2018 at 11:37 AM Benjamin Tissoires
> <benjamin.tissoires@xxxxxxxxxx> wrote:
> > If you want to go ahead, you can compare what is sent to the touchpad
> > by adding i2c_hid.debug=1 to the kernel boot command line. The output
> > should differ in v4.18, and this must be the culprit :)
>
> Hi Benjamin,
>
> As per your request, the outputs are below. Thanks for debugging. :)
>
> v4.17:
> kernel: i2c_hid i2c-ELAN1200:00: i2c-ELAN1200:00 supply vdd not found,
> using dummy regulator
[stripped]
> kernel: input: ELAN1200:00 04F3:3045 Touchpad as
> /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-5/i2c-ELAN1200:00/0018:04F3:3045.0002/input/inpu
> t13
> kernel: hid-multitouch 0018:04F3:3045.0002: input,hidraw1: I2C HID
> v1.00 Mouse [ELAN1200:00 04F3:3045] on i2c-ELAN1200:00
> kernel: i2c_hid i2c-ELAN1200:00: i2c_hid_set_or_send_report
> kernel: i2c_hid i2c-ELAN1200:00: __i2c_hid_command: cmd=05 00 33 03 06 00 05 00 03 03 00

This is where there is a problem in the v4.18 kernel ^^^

> kernel: i2c_hid i2c-ELAN1200:00: i2c_hid_set_power
> kernel: i2c_hid i2c-ELAN1200:00: __i2c_hid_command: cmd=05 00 01 08
> kernel: i2c_hid i2c-ELAN1200:00: i2c_hid_set_power
> kernel: i2c_hid i2c-ELAN1200:00: __i2c_hid_command: cmd=05 00 00 08
> kernel: i2c_hid i2c-ELAN1200:00: i2c_hid_set_power
> kernel: i2c_hid i2c-ELAN1200:00: __i2c_hid_command: cmd=05 00 01 08
> kernel: i2c_hid i2c-ELAN1200:00: i2c_hid_set_power
>
> v4.18:
> kernel: i2c_hid i2c-ELAN1200:00: i2c-ELAN1200:00 supply vdd not found,
> using dummy regulator
[stripped]
> kernel: input: ELAN1200:00 04F3:3045 Touchpad as
> /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-5/i2c-ELAN1200:00/0018:04F3:3045.0002/input/input20
> kernel: hid-multitouch 0018:04F3:3045.0002: input,hidraw1: I2C HID
> v1.00 Mouse [ELAN1200:00 04F3:3045] on i2c-ELAN1200:00
> kernel: i2c_hid i2c-ELAN1200:00: i2c_hid_set_or_send_report
> kernel: i2c_hid i2c-ELAN1200:00: __i2c_hid_command: cmd=05 00 37 03 06
> 00 05 00 07 00 00
> kernel: i2c_hid i2c-ELAN1200:00: i2c_hid_set_or_send_report
> kernel: i2c_hid i2c-ELAN1200:00: __i2c_hid_command: cmd=05 00 33 03 06 00 05 00 03 03 03

Here the kernel sends "03 03 03" while in the previous kernel it sends
"03 03 00"

And looking more carefully at 7f81c8db54898a7, I realized I removed a
test specifically for Elan panels:
@@ -415,32 +411,9 @@ static void mt_feature_mapping(struct hid_device *hdev,
        struct mt_device *td = hid_get_drvdata(hdev);

        switch (usage->hid) {
-       case HID_DG_INPUTMODE:
-               /* Ignore if value index is out of bounds. */
-               if (usage->usage_index >= field->report_count) {
-                       dev_err(&hdev->dev, "HID_DG_INPUTMODE out of range\n");
-                       break;
-               }
-
-               if (td->inputmode < 0) {
-                       td->inputmode = field->report->id;
-                       td->inputmode_index = usage->usage_index;
-               } else {
-                       /*
-                        * Some elan panels wrongly declare 2 input mode
-                        * features, and silently ignore when we set the
-                        * value in the second field. Skip the second feature
-                        * and hope for the best.
-                        */
-                       dev_info(&hdev->dev,
-                                "Ignoring the extra HID_DG_INPUTMODE\n");
-               }
-
-               break;

This hunk was making sure we never set twice the inputmode value in a
feature report, and now I did.

Please test the patch attached to
https://bugzilla.kernel.org/show_bug.cgi?id=200899 for a fix and I'll
send it upstream and to stable ASAP.

Cheers,
Benjamin



[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