media: imx-jpeg: Refactor function mxc_jpeg_parse
authorMing Qian <ming.qian@nxp.com>
Wed, 23 Mar 2022 09:05:54 +0000 (10:05 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Aug 2022 12:23:21 +0000 (14:23 +0200)
[ Upstream commit 8dd504a3a0a5f73b4c137ce3afc35936a4ecd871 ]

Refine code to support dynamic resolution change

Signed-off-by: Ming Qian <ming.qian@nxp.com>
Reviewed-by: Mirela Rabulea <mirela.rabulea@nxp.com>
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/media/platform/imx-jpeg/mxc-jpeg.c

index 2d0c1307180f1c50ee1131fef98f95e76fcd952b..5064a994a42eae907735248f6ec76cda3c755b1c 100644 (file)
@@ -1236,8 +1236,7 @@ static void mxc_jpeg_sizeimage(struct mxc_jpeg_q_data *q)
        }
 }
 
-static int mxc_jpeg_parse(struct mxc_jpeg_ctx *ctx,
-                         u8 *src_addr, u32 size, bool *dht_needed)
+static int mxc_jpeg_parse(struct mxc_jpeg_ctx *ctx, struct vb2_buffer *vb)
 {
        struct device *dev = ctx->mxc_jpeg->dev;
        struct mxc_jpeg_q_data *q_data_out, *q_data_cap;
@@ -1247,6 +1246,9 @@ static int mxc_jpeg_parse(struct mxc_jpeg_ctx *ctx,
        struct v4l2_jpeg_header header;
        struct mxc_jpeg_sof *psof = NULL;
        struct mxc_jpeg_sos *psos = NULL;
+       struct mxc_jpeg_src_buf *jpeg_src_buf = vb2_to_mxc_buf(vb);
+       u8 *src_addr = (u8 *)vb2_plane_vaddr(vb, 0);
+       u32 size = vb2_get_plane_payload(vb, 0);
        int ret;
 
        memset(&header, 0, sizeof(header));
@@ -1257,7 +1259,7 @@ static int mxc_jpeg_parse(struct mxc_jpeg_ctx *ctx,
        }
 
        /* if DHT marker present, no need to inject default one */
-       *dht_needed = (header.num_dht == 0);
+       jpeg_src_buf->dht_needed = (header.num_dht == 0);
 
        q_data_out = mxc_jpeg_get_q_data(ctx,
                                         V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE);
@@ -1372,10 +1374,7 @@ static void mxc_jpeg_buf_queue(struct vb2_buffer *vb)
 
        jpeg_src_buf = vb2_to_mxc_buf(vb);
        jpeg_src_buf->jpeg_parse_error = false;
-       ret = mxc_jpeg_parse(ctx,
-                            (u8 *)vb2_plane_vaddr(vb, 0),
-                            vb2_get_plane_payload(vb, 0),
-                            &jpeg_src_buf->dht_needed);
+       ret = mxc_jpeg_parse(ctx, vb);
        if (ret)
                jpeg_src_buf->jpeg_parse_error = true;