Repository navigation
arm64/sep: describe J813 Touch ID and admit its T8142 profile - #1732
DjDeveloperr wants to merge 26 commits into
Conversation
J704 and J815 describe their boards on top of the T8142 inventory in t8142.dtsi, but J813 still defines its own root, CPUs, timer, AIC and UARTs, and its fragments define the pmgr and DART nodes that the inventory also has. A board that includes t8142.dtsi therefore cannot use the J813 fragments: the labels are defined twice. That blocks the J815, which shares most of them. Include t8142.dtsi in J813 and enable what it uses, as J815 does. Turn the fragments' pmgr, AOP, AVD, DCP, display, PCIe, PMP and MTP DART definitions into references that keep J813's values. Enable the two USB DARTs, which the inventory disables at the same paths. The flattened J813 tree is unchanged apart from explicit status = "okay", interrupt-parent now inherited from the root, and the inventory's extra USB DART labels: compared with dtc -I dts -O dts -s before and after, with phandle numbers removed. Not tested on J813 hardware. Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
J815 has J813's PMGR power domains, PMP, QSPI and FPWM. Include t8142-j813-peripherals.dtsi, which J813 now builds on t8142.dtsi, in place of the board's own PMGR and MTP DART enables. The PMP takes the J815 board-id from the ADT (0x26). Tested on J815 (MacBook Air 15-inch, M5) with the equivalent node set in a J815 tree that included the whole J813 board. Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
The J815 ADT describes both Type-C ports like J813's: ATC PHYs, DWC3 controllers, DARTs and the CD3218B controllers on the same buses. Include t8142-j813-usb.dtsi. Tested on J815 (MacBook Air 15-inch, M5) with the equivalent node set in a J815 tree that included the whole J813 board. A SuperSpeed Plus hub and the USB 2/3 devices behind it enumerate, and USB-C headphones play audio. Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
Include t8142-j813-display.dtsi and describe the J815 panel: 15.3-inch, 2880x1864 (2880x1800 below the notch), 326 x 211 mm. Tested on J815 (MacBook Air 15-inch, M5) with the equivalent node set in a J815 tree that included the whole J813 board. With the macOS 27.0 DCP firmware this needs the FW27 display support in Linux #1413; the console and a KWin session run on the panel. Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
The J815 GPU is J813's. Include t8142-j813-gpu.dtsi. Tested on J815 (MacBook Air 15-inch, M5) with the equivalent node set in a J815 tree that included the whole J813 board. With the macOS 27.0 firmware this needs Linux #1413; the GPU driver initializes and KWin renders through Mesa. Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
Include t8142-j813-avd.dtsi: J815 has J813's AVD, DART and power domain. Tested on J815 (MacBook Air 15-inch, M5) with the equivalent node set in a J815 tree that included the whole J813 board. With avd-fw-v5-t2 the decoder probes and decodes through v4l2-request/VA-API: H.264 High 1080p and HEVC Main 720p in mpv (vaapi-copy, one AVD interrupt per frame, no kernel errors). Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
Include t8142-j813-isp.dtsi. The J815 ADT gives the ISP sensor-type 0x72 (J813: 0x71). Tested on J815 (MacBook Air 15-inch, M5) with the equivalent node set in a J815 tree that included the whole J813 board. The ISP firmware boots and the camera streams. Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
Include t8142-j813-n1.dtsi for the N1 on apcie port 0. Describe the N1's three PCI functions and alias wifi0 and bluetooth0 to them, so the loader can fill in the factory MAC and BD addresses, as on T6050. Tested on J815 (MacBook Air 15-inch, M5) with the equivalent node set in a J815 tree that included the whole J813 board. Wi-Fi connects to WPA2 networks, and Bluetooth LE devices pair and reconnect. Both use the factory addresses. Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
Include t8142-j813-audio.dtsi for the AOP, the AP and NUB pin controllers, the ADMACs and the I2C buses with the headphone jack codec and speaker amplifiers. J815 has six speaker amplifiers where J813 has four, so keep J813's sound card and the AOP audio service disabled. The J815 speaker layout is a separate change. Tested on J815 (MacBook Air 15-inch, M5) with the equivalent node set in a J815 tree that included the whole J813 board, with audio enabled. The AOP boots and its services come up. This exact variant, with audio disabled, has been compile-tested only. Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
The J815's AOP "als" service is an ST VD6286, as on the M4 Pro, not T8140's CT817. Give the service device its compatible so aop_als binds and sends the per-device calibration. Tested on J815 (MacBook Air 15-inch, M5) with the equivalent node set in a J815 tree that included the whole J813 board. The sensor reports lux and colour temperature. Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
The discovered SMC temperatures carry no power rails and no SoC die zone. Add the total system, AC input and 3.8 V rail power, the AC and battery voltages and the AC current, and J704's T8142 die key list for the SoC die thermal zone. Tested on J815 (MacBook Air 15-inch, M5) with the equivalent node set in a J815 tree that included the whole J813 board. Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
From the J815 ADT (macOS 27.0): the SEP is a pre-booted iop-sep,ascwrap-v6 at 0x30a600000 with its ASC mailbox at +0x8000. Its t8110 DART uses the BIT(40) input aperture, as on T8132. The Touch ID sensor is on spi2 (0x3a5108000, 8 MHz, CS0, power domain SPI2 under SPI_P), with power on NUB GPIO 36 and data-ready on AP GPIO 200. Alias the SEP so the loader can reserve its firmware and copy the boot manifests onto the node, and expose the two sensor pins. The SEP and its DART stay disabled: the SEP driver enables them. Tested on J815 with the J815 SEP profile: the SEP attaches, the sensor binds on spi2 and comes up in about 40 ms, and fingerprints enrol and match (sudo with the finger). Assisted-by: Claude Opus 5.5 Signed-off-by: Nick <nekreshen@yandex.ru>
Match the existing DT and public driver interfaces: keep the specific fallback chains, T8142-only ALS, eight ISP power domains versus fourteen on T8140, and the two-mailbox/six-region T8142 GPU profile. Preserve the constraints on other SoCs. No DT resource values change. Validated with dtschema 2026.9 strict document/reference checks and targeted processed-schema positive and negative cases. Full DTB validation and the draft J813 hardware gate remain separate. Signed-off-by: Diljit Singh <hey@djdev.me>
Carry byte-exact schema files from reviewed #1423 at 18fa06f so the shared J813/J815 DT can be checked without inventing a second binding implementation. Original binding updates by Thomas Glanzmann, signed off in commits 9afc945 and bb9ad0e. This is binding metadata only; no driver or speaker-protection adoption or parent edge is added. The M5 merge lane retains ownership of #1423. Later identical binding changes coalesce in an ordinary merge. Signed-off-by: Diljit Singh <hey@djdev.me>
Identify the J815 native profile with a T8142-specific compatible while retaining the PCI1900 fallback. The generic driver continues to match the host/PCI ID and obtain firmware data from its root board table; no firmware/platform/protocol values are invented. Keep all three wire27 properties required for the older PCI-only T6050 profile and forbid mixing those properties into the native profile. Only the J815 endpoint compatible changes. Shared SoC/J813 DT inputs and runtime resources remain unchanged. The J815 board firmware-table prerequisite is #1530. Signed-off-by: Diljit Singh <hey@djdev.me>
Preserve the current shared T8142 CPU topology, OPP power data and trackpad actuator, along with the J813 firmware clock providers. Reconcile T8142 binding profiles with the current T6050 sensor services and preserve the T8140 ISP firmware memory and sensor power domains.
Match the existing J813/J815 fw-data crash-log region and its ordered seven-region tuple. Preserve the six-region maximum for other GPUs.
Keep main's complete ISP binding, preserving the T8140/Neo sensor-domain order and T8142 eight-domain case. All added and removed feature lines in the remaining 15 DT and binding files match the preceding parent. The complete bindings directory matches the validated #1534 integration: eight binding documents and 32 candidate/32 main GPU schema controls. No repeated schema test or new compiled-DTB/hardware result is claimed. J815 audio stays disabled here. Keep the underscore loader alias until compatible-loader qualification/adoption; no warning filtering. Preserve published ancestry and require fresh current-head Host/DT CI. The required J813 shared-DT boot and existing loader/rollout gates remain. No boot, audio playback, image build or protection-policy change. Assisted-by: LLM
Add the N1 control/Wi-Fi/Bluetooth PCI functions and wifi0/bluetooth0 aliases already used by J815, so the loader can populate the factory addresses on J813. Keep the change board-local and omit the untested SEP alias. Do not change Bluetooth experimental module options. Based on the patch and owner report by @gig3m in linux#1532 comment 6828183980. The supplied block is carried exactly; its PCI topology matches J815. Symbolic source checks preserve all307 original nodes and properties and add only the four PCI nodes/two aliases. This is not a new compiled-DTB or whole integrated hardware qualification. The owner reports five boots/daily use of the 97f1472 feature on a 2b05915 composition with this block/local display patch, firmware26.6.2. GPU and SEP remain untested; Bluetooth pairing required opt-in flags. The independent Aura165 alias qualification/adoption gate remains. Assisted-by: LLM
Retain the parent's PMGR node layout and #1527's newly merged ps_pmp always-on property, including the SRAM supplier. Keep current main's cpuidle source and its WFI/PSCI handling. All14 other feature line sets are unchanged; the owner-provided J813 N1 targets stay byte-exact. Symbolic checks cover PMP address/supplier/always-on and factory aliases on J813 and J815 in parent and child. This is not a compiled DTB or new physical boot result. Require fresh CI; keep the Aura165 loader alias qualification/adoption gate and J815 physical rollout limits. Assisted-by: LLM
Carry the J813 owner's SEP/mailbox/SPI/Mesa/DART block and board-specific calibration filenames. Add the SEP alias and expose AP GPIO200/NUB GPIO36 while preserving the audio pins. Admit J813 only alongside the existing J815 T8142 selector; retain other board and SoC admission boundaries. Based on @gig3m's supplied patch and owner report in linux#1532 comment 6837017905. Add KUnit selector cases for both accepted boards and unknown, missing or mismatched SoC/board identities. Local command creation failed with EAGAIN; these new cases require the hosted Rust/QEMU checks. This changes effective board admission: existing xart_writes=1 and provision_keybag=1 defaults remain, with profile-inherited guard level1. It is not read-only by default. Keep this follow-up draft pending SEP/XART policy review, CI and a decision on the separate aurora-xart model-reporting gap. No defaults, guard definitions, APFS checks or user state are changed. The reported single-finger/read-only-then-write/reboot/macOS checks do not qualify IRQ-only capture, multifinger, lockout or deep sleep. No hardware, XART write, enrolment, provisioning or loader action was executed here. Assisted-by: LLM
RyanTheTide
left a comment
There was a problem hiding this comment.
Reviewed the e8fb89d...7003518 delta.
The J813 sep, mailbox, spi2, Mesa and sep_dart nodes match J815's except for the calibration file names. The pinctrl overrides come after t8142-j813-audio.dtsi, keep every pin it exposes, and add only AP 200 and NUB 36. The selector admits apple,j813 only with apple,t8142; the other branches and the T8142 profile are unchanged, so no other board's profile, guard or defaults move.
The J813 run (read-only attach, keybag, enrol, lock-screen match, macOS Touch ID afterwards, enrolment restored after reboot, guard 1, no refusals) covers what #1531 admitted J815 on.
Before merge:
- #1532 lands first and this delta is still these two files.
- kunit, rust-build, dt-checks and host-tests pass on the final head.
Fine here or later:
- Rename the label to "T8142/J813, J815", as T6041 was for J614c. Only the probe log and diag print it.
- Add apple,j704 (a T8142 board in the tree) as a negative case, J813/J815 to every_touch_id_mac_gets_a_sensor_the_shared_path_decodes and the BIT(40) window test, and assert T8142.xart_guard == 1.
- Could you post the xart_guard, xart_guard_list and refusal diag values from after the reboot? The report says the list stayed empty after a keybag create and an enrolment.
- aurora-xart's platform.py lacks T8142, J714s, J614c and J715. Separate aurora-xart PR; the driver's diag still reports the real guard level.
|
The values asked for, from J813 on the current boot (the third write-enabled boot since the enrolment; macOS was booted in between):
The guard line read the same (10 session records, 0 created by Linux) on the boot that provisioned the keybag and on every boot since. Live records stayed at 12 while max revision went 1924 (read-only boot and the provisioning boot) -> 1961 (first boot after macOS) -> 1965 (now). One correction to my report: Assisted-by: Claude Fable 5.2 |
Inherit the owner-provided J813 ALS node without changing the existing audio graph or SEP profile/policy delta. Preserve both histories. Fresh CI and the independent parent/loader/review gates remain. Assisted-by: LLM (Codex)
Carry gig3m's node from linux#1532 comment6837248959 exactly. The J813 27.0 ADT supplies the same VD6286 ALS service as J815. The owner reports illuminance and color-temperature readings using installer-supplied per-device calibration on the previously stated composed tree. Keep calibration loading in aop_als; firmware-name would select the different CT817 setup-port calibration path. Existing nodes/properties are preserved and the added ALS node equals J815's. This source check is not a new DTB build or physical boot. Require fresh CI and retain the independent Aura165 alias qualification/adoption gate. Based-on: @gig3m's patch and owner report6837248959 Assisted-by: LLM (Codex)
Address Ryan's review5883010555 of the J813 follow-up. Name both J813 and J815 in the diagnostic profile label. Add J704 as a negative board, both Airs to the shared known-sensor test, T8142 to the BIT40 window test and an explicit level-one guard assertion. Compare the selected profile's stable name rather than promoted-constant pointer identity. The production selector is unchanged. Apart from the diagnostic label, T8142 profile fields, geometry, guard and defaults are exact previous source. The reviewer accepts aurora-xart model coverage as a separate utility PR; do not change it or user state here. The owner corrected the report: guard1 was explicitly configured, not inherited at runtime. Three actual KUnit bodies pass in a host Rust extraction using actual profile definitions, selector and exact-head known-sensor IDs. Host CStr/error/static-assert glue is used; this is not a kernel module, arm64 QEMU KUnit or physical default-policy test. Fresh hosted checks and the parent1532/loader-alias gate remain before merge. Assisted-by: LLM (Codex)
DjDeveloperr
left a comment
There was a problem hiding this comment.
Addressed Ryan’s review5883010555 in8cc28060. The diagnostic label now names J813 and J815. Added J704 as a refusal case, both Airs to the known-sensor coverage, T8142 to the BIT(40) window check and an explicit guard1 assertion. The selector test compares the stable selected profile name instead of promoted-constant pointer identity. Apart from that diagnostic label, every T8142 runtime field and the production selector are byte-exact previous source; the follow-up remains two files relative to parent09e6fbbc.
Three actual KUnit bodies pass in a host Rust extraction using the actual profile constants, selector and exact-head known-sensor IDs. The host uses CStr/error/static-assert glue; it is not a kernel Rust/module build, arm64 QEMU KUnit or runtime-default qualification. Initial exact-blob and extraction-helper failures were corrected without changing production behavior; logs are retained. Fresh current-head hosted CI is pending/queued.
The requested owner diagnostics are now posted in6837844779: explicit guard1, loaded guard list,0 refusals/0 XARM failures, keybag present and identity restored after the third write-enabled boot with macOS between. Ten session records remain protected,0 are recorded Linux-created, and the owned list is0 bytes. The current diagnostic says matching unverified; the previous lock-screen matching result is an earlier observation. This does not test rejection paths or the inherited -1 default. No new hardware, enrolment, XART/user-state or loader action was performed here.
Following Ryan’s stated scope, aurora-xart model coverage stays a separate utility PR. Keep this draft until1532 lands and final-head kunit/rust-build/DT/Host checks pass; the parent’s Aura165 affected-loader qualification/adoption and alias migration are still outstanding. Ryan’s review is COMMENTED, not relabelled as a formal approval.
Preserve the complete prior J815 board description and append main's complete MCC enablement, including its shared cache definition. Keep main RTC and binding updates alongside the existing bring-up features. The shared MCC node is inherited disabled on J813; J815 is enabled as on main. The old J815 audio graph and SEP two-file feature are preserved. Metaschema checks caught a pre-existing duplicate agx-g17s enum in main. Remove its redundant trailing occurrence, preserving the allowed set and every other condition; retain current main's entry and ordering. Keep published ancestry and require fresh CI. Existing loader-alias, review and physical qualification limits remain; no hardware claim. Assisted-by: LLM (Codex) Carry intervening main673f6184 J700-only update; every reviewed/tested input is byte-identical, so validation is reused without repeated tests.
Retain the full audio or SEP feature while inheriting the updated parent/main, complete MCC block and semantics-preserving duplicate enum repair. Keep both published histories and all review/loader qualification gates; require fresh CI. Assisted-by: LLM (Codex)
Draft at
98e509f06b380cb69c91d38d1e74dde473dc208d, stacked on #1532 at0434a61e. Do not merge before that parent. The net follow-up remains two files. This normal merge carries the updated parent/current main while preserving the original SEP/profile feature patch exactly.Carry @gig3m’s 6837017905 patch: J813 SEP/mailbox/SPI2/Mesa/DART nodes with board-specific calibration filenames, loader SEP alias, AP200/NUB36 exposure while retaining audio pins, and J813 admission only with T8142. SEP/DART remain initially disabled for the driver’s existing changesets.
The diagnostic label names both Airs. Eight selector cases include J704 refusal; both Airs are in known-sensor coverage, T8142 in the BIT(40) window check, with a guard1 assertion. Ryan’s5883010555 review accepts the bounded admission at the J815 precedent, subject to parent-first landing and final CI; optional nits were addressed. It is COMMENTED, not formal approval. The separate aurora-xart model-list gaps are accepted as a utility follow-up.
Effective policy: admitting J813 makes it eligible for the existing
xart_writes=1/provision_keybag=1defaults. Parameterxart_guard=-1inherits level1. This feature does not change those defaults or guards and is not read-only by default. The owner explicitly configured guard1; runtime inheritance from-1 was not tested.Owner evidence is the223d feature on92195659, J813/Mac17,3/27.0 stub, Aura1.0.0b12/aurora-sep1-25: read-only attach, then owner-enabled keybag provisioning, single-finger enrol/lock-screen match, working macOS Touch ID, and restored/matching Linux identity after reboot. Follow-up6837844779 reports a later third write-enabled boot with the list loaded,0 refusals/0 XARM failures, keybag present and identity restored; current matching is unverified. Ten session records are protected and0 recorded Linux-created. This does not test rejection paths, IRQ-only#1596 operation, multifinger, lockout or deep sleep, and is not a boot of this new whole tree.
The parent integration preserves its J815 graph/MCC and J813 N1/ALS work, including main RTC changes; MCC is inherited disabled on J813. The duplicate G17s schema enum repair is inherited from the parent. Six symbolic board/layer checks, eight metaschema/reference checks, five T8142 memory cases and560 non-target comparisons pass. Three actual KUnit bodies pass in a host Rust extraction on the new source.
Current98e509f0 Host43379009670/job131732157206, arm64 SEP module131732156680 and source checks131732157091 passed their substantive steps. Arm64 QEMU KUnit131732156983 ran295 tests, all passed; the log explicitly includes the T8142 board/guard, shared known-sensor and BIT(40) window tests. All three DWC3/ATC compile profiles now passed as well (131732157105/7117/7133); all six jobs of SEP43379009612 completed successfully. Together with Host, seven software checks pass; DT remains the inherited-alias failure below.
DT43379009604/job131732156929 built137 DTBs on both base and head (make rc=0/0),402/394 warning lines, one new/nine removed. All seven changed bindings—including the repaired AGX schema—and ADT19/six baseline comparisons passed with no regression. The sole new warning is the inherited J815
disp0_piodmaalias; no new J813 SEP/pin/MCC/RTC/ALS warning appeared. The overall DT check remains failed. No unchanged-source retry or warning filter was used. Aura165 remains draft without a new posted qualification/adoption result; no hardware/default-policy qualification is inferred from these software results.Remaining: parent1532 must land after Aura165’s affected-loader qualification/adoption and coordinated alias migration, then final required checks/reviews must pass. Keep draft. No warning filter, unchanged-source retry, physical test, pairing/enrolment/XART write, user-state or loader/default action was performed by this review.
Based on @gig3m’s supplied patch/report (assisted by Claude Fable5.2); prepared and integrated with LLM assistance from Codex. Original ancestry retained.