Skip to content

J504: drive the 14" M3 MacBook Pro's display and GPU by default - #388

Merged
maralcbr merged 4 commits into
omacom:integration/aurorafrom
scottjones:j504/bringup
Nov 7, 2026
Merged

maralcbr merged 4 commits into
omacom:integration/aurorafrom
scottjones:j504/bringup

Conversation

@scottjones

@scottjones scottjones commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The 14" M3 MacBook Pro (J504) runs the same T8122 display and GPU firmware images as the M3 MacBook Airs. Its ADT names DCP image 90F849E1-… and GPU image DF697F05-…, and its iBoot is the Airs' 14.x one. This PR lets the kernel drive both by default, as on the Airs.

 drm/apple  iomfb_v14_7.c
   dcp_v14_boards
     T6030, J613, J615
+    J504: J613 image, 3024x1964 with 74 notch rows, 60/120 Hz, brightness in nits
     J516C, J514C
 drm/asahi  m3
-  validated_boards: j613, j615
+  T8122_BOARDS: j613, j615, j504   (exact list, host-tested)
 dts  t8122-j504.dts
+  &dcp panel (the J514S 14" mini-LED panel), &framebuffer0 panel link

The GPU starts at the same conservative cap as the Airs: state 2 (618 MHz), the 22 W target and the Air thermal limit. Raising it for a fanned chassis is a separate qualification. External displays and the HDMI port are not in this PR.

Paired m1n1 change: omacom/m1n1#25. Ship order: m1n1 must not ship before this kernel. A J504 with the new m1n1 and an older kernel gets the display handoff, the old kernel has no J504 record ("display not started: no board record for this machine"), and the panel stays on the boot framebuffer. Release them together, or the kernel first. The m1n1-aurora package bump will carry a floor on the linux-aurora release that has this change.

Evidence

Hardware: Jordan Goodman's J504 in the lab (jordan-m3, 10-core GPU), with stock 7.2.11-14 as the baseline.

  • Before (j1105-174533-6072): m1n1 "not armed: no display handoff", DCP left disabled, simpledrm at 3024x1890, llvmpipe. OMT 28 pass / 8 fail.
  • After (j1105-183940-5ec1, normal cmdline, no m1n1 config lines):
    • "J504 display started: 3024x1964@120, 74 notch rows shown".
    • GPU firmware identified as T8122 C0 14.8.3. The firmware accepted the InitData and is running at cap 2 on 10 cores; the desktop renders on it.
    • OMT 30 pass / 5 fail: gpu.driver, gpu.vulkan, display.outputs and display.controller pass.
  • Brightness (j1105-191604-59b8): apple-panel-bl max 500. Set to 125, 375 and 140; each read back exactly. That readback is the driver's own state, so a visual check that the mini-LED panel actually steps is still owed. Jordan will check it at the next session.
  • Host tests:
    • tools/asahi/dcp14-panel-tests.py and tools/asahi/m3-runtime-tests.rs pass.
    • Dropping the J504 record, moving it to another machine, opening it to any T8122 machine, a wrong panel width, and dropping or swapping the J504 board entry each fail a test.
    • KUnit cases are added to v14-board-test.c and iomfb_v14_7_backlight_test.c, for CI to run.
  • Restore: the Mac was restored afterwards (j1105-195107-f2ca).

Merge Danger

Door: two-way

Blast Radius: J504 only

Only a root with apple,j504 gets the new record and the GPU start. The Airs, the M3 iMacs (J433/J434) and the other SoCs are unchanged, and a J504 without the new m1n1 behaves as today. No CTS, sustained-load or thermal qualification is claimed.

🤖 Generated with Claude Code

The 14" M3 MacBook Pro (J504) runs the same T8122 DCP image as the M3
MacBook Airs (90F849E1-..., named by the J504 ADT), so the 14.x IOMFB
path can drive its panel once the boot loader hands the display over.
Its panel is the J514S mini-LED panel: 3024x1964 with 74 notch rows,
at 60 or 120 Hz.

Add a J504 record with that geometry, ProMotion allowed, bring-up
logging on, and this image's colour matrix methods. The panel level
block is not qualified on this board, so brightness stays closed, and
its swaps keep zero timestamps as on the Airs. Other T8122 Macs (the
J433 and J434 iMacs) still have no record.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Scott Jones <scottajones@gmail.com>
The J504 (14" M3 MacBook Pro) loads the same 14.8.3 G15G firmware image
as the M3 MacBook Airs (UUID DF697F05-..., TEXT 0x64000, from its ADT).
Move the T8122 board list into t8122_admission as T8122_BOARDS, add the
J504, and test the exact list on the host. Firmware identity, resource
admission, the performance-state cap and the thermal limit are
unchanged; the J504 starts at the same conservative cap (state 2) as
the Airs. The J433 and J434 iMacs stay unlisted.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Scott Jones <scottajones@gmail.com>
Give the J504 DCP its panel node (the J514S 14" mini-LED panel: 302 x
196 mm, 189 mm below the notch, 500 nits) and point the boot
framebuffer at it, as on the J613, so simpledrm and the DCP driver use
the same physical size.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Scott Jones <scottajones@gmail.com>
The J504 runs the J613's DCP image, whose panel level block (brightness
in nits) is qualified on the J613. Mark the J504 record panel_nits and
admit the J504 machine for it, with the KUnit and host tests.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Scott Jones <scottajones@gmail.com>
@scottjones

Copy link
Copy Markdown
Collaborator Author

Hardware results from our Mac lab, kernel built from 61cf178.

J504 (14" M3 MacBook Pro), j1107-134052-6e88:

  • stage2 9b662fca. eDP-1 at 3024x1964. G15G at board defaults, firmware ready.
  • Backlight set to 125, 375 and 140, each read back correctly.
  • GUI smoke passed. Vulkan 782 dispatches, 0 bad of 24064. 0 DART faults.
  • Test suite: 0 regressed vs stock, 5 fixed (display.backlight, display.controller, display.notch-strip, gpu.driver, gpu.vulkan).

No-regression check on a 13" M3 Air (J613), j1107-132933-b912:

  • stage2 9b662fca. eDP-1 at 2560x1664. G15G firmware ready with no flags.
  • GUI smoke passed, 0 DART faults, 0 regressed.

We also booted a combined trial kernel (#363 + #372 + #388 + #400, with m1n1 #23 + #24 + #25, stage2 v1.6.1-473-gd2b8d44b) on four Macs: M3 Air and J504 Vulkan 780/0 bad each, J514M Hyprland at 3024x1964@120 with Vulkan 694/0 bad (mesa #32 staged), MacBook Neo wifi soak 9/9. 0 DART faults on all four, every Mac restored to its own stock boot.bin, and no regressions vs stock apart from audio.microphone-signal on the J514M, which fails on stock too.

@maralcbr maralcbr left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed: J504-only board record and T8122 admission; board checks exact, no change for J613/J615/J433 or other SoCs; CI green and lab results clean. Merging ahead of m1n1#25 per the ship order.

@maralcbr
maralcbr added this pull request to the merge queue Nov 7, 2026
Merged via the queue into omacom:integration/aurora with commit 97ee765 Nov 7, 2026
14 checks passed
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