drm/i915/display: Add state checker for Adaptive Sync SDP
Enable infoframe and add state checker for Adaptive Sync SDP enablement. --v1: - crtc_state->infoframes.enable, to add on correct place holder. Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com> Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240322031157.3823909-8-mitulkumar.ajitkumar.golani@intel.com
This commit is contained in:
parent
a5bd5991cb
commit
abe1cd9ab5
@ -4820,6 +4820,17 @@ intel_compare_dp_vsc_sdp(const struct drm_dp_vsc_sdp *a,
|
||||
a->content_type == b->content_type;
|
||||
}
|
||||
|
||||
static bool
|
||||
intel_compare_dp_as_sdp(const struct drm_dp_as_sdp *a,
|
||||
const struct drm_dp_as_sdp *b)
|
||||
{
|
||||
return a->vtotal == b->vtotal &&
|
||||
a->target_rr == b->target_rr &&
|
||||
a->duration_incr_ms == b->duration_incr_ms &&
|
||||
a->duration_decr_ms == b->duration_decr_ms &&
|
||||
a->mode == b->mode;
|
||||
}
|
||||
|
||||
static bool
|
||||
intel_compare_buffer(const u8 *a, const u8 *b, size_t len)
|
||||
{
|
||||
@ -4890,6 +4901,30 @@ pipe_config_dp_vsc_sdp_mismatch(struct drm_printer *p, bool fastset,
|
||||
drm_dp_vsc_sdp_log(p, b);
|
||||
}
|
||||
|
||||
static void
|
||||
pipe_config_dp_as_sdp_mismatch(struct drm_i915_private *i915,
|
||||
bool fastset, const char *name,
|
||||
const struct drm_dp_as_sdp *a,
|
||||
const struct drm_dp_as_sdp *b)
|
||||
{
|
||||
struct drm_printer p;
|
||||
|
||||
if (fastset) {
|
||||
p = drm_dbg_printer(&i915->drm, DRM_UT_KMS, NULL);
|
||||
|
||||
drm_printf(&p, "fastset requirement not met in %s dp sdp\n", name);
|
||||
} else {
|
||||
p = drm_err_printer(&i915->drm, NULL);
|
||||
|
||||
drm_printf(&p, "mismatch in %s dp sdp\n", name);
|
||||
}
|
||||
|
||||
drm_printf(&p, "expected:\n");
|
||||
drm_dp_as_sdp_log(&p, a);
|
||||
drm_printf(&p, "found:\n");
|
||||
drm_dp_as_sdp_log(&p, b);
|
||||
}
|
||||
|
||||
/* Returns the length up to and including the last differing byte */
|
||||
static size_t
|
||||
memcmp_diff_len(const u8 *a, const u8 *b, size_t len)
|
||||
@ -5107,6 +5142,16 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define PIPE_CONF_CHECK_DP_AS_SDP(name) do { \
|
||||
if (!intel_compare_dp_as_sdp(¤t_config->infoframes.name, \
|
||||
&pipe_config->infoframes.name)) { \
|
||||
pipe_config_dp_as_sdp_mismatch(dev_priv, fastset, __stringify(name), \
|
||||
¤t_config->infoframes.name, \
|
||||
&pipe_config->infoframes.name); \
|
||||
ret = false; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define PIPE_CONF_CHECK_BUFFER(name, len) do { \
|
||||
BUILD_BUG_ON(sizeof(current_config->name) != (len)); \
|
||||
BUILD_BUG_ON(sizeof(pipe_config->name) != (len)); \
|
||||
@ -5288,6 +5333,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
|
||||
PIPE_CONF_CHECK_INFOFRAME(hdmi);
|
||||
PIPE_CONF_CHECK_INFOFRAME(drm);
|
||||
PIPE_CONF_CHECK_DP_VSC_SDP(vsc);
|
||||
PIPE_CONF_CHECK_DP_AS_SDP(as_sdp);
|
||||
|
||||
PIPE_CONF_CHECK_X(sync_mode_slaves_mask);
|
||||
PIPE_CONF_CHECK_I(master_transcoder);
|
||||
|
Loading…
x
Reference in New Issue
Block a user