Commit 6b627613 authored by Jouni Högander's avatar Jouni Högander

drm/i915/display: Ignore only psr specific part of vsc sdp

Pipe config check is currently ignoring vsc sdp changes completely
if psr is enabled. We want to ignore only PSR part of it as there
might be changes in colorimetry data. Also read back vsc_sdp when psr is
used.
Signed-off-by: default avatarJouni Högander <jouni.hogander@intel.com>
Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Tested-by: default avatarShawn Lee <shawn.c.lee@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231220103609.1384523-6-jouni.hogander@intel.com
parent fde53fa1
...@@ -4764,7 +4764,11 @@ static bool ...@@ -4764,7 +4764,11 @@ static bool
intel_compare_dp_vsc_sdp(const struct drm_dp_vsc_sdp *a, intel_compare_dp_vsc_sdp(const struct drm_dp_vsc_sdp *a,
const struct drm_dp_vsc_sdp *b) const struct drm_dp_vsc_sdp *b)
{ {
return memcmp(a, b, sizeof(*a)) == 0; return a->pixelformat == b->pixelformat &&
a->colorimetry == b->colorimetry &&
a->bpc == b->bpc &&
a->dynamic_range == b->dynamic_range &&
a->content_type == b->content_type;
} }
static bool static bool
...@@ -5045,8 +5049,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config, ...@@ -5045,8 +5049,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
} while (0) } while (0)
#define PIPE_CONF_CHECK_DP_VSC_SDP(name) do { \ #define PIPE_CONF_CHECK_DP_VSC_SDP(name) do { \
if (!current_config->has_psr && !pipe_config->has_psr && \ if (!intel_compare_dp_vsc_sdp(&current_config->infoframes.name, \
!intel_compare_dp_vsc_sdp(&current_config->infoframes.name, \
&pipe_config->infoframes.name)) { \ &pipe_config->infoframes.name)) { \
pipe_config_dp_vsc_sdp_mismatch(dev_priv, fastset, __stringify(name), \ pipe_config_dp_vsc_sdp_mismatch(dev_priv, fastset, __stringify(name), \
&current_config->infoframes.name, \ &current_config->infoframes.name, \
......
...@@ -4425,10 +4425,6 @@ static void intel_read_dp_vsc_sdp(struct intel_encoder *encoder, ...@@ -4425,10 +4425,6 @@ static void intel_read_dp_vsc_sdp(struct intel_encoder *encoder,
struct dp_sdp sdp = {}; struct dp_sdp sdp = {};
int ret; int ret;
/* When PSR is enabled, VSC SDP is handled by PSR routine */
if (crtc_state->has_psr)
return;
if ((crtc_state->infoframes.enable & if ((crtc_state->infoframes.enable &
intel_hdmi_infoframe_enable(type)) == 0) intel_hdmi_infoframe_enable(type)) == 0)
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment