[PATCH 3/5] drm/crc: Add verify_crc_source callback
Mahesh Kumar
mahesh1.kumar at intel.com
Mon Jun 18 14:02:53 UTC 2018
This patch adds a new callback function "verify_crc_source" which will
be used during setting the crc source control and while opening data
node for crc reading. This will help in avoiding setting of wrong string
for source.
Signed-off-by: Mahesh Kumar <mahesh1.kumar at intel.com>
---
drivers/gpu/drm/drm_debugfs_crc.c | 13 +++++++++++++
include/drm/drm_crtc.h | 14 ++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/drivers/gpu/drm/drm_debugfs_crc.c b/drivers/gpu/drm/drm_debugfs_crc.c
index 4a4ff2500c57..af024c198c49 100644
--- a/drivers/gpu/drm/drm_debugfs_crc.c
+++ b/drivers/gpu/drm/drm_debugfs_crc.c
@@ -87,6 +87,7 @@ static ssize_t crc_control_write(struct file *file, const char __user *ubuf,
struct drm_crtc *crtc = m->private;
struct drm_crtc_crc *crc = &crtc->crc;
char *source;
+ int ret = 0;
if (len == 0)
return 0;
@@ -104,6 +105,12 @@ static ssize_t crc_control_write(struct file *file, const char __user *ubuf,
if (source[len] == '\n')
source[len] = '\0';
+ if (crtc->funcs->verify_crc_source) {
+ ret = crtc->funcs->verify_crc_source(crtc, source);
+ if (ret)
+ return ret;
+ }
+
spin_lock_irq(&crc->lock);
if (crc->opened) {
@@ -177,6 +184,12 @@ static int crtc_crc_open(struct inode *inode, struct file *filep)
if (ret)
return ret;
+ if (crtc->funcs->verify_crc_source) {
+ ret = crtc->funcs->verify_crc_source(crtc, crc->source);
+ if (ret)
+ return ret;
+ }
+
entries = kcalloc(DRM_CRC_ENTRIES_NR, sizeof(*entries), GFP_KERNEL);
if (!entries) {
ret = -ENOMEM;
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 23eddbccab10..5135b392b882 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -661,6 +661,20 @@ struct drm_crtc_funcs {
*/
int (*set_crc_source)(struct drm_crtc *crtc, const char *source,
size_t *values_cnt);
+ /**
+ * @verify_crc_source:
+ *
+ * verifies the source of CRC checksums of frames before setting the
+ * source for CRC and during crc open.
+ *
+ * This callback is optional if the driver does not support any CRC
+ * generation functionality.
+ *
+ * RETURNS:
+ *
+ * 0 on success or a negative error code on failure.
+ */
+ int (*verify_crc_source)(struct drm_crtc *crtc, const char *source);
/**
* @atomic_print_state:
--
2.16.2
More information about the Intel-gfx-trybot
mailing list