media: hantro: Simplify postprocessor
authorEzequiel Garcia <ezequiel@collabora.com>
Tue, 16 Nov 2021 14:38:33 +0000 (14:38 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Aug 2022 12:23:31 +0000 (14:23 +0200)
[ Upstream commit 53a3e71095c572333ceea30762565dbedec951ca ]

Add a 'postprocessed' boolean property to struct hantro_fmt
to signal that a format is produced by the post-processor.
This will allow to introduce the G2 post-processor in a simple way.

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/staging/media/hantro/hantro.h
drivers/staging/media/hantro/hantro_postproc.c
drivers/staging/media/hantro/imx8m_vpu_hw.c
drivers/staging/media/hantro/rockchip_vpu_hw.c
drivers/staging/media/hantro/sama5d4_vdec_hw.c

index c2e2dca..88792c8 100644 (file)
@@ -262,6 +262,7 @@ struct hantro_ctx {
  * @max_depth: Maximum depth, for bitstream formats
  * @enc_fmt:   Format identifier for encoder registers.
  * @frmsize:   Supported range of frame sizes (only for bitstream formats).
+ * @postprocessed: Indicates if this format needs the post-processor.
  */
 struct hantro_fmt {
        char *name;
@@ -271,6 +272,7 @@ struct hantro_fmt {
        int max_depth;
        enum hantro_enc_fmt enc_fmt;
        struct v4l2_frmsize_stepwise frmsize;
+       bool postprocessed;
 };
 
 struct hantro_reg {
index 0784215..46434c9 100644 (file)
@@ -53,15 +53,9 @@ const struct hantro_postproc_regs hantro_g1_postproc_regs = {
 bool hantro_needs_postproc(const struct hantro_ctx *ctx,
                           const struct hantro_fmt *fmt)
 {
-       struct hantro_dev *vpu = ctx->dev;
-
        if (ctx->is_encoder)
                return false;
-
-       if (!vpu->variant->postproc_fmts)
-               return false;
-
-       return fmt->fourcc != V4L2_PIX_FMT_NV12;
+       return fmt->postprocessed;
 }
 
 void hantro_postproc_enable(struct hantro_ctx *ctx)
index ea919bf..b692b74 100644 (file)
@@ -82,6 +82,7 @@ static const struct hantro_fmt imx8m_vpu_postproc_fmts[] = {
        {
                .fourcc = V4L2_PIX_FMT_YUYV,
                .codec_mode = HANTRO_MODE_NONE,
+               .postprocessed = true,
        },
 };
 
index 0c22039..543dc4a 100644 (file)
@@ -62,6 +62,7 @@ static const struct hantro_fmt rockchip_vpu1_postproc_fmts[] = {
        {
                .fourcc = V4L2_PIX_FMT_YUYV,
                .codec_mode = HANTRO_MODE_NONE,
+               .postprocessed = true,
        },
 };
 
index 9c3b8cd..9943200 100644 (file)
@@ -15,6 +15,7 @@ static const struct hantro_fmt sama5d4_vdec_postproc_fmts[] = {
        {
                .fourcc = V4L2_PIX_FMT_YUYV,
                .codec_mode = HANTRO_MODE_NONE,
+               .postprocessed = true,
        },
 };