Repository navigation
media: apple: isp: restore J613 camera capture on 14.7 firmware - #199
Conversation
The extra trailing zero places the PMU address outside the PMGR range on J613. Correcting it resolves the probe-time firmware translation fault on a J613 running firmware compatibility 14.7. Hardware tested as a module override on the original PR95 kernel, 7.1.12-2-20261013.95-sep-ARCH. Rebased integration source has separate hardware qualification pending. Link: #117 Assisted-by: Codex:GPT-6 Signed-off-by: Scott Jones <scottajones@gmail.com>
On the tested J613, m1n1 supplies temporal-filter=1. The PMU fix permits startup but this filter yields no output frames. Selecting filter 0 delivers 1920x1080 NV12 at about 30 fps with the existing CNR, MBNR and temporal processing commands retained. Limit the workaround to J613, firmware compatibility 14.7, and filter 1. This complements the 26.6.2 camera work; that firmware's processing strategy is unchanged. Hardware tested as a module override on the original PR95 kernel. Rebased integration source has separate hardware qualification pending. Link: #117 Assisted-by: Codex:GPT-6 Signed-off-by: Scott Jones <scottajones@gmail.com>
[Medium impact] The PR appears safe to merge; no actionable issues were found. SummaryCorrects the T8122 camera power-register address and adds a narrowly scoped J613 workaround.
Reviews (1) · Last reviewed commit: "media: apple: isp: use temporal filter z..." · Reviewed by Greptile |
maralcbr
left a comment
There was a problem hiding this comment.
Thanks @scottjones, and thanks @garymeyerca for the original fix in #134. Both changes look right to me, and there are no code blockers.
- The PMU base is now inside the PMGR. T8122's PMGR is at
0x2d0700000(t8122.dtsi:853) andps_isp_set0is at offset0x4000(t8122-pmgr.dtsi:967-969), so0x2d0704000(isp-drv.c:685) follows the same PMGR +0x4000pattern as T8112 and T6030. The old value was 16 times too large. - The filter quirk is narrowly gated. It only fires on
apple,j613, an exactapple,firmware-compatof 14.7.0 (isp-drv.c:338-339) and filter 1 from the DT (t8122-j613.dts:231). It runs before the only consumer atisp-cam.c:541, and an unknown or missing compat leaves the filter alone. A driver quirk fits better than a DT change here, since the problem follows the ISP firmware rather than the board.
tools/aurora-ci/check-commits.py passes locally on both commits. checkpatch's NO_AUTHOR_SIGN_OFF is expected for a carried commit, and the check accepts the carrier's sign-off.
I'll approve once CI finishes: compile, commits, device trees and host tests were still pending when I looked.
Smaller things, none blocking:
- The PMU change isn't J613-only. Every
apple,t8122-ispuses that table (isp-drv.c:802), so J504, J433, J434 and J615 get it too. Please widen the Blast Radius line in the PR body to say so. A camera run on another M3 would be welcome, but I don't need it for merge. - The gate is ISP firmware-compat, not OS firmware. A later OS firmware that still advertises compat 14.7 will also get filter 0. Suggest the comment and log say "firmware-compat 14.7" (
isp-drv.c:424,:428). - Could you add
Fixes: f26396997e09 ("media: apple: isp: add t8122 support")to 6b34040? That's where0x2d07040000came in, and it'll help when this goes upstream. - Nit: 4433ef5 says "m1n1 supplies temporal-filter=1", but it comes from
t8122-j613.dts:231. Both messages also still say hardware qualification of the rebased source is pending, which your 7.2.11 run on #134 now covers. Fine to leave them as Gary wrote them if you'd rather not reword.
For release, not this merge: your six captures cover J613 on 14.7. J615 sets the same filter (t8122-j615.dts:243) and stays untested, so that's a follow-up for whoever has one.
| if (of_machine_is_compatible("apple,j613") && | ||
| isp->fw_compat == ISP_FIRMWARE_V_14_7 && | ||
| isp->temporal_filter == 1) { | ||
| dev_info(dev, "using temporal filter 0 on J613 firmware 14.7\n"); |
There was a problem hiding this comment.
nit: this gates on ISP firmware-compat, not the OS firmware version, so "firmware-compat 14.7" here and in the comment at :424 would be more precise.
| static const struct apple_isp_hw apple_isp_hw_t8122 = { | ||
| .gen = ISP_GEN_T8112, | ||
| .pmu_base = 0x2d07040000, | ||
| .pmu_base = 0x2d0704000, |
There was a problem hiding this comment.
Right: PMGR 0x2d0700000 + ps_isp_set0 0x4000. Could the commit carry Fixes: f26396997e09 ("media: apple: isp: add t8122 support")?
maralcbr
left a comment
There was a problem hiding this comment.
PMU base matches t8122 DT (pmgr@2d0700000 + ps_isp_set0@4000). Quirk scoped to J613 + fw 14.7 + filter 1. Hardware evidence + green CI.
|
Kernel CI on three lab laptops (hand-built one-shot boots; all three returned to stock afterwards). Head tested: 4433ef5 (2 commits, drivers/media/platform/apple/isp/isp-drv.c only, +9/-1). What was built: a hand-built bootable linux-aurora package, release 7.2.11-pr199-ARCH+ (published edge package config + olddefconfig, LLVM 22, arm64, module-signing config as shipped). Base tree: d8ecb2e, which is an ancestor of this PR's base integration/aurora (be6381f) sitting 22 commits behind it; none of those 22 commits touch drivers/media/, so the ISP driver path is byte-identical between this build base and the PR base. On top of it, this PR's head isp-drv.c verbatim (git blob sha ead021d7c3317ad358e89510a9721de7b784521a, verified against the compare API). So the driver code under test is exactly this PR's; everything outside the ISP driver is 22 integration commits older than the PR base. CI on this PR (from the checks API): 9 pass (plan, CI self-test, commits, compile, device trees, host tests (tools), host tests (aurora-sep), result, Greptile), 4 skipped (package, KUnit, boot, attest). Per laptop: stock baseline smoke run, then a single one-shot candidate boot of 7.2.11-pr199-ARCH+, candidate smoke, graceful return to the stock default, protected boot artifacts hash-verified, no pending one-shot. Smoke covers boot (0 failed units), wifi association + gateway reach, input nodes, HID error scan, display backlight set/readback, audio tone playback, ANE driver node, battery; extras cover Vulkan device probe, GL/compute sanity, ALSA card check, GPU dmesg scan.
Regressions vs each machine's own stock baseline: none found.
What this does not test: none of these machines is a J613 or T8122, and none runs firmware compatibility 14.7 — both changes are gated off on these machines (the PMU base fix is in the T8122 hw table; the temporal-filter workaround requires apple,j613 + fw compat 14.7 + filter 1), so actual camera capture on the targeted hardware is unverified here; no capture was attempted. No M3 hardware in the fleet, no suspend/resume, no cold power-on. |
|
Hand build of the integration/aurora tip 7b96998 (contains the merges of this PR and #199, #202, #203, #204). Package release 7.2.11-tip-ARCH+, package sha256 52830bb4538e8e8f5344eacff87fbdb9ab26cc553540c36e993ba4e097561c23. Tested so far (one-shot boot only, stock untouched):
CI on this PR: 9 pass, 4 skipped (attest, KUnit, boot, package). Regressions: none found. dmesg error classes on the candidate boot match the stock baseline (known flakes only: dp-xbar -517 deferrals, brcmfmac join_pref/assoc noise, Bluetooth codec-capabilities -110). m-test check list identical to stock except two tool-level deltas, neither a functional failure: (1) hardware.drivers counts Not tested: M3 paths (this PR's T8122-without-G15 build path is M3-family; the M3 Pro GPU startup in #202 and the J615 camera path in #203 compiled and booted in this build on M1/M2 but their M3-only code paths were not exercised — no M3 machine in this lab). |
garymeyerca's 4433ef5 (omacom#199) makes the J613 (13-inch M3 MacBook Air) use temporal filter 0 on ISP firmware 14.7, where filter 1 delivers no frames. The J615 (15-inch) has the same sensor and ISP configuration: t8122-j615.dts includes isp-imx558-cfg0.dtsi and sets platform-id 18 and temporal-filter 1, exactly as t8122-j613.dts does. So it very likely stalls the same way. Apply the workaround to the J615 too. This is untested on a J615; the J613 result is from 7.2.11 with Gary's series. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: Scott Jones <scottajones@gmail.com>
Summary
This carries garymeyerca's #134 onto current
integration/aurora(7.2.11) so it can merge. The two commits are his, with his author, date and message unchanged. The only addition is mySigned-off-byas carrier. GitHub refused a push to the #134 branch, so the commits are on this omacom branch instead.Evidence
MacBook Air 13" M3 (J613), OS firmware 14.7, this exact tree on 7.2.11 (with #187's GPU runtime enabled):
IO: timed out on request,never received magic number from firmware).using temporal filter 0 on J613 firmware 14.7, with no ISP timeouts or faults;Details are in the #134 comment.
Merge Danger
Door: two-way
Blast Radius: J613 camera
The PMU base only changes T8122. The filter quirk only fires on
apple,j613with ISP firmware compat exactly 14.7 and filter 1. J615 sets the same filter in its device tree and may need the same quirk, but it's untested.🤖 Generated with Claude Code