Rename 'v4l2_fwht_default_fmt' to 'v4l2_fwht_find_nth_fmt'
and add a function 'v4l2_fwht_validate_fmt' to check if
a format info matches the parameters.
This function will also be used to validate the stateless
params when adding support for stateless codecs.

Signed-off-by: Dafna Hirschfeld <daf...@gmail.com>
---
 .../media/platform/vicodec/codec-v4l2-fwht.c  | 22 ++++++++++++++-----
 .../media/platform/vicodec/codec-v4l2-fwht.h  |  5 ++++-
 drivers/media/platform/vicodec/vicodec-core.c |  4 ++--
 3 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/vicodec/codec-v4l2-fwht.c 
b/drivers/media/platform/vicodec/codec-v4l2-fwht.c
index f15d76fae45c..372ed95e1a1f 100644
--- a/drivers/media/platform/vicodec/codec-v4l2-fwht.c
+++ b/drivers/media/platform/vicodec/codec-v4l2-fwht.c
@@ -37,7 +37,19 @@ static const struct v4l2_fwht_pixfmt_info 
v4l2_fwht_pixfmts[] = {
        { V4L2_PIX_FMT_GREY,    1, 1, 1, 1, 0, 1, 1, 1, 1, FWHT_FL_PIXENC_RGB},
 };
 
-const struct v4l2_fwht_pixfmt_info *v4l2_fwht_default_fmt(u32 width_div,
+bool v4l2_fwht_validate_fmt(const struct v4l2_fwht_pixfmt_info *info,
+                           u32 width_div, u32 height_div, u32 components_num,
+                           u32 pixenc)
+{
+       if (info->width_div == width_div &&
+           info->height_div == height_div &&
+           (!pixenc || info->pixenc == pixenc) &&
+           info->components_num == components_num)
+               return true;
+       return false;
+}
+
+const struct v4l2_fwht_pixfmt_info *v4l2_fwht_find_nth_fmt(u32 width_div,
                                                          u32 height_div,
                                                          u32 components_num,
                                                          u32 pixenc,
@@ -46,10 +58,10 @@ const struct v4l2_fwht_pixfmt_info 
*v4l2_fwht_default_fmt(u32 width_div,
        unsigned int i;
 
        for (i = 0; i < ARRAY_SIZE(v4l2_fwht_pixfmts); i++) {
-               if (v4l2_fwht_pixfmts[i].width_div == width_div &&
-                   v4l2_fwht_pixfmts[i].height_div == height_div &&
-                   (!pixenc || v4l2_fwht_pixfmts[i].pixenc == pixenc) &&
-                   v4l2_fwht_pixfmts[i].components_num == components_num) {
+               bool is_valid = v4l2_fwht_validate_fmt(&v4l2_fwht_pixfmts[i],
+                                                      width_div, height_div,
+                                                      components_num, pixenc);
+               if (is_valid) {
                        if (start_idx == 0)
                                return v4l2_fwht_pixfmts + i;
                        start_idx--;
diff --git a/drivers/media/platform/vicodec/codec-v4l2-fwht.h 
b/drivers/media/platform/vicodec/codec-v4l2-fwht.h
index 53eba97ebc83..b59503d4049a 100644
--- a/drivers/media/platform/vicodec/codec-v4l2-fwht.h
+++ b/drivers/media/platform/vicodec/codec-v4l2-fwht.h
@@ -48,7 +48,10 @@ struct v4l2_fwht_state {
 
 const struct v4l2_fwht_pixfmt_info *v4l2_fwht_find_pixfmt(u32 pixelformat);
 const struct v4l2_fwht_pixfmt_info *v4l2_fwht_get_pixfmt(u32 idx);
-const struct v4l2_fwht_pixfmt_info *v4l2_fwht_default_fmt(u32 width_div,
+bool v4l2_fwht_validate_fmt(const struct v4l2_fwht_pixfmt_info *info,
+                           u32 width_div, u32 height_div, u32 components_num,
+                           u32 pixenc);
+const struct v4l2_fwht_pixfmt_info *v4l2_fwht_find_nth_fmt(u32 width_div,
                                                          u32 height_div,
                                                          u32 components_num,
                                                          u32 pixenc,
diff --git a/drivers/media/platform/vicodec/vicodec-core.c 
b/drivers/media/platform/vicodec/vicodec-core.c
index 55b003de43a3..d20e829274ae 100644
--- a/drivers/media/platform/vicodec/vicodec-core.c
+++ b/drivers/media/platform/vicodec/vicodec-core.c
@@ -402,7 +402,7 @@ info_from_header(const struct fwht_cframe_hdr *p_hdr)
                                FWHT_FL_COMPONENTS_NUM_OFFSET);
                pixenc = (flags & FWHT_FL_PIXENC_MSK);
        }
-       return v4l2_fwht_default_fmt(width_div, height_div,
+       return v4l2_fwht_find_nth_fmt(width_div, height_div,
                                     components_num, pixenc, 0);
 }
 
@@ -623,7 +623,7 @@ static int enum_fmt(struct v4l2_fmtdesc *f, struct 
vicodec_ctx *ctx,
                if (!info || ctx->is_enc)
                        info = v4l2_fwht_get_pixfmt(f->index);
                else
-                       info = v4l2_fwht_default_fmt(info->width_div,
+                       info = v4l2_fwht_find_nth_fmt(info->width_div,
                                                     info->height_div,
                                                     info->components_num,
                                                     info->pixenc,
-- 
2.17.1

Reply via email to