- User Since
- Jun 3 2017, 8:47 AM (128 w, 2 d)
Mon, Nov 4
Sun, Nov 3
Sun, Oct 27
- Clock registers values are calculated based on I2C protocol timing constraints and IC parameters taken from LPSS driver. Latter are still kind of magic numbers, but they are physical parameters at least.
- Interrupt handler is filter based now.
Oct 14 2019
Oct 7 2019
This driver still has some advantages over mine. It supports 12.0-release, sysmouse(8) protocol and it does not require ig4 patching. So, I would prefer it for non-HID trackpads like some Synaptics models. Al least for now.
Sep 29 2019
Sep 15 2019
Sep 12 2019
Sep 9 2019
Aug 23 2019
iichid device is a child of acpi bus also, so it can be rephrased as "how to get the acpi stuff to automatically add acpi device with given CID"
(3) How to cope with resume and resets not being quite right for the ig4.
It is not clear which reset is mentioned:
- IG4 controller reset (set designware specific parameters like timing counters and so on)
- iicbus reset - FIFO flushing, setting of symbol speed and slave address
- I2C hid device reset - performed with special I2C command
If it is mentioned in context of @johalun suspend/resume patch, then most probably it misses iicbus reset as it is performed by ig4 driver in a lazy way at a start of next xfer. sc->slave_valid bool variable should be reset to trigger it and I do not see that in @johalun resume method.
Would we make better progress with we split those three issues up into their own reviews?
Aug 18 2019
Aug 14 2019
Finally, I made separate small kernel module ng_ubt_intel which shares object file with ng_ubt.
It inherits device methods from ng_ubt while overriding it's probe() method.
That allows move vendor-specific code out of ng_ubt and avoid code duplication the same time.
Firmware is still downloaded with libusb as I don't see any benefits from moving one-shot driver to kernelspace.
Aug 12 2019
I wrote iicbus(4) extension which performs ACPI-based enumeration of I2C devices connected to a controller. It is not limited to HID devices and fires at iicbus attach stage.
Jul 30 2019
Jul 29 2019
Jul 28 2019
Jul 27 2019
Jul 25 2019
Jul 22 2019
I enabled debugging output in imt.c so please:
Jul 21 2019
I fixed one bug, so try one more time
it generates nothing with libinput debug-events, and no events in xev.
libinput debug-events is not the right tool to debug evdev. evemu-record from devel/evemu port is better
That is expected as it ignored any touchpads
Jul 19 2019
just unpack it at your $HOME. Than
make && sudo kldload ./iichid.ko
leaving all other modules built from the source of this thread?
drivers from this review should be at least unloaded from kernel. There is no need to revert D16698 patch. Just don't try to kldload both modules in between reboots.
Should I remove evdev support from the kernel?
No need. It links with evdev unconditionally
Can you please share your xorg configuration?
I do not have any specific xorg.conf options. Any evdev-awared autoconfiguration backend should work out of box. See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196678 for example.
Jul 18 2019
OS driver or userland applications just do not have enough information as finger coords or count to support doublefinger scroll or multifinger taps.
I wrote a simple util to dump report descriptor from I2C HID device.
It accepts 3 input parameters: iic device path, i2c bus address and i2c HID register and prints report descriptor of given I2C device on stdout. This report descriptor can be further analyzed with any tool (e.g. web-based http://eleccelerator.com/usbdescreqparser/) to examine HID device capabilities.
Jul 8 2019
I don't object to acpi_iichid module existence. It just adds an extra requirements for module load order which I was not able to solve quickly.
I think it would be best to try and base the ims driver on top of your code. Are you interested in trying to integrate them?
Yes, I am going to submit this code to the project when it will be ready, so it is better to have it insync with ims
I wrote a driver for I2C MT touchscreens https://github.com/wulf7/iichid which is heavily based on the code in this review.
It does not require dedicated ACPI module at all and has some I2C/HID layers separation which is missed in current review.
So I think it may have sense to join efforts and codebases
Jun 29 2019
Jun 8 2019
Jun 5 2019
Synaptics and Elantech probe() does not depend on loader tuneables at all. Magic knock and capability queries are always performed regardless of kernel boot parameters so it cannot be called "too intrusive".
But IBM trackpoint probe() is different thing. It is performed in different ways depending on 'synaptics_support' variable value.
Browsing through the commit log shows me that there were several patches submitted by you to fix various trackpoint issues circa 2015 so it's worth trying to enable it by default again as support of this device is definitely changed since 2013.
Jun 4 2019
I doubt it can produce side effects. Albeit psm packet parser is replaced with Xorg`s one, PS/2 device recognition is still relies on in-kernel probe() function. So Xorg can not handle any PS/2 devices unknown to base system.
I think this is the solution to adopt: if we want touchpads to work out of the box, we can not ask users to start moused before xorg. Of course, they can add moused_enable="YES" to their rc.conf, but if we can make a small change to the xf86-input-mouse port it looks much easier: it affects only users of xorg and avoids to run a daemon on the system.
Better solution is to run moused from devd exactly like it is done for ums(4), but it does not work for me now.
After some digging it appeared that xf86-input-mouse unconditionally enables so called "native operation level" being attached to /dev/psm0 device node. It means that it effectively replaces our kernel driver with his own PS/2 packet parser.
So we have 2 choices:
- Forbid enabling of "native operation level" in xf86-input-mouse driver. It looks like commenting out one #define line
- Force all touchpad users to run moused to grab /dev/psm0 device and reroute its packets via /dev/sysmouse before Xorg is started.
Jun 3 2019
Count this "accept" as "commit approval"
Given the fact that horizontal scrolling with sysmouse protocol is not supported by userland software out of boх, I joined both hor & ver sysctls into common "natural_scroll" one to not confuse users.
Jun 2 2019
Jun 1 2019
One more question:
May 29 2019
May 28 2019
Could you upload the diff as fullcontext diff next time. See https://wiki.freebsd.org/Phabricator
git diff -U999999 other-branch > change.diff git show -U999999 <commit-hash> > change.diff svn diff --diff-cmd=diff -x -U999999 > change.diff`
It is not necessary to reupload current diff