On Tue, 03 May 2022, Ville Syrjala <ville.syrj...@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrj...@linux.intel.com>
>
> Add a function to get the fixed_mode with the highest clock.
> The plan is to use this for the link bw calculation on seamless
> DRRS panels so that we alwasy end up with the same link params
> regardless of the requested refresh rate. This will allow fastset
> to do seamless refresh rate changes based on userspace request
> instead of having to go for a full modeset.
>
> TODO: the function name isn't great

Agreed.

> Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nik...@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_panel.c | 15 +++++++++++++++
>  drivers/gpu/drm/i915/display/intel_panel.h |  3 +++
>  2 files changed, 18 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c 
> b/drivers/gpu/drm/i915/display/intel_panel.c
> index 03398feb6676..0121d38fc36c 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.c
> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
> @@ -89,6 +89,21 @@ intel_panel_downclock_mode(struct intel_connector 
> *connector,
>       return best_mode;
>  }
>  
> +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 *fixed_mode, *best_mode = adjusted_mode;
> +
> +     /* 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;
> +     }
> +
> +     return best_mode;
> +}
> +
>  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 2e32bb728beb..8a3b84a53c44 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.h
> +++ b/drivers/gpu/drm/i915/display/intel_panel.h
> @@ -31,6 +31,9 @@ intel_panel_fixed_mode(struct intel_connector *connector,
>  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);
>  int intel_panel_get_modes(struct intel_connector *connector);
>  enum drrs_type intel_panel_drrs_type(struct intel_connector *connector);
>  enum drm_mode_status

-- 
Jani Nikula, Intel Open Source Graphics Center

Reply via email to