SchOS/kernel
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nexoniarz e43f56c619 kernel: laptop touchpads over I2C-HID
A laptop's touchpad is on the chipset's I2C bus, found only through ACPI
(PNP0C50 / ACPI0C50), and SchOS had no I2C at all, so the touchpad of
every recent laptop did nothing.

kernel/acpi/i2c_hid.c drives the DesignWare I2C controller every x86
chipset uses (AMDI0010 on Ryzen) by polling, speaks HID over I2C to the
device the _DSM points at, and feeds the reports through the USB HID
parser. On AMD the interrupt pin's level is read every tick, so a report
is read exactly when one is waiting; elsewhere the input register is polled.

The touchpad is driven in mouse mode, which it starts in after a reset:
motion, clicks and taps become /dev/input/event1 like any mouse. The HID
parser now prefers a descriptor's relative pointer over an absolute one
for this, and takes descriptors from transports other than USB.

Untested on hardware: QEMU emulates no I2C touchpad.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4
2026-10-24 21:54:33 +02:00
..
acpi kernel: laptop touchpads over I2C-HID 2026-10-24 21:54:33 +02:00
arch/x86_64 kernel: syscalls get the whole kernel stack 2026-10-24 21:17:02 +02:00
core kernel: laptop touchpads over I2C-HID 2026-10-24 21:54:33 +02:00
dev X gets a VT: keyboard, terminal switching, and a way out 2026-10-24 21:45:50 +02:00
drivers kernel: laptop touchpads over I2C-HID 2026-10-24 21:54:33 +02:00
fs kernel: syscalls get the whole kernel stack 2026-10-24 21:17:02 +02:00
net kernel: HTTPS through wget, half-close, and /proc/<pid>/fd 2026-10-24 20:28:03 +02:00
proc kernel: HTTPS through wget, half-close, and /proc/<pid>/fd 2026-10-24 20:28:03 +02:00
scff SCFF: the live root ships compressed, with Xorg and Window Maker 2026-10-24 21:17:31 +02:00
sys X gets a VT: keyboard, terminal switching, and a way out 2026-10-24 21:45:50 +02:00
kernel.ld kernel: load at 16 MB, clear of what firmware keeps low 2026-10-24 00:13:53 +02:00