Touchscreen driver load problem in Oreo-8.1-rc2

220 views
Skip to first unread message

Michael Goffioul

unread,
Dec 20, 2018, 3:41:01 PM12/20/18
to andro...@googlegroups.com
My Baytrail platform has a eGalax touchscreen, which is fully supported by Linux, and has been for a while, through the HID drivers. When trying the oreo-8.1-rc2 iso (as well as Mauro's test build) in live/normal mode, the touchsceen does not work. While in live/debug mode, it does.

When I say that is doesn't work, it's not entirely true, the driver is loaded (hid_multitouch), the event/input entries exist in /sys/class/input/, but the block device is missing in /dev/input/, so EventHub doesn't see it. If I 'rmmod hid_multitouch' and then 'modprobe hid_multitouch', then the touschscreen starts to work (/dev/input/ entry is recreated, and EventHub sees it).

I believe this is due to the fact that 2 drivers are loaded for the same hardware, which is what I see in dmesg output:
- hid-generic: as it's built into the kernel, it is loaded immediately at boot, before any ueventd or modprobe
- hid-multitouch: kernel module, loaded afterwards through ueventd or modprobe (auto_detect)

I don't know exactly why it's fine in debug mode, but one thing that comes to mind is the time gap between the loading of the 2 drivers, which is much larger when booting in debug mode (maybe a long shot, though).

The problem doesn't exist in Nougat builds, because I don't think hid-generic was loaded for my hardware in kernel 4.9.

Any suggestion about to address this problem?

Thanks,
Michael.

Chih-Wei Huang

unread,
Dec 20, 2018, 9:38:22 PM12/20/18
to Android-x86
Michael Goffioul <michael....@gmail.com> 於 2018年12月21日 週五 上午4:40寫道:
I checked each branch of our kernel.
All have CONFIG_HID_GENERIC=y
so I don't understand why 4.9 is fine?

> Any suggestion about to address this problem?

Then have you tried to set CONFIG_HID_GENERIC=m?

Alternately, you may try to add the kernel cmdline
EXTMOD=hid-multitouch

It will load hid-multitouch earlier than any other
auto-probed drivers.
(but still later than hid-generic since it's built-in)


--
Chih-Wei
Android-x86 project
http://www.android-x86.org

Michael Goffioul

unread,
Dec 20, 2018, 10:10:35 PM12/20/18
to andro...@googlegroups.com
On Thu, Dec 20, 2018 at 9:38 PM Chih-Wei Huang <cwh...@android-x86.org> wrote:
Michael Goffioul <michael....@gmail.com> 於 2018年12月21日 週五 上午4:40寫道:
>
> My Baytrail platform has a eGalax touchscreen, which is fully supported by Linux, and has been for a while, through the HID drivers. When trying the oreo-8.1-rc2 iso (as well as Mauro's test build) in live/normal mode, the touchsceen does not work. While in live/debug mode, it does.
>
> When I say that is doesn't work, it's not entirely true, the driver is loaded (hid_multitouch), the event/input entries exist in /sys/class/input/, but the block device is missing in /dev/input/, so EventHub doesn't see it. If I 'rmmod hid_multitouch' and then 'modprobe hid_multitouch', then the touschscreen starts to work (/dev/input/ entry is recreated, and EventHub sees it).
>
> I believe this is due to the fact that 2 drivers are loaded for the same hardware, which is what I see in dmesg output:
> - hid-generic: as it's built into the kernel, it is loaded immediately at boot, before any ueventd or modprobe
> - hid-multitouch: kernel module, loaded afterwards through ueventd or modprobe (auto_detect)
>
> I don't know exactly why it's fine in debug mode, but one thing that comes to mind is the time gap between the loading of the 2 drivers, which is much larger when booting in debug mode (maybe a long shot, though).
>
> The problem doesn't exist in Nougat builds, because I don't think hid-generic was loaded for my hardware in kernel 4.9.

I checked each branch of our kernel.
All have CONFIG_HID_GENERIC=y
so I don't understand why 4.9 is fine?

Because hid-generic is not loaded for that hardware with kernel 4.9. I think this may have been implemented with this change (which appeared in 4.16):

 
> Any suggestion about to address this problem?

Then have you tried to set CONFIG_HID_GENERIC=m?

Alternately, you may try to add the kernel cmdline
EXTMOD=hid-multitouch

It will load hid-multitouch earlier than any other
auto-probed drivers.
(but still later than hid-generic since it's built-in)

I'll give these a try, thanks.

Michael.
Reply all
Reply to author
Forward
0 new messages