14. Mainline Linux port readiness — per-subsystem status¶
Scope note: everything else in this documentation set is reverse engineering — describing what the vendor firmware and hardware actually do, recovered from the dump (and, for a few items, live EDL/adb reads). That work is extensive: every partition has been opened and the boot chain walked stage by stage, though the userspace/hardware inventory, like any such survey, has residual gaps (Open questions and limits of analysis).
A mainline Linux port is a different, much larger piece of forward engineering that this documentation enables but does not replace. This page records, for each hardware block this project identified, what (if anything) already exists upstream versus what does not, checked directly against the mainline source at up to four successively deeper levels of rigor (see Method). It does not rank blocks by priority or declare any of them a target or a non-target — that is a decision for whoever undertakes the port.
14.1. Method¶
Four checks at increasing depth:
Path/filename presence via
raw.githubusercontent.comand the GitHub contents API (2026-09-19). Cheap, but path-only — misses a real driver match whose vendor name isn’t in the filename.Full-content grep over a local
git clone --depth 1 https://github.com/torvalds/linux /tmp/linux(same day), catching matches pass 1’s path-only check misses (a realwacom_i2c.c, and Parade’s driver living under the historical “cyttsp” filename). Confirms a driver family exists; does not confirm binding.Exact ``compatible`` string diff between this device’s real, extracted board DTB (
artifacts/boot_a/board.dts,artifacts/dtbo_a/overlay_0.dts) and theof_device_id/i2c_device_idtables in the matched mainline driver files (same day). This is the pass that actually answers “would this driver bind to this hardware’s DT node.”Direct disassembly of this vendor’s own compiled driver, for the touch block: the real, currently-running driver is already in this dump (
artifacts/kernel, built-in, no separate.ko), so it is disassembled the same waywacom_flashand the FPGA/EPD internals were elsewhere in this project, rather than sourced from an external tree. See the touch entry below andartifacts/re_static/item_touch_pt_core_recheck.txt.
14.2. Per-subsystem status¶
Block |
Status |
Detail |
|---|---|---|
SoC core (real chip: SM6350; vendor DTB name: |
Upstream driver, new DT needed |
Real compatible strings in this device’s DTB: |
Wi-Fi (WCN3990) |
Upstream driver, one compatible-string difference |
Device DTB: |
Bluetooth (WCN3990) |
Upstream driver, binding style differs |
Device DTB: |
Charging / battery |
No mainline driver found for this exact hardware |
Device DTB compatibles, found exactly:
|
Pen digitizer (Wacom W9021 EMR, I2C) |
Confirmed — this project’s own disassembly matches mainline source |
|
Capacitive touch (Parade) |
Resolved statically — no live read needed |
Device DTB:
|
E-ink display pipeline |
No mainline driver |
No mainline driver drives a Lattice ECP5 FPGA TCON + software EPD
controller of any kind; this is entirely an Onyx-custom stack (the
generic e-paper fbdev drivers that do exist upstream —
|
Speaker / audio codec chain |
Partially upstream |
Confirmed upstream: |
14.3. Live confirmation attempted¶
One adb command was tried against the real device (2026-09-19):
adb shell cat /proc/bus/input/devices→Permission denied. The touch question was independently resolved statically (kernel config + thePT_PIP2_...firmware filename, see above), without needing this read.
userdata (gigabytes of personal account/app/photo data) is not included
in this dump and was not needed: the touch-chip question that would have
required it was fully answered from files already in vendor_a instead.
This documentation’s methodology treats static artifacts already in the
dump as sufficient before any read that would touch personal data.
14.4. What this page still doesn’t cover¶
Fingerprint sensors (fortsense/chipsailing/microarray, proprietary
match-in-sensor SPI modules, Misc sensors (fingerprint, hall, keyboard cover)) and small
Onyx-specific misc devices (hall-sensor cover switch, keyboard-ultra2): no
mainline match found for fingerprint; the misc devices have no existing
driver either. The IMU (LSM6DST) has no direct compatible string in this
device’s board DTB at all — consistent with sensors being ADSP/SEE-mediated
rather than a direct AP-kernel I2C device (ADSP and CDSP firmware),
meaning st_lsm6dsx (a direct-attach AP-side I2C driver) may not be the
right architecture to target; this is unresolved. Also unchecked: USB
Type-C/PD stack maturity for this exact PMIC combo, and whether the
modem/DSP subsystem (present but dormant, ADSP and CDSP firmware) needs
porting for a tablet-only use case.
- Source:
pass 1 — file/directory presence via
raw.githubusercontent.com/torvalds/linuxand the GitHub contents API, 2026-09-19. Pass 2 — full-content grep overgit clone --depth 1 https://github.com/torvalds/linux /tmp/linux, same day. Pass 3 —compatible-string diff betweenartifacts/boot_a/board.dts/artifacts/dtbo_a/overlay_0.dtsand the matched drivers’of_device_id/i2c_device_idtables in the same clone, same day.- Cross-refs:
Open questions and limits of analysis, E-ink driver internals (register-level, from the kernel), Wacom EMR pen digitizer driver, Capacitive touch (Parade pt_core), Misc sensors (fingerprint, hall, keyboard cover), Partition map and checksums, Vendor drivers and HALs, ADSP and CDSP firmware.