Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 630dde63 authored by Andrzej Pietrasiewicz's avatar Andrzej Pietrasiewicz Committed by Mauro Carvalho Chehab
Browse files

media: s5p-jpeg: disable encoder/decoder in exynos4-like hardware after use



Clearing the bits turns off the encoder/decoder. If the hardware
is not turned off after use, at subsequent uses it does not work
in a stable manner, resulting in incorrect interrupt status value
being read and e.g. erroneous read of compressed bitstream size.

Signed-off-by: default avatarAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent e28e6f75
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2806,6 +2806,8 @@ static irqreturn_t exynos4_jpeg_irq(int irq, void *priv)
	if (jpeg->variant->version == SJPEG_EXYNOS4)
		curr_ctx->subsampling = exynos4_jpeg_get_frame_fmt(jpeg->regs);

	exynos4_jpeg_set_enc_dec_mode(jpeg->regs, S5P_JPEG_DISABLE);

	spin_unlock(&jpeg->slock);

	v4l2_m2m_job_finish(jpeg->m2m_dev, curr_ctx->fh.m2m_ctx);
+1 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@

#define S5P_JPEG_ENCODE		0
#define S5P_JPEG_DECODE		1
#define S5P_JPEG_DISABLE	-1

#define FMT_TYPE_OUTPUT		0
#define FMT_TYPE_CAPTURE	1
+4 −1
Original line number Diff line number Diff line
@@ -38,10 +38,13 @@ void exynos4_jpeg_set_enc_dec_mode(void __iomem *base, unsigned int mode)
		writel((reg & EXYNOS4_ENC_DEC_MODE_MASK) |
					EXYNOS4_DEC_MODE,
			base + EXYNOS4_JPEG_CNTL_REG);
	} else {/* encode */
	} else if (mode == S5P_JPEG_ENCODE) {/* encode */
		writel((reg & EXYNOS4_ENC_DEC_MODE_MASK) |
					EXYNOS4_ENC_MODE,
			base + EXYNOS4_JPEG_CNTL_REG);
	} else { /* disable both */
		writel(reg & EXYNOS4_ENC_DEC_MODE_MASK,
			base + EXYNOS4_JPEG_CNTL_REG);
	}
}