Introduce a helper intel_panel_highest_vrefresh_mode() to get the highest refresh rate mode from the list of fixed modes for a connector.
Signed-off-by: Ankit Nautiyal <[email protected]> --- drivers/gpu/drm/i915/display/intel_panel.c | 15 +++++++++++++++ drivers/gpu/drm/i915/display/intel_panel.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c index 14c7eea8ccb1..6577c6bf5a88 100644 --- a/drivers/gpu/drm/i915/display/intel_panel.c +++ b/drivers/gpu/drm/i915/display/intel_panel.c @@ -158,6 +158,21 @@ intel_panel_highest_mode(struct intel_connector *connector, return best_mode; } +const struct drm_display_mode * +intel_panel_highest_vrefresh_mode(struct intel_connector *connector) +{ + const struct drm_display_mode *fixed_mode, *best_mode = NULL; + + /* pick the fixed_mode that has the highest vrefresh */ + list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) { + if (!best_mode || + drm_mode_vrefresh(fixed_mode) > drm_mode_vrefresh(best_mode)) + 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 23bd227826c9..fe4d80a41d4c 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_vrefresh_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
