Elantech Touchpad Woes - Support for Elantech touchpads over i2c/SMBus still possibly missing

From: Albert <dsifriend_at_gmail.com>
Date: Fri, 1 Jun 2018 20:14:06 -0400
Hi all,


I'd like to start out by saying that I'm a newcomer to FreeBSD, but I've 
been running Linux for years now and I'm still having a few issues 
transitioning. Despite that. I've been having a blast setting things up 
for myself, and I'm hopeful I can get this resolved soon enough.

I'm trying to get FreeBSD running on my laptop, an "Acer Chromebook 14" 
(EDGAR), and although I've managed to overcome most of the problems I've 
faced along the way (needing to upgrade to a UEFI, misnamed wireless 
modules, video drivers not working on RELEASE nor STABLE), I just can't 
seem to get the touchpad on this thing to work.

For reference, EDGAR is an Intel Celeron N3160 SoC. Pretty much the only 
thing in it that isn't Intel are the case, the keyboard, the webcam and 
the touchpad. On Linux, the touchpad appears in _/proc_ as

I: Bus=0018 Vendor=04f3 Product=0055 Version=0000
N: Name="Elan Touchpad"
P: Phys=
S: Sysfs=/devices/pci0000:00/808622C1:05/i2c-1/i2c-ELAN0000:00/input/input5
U: Uniq=
H: Handlers=mouse0 event4
B: PROP=5
B: EV=b
B: KEY=e520 10000 0 0 0 0
B: ABS=663800013000003

It seems _dmesg_ confirms this:

[   18.416171] input: Elan Touchpad as /devices/pci0000:00/808622C1:05/i2c-1/i2c-ELAN0000:00/input/input5

and it can be seen from _lsmod_ as *elan_i2c*. The source for the 
corresponding driver can be found here: Google ChromeOS Git. 
<https://chromium.googlesource.com/chromiumos/third_party/kernel-next/+/chromeos-elan-3.14/drivers/input/mouse/elan_i2c_core.c>

Now on FreeBSD, it's as though it didn't even exist. Without applying 
any of the changes I've tried to get it working, here's the (verbose) 
output to _dmesg_ on FreeBSD: (vdmesg-nochanges 
<https://gist.github.com/dsifriend/7d3635937f0d16ced7ef572cdb6ba02d#file-vdmesg-nochanges-txt>). 
With the knowledge I have so far, this is to be expected, as it seems 
FreeBSD requires the *ig4* module to work with *i2c* devices. Loading it 
at boot does seem to make the buses visible, but the touchpad still 
doesn't appear (or not properly, I don't know all these codes): 
(vdmesg-ig4 
<https://gist.github.com/dsifriend/7d3635937f0d16ced7ef572cdb6ba02d#file-vdmesg-ig4-txt>). 
The obvious solution is to enable support for elantech devices with 
_hw.psm.elantech_support_, but nada: (vdmesg-elantech 
<https://gist.github.com/dsifriend/7d3635937f0d16ced7ef572cdb6ba02d#file-vdmesg-elantech-txt>). 
The only difference is _sysctl_ shows that option is enabled. Aside from 
that, it seems I'm not the only one who's had this sort of issue before, 
so support has been worked on and is claimed to be working. Loading the 
recommended cyapa and chromebook_platform modules at boot does not fix 
this issue: (vdmesg-chromebook 
<https://gist.github.com/dsifriend/7d3635937f0d16ced7ef572cdb6ba02d#file-vdmesg-chromebook-txt>). 
The reason appears, at least to me, to be that the cyapa driver isn't a 
proper elan driver. These are /different/ devices.

I'm determined to get this working /somehow/, so any help would be 
appreciated. It feels like there's a solution here somewhere and I'm 
either too dumb to find it or it's just not there quite yet. If it's the 
latter, I'm willing to put some work into porting the right driver with 
a little guidance. (I have plenty of experience with C but none of this 
driver stuff.)


- Albert

PS. External mice are working perfectly, so it's nothing to do with the 
base install.
Received on Fri Jun 01 2018 - 22:14:11 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:16 UTC