Commit 9d4e1f74 authored by Ezequiel Garcia's avatar Ezequiel Garcia Committed by Mauro Carvalho Chehab
Browse files

media: rockchip/vpu: Cleanup JPEG bounce buffer management



In order to make the code more generic, introduce a pair of start/stop
codec operations, and use them to allocate and release the JPEG bounce
buffer.

Signed-off-by: default avatarEzequiel Garcia <ezequiel@collabora.com>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 92cd4307
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -98,6 +98,8 @@ static const struct rockchip_vpu_codec_ops rk3288_vpu_codec_ops[] = {
	[RK_VPU_MODE_JPEG_ENC] = {
		.run = rk3288_vpu_jpeg_enc_run,
		.reset = rk3288_vpu_enc_reset,
		.init = rockchip_vpu_jpeg_enc_init,
		.exit = rockchip_vpu_jpeg_enc_exit,
	},
};

+2 −2
Original line number Diff line number Diff line
@@ -37,9 +37,9 @@ static void rk3288_vpu_jpeg_enc_set_buffers(struct rockchip_vpu_dev *vpu,

	WARN_ON(pix_fmt->num_planes > 3);

	vepu_write_relaxed(vpu, ctx->bounce_dma_addr,
	vepu_write_relaxed(vpu, ctx->jpeg_enc.bounce_buffer.dma,
			   VEPU_REG_ADDR_OUTPUT_STREAM);
	vepu_write_relaxed(vpu, ctx->bounce_size,
	vepu_write_relaxed(vpu, ctx->jpeg_enc.bounce_buffer.size,
			   VEPU_REG_STR_BUF_LIMIT);

	if (pix_fmt->num_planes == 1) {
+2 −0
Original line number Diff line number Diff line
@@ -98,6 +98,8 @@ static const struct rockchip_vpu_codec_ops rk3399_vpu_codec_ops[] = {
	[RK_VPU_MODE_JPEG_ENC] = {
		.run = rk3399_vpu_jpeg_enc_run,
		.reset = rk3399_vpu_enc_reset,
		.init = rockchip_vpu_jpeg_enc_init,
		.exit = rockchip_vpu_jpeg_enc_exit,
	},
};

+2 −2
Original line number Diff line number Diff line
@@ -69,9 +69,9 @@ static void rk3399_vpu_jpeg_enc_set_buffers(struct rockchip_vpu_dev *vpu,

	WARN_ON(pix_fmt->num_planes > 3);

	vepu_write_relaxed(vpu, ctx->bounce_dma_addr,
	vepu_write_relaxed(vpu, ctx->jpeg_enc.bounce_buffer.dma,
			   VEPU_REG_ADDR_OUTPUT_STREAM);
	vepu_write_relaxed(vpu, ctx->bounce_size,
	vepu_write_relaxed(vpu, ctx->jpeg_enc.bounce_buffer.size,
			   VEPU_REG_STR_BUF_LIMIT);

	if (pix_fmt->num_planes == 1) {
+5 −7
Original line number Diff line number Diff line
@@ -124,10 +124,7 @@ struct rockchip_vpu_dev {
 * @jpeg_quality:	User-specified JPEG compression quality.
 *
 * @codec_ops:		Set of operations related to codec mode.
 *
 * @bounce_dma_addr:	Bounce buffer bus address.
 * @bounce_buf:		Bounce buffer pointer.
 * @bounce_size:	Bounce buffer size.
 * @jpeg_enc:		JPEG-encoding context.
 */
struct rockchip_vpu_ctx {
	struct rockchip_vpu_dev *dev;
@@ -146,9 +143,10 @@ struct rockchip_vpu_ctx {

	const struct rockchip_vpu_codec_ops *codec_ops;

	dma_addr_t bounce_dma_addr;
	void *bounce_buf;
	size_t bounce_size;
	/* Specific for particular codec modes. */
	union {
		struct rockchip_vpu_jpeg_enc_hw_ctx jpeg_enc;
	};
};

/**
Loading