@@ -12866,6 +12866,7 @@ static const struct drm_crtc_funcs intel_crtc_funcs = {
.atomic_destroy_state = intel_crtc_destroy_state,
.set_crc_source = intel_crtc_set_crc_source,
.verify_crc_source = intel_crtc_verify_crc_source,
+ .get_crc_sources = intel_crtc_get_crc_sources,
};
struct wait_rps_boost {
@@ -2163,11 +2163,13 @@ int intel_crtc_set_crc_source(struct drm_crtc *crtc, const char *source_name,
size_t *values_cnt);
int intel_crtc_verify_crc_source(struct drm_crtc *crtc,
const char *source_name, size_t *values_cnt);
+void intel_crtc_get_crc_sources(struct seq_file *m, struct drm_crtc *crtc);
void intel_crtc_disable_pipe_crc(struct intel_crtc *crtc);
void intel_crtc_enable_pipe_crc(struct intel_crtc *crtc);
#else
#define intel_crtc_set_crc_source NULL
#define intel_crtc_verify_crc_source NULL
+#define intel_crtc_get_crc_sources NULL
static inline void intel_crtc_disable_pipe_crc(struct intel_crtc *crtc)
{
}
@@ -1001,6 +1001,17 @@ intel_is_valid_crc_source(struct drm_i915_private *dev_priv,
return ivb_crc_source_valid(dev_priv, source);
}
+void intel_crtc_get_crc_sources(struct seq_file *m, struct drm_crtc *crtc)
+{
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
+ enum intel_pipe_crc_source source;
+
+ seq_puts(m, "[");
+ for (source = 0; source < INTEL_PIPE_CRC_SOURCE_MAX; source++)
+ if (intel_is_valid_crc_source(dev_priv, source) == 0)
+ seq_printf(m, "%s,", pipe_crc_source_name(source));
+ seq_puts(m, "auto] ");
+}
int intel_crtc_verify_crc_source(struct drm_crtc *crtc, const char *source_name,
size_t *values_cnt)
This patch implements get_crc_sources callback, which returns list of all the valid crc sources supported by driver in current platform. Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com> --- drivers/gpu/drm/i915/intel_display.c | 1 + drivers/gpu/drm/i915/intel_drv.h | 2 ++ drivers/gpu/drm/i915/intel_pipe_crc.c | 11 +++++++++++ 3 files changed, 14 insertions(+)