bug-guix
[Top][All Lists]
Advanced

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

bug#35574: bcm5974 touchpad is not recognized as touchpad


From: Brice Waegeneire
Subject: bug#35574: bcm5974 touchpad is not recognized as touchpad
Date: Tue, 28 Apr 2020 14:10:58 +0000
User-agent: Roundcube Webmail/1.3.8

Hello Florian,

On 2020-04-28 09:45, pelzflorian (Florian Pelz) wrote:
Danny, Brice, I’m putting you in Cc, maybe you have an opinion on
this?  I suppose I should not change %default-extra-linux-options.

Keeping this module enabled in the kernel seems a good idea, it allows
support for mice solely speaking Human Interface Device Boot Protocol
(HIDBP); probably somebody somewhere is unwittingly relying on it being
present by default in Guix.

From the Linux kernel docs
<https://www.kernel.org/doc/html/latest/input/devices/bcm5974.html>:
5.2. USB Race

The Apple multi-touch trackpads report both mouse and keyboard events
via different interfaces of the same usb device. This creates a race
condition with the HID driver, which, if not told otherwise, will find
the standard HID mouse and keyboard, and claim the whole device. To
remedy, the usb product id must be listed in the mouse_ignore list of
the hid driver.
Indeed for me on good boots, the command `lsusb -t` prints
|__ Port 3: Dev 2, If 2, Class=Human Interface Device, Driver=bcm5974, 12M
while on bad boots it says Driver=usbmouse.

But why that happens I do not know, because the mouse_ignore list in
the Linux-libre kernel’s drivers/hid/hid-quirks.c file does list my
touchpad.  Strange.  I will investigate further if a change to the
kernel config could help.

FWI the issue span from the driver 'usbmouse'
(drivers/hid/usbhid/usbmouse.c) which doesn't use drivers/hid/hid-quirks.c
contrary to 'usbhid' (drivers/hid/usbhid/hid-core.c) which is using it.
This is probably why you did not report having an issue with 'usbhid'
racing with 'bcm597'; 'usbhid' is effectively prevented to take over your
touchpad by the quirks while 'usbmouse' isn't aware of it.

Passing arguments to the kernel to blacklist a module is the correct way of
doing this currently FWIU; it's already used in gnu/system/install.scm.

Cheers,
- Brice





reply via email to

[Prev in Thread] Current Thread [Next in Thread]