]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
hantro: Remove incorrect HEVC SPS validation
authorEzequiel Garcia <ezequiel@vanguardiasur.com.ar>
Mon, 18 Jul 2022 21:41:23 +0000 (18:41 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Aug 2022 12:41:12 +0000 (14:41 +0200)
[ Upstream commit df9ec2fc8e70e01532fd9161cd98711969561ff6 ]

Currently, the driver tries to validat the HEVC SPS
against the CAPTURE queue format (i.e. the decoded format).
This is not correct, because typically the SPS control is set
before the CAPTURE queue is negotiated.

Fixes: 135ad96cb4d6b ("media: hantro: Be more accurate on pixel formats step_width constraints")
Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/staging/media/hantro/hantro_drv.c
drivers/staging/media/hantro/hantro_hevc.c
drivers/staging/media/hantro/hantro_hw.h

index 01d33dcb0467908d9b7c95134b3d458f6b4b66fd..ac232b5f7825cc2474e68f5c33ca992ef8974178 100644 (file)
@@ -253,11 +253,6 @@ queue_init(void *priv, struct vb2_queue *src_vq, struct vb2_queue *dst_vq)
 
 static int hantro_try_ctrl(struct v4l2_ctrl *ctrl)
 {
-       struct hantro_ctx *ctx;
-
-       ctx = container_of(ctrl->handler,
-                          struct hantro_ctx, ctrl_handler);
-
        if (ctrl->id == V4L2_CID_STATELESS_H264_SPS) {
                const struct v4l2_ctrl_h264_sps *sps = ctrl->p_new.p_h264_sps;
 
@@ -273,7 +268,12 @@ static int hantro_try_ctrl(struct v4l2_ctrl *ctrl)
        } else if (ctrl->id == V4L2_CID_MPEG_VIDEO_HEVC_SPS) {
                const struct v4l2_ctrl_hevc_sps *sps = ctrl->p_new.p_hevc_sps;
 
-               return hantro_hevc_validate_sps(ctx, sps);
+               if (sps->bit_depth_luma_minus8 != sps->bit_depth_chroma_minus8)
+                       /* Luma and chroma bit depth mismatch */
+                       return -EINVAL;
+               if (sps->bit_depth_luma_minus8 != 0)
+                       /* Only 8-bit is supported */
+                       return -EINVAL;
        } else if (ctrl->id == V4L2_CID_STATELESS_VP9_FRAME) {
                const struct v4l2_ctrl_vp9_frame *dec_params = ctrl->p_new.p_vp9_frame;
 
index 4f7e2acb46ec45fc3984d9698eb07e51d9464fb9..df1f81952bba195722866132124be695086f736a 100644 (file)
@@ -154,15 +154,8 @@ err_free_tile_buffers:
        return -ENOMEM;
 }
 
-int hantro_hevc_validate_sps(struct hantro_ctx *ctx, const struct v4l2_ctrl_hevc_sps *sps)
+static int hantro_hevc_validate_sps(struct hantro_ctx *ctx, const struct v4l2_ctrl_hevc_sps *sps)
 {
-       if (sps->bit_depth_luma_minus8 != sps->bit_depth_chroma_minus8)
-               /* Luma and chroma bit depth mismatch */
-               return -EINVAL;
-       if (sps->bit_depth_luma_minus8 != 0)
-               /* Only 8-bit is supported */
-               return -EINVAL;
-
        /*
         * for tile pixel format check if the width and height match
         * hardware constraints
index 457eb8bb6dc2618d3e20ab8f165000f33fe9459d..68c313864b065ab50afed7e4f85817fdf2bde583 100644 (file)
@@ -353,7 +353,6 @@ int hantro_hevc_dec_prepare_run(struct hantro_ctx *ctx);
 void hantro_hevc_ref_init(struct hantro_ctx *ctx);
 dma_addr_t hantro_hevc_get_ref_buf(struct hantro_ctx *ctx, s32 poc);
 int hantro_hevc_add_ref_buf(struct hantro_ctx *ctx, int poc, dma_addr_t addr);
-int hantro_hevc_validate_sps(struct hantro_ctx *ctx, const struct v4l2_ctrl_hevc_sps *sps);
 
 
 static inline unsigned short hantro_vp9_num_sbs(unsigned short dimension)