Lenovo Yoga 7 2-in-1 14AGP11 — Touchscreen / Stylus completely non-functional (i2c_designware lost arbitration)

Hardware: Lenovo Yoga 7 2-in-1 14AGP11 (83TD), AMD Ryzen AI 7 445 (Krackan/Gorgon Point)
OS: Fedora 44
Kernel: 7.0.4-200.fc44.x86_64
Touchscreen controller: Wacom WACF2200 + ELAN06FA (both on AMDI0010:02)


On my device, the Wacom WACF2200 touchscreen/pen controller and ELAN06FA are completely dead on Linux. The I2C bus they share (AMDI0010:02) fails with repeated lost arbitration errors at boot, before any driver can probe either device. The touchpad (Goodix, on AMDI0010:03) is working fine, however.

The touchscreen works correctly in UEFI and Windows — so the hardware is functional.

[    2.286838] i2c_designware AMDI0010:02: i2c_dw_handle_tx_abort: lost arbitration
[    2.286887] i2c_designware AMDI0010:02: i2c_dw_handle_tx_abort: lost arbitration
[    2.286923] i2c_designware AMDI0010:02: i2c_dw_handle_tx_abort: lost arbitration
[    2.286964] i2c_designware AMDI0010:02: i2c_dw_handle_tx_abort: lost arbitration

Manual bind attempt:

echo -n "i2c-WACF2200:00" > /sys/bus/i2c/drivers/i2c_hid_acpi/bind
# Result: No such device or address

I have tried the i2c_designware.slow_mode=1 argument to no effect.


What I’ve investigated so far

This is identical to Bug (221454) on the upstream kernel bugzilla (Lenovo Yoga 7a, FocalTech controller, same AMDI0010:02 failure).

I have also filed a kernel Bugzilla report (221494) with full diagnostics (dmesg, acpidump, dmidecode, udevadm) and am actively investigating.

I have created a public repo with diagnostic notes: GitHub - hardikprakash/yoga7-14agp11-linux · GitHub


I am interested if anyone has found a workaround.

I had exactly the same issue, on the same laptop with one difference, I am using Debian 13.

I will provide you my workaround in case it might help you or anybody else.

My kernel: Linux debian 7.1.3+deb13-amd64

The problem is timing, not a missing driver. i2c_designware probes AMDI0010:02 too early in boot, before the EC and the ACPI power domains have settled.

Reloading the module isn’t possible on Debian — it’s (builtin), so modprobe -r fails. But i2c_designware is a platform driver, so you can unbind and rebind the single device through sysfs instead. This works whether the driver is =y or =m, and it leaves the touchpad bus untouched:

echo -n "AMDI0010:02" | sudo tee /sys/bus/platform/drivers/i2c_designware/unbind
sleep 2
echo -n "AMDI0010:02" | sudo tee /sys/bus/platform/drivers/i2c_designware/bind

The digitizer came up immediately. To do it automatically at every boot I created a service /etc/systemd/system/i2c-reset-touchscreen.service:

[Unit]
Description=Rebind i2c_designware AMDI0010:02 for Wacom digitizer
After=multi-user.target

[Service]
Type=oneshot
ExecStartPre=/usr/bin/sleep 15
ExecStart=/bin/sh -c 'echo -n AMDI0010:02 > /sys/bus/platform/drivers/i2c_designware/unbind; sleep 2; echo -n AMDI0010:02 > /sys/bus/platform/drivers/i2c_designware/bind'

[Install]
WantedBy=multi-user.target

and I enabled it with:

sudo systemctl daemon-reload
sudo systemctl enable i2c-reset-touchscreen.service

The delay is the whole point — rebinding early just reproduces the original failure. 15s is conservative but reliable here.

[   23.669] input: WACF2200:00 056A:5442 Touchscreen
[   23.672] input: WACF2200:00 056A:5442 Stylus
[   24.000] wacom 0018:056A:5442.0003: hidraw2
[   24.000] input: Wacom HID 5442 Pen
[   24.001] input: Wacom HID 5442 Finger

After reboot the touchscreen was working successfully.