Skip to content

soc: apple: one display gate for T6030, T6031, T8122 and T6041 - #535

Merged
RyanTheTide merged 2 commits into
integration/aurorafrom
fold/display-gate-20261028
Oct 28, 2026
Merged

RyanTheTide merged 2 commits into
integration/aurorafrom
fold/display-gate-20261028

Conversation

@RyanTheTide

Copy link
Copy Markdown
Contributor

The J616s had its own display gate (t6041-display-gate.c) next to the display gate that already serves T6030, T6031 and T8122 through a per-SoC table. Both enable the display nodes the device tree keeps disabled, before devices are created, once the boot loader's handoff checks out. This makes it one driver.

  1. Rename. t6030-display-gate.c becomes display-gate.c, the object apple-display-gate and the option APPLE_DISPLAY_GATE. No functional change.
  2. T6041 joins the table. It is matched on the apple,t6040 SoC compatible instead of the J616s board. Its handoff keeps its own sequence through a new run hook in struct gate_soc, because the DCP is adopted running and the PMP is the device tree's own. The T6041 checks now use the gate's helpers instead of copies, and appending a display DART to the display subsystem's iommus is one shared helper for the T6030 external processors and the J616s external chain.

The checks, the order of the enabled nodes, the staged external power-up and the log messages are unchanged, so existing boot checks still match. APPLE_T6041_DISPLAY_GATE is gone and APPLE_DISPLAY_GATE covers it (both default to ARCH_APPLE).

Authorship: the T6030/T6031/T8122 gate is Chris Kearney's, the T6041 gate Ryan Murray's and its external display power-up František Balázsy's. The commit messages and the file header credit them.

It is stacked on the J616s consolidation (#533) because the T6041 gate it folds is the batch5 version, so it merges after #533.

Testing

  • Universal config build (FORTIFY, -Werror): clean, 0 warnings (Image modules dtbs, release 7.3.0-aurora-j616s-fold1)
  • W=1 on drivers/soc/apple/: 0 warnings
  • Display gate KUnit (T6030, T6031 and T8122 test trees, QEMU arm64): 44/44 passed
  • Host selftests (apple-dcp run.py): 80/80, the same as the consolidation it sits on

Hardware test plan

  • J616s (M4 Pro, T6040): boot. Expect apple-t6041-display: display handoff accepted, the internal panel on the DCP, routes enabled, waiting for the PMP, stage 0/1 enabled, then processors and display subsystem enabled. HDMI and dock DisplayPort should light, and route@0 remains disabled: DP PHY unavailable should appear on a tether boot. Compare dmesg against batch5.
  • Neo (T8140): boot. The gate must stay silent, since T8140 is not in its table.
  • M1 Pro (T6000), M2 (T8112): boot. The gate must stay silent.
  • Untested, no hardware here: J516s (T6030), J516c (T6031), J613/J615 (T8122). Their code path is unchanged apart from the rename and the shared iommus helper, which keeps the same checks.

🤖 Generated with Claude Code

RyanTheTide and others added 2 commits October 28, 2026 15:53
The gate already serves T6030, T6031 and T8122 through struct gate_soc, so
it is no longer a T6030 driver. Rename the file to display-gate.c, the
object to apple-display-gate and the option to APPLE_DISPLAY_GATE, so the
other SoCs' internal display handoffs can join it instead of growing a
driver each. No functional change: the gate, its SoC table, its command
line options and its KUnit test are unchanged.

The driver was written by Chris Kearney; this only moves it.

Assisted-by: LLM
Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The J616s internal display and external display chain had their own gate,
t6041-display-gate.c, beside the display gate that already serves T6030,
T6031 and T8122. Both do the same job: enable the display nodes the device
tree keeps disabled, before devices are created, once the boot loader's
handoff checks out.

Make T6041 an entry in the display gate's SoC table, matched on the
apple,t6040 SoC compatible instead of the J616s board. Its handoff has a
sequence of its own (the DCP is adopted running and the PMP is the device
tree's own), so struct gate_soc gains a run hook, and the T6041 checks use
the gate's existing helpers (gate_marked(), gate_disabled(), gate_target())
instead of copies. Appending a display DART to the display subsystem's
iommus is now one helper, gate_iommus_append(), shared by the T6030
external processors and the J616s external chain; it is not __init, as the
external chain is powered up from a work item.

The checks, the order of the enabled nodes, the staged external power-up
and the messages (with their apple-t6041-display: prefix) are as before.
APPLE_T6041_DISPLAY_GATE is gone; APPLE_DISPLAY_GATE covers it and was
already on wherever the T6041 gate was.

The T6041 gate was written by Ryan Murray, its external display power-up
by František Balázsy.

Assisted-by: LLM
Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@RyanTheTide
RyanTheTide changed the base branch from j616s/consolidate-20261028 to integration/aurora October 28, 2026 05:08
@RyanTheTide
RyanTheTide merged commit 8545a52 into integration/aurora Oct 28, 2026
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