• Mika Westerberg's avatar
    HID: multitouch: Fetch feature reports on demand for Win8 devices · fee906f0
    Mika Westerberg authored
    commit 6d4f5440 upstream.
    
    Some newer Intel Skylake based Dell laptops with Win8 precision touchpad
    fail when initial feature reports are fetched from it. Below is an example
    output with some additional debug included:
    
     i2c_hid i2c-DLL0704:01: Fetching the HID descriptor
     i2c_hid i2c-DLL0704:01: __i2c_hid_command: cmd=20 00
     i2c_hid i2c-DLL0704:01: HID Descriptor: 1e 00 00 01 99 02 21 00 24 ...
     ...
     i2c_hid i2c-DLL0704:01: i2c_hid_get_report
     i2c_hid i2c-DLL0704:01: __i2c_hid_command: cmd=22 00 38 02 23 00
     i2c_hid i2c-DLL0704:01: report (len=4): 04 00 08 05
     i2c_hid i2c-DLL0704:01: report id 13
     i2c_hid i2c-DLL0704:01: i2c_hid_get_report
     i2c_hid i2c-DLL0704:01: __i2c_hid_command: cmd=22 00 3d 02 23 00
     i2c_hid i2c-DLL0704:01: failed to retrieve report from device.
     i2c_hid i2c-DLL0704:01: report id 7
     i2c_hid i2c-DLL0704:01: i2c_hid_get_report
     i2c_hid i2c-DLL0704:01: __i2c_hid_command: cmd=22 00 37 02 23 00
     i2c_hid i2c-DLL0704:01: report (len=259): 03 01 07 fc 28 fe 84 40 ...
     i2c_hid i2c-DLL0704:01: report id 4
     i2c_hid i2c-DLL0704:01: i2c_hid_get_report
     i2c_hid i2c-DLL0704:01: __i2c_hid_command: cmd=22 00 34 02 23 00
    
    We manage to fetch few reports but then the touchpad dies:
    
     i2c_designware i2c_designware.1: i2c_dw_handle_tx_abort: lost arbitration
     i2c_hid i2c-DLL0704:01: failed to retrieve report from device.
    
    it eventually pulls the whole I2C bus low:
    
     i2c_designware i2c_designware.1: controller timed out
     i2c_hid i2c-DLL0704:01: failed to set a report to device.
    
    Fix this by preventing initial feature report retrieval for Win8 devices.
    Instead we fetch reports as needed in mt_feature_mapping(). This prevents
    fetching reports which might cause problems with the device in question.
    Suggested-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
    Tested-by: default avatarSeth Forshee <seth.forshee@canonical.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    fee906f0
hid-multitouch.c 41.5 KB