Repository navigation
Description
On the J514M, the native display and GPU work out of the box on edge since aurora16, but the built-in panel only presents 60 fps at its 120 Hz mode, and there is no brightness control. #429 already merged the fix for the J516M, which runs the same DCP image. Two other J514M owners tested the same two lines on their own J514M in #333. It only needs to be applied to the J514M board record.
Machine and build
- MacBook Pro 14-inch, M3 Max (14 CPU / 30 GPU),
apple,j514m/apple,t6034 asahi,os-fw-version: 14.7,asahi,system-fw-version: 26.6.2- Omarchy edge:
linux-aurora 7.2.11.aurora16-1(7.2.11-16-1-ARCH),m1n1-aurora 1.6.1.aurora23-2,mesa-aurora 26.3.0_devel.20261107(b7b03c5b3b8), Hyprland 0.57.1. No local patches, no/etc/m1n1.conf. - DCP handoff:
dcp firmware-compat 14.7.0 version 14.7.0 uuid F493F03E-CC40-3D89-9A08-5F259BA2B246, the J516C image the J516M also runs.
Results
| Test | Result | Notes |
|---|---|---|
| Native display | pass | J514M display started: 3024x1964@120, eDP-1 3024x1964@120 on apple-drm |
| GPU | pass | asahi-g15 bound, renderD128 present |
| 120 Hz presentation | fail | 301 frames in 5.00 s, median interval 16.67 ms = 60.00 fps (GTK 4 frame clock on an animated window), while the mode is 120 Hz |
| Panel brightness | fail | /sys/class/backlight is empty: no apple-panel-bl, so brightness keys and brightnessctl have nothing to drive. DCP logs IOMFB: Could not find Backlight service |
| Lid-close suspend (s2idle) | pass | 3 cycles (about 5 min and 37 min among them): display, GPU and Wi-Fi back after resume |
Cause and fix
dcp_v14_board_j514m in drivers/gpu/drm/apple/iomfb_v14_7.c runs the same pinned J516C 14.7 DCP image as dcp_v14_board_j516m, but lacks the two flags #429 gives the J516M. It is also missing from dcp_v14_panel_nits_admit():
--- a/drivers/gpu/drm/apple/iomfb_v14_7.c
+++ b/drivers/gpu/drm/apple/iomfb_v14_7.c
@@ static const struct dcp_v14_board dcp_v14_board_j514m = {
.handoff = "apple,t6034-handoff",
.promotion = true,
.log_bringup = true,
+ /* Same pinned DCP image as J516C: zero stamps cap this panel at 60 fps. */
+ .swap_timestamps = true,
+ /* J516C's 14.7 image uses the bounded nits block for the J514 panel too. */
+ .panel_nits = true,
};
@@ static bool dcp_v14_panel_nits_admit(const struct dcp_v14_board *board,
machine_is(ctx, "apple,j516c") || machine_is(ctx, "apple,j613") ||
- machine_is(ctx, "apple,j504") || machine_is(ctx, "apple,j516m"));
+ machine_is(ctx, "apple,j504") || machine_is(ctx, "apple,j516m") ||
+ machine_is(ctx, "apple,j514m"));Two tests currently assert the old values and would need to flip: KUNIT_EXPECT_FALSE(test, b->panel_nits) in v14_board_j514m (drivers/gpu/drm/apple/v14-board-test.c), and !b->panel_nits in tools/asahi/t6034-display-tests.py.
This exact change was reported working on #333:
- webdevtodayjason,
integration/aurora49a8c150+ this patch: 120.07 fps measured,apple-panel-blmax 500,brightnessctlset and restore works. - techgyani:
.swap_timestampsvalidated at 120 Hz..panel_nitsgivesapple-panel-blmax 500, andbrightnessctlread back works.
#416 makes this change for the J516M only, and #429 has since merged it for that board. No open PR carries it for the J514M.
Happy to test a build or a PR on this Mac.
Activity
drm/apple: v14.7: J514M panel nits and swap timestamps