Bug 214249

Summary: The touchpad isn't detected as such in recent Dell computers (XPS 15 9510)
Product: Drivers Reporter: Julien Wajsberg (felash)
Component: Input DevicesAssignee: drivers_input-devices
Status: RESOLVED INVALID    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 5.13.13 Subsystem:
Regression: No Bisected commit-id:
Attachments: cat /proc/bus/input/devices
Output of libinput list-devices
output of xinput when running in X
kernel messages on 5.10
Output of libinput list-devices on 5.10
cat /proc/bus/input/devices on 5.10
kernel messages on 5.13
Output of libinput list-devices on 5.13
cat /proc/bus/input/devices on 5.13

Description Julien Wajsberg 2021-09-01 12:13:48 UTC
(could be a dupe of bug 212647?)

Hey,
I'm using a Dell XPS 15 9510 which is fairly new. The touchpad is detected as a PS/2 Mouse, which prevents very useful behaviors like two-finger scrolling and especially palm detection. That palm detection doesn't work is especially painful.

I checked that it works perfectly on Windows.

This is on Debian Bullseye, but the kernel is v5.13.6 and I built it myself.
Comment 1 Julien Wajsberg 2021-09-01 12:14:57 UTC
Created attachment 298557 [details]
cat /proc/bus/input/devices
Comment 2 Julien Wajsberg 2021-09-01 12:17:11 UTC
Created attachment 298559 [details]
Output of libinput list-devices
Comment 3 Julien Wajsberg 2021-09-01 12:20:06 UTC
Created attachment 298561 [details]
output of xinput when running in X
Comment 4 Julien Wajsberg 2021-09-01 13:59:01 UTC
I just built and installed 5.13.13, same thing.
Comment 5 Julien Wajsberg 2021-09-01 14:29:10 UTC
In debian's 5.10 kernel, the touchpad works perfectly. I'll attach some more logs.
Comment 6 Julien Wajsberg 2021-09-01 14:29:35 UTC
Created attachment 298605 [details]
kernel messages on 5.10
Comment 7 Julien Wajsberg 2021-09-01 14:29:48 UTC
Created attachment 298607 [details]
Output of libinput list-devices on 5.10
Comment 8 Julien Wajsberg 2021-09-01 14:30:01 UTC
Created attachment 298609 [details]
cat /proc/bus/input/devices on 5.10
Comment 9 Julien Wajsberg 2021-09-01 14:30:16 UTC
Created attachment 298611 [details]
kernel messages on 5.13
Comment 10 Julien Wajsberg 2021-09-01 14:30:37 UTC
Created attachment 298613 [details]
Output of libinput list-devices on 5.13
Comment 11 Julien Wajsberg 2021-09-01 14:30:53 UTC
Created attachment 298615 [details]
cat /proc/bus/input/devices on 5.13
Comment 12 Julien Wajsberg 2021-09-01 14:33:49 UTC
So it's not a dupe of bug 212647, because they report that Debian's 5.10 doesn't work, but it works for me.
Comment 13 Julien Wajsberg 2021-09-06 17:01:34 UTC
*** Bug 214263 has been marked as a duplicate of this bug. ***
Comment 14 Julien Wajsberg 2021-09-06 17:06:53 UTC
After bisecting, I found that the culprit is:


> b33752c300232d7f95dd9a4353947d0c9e6a0e52 is the first bad commit
> commit b33752c300232d7f95dd9a4353947d0c9e6a0e52
> Author: Douglas Anderson <dianders@chromium.org>
> Date:   Fri Jan 15 09:06:37 2021 -0800
>
> HID: i2c-hid: Reorganize so ACPI and OF are separate modules
>
> This patch rejiggers the i2c-hid code so that the OF (Open Firmware
>     aka Device Tree) and ACPI support is separated out a bit.  The OF and
> ACPI drivers are now separate modules that wrap the core module.
>
> Essentially, what we're doing here:
> * Make "power up" and "power down" a function that can be (optionally)
> implemented by a given user of the i2c-hid core.
> * The OF and ACPI modules are drivers on their own, so they implement
> probe / remove / suspend / resume / shutdown.  The core code
> provides implementations that OF and ACPI can call into.
> 
> We'll organize this so that we now have 3 modules: the old i2c-hid
> module becomes the "core" module and two new modules will depend on
> it, handling probing the specific device.
> 
> As part of this work, we'll remove the i2c-hid "platform data"
> concept since it's not needed.
> 
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> 
> drivers/hid/Makefile                  |   2 +-
> drivers/hid/i2c-hid/Kconfig           |  32 ++++-
> drivers/hid/i2c-hid/Makefile          |   5 +-
> drivers/hid/i2c-hid/i2c-hid-acpi.c    | 143 +++++++++++++++++++
> drivers/hid/i2c-hid/i2c-hid-core.c    | 252
> ++++++----------------------------
> drivers/hid/i2c-hid/i2c-hid-of.c      | 143 +++++++++++++++++++
> drivers/hid/i2c-hid/i2c-hid.h         |  22 +++
>   include/linux/platform_data/i2c-hid.h |  41 ------
> 8 files changed, 379 insertions(+), 261 deletions(-)
>   create mode 100644 drivers/hid/i2c-hid/i2c-hid-acpi.c
>   create mode 100644 drivers/hid/i2c-hid/i2c-hid-of.c
>   delete mode 100644 include/linux/platform_data/i2c-hid.h

Looking at this patch, I realized that the issue is actually just a missing module... And now this works on my 5.13.14 just fine!

The missing module is CONFIG_I2C_HID_ACPI, in Device Drivers > HID > I2C HID Support > HID over I2C transport layer ACPI driver, which is off by default.

Therefore I'm closing it as invalid.