Evaluation of hardwaresupport for the Framework 16 notebook

This is not a high priority for me, because USB mice work, but I noticed that the touchpad doesn’t work.

After loading the “touchpad” component, this batch of log entries is repeated every few seconds:

750.3 [runtime] child "touchpad"e[0m
750.3 [runtime]   RAM quota:  7944Ke[0m
750.3 [runtime]   cap quota:  86e[0m
750.3 [runtime]   ELF binary: pc_i2c_hide[0m
750.3 [runtime]   priority:   2e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 25 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 28 'runtime -> touchpad' device=INT34C5 io_mem=[00000000fd6e0000,00000000fd6e1000)e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 28 'runtime -> touchpad' device=INT34C5 io_mem=[00000000fd6d0000,00000000fd6d1000)e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 28 'runtime -> touchpad' device=INT34C5 io_mem=[00000000fd6a0000,00000000fd6a1000)e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 28 'runtime -> touchpad' device=INT34C5 io_mem=[00000000fd690000,00000000fd691000)e[0m
750.3 [runtime -> touchpad] using gpio_pin=266 bus_addr=44 hid_addr=32e[0m
750.3 [runtime -> touchpad] SLUB: HWalign=64, Order=0-1, MinObjects=0, CPUs=1, Nodes=1e[0m
750.3 [runtime -> touchpad] NR_IRQS: 4352, nr_irqs: 4352, preallocated irqs: 256e[0m
750.3 [runtime -> touchpad] clocksource: dde_counter: mask: 0xffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 nse[0m
750.3 [runtime -> touchpad] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 nse[0m
750.3 [runtime -> touchpad] pinctrl core: initialized pinctrl subsysteme[0m
750.3 [runtime -> touchpad] new Acpi::Device name=INT34C5 handle=0x1e[0m
750.3 [runtime -> touchpad] new Acpi::Device name=I2C3 handle=0x2e[0m
750.3 [runtime -> touchpad] new Acpi::Device name=EPTP handle=0x3e[0m
750.3 [runtime -> touchpad] clocksource: Switched to clocksource dde_countere[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 336 'runtime -> touchpad' device=INT34C5 [00000000fd690000,00000000fd691000) bar.number=255e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 338 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 341 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 336 'runtime -> touchpad' device=INT34C5 [00000000fd6a0000,00000000fd6a1000) bar.number=255e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 338 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 341 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 336 'runtime -> touchpad' device=INT34C5 [00000000fd6d0000,00000000fd6d1000) bar.number=255e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component() exception : 397 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 25 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 28 'runtime -> touchpad' device=INT34C5 io_mem=[00000000fd6a0000,00000000fd6a1000)e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 28 'runtime -> touchpad' device=INT34C5 io_mem=[00000000fd690000,00000000fd691000)e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 336 'runtime -> touchpad' device=INT34C5 [00000000fd690000,00000000fd691000) bar.number=255e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 338 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 341 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 336 'runtime -> touchpad' device=INT34C5 [00000000fd6a0000,00000000fd6a1000) bar.number=255e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 338 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 341 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 336 'runtime -> touchpad' device=INT34C5 [00000000fd6d0000,00000000fd6d1000) bar.number=255e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 338 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 341 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 336 'runtime -> touchpad' device=INT34C5 [00000000fd6e0000,00000000fd6e1000) bar.number=255e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component() exception : 397 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 25 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 28 'runtime -> touchpad' device=INT34C5 io_mem=[00000000fd6d0000,00000000fd6d1000)e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 28 'runtime -> touchpad' device=INT34C5 io_mem=[00000000fd6a0000,00000000fd6a1000)e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component: release resources : 28 'runtime -> touchpad' device=INT34C5 io_mem=[00000000fd690000,00000000fd691000)e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 336 'runtime -> touchpad' device=INT34C5 [00000000fd690000,00000000fd691000) bar.number=255e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 338 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 341 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 336 'runtime -> touchpad' device=INT34C5 [00000000fd6a0000,00000000fd6a1000) bar.number=255e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 338 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 341 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 336 'runtime -> touchpad' device=INT34C5 [00000000fd6d0000,00000000fd6d1000) bar.number=255e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 338 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 341 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 336 'runtime -> touchpad' device=INT34C5 [00000000fd6e0000,00000000fd6e1000) bar.number=255e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 338 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component(): create io_mem : 341 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component() done : 395 'runtime -> touchpad' device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component::io_mem() : 127 'runtime -> touchpad' cap=cap<35079> idx=3 io_mems=1 device=INT34C5e[0m
750.3 [drivers -> platform] e[31mError: 0x1c8210 Device_component::io_mem() : 134 'runtime -> touchpad' cap=cap<35079> idx=3 io_mems=4 device=INT34C5e[0m
750.3 [runtime -> touchpad] sched_clock: Marking stable (0, 6509000)->(8448000, -1939000)e[0m

I don’t know whether it is expected to work or not, or whether the “touchpad” component is appropriate for this peripheral. Unless I’m wildly mistaken, the touchpad is connected via USB (like all the peripherals on this laptop).

It is likely not connected via USB, although a lot of the periperals of the Framework are. The Framework I’m using, and the generation before that we’re using as demonstrator at Genode Labs, both have a touchpad integrated that are connected via I2C and some GPIO like pin setup, like other modern x86-laptops we support. For those, we use the touchpad driver you’ve tried too.

Nonetheless, I’m not surprised that the driver does not work for you out-of-the-box. The touchpad driver today is not prepared well enough to automatically just fit. It depends on some pin-controller and pin-configuration knowledge that are nowadays either hardcoded (I/O resources of pin-controller are part of information delegated to platform driver via pci_decode) for few devices, and partly defined via the driver’s configuration (look at the touchpad launcher). Those missing information are part of ACPI discovery that we do not have covered completely at boot time yet. It is possible to gain this information, e.g. by investigating a running Linux system, but it is not trivial, and honestly I cannot provide a howto - maybe someone else can jump in?!

Anyway, it was planned already for last year - but the necessity increases - so we are concretely plan to improve ACPI discovery at boot time soon, and then to automatically determine what is needed, to ease the usage of the touchpad driver for everyone.

1 Like

You are correct. Even though all the other modules are connected by USB, the touchpad has a special I2C connection ( InputModules/README.md at main · FrameworkComputer/InputModules · GitHub ).

Thanks for the info!

I am happy to report that, after the recent updates, I was able to load YouTube videos in Falkon, with audio. Everything ran nice and smoothly, even in full-screen mode. Very exciting!

Thanks again for all the effort to get this working!