From 035b6b6507d747577b7039ff11f50021e65fc0d1 Mon Sep 17 00:00:00 2001 From: Ming Qian <ming.qian@nxp.com> Date: Wed, 11 May 2022 09:11:22 +0800 Subject: [PATCH] LF-5926: media: imx-jpeg: Add soft reset after frame done if don't soft reset the codec for each frame, there may be two problems: 1. the decoder may hang 2. the decoded picture may be incorrect Signed-off-by: Ming Qian <ming.qian@nxp.com> Reviewed-by: Mirela Rabulea <mirela.rabulea@nxp.com> --- drivers/media/platform/imx-jpeg/mxc-jpeg.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/media/platform/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/imx-jpeg/mxc-jpeg.c index 109d0b49b4d01..8710e6875f1f4 100644 --- a/drivers/media/platform/imx-jpeg/mxc-jpeg.c +++ b/drivers/media/platform/imx-jpeg/mxc-jpeg.c @@ -330,6 +330,10 @@ static unsigned int debug; module_param(debug, int, 0644); MODULE_PARM_DESC(debug, "Debug level (0-3)"); +static unsigned int sw_reset = 1; +module_param(sw_reset, int, 0644); +MODULE_PARM_DESC(sw_reset, "SW reset every frame (0=no reset, 1=do reset)"); + static void mxc_jpeg_bytesperline(struct mxc_jpeg_q_data *q, u32 precision); static void mxc_jpeg_sizeimage(struct mxc_jpeg_q_data *q); @@ -665,6 +669,8 @@ static irqreturn_t mxc_jpeg_dec_irq(int irq, void *priv) v4l2_m2m_dst_buf_remove(ctx->fh.m2m_ctx); v4l2_m2m_buf_done(src_buf, buf_state); v4l2_m2m_buf_done(dst_buf, buf_state); + if (sw_reset) + mxc_jpeg_sw_reset(reg); spin_unlock(&jpeg->hw_lock); v4l2_m2m_job_finish(jpeg->m2m_dev, ctx->fh.m2m_ctx); return IRQ_HANDLED; -- GitLab