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 Reviewed-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220907091057.11572-15-ville.syrjala@linux.intel.com
53 lines
2 KiB
C
53 lines
2 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2019 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_PANEL_H__
|
|
#define __INTEL_PANEL_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
enum drm_connector_status;
|
|
enum drrs_type;
|
|
struct drm_connector;
|
|
struct drm_connector_state;
|
|
struct drm_display_mode;
|
|
struct drm_i915_private;
|
|
struct intel_connector;
|
|
struct intel_crtc_state;
|
|
struct intel_encoder;
|
|
|
|
int intel_panel_init(struct intel_connector *connector);
|
|
void intel_panel_fini(struct intel_connector *connector);
|
|
enum drm_connector_status
|
|
intel_panel_detect(struct drm_connector *connector, bool force);
|
|
bool intel_panel_use_ssc(struct drm_i915_private *i915);
|
|
const struct drm_display_mode *
|
|
intel_panel_preferred_fixed_mode(struct intel_connector *connector);
|
|
const struct drm_display_mode *
|
|
intel_panel_fixed_mode(struct intel_connector *connector,
|
|
const struct drm_display_mode *mode);
|
|
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
|
|
intel_panel_mode_valid(struct intel_connector *connector,
|
|
const struct drm_display_mode *mode);
|
|
int intel_panel_fitting(struct intel_crtc_state *crtc_state,
|
|
const struct drm_connector_state *conn_state);
|
|
int intel_panel_compute_config(struct intel_connector *connector,
|
|
struct drm_display_mode *adjusted_mode);
|
|
void intel_panel_add_edid_fixed_modes(struct intel_connector *connector,
|
|
bool has_drrs, bool has_vrr);
|
|
void intel_panel_add_vbt_lfp_fixed_mode(struct intel_connector *connector);
|
|
void intel_panel_add_vbt_sdvo_fixed_mode(struct intel_connector *connector);
|
|
void intel_panel_add_encoder_fixed_mode(struct intel_connector *connector,
|
|
struct intel_encoder *encoder);
|
|
|
|
#endif /* __INTEL_PANEL_H__ */
|