[Patch] Sync psm/evdev/atkbd with FreeBSD - please test

Antonio Huete Jimenez tuxillo at quantumachine.net
Fri Apr 12 12:36:39 PDT 2024


Started testing this on my Lenovo Thinkpad T480, so far it works like a 
charm! Just had to set the rcpt mask and it started work + gestures. 
Then went and enabled tapping with the xinput command.

I'll continue using it but if there are no unexpected crashes or 
problems I think you can just push it.

Thanks!
Antonio Huete

On 4/11/24 13:56, karu.pruun wrote:
> Hello
> 
> Great, thanks for doing this work! I'll try to test over weekend.
> 
> Best
> 
> Peeter
> 
> 
> 
> On Wed, Apr 10, 2024 at 11:41 AM Michael Neumann <mneumann at ntecs.de> wrote:
>>
>> Hi all,
>>
>> The last couple of days, I worked on syncing our psm/evdev and atkbd
>> code  (partially) with FreeBSD head. The result should be better input
>> device support (Touchpad etc.) on some Laptops.
>>
>> The full patch is here:
>>
>> https://leaf.dragonflybsd.org/~mneumann/0001-Sync-psm-evdev-atkbd-with-FreeBSD.patch
>>
>> The full list of commits can be seen here:
>>
>> https://github.com/mneumann/DragonFlyBSD/tree/sync-psm-evdev-atkbd-with-freebsd
>>
>> I am currently testing this on an old Panasonic CF-SV laptop that I
>> bought in Japan, and plan to also test it on a Tuxdeo laptop, where I
>> really had issues with the psm driver, which regularily got out of sync.
>> This issue should now be fixed, as it is likely to be related to active
>> AUX port multiplexing. Feel free to test this patch as well and report
>> back potentially issues. If there are no objections, I'd like to merge
>> it within the next few weeks.
>>
>> To summarize some of the changes:
>>
>> * This (partially) syncs psm/atkbd/evdev with FreeBSD.
>>
>> * Mostly psm and evdev (w/o uinput) is synced with FreeBSD.
>>
>> * As for atkbd, only parts related to support active AUX port
>>    multiplexer code is synced from FreeBSD. Active AUX port
>>    MUX is required to detect for example my synaptics touchpad
>>    on the Pansonic CF-SV, otherwise the touchpad is only recognized
>>    as standard PS/2 mouse. Other laptops use the same "method" to
>>    attach "multiple" mice to the AUX port.
>>
>> * Adds kern.features sysctl. Xorg uses e.g. kern.features.evdev
>>    and kern.features.evdev_support to detect if evdev is available.
>>    Alternative is to patch the port. This could be done in
>>
>>    x11-servers/xorg-server/dragonfly/patch-config_udev.c
>>
>>    by adding sth like:
>>
>>          if (strcmp(feature, "evdev") == 0)
>>                  return (1);
>>          if (strcmp(feature, "evdev_support") == 0)
>>                  return (1);
>>
>>    to the feature_present(const char*) function.
>>
>>    But I think having kern.features sysctl is the better good way.
>>
>> * Tested with a Synaptics Touchpad using both moused/sysmouse and
>>    libinput under X11. Both work reliably.
>>
>> * Enables by default hw.psm.{synaptics,trackpoint,elantech}_support.
>>
>> * Set hw.psm.mux_disabled=1 if your keyboard no longer works due
>>    to the AUX MUX code (I haven't synced the quirks code yet).
>>
>> * atkbd - periodic polling is disabled. Can be turned on by setting
>>    loader tunable hw.atkbd.hz to 1 or 10 (as it was before).
>>
>> ## How to use this with Xorg
>>
>> sysctl kern.evdev.rcpt_mask=6
>>
>> Then, either add moused_enable=YES to /etc/rc.conf. Then you can
>> use this with the default xorg.conf.
>>
>> To use this with libinput, which I do, I had to add the following to
>> /etc/X11/xorg.conf:
>>
>> ```
>> Section "InputClass"
>>          Identifier "libinput pointer catchall"
>>          MatchIsPointer "on"
>>              MatchIsTouchpad "on"
>>          MatchDevicePath "/dev/input/event*"
>>          Driver "libinput"
>> EndSection
>> ```
>>
>> and in $HOME/.xinitrc:
>>
>> ```
>> xinput set-prop 'SynPS/2 Synaptics TouchPad' 'libinput Tapping Enabled' 1
>> ```
>>
>> to enable tapping. Not needed if sysmouse is used (requires running
>> moused). Scrolling feels better with libinput, but that is likely just
>> a better default setting.
>>
>> ## Open issues
>>
>> * I haven't ported the following patch, which describes a LOR (lock order
>>    reversal) by using  evdev_register_mtx(). Maybe someone understands this
>>    patch or how to fix the LOR... an easy fix would be to use
>>    evdev_register() and using the internal evdev lock.
>>
>>    https://github.com/freebsd/freebsd-src/commit/d276eae674d22214d6a58d1f4871053ceb0cb9f5
>>
>> * The psmintr still runs using the mplock. Is that required or is it safe
>>    to add INTR_MPSAFE to BUS_SETUP_INTR?
>>
>> * Before this patch, Xorg would recognize my mouse without moused
>>    running with the default configuration. This no longer works.
>>
>> Regards,
>>
>>    Michael


More information about the Users mailing list