Am 17.07.25 um 09:30 schrieb Murthy, Arun R:
Adding a quirk for this is not the right approach. If this is not supported by the display, should have been pruned by the driver.-----Original Message-----From: Intel-gfx <intel-gfx-boun...@lists.freedesktop.org> On Behalf Of WernerSembach Sent: Saturday, July 5, 2025 12:34 AM To: Jani Nikula <jani.nik...@linux.intel.com>; Vivi, Rodrigo<rodrigo.v...@intel.com>; Joonas Lahtinen <joonas.lahti...@linux.intel.com>;Tvrtko Ursulin <tursu...@ursulin.net>; David Airlie <airl...@gmail.com>; Simona Vetter <sim...@ffwll.ch> Cc: Tim Guttzeit <t.guttz...@tuxedocomputers.com>; Werner Sembach <w...@tuxedocomputers.com>; intel-...@lists.freedesktop.org; intel- x...@lists.freedesktop.org; dri-devel@lists.freedesktop.org; linux- ker...@vger.kernel.org Subject: [RFC PATCH 1/1] drm/i915/display: Avoid unsupported 300Hz output mode on a TUXEDO device From: Tim Guttzeit <t.guttz...@tuxedocomputers.com>Removes all display modes with more than 240 Hz for the integrated display on a TUXEDO Stellaris 16 Gen7, because using the iGPU with higer refresh ratescauses screen flicker. Signed-off-by: Tim Guttzeit <t.guttz...@tuxedocomputers.com> Co-developed-by: Werner Sembach <w...@tuxedocomputers.com> Signed-off-by: Werner Sembach <w...@tuxedocomputers.com> --- drivers/gpu/drm/i915/display/intel_dp.c | 5 ++++ drivers/gpu/drm/i915/display/intel_quirks.c | 30 +++++++++++++++++++++ drivers/gpu/drm/i915/display/intel_quirks.h | 1 + 3 files changed, 36 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 640c43bf62d4c..5ce00cfe36ee1 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -1436,6 +1436,11 @@ intel_dp_mode_valid(struct drm_connector *_connector, if (mode->clock < 10000) return MODE_CLOCK_LOW; + if (intel_has_quirk(display, QUIRK_EDP_MAX_240HZ_HOOK) && + intel_dp_is_edp(intel_dp) && + drm_mode_vrefresh(mode) > 240) + return MODE_BAD; +
Thank you for your reply. The panel (NE160QDM-NZL) supports 300 Hz and advertises it. Also when running the system on its NVIDIA dGPU, it runs perfectly fine without the flickering and on 300 Hz. On the iGPU, which is apparently unable to support 300 Hz, it is not pruned, thus leading to the flickering.
Best regards, Tim Guttzeit
-------------> fixed_mode = intel_panel_fixed_mode(connector, mode);if (intel_dp_is_edp(intel_dp) && fixed_mode) { status = intel_panel_mode_valid(connector, mode); diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c index a32fae510ed27..438ce2cb37a01 100644 --- a/drivers/gpu/drm/i915/display/intel_quirks.c +++ b/drivers/gpu/drm/i915/display/intel_quirks.c @@ -72,6 +72,12 @@ static void quirk_no_pps_backlight_power_hook(struct intel_display *display)drm_info(display->drm, "Applying no pps backlight power quirk\n"); }+static void quirk_edp_max_240hz_hook(struct intel_display *display) { + intel_set_quirk(display, QUIRK_EDP_MAX_240HZ_HOOK); + drm_info(display->drm, "Applying max 240Hz quirk\n"); } + static void quirk_fw_sync_len(struct intel_dp *intel_dp) {struct intel_display *display = to_intel_display(intel_dp); @@ -120,6 +126,12 @@ static int intel_dmi_no_pps_backlight(const struct dmi_system_id*id) return 1; } +static int intel_dmi_edp_max_240hz(const struct dmi_system_id *id) { + DRM_INFO("Restrict output refreshrate to maximum 240Hz %s\n", id- >ident); + return 1; +} + static const struct intel_dmi_quirk intel_dmi_quirks[] = { { .dmi_id_list = &(const struct dmi_system_id[]) { @@ -166,6 +178,24 @@ static const struct intel_dmi_quirk intel_dmi_quirks[] = { }, .hook = quirk_no_pps_backlight_power_hook, }, + { + .dmi_id_list = &(const struct dmi_system_id[]) { + { + .callback = intel_dmi_edp_max_240hz, + .ident = "TUXEDO Stellaris 16 Intel Gen7", + .matches = {DMI_EXACT_MATCH(DMI_BOARD_NAME, "X6AR5xxY"), + }, + }, + { + .callback = intel_dmi_edp_max_240hz, + .ident = "TUXEDO Stellaris 16 Intel Gen7", + .matches = {DMI_EXACT_MATCH(DMI_BOARD_NAME, "X6AR5xxY_mLED"), + }, + }, + { } + }, + .hook = quirk_edp_max_240hz_hook, + }, }; static struct intel_quirk intel_quirks[] = { diff --git a/drivers/gpu/drm/i915/display/intel_quirks.h b/drivers/gpu/drm/i915/display/intel_quirks.h index cafdebda75354..8fe3f3467106a 100644 --- a/drivers/gpu/drm/i915/display/intel_quirks.h +++ b/drivers/gpu/drm/i915/display/intel_quirks.h @@ -20,6 +20,7 @@ enum intel_quirk_id { QUIRK_LVDS_SSC_DISABLE, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK, QUIRK_FW_SYNC_LEN, + QUIRK_EDP_MAX_240HZ_HOOK, }; void intel_init_quirks(struct intel_display *display); -- 2.43.0