Repository navigation
Conversation
On a MacBook Air (M1, 2020), J313, the first verify after wake registers the Touch ID sensor twice. Attach on a 13.5 profile wakes and patches the sensor and does not calibrate, so that first verify power-cycles, calibrates, then power-cycles and registers again. Later verifies register once, because each one switches the sensor off. Remember whether this driver left the sensor powered. A completed registration is kept only when the sensor is still powered, the status is not silent, the patch acknowledgement is accepted and the state is not NEEDS_PATCH. A power cycle is what clears a stuck state 9, so that state still forces a reload even when the acknowledgement reads accepted. After calibration, register again only when that status no longer holds. A nonce-session profile never takes the second wake. The same boot polls for capture. The J313 platform tree names an interrupt on pin 104 with trigger flags 3. That value is IRQ_TYPE_EDGE_BOTH in Linux and level-low in the Apple GPIO block, and either one re-fires the capture loop. The driver asks for a rising edge, which is what J314s, J316s and J414 already describe, and iBoot left the pin as a plain input with a pull-down and no trigger. Name pinctrl_ap as the parent: spi2's parent is the AIC, so a bare interrupts property would be parsed as an AIC interrupt. Configure the line once the sensor is patched and idle. A board that does not describe it still falls back to SPI polling. Not booted with this change. Signed-off-by: Lucas Goossen <lucas.goossen@hey.com>
ludagoo
force-pushed
the
fix/j313-touchid-data-ready
branch
from
October 26, 2026 18:16
d2498ea to
07c98ef
Compare
Member
|
Tested on a J313 (M1 Air): builds and boots. The changed code can't be reached on a stock Omarchy install.
How this was tested
|
Member
|
Follow-up: tested Touch ID on J313 with this PR merged with #180 on
So on M1 this PR can't be tested until keybag creation gets past the guard. That's the blocker Scott described, and the log shows it's the kind-4 rewrite specifically. No xART write was logged, and the store summary (13 live records, max revision 21157) was the same before and after. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Describe the J313 Touch ID data-ready line as a rising edge on
pinctrl_appin 104, and stop the first post-wake verify from registering the sensor twice when that registration is still held.On a 13.5 profile, attach wakes and patches the sensor without calibrating. The first verify then power-cycled, calibrated, and registered again. The driver now keeps a registration it left powered when the patch is still acknowledged and the state is not NEEDS_PATCH, and reloads after calibration only when that status is gone. Capture uses the interrupt once the sensor is patched and idle, instead of SPI polling.
Machine: MacBook Air (M1, 2020), J313.
Session build, Monday 26 Oct 2026 05:02 PM -03: linux-aurora 7.2.11-6-2-ARCH (package 7.2.11.aurora6-2), branch local/j313-test at 7638df0. makepkg exited 0. rustc 1.85.0, LLVM/clang 18.1.8. This machine is running that kernel. The stacked commit compiled in was 81183b2. This pull request's head is 07c98ef, which is not the commit that was built.
sep.o was compiled at 16:04 in that build, and
lsmodshowsapple_seploaded. The earlier note that the patched Rust was never compiled is stale.Touch ID after a real sleep still needs
fprintd-verify. That has not been run.