Skip to content

T8142: power the ISP down while the camera is idle - #1874

Open
gig3m wants to merge 2 commits into
aurora-silicon:integration/aurorafrom
gig3m:j813/t8142-isp-idle
Open

gig3m wants to merge 2 commits into
aurora-silicon:integration/aurorafrom
gig3m:j813/t8142-isp-idle

Conversation

@gig3m

@gig3m gig3m commented Nov 14, 2026

Copy link
Copy Markdown

T8142 kept its ISP firmware resident, so the ISP power domains stayed on from boot to shutdown and the ISP never runtime-suspended. This is #1827's change for T8142.

  • arm64: dts: apple: t8142-j813: describe the first ISP DART's address filter: the dapf register window and the ranges from the J813 ADT's dart-isp dapf-instance-0. On this chip every entry's last word is 0xcc3, so apple,dapf-r20 is given too. The registers the loader leaves on J813 read back the same ranges and 0xcc3.
  • media: apple: isp: T8142 uses the model T6040 got: the firmware stops after the camera detection at probe, each stream starts it again, 5 s idle stop after a stream, coprocessor quiesce before the power-down.

Tested on J813 (Mac17,3, 27.0 stub), integration/aurora 5d112b1 merged with #1532 at 0434a61, plus these two commits:

  • after probe and 7 s after every stream all ISP domains are off and 4a0000000.isp is runtime-suspended
  • 10/10 start/stop cycles of 30 frames to /dev/null; 1.75 s from power-down, 1.26 s on a reopen within the idle window
  • a frame after a restart has picture content
  • s2idle test suspends x3 with a stream after each wake, and a stream running across one
  • no DART faults and no ISP errors in the kernel log
  • s2idle test suspend, panel off, on battery: 1.863 W before, 1.818 W after
  • awake and idle, same boot, three alternating 30 s pairs: 4.84 W with the ISP suspended, 4.88 W with it held runtime-active

Not tested: J815. It includes the same t8142-j813-isp.dtsi, so it gets the DART change too; I have not read its ADT. @m0d16l14n1, if you have time, could you check the dart-isp dapf-instance-0 ranges and a stream on your J815? Also not done: KUnit, and a real sleep (only s2idle exists here).

checkpatch --strict is clean.

Assisted-by: Claude Fable 5.2

The first ISP DART filters the ISP firmware's accesses to the PMGR, PMP
and DSID windows it uses. The boot loader programs that filter, and it
goes off with the ISP system domain. Describe its register window and the
loader's ranges, from the J813 ADT's dart-isp dapf-instance-0 in the
ADT's order, with each entry's last word (0xcc3), so the DART driver
writes them back when the DART powers up again.

Assisted-by: Claude Fable 5.2
Signed-off-by: Kyle Arrington <kyle@arrington.co>
T8142 kept its firmware resident, so the ISP domains stayed on from boot
to shutdown. It runs T8140's coprocessor and firmware interface. Use the
model T6040 got: the firmware stops after the camera detection at probe,
each stream starts it again from its own memory, and it stays up for 5 s
after a stream. The coprocessor is quiesced before its domains go off.

A device tree without the ISP DART's address filter ranges keeps the
firmware resident, as before.

Assisted-by: Claude Fable 5.2
Signed-off-by: Kyle Arrington <kyle@arrington.co>
@m0d16l14n1

Copy link
Copy Markdown
Contributor

@gig3m Checked against the J815 ADT (Mac17,4, macOS 27.0 stub). J815's dart-isp matches the J813 values in this PR exactly:

  • dapf-instance-0 has the same 10 ranges in the same order, from 0x380704000-0x380704063 to 0x3a1358000-0x3a1363ffc, and every entry carries 0xcc3.
  • The DART is at 0x4a28c0000 (0xc000), and the sixth reg window, the dapf one, is at 0x4a28d0000 (0x4000).

So the shared t8142-j813-isp.dtsi change is right for J815 too. I have not yet run a stream with this PR on the J815. I'll post the result here when I have one.

Assisted-by: Claude Opus 5.5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants