Hardware
Every subsystem, and exactly where it stands.
Display / panel
LIVEMDP5 DSI controller lit via mainline KMS; 1080×1920 IPS portrait.
Touchscreen
LIVESynaptics RMI4 touch surface on the mainline driver, feeding SXMO gestures.
WiFi
LIVEbrcmfmac BCM4339 SDIO; device NVRAM sourced from the AOSP device tree.
Bluetooth
LIVEBCM4339 UART via btbcm + BCM4335C0.hcd firmware.
GPU — display
LIVEAdreno 330 (a3xx) rendering through mainline freedreno — no closed Adreno blob, unlike stock KitKat.
GPU — DVFS
FREQ-ONLYFrequency-only OPP table (27/200/320 MHz) works; voltage scaling needs opp-microvolt entries + vdd/vddcx regulator phandles to the pm8841 RPM.
CPU freq scaling
IN FLIGHTKrait clock controller wired; OPP patch (operating-points-v2-krait-cpu + QFPROM speedbin) written and queued for CI verification. See sprint.
ADSP
LIVEremoteproc1 boots the audio DSP firmware image.
Sensors
LIVEmpu6515 IMU, ak8975 compass, bmp280 baro, apds9930 prox/ALS — all four read via iio.
Battery + charger
PARTIALCapacity reads correctly and batteryd's protective 80/75% charge band is live in the image; the max17040 driver just doesn't yet honor DT power-supplies for charge state.
Notification LED
LIVErgb:status LED wired with a charging trigger.
Vibration
LIVEpwm_vibra with FF_RUMBLE — the felt-parity motor.
Backlight
LIVElcd-backlight sysfs, full 0–255 range.
USB networking
FLAKYGadget net works but drops on screen-off — ci_hdrc runtime-autosuspend disabled in modem-start, end-to-end fix still settling.
Touch gestures (SXMO)
LIVElisgd hooks configured — swipe nav live on the compositor.
Double-tap-to-wake
WIRED · UNVERIFIEDShipped into the image — dt2w, touch-boost and feltd now build for this device and launch from the SXMO session. Screen-off here is a DPMS blank, and the RMI4 touch controller runs in nosleep mode so it stays powered and keeps reporting taps — no suspend-wake gesture bit needed. Not yet confirmed on glass.
Audio
NO UPSTREAM DRIVERWCD9320 codec has no mainline driver — the hardest single blocker on this device; full SLIMBUS + MFD + ASoC dep chain is missing.
Modem
CRASH-LOOPMDM9x55 mpss crash-loops every ~40s; suspected missing BIMC ICC interconnect path (MASTER_MSS_PROC → SLAVE_EBI1) that upstream doesn't wire yet.
Camera
PORTINGNo mainline CAMSS driver for MSM8974 — OV8825 rear and 1.3MP front sensors sit unprobed.
HW video decode
QUEUEDNo Venus/VIDC support on MSM8974 in mainline.
Suspend/resume
BLOCKEDs2idle blocked by the USB autosuspend interaction plus modem wake events — needs both fixed first.
NFC
QUEUEDPN544 present on the board; needs DT wire-up, not started.
Beyond Android
Kernel-level capabilities the frozen 3.4 firmware never allowed — the parity ceiling raised, not just met.
A living kernel
An unmodified upstream 6.16 kernel, targeting 7.x — where Android froze forever at Linux 3.4.
Battery intelligence
batteryd ships in the image with a protective 80/75% charge band and continuous State-of-Health telemetry.
Gesture nav + haptics
lisgd swipe gestures drive SXMO today, with pwm_vibra hardware ready for haptic commit; paired audio cues are fleet-wide design work still pending.
Double-tap-to-wake
Now wired into the image — the RMI4 touch controller runs in nosleep mode through a DPMS screen blank, so a double-tap wakes the panel. On-glass confirmation is the last step.
Open GPU driver
Adreno 330 rendering through mainline freedreno + Mesa — clean-room, no closed vendor blob.
Road to RO-OS
Where the phase ladder puts this device today, and what the next rung means.
Target track:Track 3 — RO Lite — freedreno-only GL, ~2 GB RAM, stripped RO or sway/SXMO with core physics and no blur; touch-boost carries the "snappy" feel since the GPU ceiling is fixed. No Waydroid on this tier.
P6 for this device means the bespoke RO read-only shell itself running on hammerhead: double-tap-wake through the mainline Synaptics RMI4 path, DPMS blank/wake tied to the power key, auto + locked rotation, and lisgd-style swipe gestures promoted from SXMO into RO proper. None of P6 is code-complete yet fleet-wide — N5 is well positioned to be an early Track-3 candidate once RO itself exists.
% model: P0≈5% · P1≈15% · P2≈30% · P3≈45% · P4≈60% · P5≈75% · P6≈90% · P7=100% — hammerhead sits at P5, three-quarters of the way up the ladder, with the felt-parity floor (haptics ✓, gestures ✓, audio cues pending) already partly built underneath it.
Live sprint
What's on the bench right now.
CPU frequency scaling — the last register
krait-cc landed and CPU clocks are hooked up for cpufreq — the prerequisite the Krait 400 cores needed before any OPP table could attach.
Patch 0003 adds operating-points-v2-krait-cpu + the QFPROM speedbin NVMEM cell the Krait cpufreq driver requires — written and sitting in the pmaports overlay.
Build the overlay and check scaling_available_frequencies populates and the governor actually steps — the OPP table has never been confirmed live on real hardware yet.
Once cpufreq is real, the evdev-touch → scaling_min_freq spike daemon can land — the single biggest "snappy" win on this oldest-generation Krait silicon.