VIDIOC_S_STD should not return an error if the value is identical
to the current one.
This error was highlighted by the v4l2-compliance test.

Signed-off-by: Benoit Parrot <bpar...@ti.com>
---
 drivers/media/platform/am437x/am437x-vpfe.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/media/platform/am437x/am437x-vpfe.c 
b/drivers/media/platform/am437x/am437x-vpfe.c
index 52f7fc6e11dd..ac759c066d00 100644
--- a/drivers/media/platform/am437x/am437x-vpfe.c
+++ b/drivers/media/platform/am437x/am437x-vpfe.c
@@ -1822,6 +1822,10 @@ static int vpfe_s_std(struct file *file, void *priv, 
v4l2_std_id std_id)
        if (!(sdinfo->inputs[0].capabilities & V4L2_IN_CAP_STD))
                return -ENODATA;
 
+       /* if trying to set the same std then nothing to do */
+       if (vpfe_standards[vpfe->std_index].std_id == std_id)
+               return 0;
+
        /* If streaming is started, return error */
        if (vb2_is_busy(&vpfe->buffer_queue)) {
                vpfe_err(vpfe, "%s device busy\n", __func__);
-- 
2.17.1

Reply via email to