PAF becomes saf/device (history kept), STATE.md dissolves
into saf/state.md with the dated era archived, the substrate
SAF moves up from souveraine, and every agreement points at
saf/INDEX.md and nowhere else. one map, nothing to remember
fprintd, gazed, sailfish-fpd and biometryd are the same interface four
times. Take that shape and face and finger become one surface with two
backends. Mapped every call onto the recovered TA commands; the gaps
are persistence and the auth token, both already named.
Prior art checked: sailfish-fpd-community needs hybris, wrobelda's
libfprint branch is the only match-on-chip-over-QSEE example, and
nobody has done FPC over QSEE natively. One listener receiver per
device means the supplicant is a separate owner from the fp daemon.
KEY_WAKEUP lands on event4 at the same timestamp as the hardware edge, so the
existing XF86WakeUp bind can already see it. arm generates its own edge, which
means re-arm-on-interrupt feeds itself - that was the 1444 events, not the
sensor. wakeup_enable takes enable/disable, not 1.
fpctzappfingerprint loads from cold boot and answers; init/idle/arm all 0x0.
gpio121 goes idle-low after the sequence - the latch that killed piece 1 is
cleared, so a rising edge is possible for the first time. init accounts for 68
of the edges; armed and untouched is a flat 0 over 15s, so the 1444-event run
was the re-arm loop. Open: whether a finger raises an edge.
Reconcile the file with the code it now contradicts (the sysfs is shipped on
purpose) and register arbitrary signed-TA loading as a new Tier-0 primitive.
The staged vendor driver is the fpc_fingerprint variant, which blueline does
not build (b1c1_defconfig sets CONFIG_FPR_FPC=y, the other copy). The shipping
one has an empty vreg_conf[] and manages no regulators at all.
The TZ pointer was wrong: secure_load_tz_frontier.md is superseded and covers
hyp-assign/XPU, not TA loading. tz_listener_archaeology.md plus the four
qseecom commits are the record, and they already show TZ answering us -
version query succeeds, listener 0x5000 registers live. What is missing is
app loading, not the channel.
Pins confirmed against this unit's DTBO; the FPC1075 caution is resolved.
13 (grip) and 35 (sessiond deadlock) are done; both moved to archive/ with
closing notes. Index regrouped by state with a one-line what's-left per task
instead of a flat table of history; the archive prose moved to archive/README.
Corrected stale statuses: 29 shipped (read-only pending polkit), 31's component
and squeeze are live and only its contents are open, 42's layer 1 is built, 34
no longer blocks grip, 43 was numbered 42.
New: 44 fingerprint (DT + shim sat unused in staging/ since 07-07), 45 haptics
(settle which chip drives the motor before porting cs40l2x), 46 camera (drivers
and CAMSS are already in-tree; blueline's DT has no camera node).