From 7359621dca7ff8b62f064f9b516a7284c8b3a59d Mon Sep 17 00:00:00 2001 From: cachebag Date: Wed, 4 Nov 2026 23:08:51 +0000 Subject: [PATCH] drm/apple: time-stamp T6030 swaps on 14.7 for 120 Hz The T6030 (M3 Pro) record admits the panel's 120 Hz timing, but its swaps go out with zero timestamps, so the firmware completes at most one per 16.7 ms: the mode reports 120 Hz while a vsync-locked client measures 60 fps. The J516C already sends the constant timestamps for this; set swap_timestamps on the T6030 record too. Tested on a J514S (MacBook Pro 14", M3 Pro), DCP firmware 14.7, on aurora-2026.10.17.20 with the equivalent change: es2gears_wayland goes from 60.0 to 119.9 fps on the built-in panel. Not tested on a J516S, which shares the record. Signed-off-by: cachebag --- drivers/gpu/drm/apple/iomfb_v14_7.c | 1 + drivers/gpu/drm/apple/v14-board-test.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/apple/iomfb_v14_7.c b/drivers/gpu/drm/apple/iomfb_v14_7.c index e540ba355f8298..bb5adb72da4c18 100644 --- a/drivers/gpu/drm/apple/iomfb_v14_7.c +++ b/drivers/gpu/drm/apple/iomfb_v14_7.c @@ -104,6 +104,7 @@ static const struct dcp_v14_board dcp_v14_board_t6030 = { .handoff = "apple,t6030-handoff", .promotion = true, .panel_nits = true, + .swap_timestamps = true, }; /* diff --git a/drivers/gpu/drm/apple/v14-board-test.c b/drivers/gpu/drm/apple/v14-board-test.c index 98df7dfab36ea8..1320f387d92b36 100644 --- a/drivers/gpu/drm/apple/v14-board-test.c +++ b/drivers/gpu/drm/apple/v14-board-test.c @@ -197,14 +197,14 @@ static void v14_board_swap_timestamps(struct kunit *test) KUNIT_EXPECT_TRUE(test, j516c_b->swap_timestamps); KUNIT_EXPECT_FALSE(test, j514c_b->swap_timestamps); - KUNIT_EXPECT_FALSE(test, t6030_b->swap_timestamps); + KUNIT_EXPECT_TRUE(test, t6030_b->swap_timestamps); KUNIT_EXPECT_FALSE(test, j613_b->swap_timestamps); KUNIT_EXPECT_TRUE(test, dcp_v14_board_stamps_swaps(j516c_b, false)); - /* The J514C, the external role, the T6030 (J514S, J516S) and T8122 panels, no record. */ + KUNIT_EXPECT_TRUE(test, dcp_v14_board_stamps_swaps(t6030_b, false)); + /* The J514C, the external role, the T8122 panels, no record. */ KUNIT_EXPECT_FALSE(test, dcp_v14_board_stamps_swaps(j514c_b, false)); KUNIT_EXPECT_FALSE(test, dcp_v14_board_stamps_swaps(j516c_b, true)); - KUNIT_EXPECT_FALSE(test, dcp_v14_board_stamps_swaps(t6030_b, false)); KUNIT_EXPECT_FALSE(test, dcp_v14_board_stamps_swaps(j613_b, false)); KUNIT_EXPECT_FALSE(test, dcp_v14_board_stamps_swaps(NULL, false)); KUNIT_EXPECT_FALSE(test, dcp_v14_board_stamps_swaps(NULL, true));