Repository navigation
arm64: dts: apple: Describe J716c GPU and internal-panel handoff - #1276
Conversation
DjDeveloperr
left a comment
There was a problem hiding this comment.
J716c-only DT, reviewed from the 14-inch M5 Pro (J714sAP, T6050) side, which shares this GPU and display hardware.
- Build: t6050-j716c, j716s, j714s and j775d DTBs build at this head.
- Bindings:
apple,agx.yaml,apple,dcp.yaml,apple,display-subsystem.yamlandapple,ascwrap-v6.yamlpass dt-doc-validate. - dt-validate vs. base (#1012's branch): J714s, J716s and J775D are unchanged (0 lines). J716c gains:
- two
apple,t6050-j775d-ascwrap-v6"failed to match any schema" lines, which go away with #1275 merged (checked on a merge of the two); opp-table-gpu-afr/opp-table-gpu-csdon't match^opp-table(-[a-z0-9]+)?$. t602x-common.dtsi and t6031-gpu.dtsi already use the same names, so this has precedent. Not blocking.
- two
- Against the J714sAP ADT: the GFX/GFX1 mailbox nodes match exactly (wrappers
0x2302600000/0x2302e00000, iop-vbar0x2302050000/0x2302850000, IRQs 2797/2800 and 2801/2804). On J714s hardware those exact nodes with #1275's profile bind, the G17S firmware (26A428) starts on both roles and DRM registers (see #1275). - Bus placement: moving J716c's inventory off the bare
/socbus also fixes the camera aliases from #1254, which don't resolve under libfdt without it (see my note there). The two PRs conflict trivially int6050-j716c.dts.
Not covered: the J716c GPU node layout and the internal-panel graph, which I can't boot here. The M5 Pro's own GPU and panel handoff currently uses the kit's node layout with aura's J714s handoff, so a J714s in-tree equivalent should follow once the two T6050 loader handoffs agree on one layout.
|
Leaving this open: it is based on #1012 ( 🤖 Generated with Claude Code |
Distinguish the coprocessor-driven T6050 GPU from its raw disabled inventory node with the G17 family fallback. Describe both mailboxes, the six reserved memory regions and loader-filled power data. Accept the existing mini-LED panel compatible and the named boot framebuffer reservation supplied to the display subsystem. Developed with Claude Code. Signed-off-by: Erik Bourget <erik@ebourget.net>
Supply the one-die GPU resource layout, GFX/GFX1 mailboxes, six memory reservations and fourteen operating points with four cluster voltage lanes. Put its existing PMGR resources under the GPU aperture and replace the raw disabled GPU inventory nodes. Keep the J716c inventory on its existing SoC bus so loader path lookups are unambiguous. Connect the internal DCP to its bandwidth scratch, clocks and mini-LED panel, with display scanout through disp0 SID 0. Reuse the existing DCP, DART, mailbox and PMC definitions. The GPU, its power states and mailboxes, memory reservations and internal display remain disabled until the loader validates and fills the handoff. Developed with Claude Code. Signed-off-by: Erik Bourget <erik@ebourget.net>
The J716c GPU node replaces the generic T6050 one, which gained apple,clpc after this node was written. Without it the GPU driver finds no CLPC and never raises the DRAM and fabric floors while GPU work is in flight. Link it here too. Developed with Claude Code. Signed-off-by: Erik Bourget <erik@ebourget.net>
dddc6e8 to
49b0a5b
Compare
Preserve the original handoff commits and all newer target changes. Retain USB4/DROM and ISP includes alongside GPU/panel; keep the newer SPMI board exclusion with the original J716c guard. No driver or safety-policy changes.
DjDeveloperr
left a comment
There was a problem hiding this comment.
Codex (GPT-6.1 Sol), reviewing on @DjDeveloperr’s behalf.
No remaining blocking source findings in the reviewed/integrated net change. The runtime dependencies1012/1275 are merged. Integration preserves original author ancestry, newer J716c USB4/DROM/camera includes and the narrowed shared peripheral exclusions; no older shared nodes were restored. Four DTBs compile, and J714s/J716s/J775d match the pre-change base byte-for-byte. Owner's J716c public-stack GPU/internal-panel/Vulkan evidence is retained as attributed evidence. Fresh DT/host CI on this exact head must pass before merge; a source merge does not install a matched loader/DT bundle.
Approval does not waive pending CI, dependency order, hardware-safety gates or source-versus-release qualification. No source merge is an installed-loader write or a new hardware test.
DjDeveloperr
left a comment
There was a problem hiding this comment.
The remaining conditions of approval5861286905 are now satisfied. Verified exact-head Host43049264316/job130702920772 and DT43049263986/job130974333060: actual host tests, CHECK_DTBS/binding checks and ADT comparison steps all passed. Earlier apt/DNS failures are superseded; no retry is needed. Both source prerequisites are merged (#1012 c54454d, #1275 22cbd86).
The GitHub merge preview retains the same six-file GPU/panel/peripheral net change alongside current-main bindings and guards. Changes from that preview's main5cfcc01a to current9fb90b40 do not overlap the six files. No additional branch update or build is necessary. Existing exact-head source approval and the attributed J716c public-stack GPU/internal-panel/Vulkan/CLPC evidence remain accepted at their stated scope.
Proceeding with the expected-head normal source merge. This does not install a loader/DT bundle, qualify a new complete integrated hardware boot or mark unrelated device-support rows Working.
J716c's public device tree does not yet describe the GPU resources and internal-panel connections needed for the loader handoff. Add the one-die GPU layout, GFX/GFX1 mailboxes, six memory reservations and power tables, and connect the internal DCP to its clocks, bandwidth scratch, panel and scanout DART.
The loader fills the runtime data and enables these devices after validating the handoff. The source device tree keeps them disabled. Reuse the existing hardware inventory and place it on the J716c SoC bus so loader path lookups resolve unambiguously.
The source prerequisites are merged: #1012 (
c54454de, firmware-27 GPU/display code) and #1275 (22cbd86f, physical GPU mailbox profile). Runtime deployment still requires the matching validated loader/DT handoff described below. It does not depend on the USB4 PRs. The dependent board PR #1273 extends the display master's scanout list while preserving the internal panel first. This PR remains independent of USB4.Validation: J716c, J716s and J775D DTBs compile. The three changed binding documents validate. Focused GPU, DCP, display-master, mailbox, DART, power and clock checks pass for the source DT and for a modeled handoff populated with captured values from the working system. Static resource checks match the working GPU and internal-panel layout. The complete proposed USB4 stack builds Image.gz, modules and the J716c DTB; its 20 affected schema documents and focused DT checks pass. Full-registry validation retains the existing unrelated tunable-type collision.
Hardware validation: the complete public stack booted. Aura accepted the GPU and internal-display handoffs; the G17C driver initialized, matching public Mesa enumerated the Apple M5 Max Vulkan device, and Hyprland used the internal panel at 3456x2234@120. The earlier mailbox-address and shared-PMC failures are resolved. The later complete public stack passed a user-confirmed rear-left-attached TS5 reboot with the internal screen, both external monitors, keyboard/mouse and Ethernet working without unplugging.
The GPU node is
"apple,agx-g17c", "apple,agx-g17s": the M5 Max name with the family fallback the driver matches. The binding takes that pair, and the J716c tree validates against it. A boot loader that hands the GPU over must accept theapple,agx-g17cname; on J716c the tree boots with one that does (GPU driver bound, 18,427-case sample of the Vulkan default list unchanged).A further commit links the J716c GPU node to the CLPC, as the generic T6050 GPU node is, so the DRAM and fabric floors rise while GPU work is in flight. On J716c a GPU memory read test goes from 89 GB/s to 292 GB/s with it, and an 18,427-case sample of the Vulkan default list is unchanged (9,694 passes; only the two driver-ID/conformance metadata failures).
Created with GPT-6 Astra in Codex and Claude Opus 5.5 in T3 Code.