[PATCH 11/12] drm/i915/panel: Add helper to get highest fixed mode
Nautiyal, Ankit K
ankit.k.nautiyal at intel.com
Mon Aug 18 06:15:23 UTC 2025
On 8/11/2025 8:52 PM, Jani Nikula wrote:
> On Thu, 07 Aug 2025, Ankit Nautiyal <ankit.k.nautiyal at intel.com> wrote:
>> Add intel_panel_highest_fixed_mode() to return the fixed mode with the
>> highest pixel clock. Unlike intel_panel_highest_mode(), this function
>> does not fall back to the adjusted mode and returns NULL if no fixed
>> modes are available.
>>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_panel.c | 13 +++++++++++++
>> drivers/gpu/drm/i915/display/intel_panel.h | 2 ++
>> 2 files changed, 15 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
>> index 2a20aaaaac39..ea4351d11e63 100644
>> --- a/drivers/gpu/drm/i915/display/intel_panel.c
>> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
>> @@ -158,6 +158,19 @@ intel_panel_highest_mode(struct intel_connector *connector,
>> return best_mode;
>> }
>>
>> +const struct drm_display_mode *
>> +intel_panel_highest_fixed_mode(struct intel_connector *connector)
>> +{
>> + const struct drm_display_mode *fixed_mode, *highest_mode = NULL;
>> +
>> + list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
>> + if (!highest_mode || fixed_mode->clock > highest_mode->clock)
>> + highest_mode = fixed_mode;
>> + }
>> +
>> + return highest_mode;
>> +}
> The difference in naming here does not adequately describe the
> difference in the functions.
>
> Or you could just make the single user of intel_panel_highest_mode()
> fall back to adjusted mode when the return value is NULL, and avoid that
> problem altogether.
Agreed. I can refactor the existing function and fix the caller to check
for NULL.
Also there is a fix me in the caller where we are using mode->clock
instead of mode->crtc_clock which can be fixed with the above refactor.
With the refactor if highest fixed mode is found, mode->clock can be
used, otherwise adjusted_mode->crtc_clock can be used.
Regards,
Ankit
>
> BR,
> Jani.
>
>> +
>> int intel_panel_get_modes(struct intel_connector *connector)
>> {
>> const struct drm_display_mode *fixed_mode;
>> diff --git a/drivers/gpu/drm/i915/display/intel_panel.h b/drivers/gpu/drm/i915/display/intel_panel.h
>> index 56a6412cf0fb..60f6873cdbaa 100644
>> --- a/drivers/gpu/drm/i915/display/intel_panel.h
>> +++ b/drivers/gpu/drm/i915/display/intel_panel.h
>> @@ -39,6 +39,8 @@ intel_panel_downclock_mode(struct intel_connector *connector,
>> const struct drm_display_mode *
>> intel_panel_highest_mode(struct intel_connector *connector,
>> const struct drm_display_mode *adjusted_mode);
>> +const struct drm_display_mode *
>> +intel_panel_highest_fixed_mode(struct intel_connector *connector);
>> int intel_panel_get_modes(struct intel_connector *connector);
>> enum drrs_type intel_panel_drrs_type(struct intel_connector *connector);
>> enum drm_mode_status
More information about the Intel-xe
mailing list