Move VRR enabling/disabling into a place where it also works for fastsets. With this we always start the transcoder up in non-VRR mode. Granted we already did that but for a very short period of time. But now that we might end up doing a bit more with the transcoder in non-VRR mode it seems prudent to also update the active timings as the transcoder changes its operating mode. crtc_state->vrr.enable still tracks whether VRR is actually enabled or not, but now we configure all the other VRR timing registers whenever VRR is possible (whether we actually enable it or not). crtc_state->vrr.flipline can now serve as our "is VRR possible" bit of state. I decided to leave the MSA timing ignore bit set all the time whether VRR is actually enabled or not. If the sink can figure out the timings with that information when VRR is active then surely it can also do it when VRR is inactive. v2: Protect intel_vrr_set_transcoder_timings() with HAS_VRR() Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230321135615.27338-1-ville.syrjala@linux.intel.com Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
30 lines
1.1 KiB
C
30 lines
1.1 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2019 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_VRR_H__
|
|
#define __INTEL_VRR_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct drm_connector_state;
|
|
struct intel_atomic_state;
|
|
struct intel_connector;
|
|
struct intel_crtc_state;
|
|
|
|
bool intel_vrr_is_capable(struct intel_connector *connector);
|
|
void intel_vrr_check_modeset(struct intel_atomic_state *state);
|
|
void intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
|
|
struct drm_connector_state *conn_state);
|
|
void intel_vrr_set_transcoder_timings(const struct intel_crtc_state *crtc_state);
|
|
void intel_vrr_enable(const struct intel_crtc_state *crtc_state);
|
|
void intel_vrr_send_push(const struct intel_crtc_state *crtc_state);
|
|
bool intel_vrr_is_push_sent(const struct intel_crtc_state *crtc_state);
|
|
void intel_vrr_disable(const struct intel_crtc_state *old_crtc_state);
|
|
void intel_vrr_get_config(struct intel_crtc_state *crtc_state);
|
|
int intel_vrr_vmax_vblank_start(const struct intel_crtc_state *crtc_state);
|
|
int intel_vrr_vmin_vblank_start(const struct intel_crtc_state *crtc_state);
|
|
|
|
#endif /* __INTEL_VRR_H__ */
|