Skip to content

apple: T8140 DCP/ISP fixes for DPMS off and suspend-to-idle - #1754

Merged
RyanTheTide merged 3 commits into
integration/aurorafrom
neoreg/old-dt-fallback
Nov 13, 2026
Merged

RyanTheTide merged 3 commits into
integration/aurorafrom
neoreg/old-dt-fallback

Conversation

@RyanTheTide

@RyanTheTide RyanTheTide commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Three T8140 (J700) fixes for regressions from the coordinated suspend-to-RAM support (#1445).

  1. drm/apple: the internal DCP stops its firmware on DPMS off (hw.s2r, set by the compatible). The stop needs apple,display-power and the secure mailbox, and only the newer t8140 device tree has them. On an older device tree, DPMS off ends in "IOP idle not acknowledged: -62", the DCP crashes and the panel stays dark until reboot. The driver now checks the device tree at probe. Without both, the firmware keeps running and DPMS is the backlight only, as before hw.s2r. hw.s2r_ext needs apple,display-power the same way.
  2. media: apple: isp: T8140 firmware that starts again needs the first ISP DART to replay the boot loader's address filter (apple,dapf-ranges). Without that property the firmware stays resident, as before.
  3. media: apple: isp: a stream running across s2idle does not come back, with either device tree. The firmware start from .resume never gets the first boot message ("failed firmware boot stage 1: -19"); a start from process context works. The suspend callback now marks the firmware as stopped for the sleep, so the stream restarts from the resume work item, as after s2r.

Testing on J700: Mutter PowerSaveMode 3 then 0 (x3), and a v4l2 stream to /dev/null across s2idle (x2) and s2r (x1), on the current and the older device tree.

Kernel Device tree DPMS off then on (panel back, no DCP errors) Stream across s2idle Stream across s2r
fleet64 base (1de767b) older 1/1 1/1 not offered
e661192 older 0/3 (DCP crash, panel dark) 0/2 not offered
e661192 current 3/3 0/2 1/1
this PR (64860d9) older 3/3 2/2 not offered
this PR (64860d9) current 3/3 2/2 2/2

0 AVC denials on every boot.

🤖 Generated with Claude Code

The T8140 internal DCP stops its firmware for DPMS off and system sleep
(hw.s2r). That stop powers the display domains through
apple,display-power, and the firmware only takes IOP idle after its
secure port has gone idle. A J700 device tree from before those were
described has neither: DPMS off then ends with "IOP idle not
acknowledged", the firmware crashes ("Invalid AP power: 8") and the
panel stays dark until the next boot.

Check for both at probe. Without them, DPMS off is the backlight alone
and the firmware keeps running, as before hw.s2r. hw.s2r_ext needs
apple,display-power in the same way.

Assisted-by: LLM
Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
…er replay

T8140 firmware stops after a stream and for system sleep, and starts
again from its own memory (hw->fw_restart). After the ISP has been
powered down, the firmware reaches its MMIO only once the first ISP DART
has replayed the boot loader's address filter, which the DART driver
does from apple,dapf-ranges. A J700 device tree from before that was
described has no such property, so a stream that ran across
suspend-to-idle fails to come back: "failed firmware boot stage 1: -19".

Without apple,dapf-ranges on the first DART, boot the firmware at probe
and keep it running, with no idle stop and no restart, as T8140 ran
before.

Assisted-by: LLM
Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
…a work item

A stream that runs across suspend-to-idle is stopped by the suspend
callback, and on T8140, where the firmware starts again
(hw->fw_restart), the firmware stops with it. The resume callback then
starts the firmware again to restart the stream, and that start never
gets the firmware's first boot message: "failed firmware boot stage 1:
-19", and the stream ends with an error. The same start from process
context, at the next stream, works.

Mark the firmware as stopped for the sleep in that case too, so the
stream restarts from the resume work item, as after a sleep that powered
the SoC down.

Assisted-by: LLM
Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
@RyanTheTide
RyanTheTide merged commit c868213 into integration/aurora Nov 13, 2026
1 check passed
@RyanTheTide
RyanTheTide deleted the neoreg/old-dt-fallback branch November 13, 2026 03:04
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.

1 participant