[RFC PATCH 1/1] drm/i915/display: Avoid unsupported 300Hz output mode on a TUXEDO device

Tim Guttzeit t.guttzeit at tuxedocomputers.com
Thu Jul 17 08:29:45 UTC 2025



Am 17.07.25 um 09:30 schrieb Murthy, Arun R:
> 
>> -----Original Message-----
>> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of 
>> Werner
>> Sembach
>> Sent: Saturday, July 5, 2025 12:34 AM
>> To: Jani Nikula <jani.nikula at linux.intel.com>; Vivi, Rodrigo
>> <rodrigo.vivi at intel.com>; Joonas Lahtinen 
>> <joonas.lahtinen at linux.intel.com>;
>> Tvrtko Ursulin <tursulin at ursulin.net>; David Airlie <airlied at gmail.com>;
>> Simona Vetter <simona at ffwll.ch>
>> Cc: Tim Guttzeit <t.guttzeit at tuxedocomputers.com>; Werner Sembach
>> <wse at tuxedocomputers.com>; intel-gfx at lists.freedesktop.org; intel-
>> xe at lists.freedesktop.org; dri-devel at lists.freedesktop.org; linux-
>> kernel at vger.kernel.org
>> Subject: [RFC PATCH 1/1] drm/i915/display: Avoid unsupported 300Hz output
>> mode on a TUXEDO device
>>
>> From: Tim Guttzeit <t.guttzeit at 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 
>> rates
>> causes screen flicker.
>>
>> Signed-off-by: Tim Guttzeit <t.guttzeit at tuxedocomputers.com>
>> Co-developed-by: Werner Sembach <wse at tuxedocomputers.com>
>> Signed-off-by: Werner Sembach <wse at 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;
>> +
> 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.
> 

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
> 
> 
> 


More information about the Intel-gfx mailing list