From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
Subject: Re: [PATCH 14/15] drm/i915/panel: Refactor helper to get highest fixed mode
Date: Thu, 11 Sep 2025 17:37:23 +0300 [thread overview]
Message-ID: <aMLeo8EirLaPa940@intel.com> (raw)
In-Reply-To: <20250911024554.692469-15-ankit.k.nautiyal@intel.com>
On Thu, Sep 11, 2025 at 08:15:53AM +0530, Ankit Nautiyal wrote:
> Refactor intel_panel_highest_mode() to return the fixed mode with the
> highest pixel clock, removing the fallback to the adjusted mode. This makes
> the function semantics clearer and better suited for future use cases where
> fallback is not desirable.
>
> Update the caller in intel_dp_mode_clock() to handle the NULL case
> explicitly by falling back to the adjusted mode's crtc_clock. This also
> addresses the existing FIXME comment about ambiguity between clock and
> crtc_clock, by using mode->clock for fixed modes and mode->crtc_clock for
> adjusted modes.
>
> v2: Avoid introducing a new function and refactor existing one instead.
> (Jani).
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dp.c | 14 +++++++++-----
> drivers/gpu/drm/i915/display/intel_panel.c | 11 +++++------
> drivers/gpu/drm/i915/display/intel_panel.h | 3 +--
> 3 files changed, 15 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 83c46e4680b3..f74ac98062d4 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1760,11 +1760,15 @@ static int intel_dp_mode_clock(const struct intel_crtc_state *crtc_state,
> struct intel_connector *connector = to_intel_connector(conn_state->connector);
> const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
>
> - /* FIXME a bit of a mess wrt clock vs. crtc_clock */
> - if (has_seamless_m_n(connector))
> - return intel_panel_highest_mode(connector, adjusted_mode)->clock;
> - else
> - return adjusted_mode->crtc_clock;
> + if (has_seamless_m_n(connector)) {
> + const struct drm_display_mode *highest_mode;
> +
> + highest_mode = intel_panel_highest_mode(connector);
> + if (highest_mode)
> + return highest_mode->clock;
> + }
> +
> + return adjusted_mode->crtc_clock;
> }
>
> /* Optimize link config in order: max bpp, min clock, min lanes */
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
> index 2a20aaaaac39..ac0f04073ecb 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.c
> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
> @@ -144,18 +144,17 @@ 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)
> +intel_panel_highest_mode(struct intel_connector *connector)
> {
> - const struct drm_display_mode *fixed_mode, *best_mode = adjusted_mode;
> + const struct drm_display_mode *fixed_mode, *highest_mode = NULL;
>
> /* pick the fixed_mode that has the highest clock */
> list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
> - if (fixed_mode->clock > best_mode->clock)
> - best_mode = fixed_mode;
> + if (!highest_mode || fixed_mode->clock > highest_mode->clock)
> + highest_mode = fixed_mode;
This looks broken now as it will always return some kind of mode
from the list, but whether or not it's better than the adjusted_mode
is no logner guaranteed.
> }
>
> - return best_mode;
> + return highest_mode;
> }
>
> int intel_panel_get_modes(struct intel_connector *connector)
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.h b/drivers/gpu/drm/i915/display/intel_panel.h
> index 56a6412cf0fb..8a17600e46a3 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.h
> +++ b/drivers/gpu/drm/i915/display/intel_panel.h
> @@ -37,8 +37,7 @@ const struct drm_display_mode *
> intel_panel_downclock_mode(struct intel_connector *connector,
> const struct drm_display_mode *adjusted_mode);
> const struct drm_display_mode *
> -intel_panel_highest_mode(struct intel_connector *connector,
> - const struct drm_display_mode *adjusted_mode);
> +intel_panel_highest_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
> --
> 2.45.2
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2025-09-11 14:37 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-11 2:45 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
2025-09-11 2:45 ` [PATCH 01/15] drm/i915/vrr: Use crtc_vsync_start/end for computing vrr.vsync_start/end Ankit Nautiyal
2025-09-11 2:45 ` [PATCH 02/15] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling Ankit Nautiyal
2025-09-11 2:45 ` [PATCH 03/15] drm/i915/skl_watermark: Pass linetime as argument to latency helpers Ankit Nautiyal
2025-09-11 13:58 ` Ville Syrjälä
2025-09-14 6:00 ` Nautiyal, Ankit K
2025-09-11 2:45 ` [PATCH 04/15] drm/i915/skl_scaler: Introduce helper for chroma downscale factor Ankit Nautiyal
2025-09-11 2:45 ` [PATCH 05/15] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies Ankit Nautiyal
2025-09-11 14:01 ` Ville Syrjälä
2025-09-14 6:02 ` Nautiyal, Ankit K
2025-09-11 2:45 ` [PATCH 06/15] drm/i915/dp: Add SDP latency computation helper Ankit Nautiyal
2025-09-11 14:14 ` Ville Syrjälä
2025-09-14 6:03 ` Nautiyal, Ankit K
2025-09-11 2:45 ` [PATCH 07/15] drm/i915/alpm: Add function to compute max link-wake latency Ankit Nautiyal
2025-09-11 2:45 ` [PATCH 08/15] drm/i915/vrr: Use vrr.sync_start for getting vtotal Ankit Nautiyal
2025-09-11 2:45 ` [PATCH 09/15] drm/i915/display: Add guardband check for feature latencies Ankit Nautiyal
2025-09-11 2:45 ` [PATCH 10/15] drm/i915/skl_watermark: Remove redundant latency checks from vblank validation Ankit Nautiyal
2025-09-11 14:22 ` Ville Syrjälä
2025-09-14 6:04 ` Nautiyal, Ankit K
2025-09-11 2:45 ` [PATCH 11/15] drm/i915/display: Use vrr.guardband to derive vblank_start Ankit Nautiyal
2025-09-11 14:25 ` Ville Syrjälä
2025-09-14 5:59 ` Nautiyal, Ankit K
2025-09-15 12:32 ` Ville Syrjälä
2025-09-16 14:30 ` Nautiyal, Ankit K
2025-09-16 14:38 ` Nautiyal, Ankit K
2025-09-16 18:56 ` Ville Syrjälä
2025-09-17 10:38 ` Nautiyal, Ankit K
2025-09-17 12:36 ` Ville Syrjälä
2025-09-17 10:51 ` Ville Syrjälä
2025-09-17 12:07 ` Shankar, Uma
2025-09-17 20:51 ` Ville Syrjälä
2025-09-17 21:12 ` Ville Syrjälä
2025-09-11 2:45 ` [PATCH 12/15] drm/i915/vrr: Introduce helper to compute min static guardband Ankit Nautiyal
2025-09-11 2:45 ` [PATCH 13/15] drm/i915/display: Use optimized guardband to set vblank start Ankit Nautiyal
2025-09-11 2:45 ` [PATCH 14/15] drm/i915/panel: Refactor helper to get highest fixed mode Ankit Nautiyal
2025-09-11 14:37 ` Ville Syrjälä [this message]
2025-09-14 6:08 ` Nautiyal, Ankit K
2025-09-11 2:45 ` [PATCH 15/15] drm/i915/vrr: Fix seamless_mn drrs for PTL Ankit Nautiyal
2025-09-11 14:41 ` Ville Syrjälä
2025-09-14 6:07 ` Nautiyal, Ankit K
2025-09-15 13:25 ` Ville Syrjälä
2025-09-11 3:11 ` ✓ CI.KUnit: success for Optimize vrr.guardband and fix LRR (rev11) Patchwork
2025-09-11 3:47 ` ✓ Xe.CI.BAT: " Patchwork
2025-09-11 6:06 ` ✓ i915.CI.BAT: success for Optimize vrr.guardband and fix LRR (rev10) Patchwork
2025-09-11 9:27 ` ✓ Xe.CI.Full: success for Optimize vrr.guardband and fix LRR (rev11) Patchwork
2025-09-11 19:16 ` ✗ i915.CI.Full: failure for Optimize vrr.guardband and fix LRR (rev10) Patchwork
2025-09-12 14:03 ` [PATCH 00/15] Optimize vrr.guardband and fix LRR Ville Syrjälä
2025-09-14 6:24 ` Nautiyal, Ankit K
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aMLeo8EirLaPa940@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=ankit.k.nautiyal@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=mitulkumar.ajitkumar.golani@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.