* [PATCH 1/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Consolidate setting of source buffer addresses
@ 2023-05-09 15:02 Andri Yngvason
2023-05-09 15:02 ` [PATCH 2/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Add data_offset to source addresses Andri Yngvason
2023-05-23 11:57 ` [PATCH 1/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Consolidate setting of source buffer addresses Hans Verkuil
0 siblings, 2 replies; 4+ messages in thread
From: Andri Yngvason @ 2023-05-09 15:02 UTC (permalink / raw)
To: Ezequiel Garcia, Philipp Zabel, Mauro Carvalho Chehab,
linux-media, linux-rockchip
Cc: Andri Yngvason
Signed-off-by: Andri Yngvason <andri@yngvason.is>
---
.../verisilicon/rockchip_vpu2_hw_jpeg_enc.c | 36 ++++++++++---------
1 file changed, 19 insertions(+), 17 deletions(-)
diff --git a/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c b/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
index 8395c4d48dd0..52c76fb91c56 100644
--- a/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
+++ b/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
@@ -32,6 +32,16 @@
#define VEPU_JPEG_QUANT_TABLE_COUNT 16
+static inline u32 __vepu_reg_addr_for_plane(int plane)
+{
+ switch (plane) {
+ case 0: return VEPU_REG_ADDR_IN_PLANE_0;
+ case 1: return VEPU_REG_ADDR_IN_PLANE_1;
+ case 2: return VEPU_REG_ADDR_IN_PLANE_2;
+ }
+ return 0;
+}
+
static void rockchip_vpu2_set_src_img_ctrl(struct hantro_dev *vpu,
struct hantro_ctx *ctx)
{
@@ -70,35 +80,27 @@ static void rockchip_vpu2_jpeg_enc_set_buffers(struct hantro_dev *vpu,
struct vb2_buffer *dst_buf)
{
struct v4l2_pix_format_mplane *pix_fmt = &ctx->src_fmt;
- dma_addr_t src[3];
+ unsigned int num_planes = pix_fmt->num_planes;
+ unsigned int i;
+ dma_addr_t src;
u32 size_left;
size_left = vb2_plane_size(dst_buf, 0) - ctx->vpu_dst_fmt->header_size;
if (WARN_ON(vb2_plane_size(dst_buf, 0) < ctx->vpu_dst_fmt->header_size))
size_left = 0;
- WARN_ON(pix_fmt->num_planes > 3);
+ WARN_ON(num_planes > 3);
+ if (num_planes > 3)
+ num_planes = 3;
vepu_write_relaxed(vpu, vb2_dma_contig_plane_dma_addr(dst_buf, 0) +
ctx->vpu_dst_fmt->header_size,
VEPU_REG_ADDR_OUTPUT_STREAM);
vepu_write_relaxed(vpu, size_left, VEPU_REG_STR_BUF_LIMIT);
- if (pix_fmt->num_planes == 1) {
- src[0] = vb2_dma_contig_plane_dma_addr(src_buf, 0);
- vepu_write_relaxed(vpu, src[0], VEPU_REG_ADDR_IN_PLANE_0);
- } else if (pix_fmt->num_planes == 2) {
- src[0] = vb2_dma_contig_plane_dma_addr(src_buf, 0);
- src[1] = vb2_dma_contig_plane_dma_addr(src_buf, 1);
- vepu_write_relaxed(vpu, src[0], VEPU_REG_ADDR_IN_PLANE_0);
- vepu_write_relaxed(vpu, src[1], VEPU_REG_ADDR_IN_PLANE_1);
- } else {
- src[0] = vb2_dma_contig_plane_dma_addr(src_buf, 0);
- src[1] = vb2_dma_contig_plane_dma_addr(src_buf, 1);
- src[2] = vb2_dma_contig_plane_dma_addr(src_buf, 2);
- vepu_write_relaxed(vpu, src[0], VEPU_REG_ADDR_IN_PLANE_0);
- vepu_write_relaxed(vpu, src[1], VEPU_REG_ADDR_IN_PLANE_1);
- vepu_write_relaxed(vpu, src[2], VEPU_REG_ADDR_IN_PLANE_2);
+ for (i = 0; i < num_planes; i++) {
+ src = vb2_dma_contig_plane_dma_addr(src_buf, i);
+ vepu_write_relaxed(vpu, src, __vepu_reg_addr_for_plane(i));
}
}
--
2.40.1
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Add data_offset to source addresses
2023-05-09 15:02 [PATCH 1/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Consolidate setting of source buffer addresses Andri Yngvason
@ 2023-05-09 15:02 ` Andri Yngvason
2023-05-09 16:20 ` Andri Yngvason
2023-05-23 11:57 ` [PATCH 1/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Consolidate setting of source buffer addresses Hans Verkuil
1 sibling, 1 reply; 4+ messages in thread
From: Andri Yngvason @ 2023-05-09 15:02 UTC (permalink / raw)
To: Ezequiel Garcia, Philipp Zabel, Mauro Carvalho Chehab,
linux-media, linux-rockchip
Cc: Andri Yngvason
This accommodates planes that are backed by a single dmabuf.
Signed-off-by: Andri Yngvason <andri@yngvason.is>
---
drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c b/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
index 52c76fb91c56..716c248dc2bf 100644
--- a/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
+++ b/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
@@ -99,7 +99,8 @@ static void rockchip_vpu2_jpeg_enc_set_buffers(struct hantro_dev *vpu,
vepu_write_relaxed(vpu, size_left, VEPU_REG_STR_BUF_LIMIT);
for (i = 0; i < num_planes; i++) {
- src = vb2_dma_contig_plane_dma_addr(src_buf, i);
+ src = vb2_dma_contig_plane_dma_addr(src_buf, i) +
+ src_buf->planes[i].data_offset;
vepu_write_relaxed(vpu, src, __vepu_reg_addr_for_plane(i));
}
}
--
2.40.1
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Add data_offset to source addresses
2023-05-09 15:02 ` [PATCH 2/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Add data_offset to source addresses Andri Yngvason
@ 2023-05-09 16:20 ` Andri Yngvason
0 siblings, 0 replies; 4+ messages in thread
From: Andri Yngvason @ 2023-05-09 16:20 UTC (permalink / raw)
To: Ezequiel Garcia, Philipp Zabel, Mauro Carvalho Chehab,
linux-media, linux-rockchip
Cc: Michael Tretter
þri., 9. maí 2023 kl. 15:03 skrifaði Andri Yngvason <andri@yngvason.is>:
>
> This accommodates planes that are backed by a single dmabuf.
>
> Signed-off-by: Andri Yngvason <andri@yngvason.is>
> ---
> drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c b/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
> index 52c76fb91c56..716c248dc2bf 100644
> --- a/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
> +++ b/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
> @@ -99,7 +99,8 @@ static void rockchip_vpu2_jpeg_enc_set_buffers(struct hantro_dev *vpu,
> vepu_write_relaxed(vpu, size_left, VEPU_REG_STR_BUF_LIMIT);
>
> for (i = 0; i < num_planes; i++) {
> - src = vb2_dma_contig_plane_dma_addr(src_buf, i);
> + src = vb2_dma_contig_plane_dma_addr(src_buf, i) +
> + src_buf->planes[i].data_offset;
> vepu_write_relaxed(vpu, src, __vepu_reg_addr_for_plane(i));
> }
> }
> --
> 2.40.1
>
I see now that there is already a patch submitted for this:
https://marc.info/?l=linux-arm-kernel&m=167992346404789&w=2
Let's continue with that instead. I can confirm though, that setting
the offset works fine for me.
Regards,
Andri
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Consolidate setting of source buffer addresses
2023-05-09 15:02 [PATCH 1/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Consolidate setting of source buffer addresses Andri Yngvason
2023-05-09 15:02 ` [PATCH 2/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Add data_offset to source addresses Andri Yngvason
@ 2023-05-23 11:57 ` Hans Verkuil
1 sibling, 0 replies; 4+ messages in thread
From: Hans Verkuil @ 2023-05-23 11:57 UTC (permalink / raw)
To: Andri Yngvason, Ezequiel Garcia, Philipp Zabel,
Mauro Carvalho Chehab, linux-media, linux-rockchip
Hi Andri,
On 09/05/2023 17:02, Andri Yngvason wrote:
Please provide a commit message!
Thank you,
Hans
> Signed-off-by: Andri Yngvason <andri@yngvason.is>
> ---
> .../verisilicon/rockchip_vpu2_hw_jpeg_enc.c | 36 ++++++++++---------
> 1 file changed, 19 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c b/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
> index 8395c4d48dd0..52c76fb91c56 100644
> --- a/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
> +++ b/drivers/media/platform/verisilicon/rockchip_vpu2_hw_jpeg_enc.c
> @@ -32,6 +32,16 @@
>
> #define VEPU_JPEG_QUANT_TABLE_COUNT 16
>
> +static inline u32 __vepu_reg_addr_for_plane(int plane)
> +{
> + switch (plane) {
> + case 0: return VEPU_REG_ADDR_IN_PLANE_0;
> + case 1: return VEPU_REG_ADDR_IN_PLANE_1;
> + case 2: return VEPU_REG_ADDR_IN_PLANE_2;
> + }
> + return 0;
> +}
> +
> static void rockchip_vpu2_set_src_img_ctrl(struct hantro_dev *vpu,
> struct hantro_ctx *ctx)
> {
> @@ -70,35 +80,27 @@ static void rockchip_vpu2_jpeg_enc_set_buffers(struct hantro_dev *vpu,
> struct vb2_buffer *dst_buf)
> {
> struct v4l2_pix_format_mplane *pix_fmt = &ctx->src_fmt;
> - dma_addr_t src[3];
> + unsigned int num_planes = pix_fmt->num_planes;
> + unsigned int i;
> + dma_addr_t src;
> u32 size_left;
>
> size_left = vb2_plane_size(dst_buf, 0) - ctx->vpu_dst_fmt->header_size;
> if (WARN_ON(vb2_plane_size(dst_buf, 0) < ctx->vpu_dst_fmt->header_size))
> size_left = 0;
>
> - WARN_ON(pix_fmt->num_planes > 3);
> + WARN_ON(num_planes > 3);
> + if (num_planes > 3)
> + num_planes = 3;
>
> vepu_write_relaxed(vpu, vb2_dma_contig_plane_dma_addr(dst_buf, 0) +
> ctx->vpu_dst_fmt->header_size,
> VEPU_REG_ADDR_OUTPUT_STREAM);
> vepu_write_relaxed(vpu, size_left, VEPU_REG_STR_BUF_LIMIT);
>
> - if (pix_fmt->num_planes == 1) {
> - src[0] = vb2_dma_contig_plane_dma_addr(src_buf, 0);
> - vepu_write_relaxed(vpu, src[0], VEPU_REG_ADDR_IN_PLANE_0);
> - } else if (pix_fmt->num_planes == 2) {
> - src[0] = vb2_dma_contig_plane_dma_addr(src_buf, 0);
> - src[1] = vb2_dma_contig_plane_dma_addr(src_buf, 1);
> - vepu_write_relaxed(vpu, src[0], VEPU_REG_ADDR_IN_PLANE_0);
> - vepu_write_relaxed(vpu, src[1], VEPU_REG_ADDR_IN_PLANE_1);
> - } else {
> - src[0] = vb2_dma_contig_plane_dma_addr(src_buf, 0);
> - src[1] = vb2_dma_contig_plane_dma_addr(src_buf, 1);
> - src[2] = vb2_dma_contig_plane_dma_addr(src_buf, 2);
> - vepu_write_relaxed(vpu, src[0], VEPU_REG_ADDR_IN_PLANE_0);
> - vepu_write_relaxed(vpu, src[1], VEPU_REG_ADDR_IN_PLANE_1);
> - vepu_write_relaxed(vpu, src[2], VEPU_REG_ADDR_IN_PLANE_2);
> + for (i = 0; i < num_planes; i++) {
> + src = vb2_dma_contig_plane_dma_addr(src_buf, i);
> + vepu_write_relaxed(vpu, src, __vepu_reg_addr_for_plane(i));
> }
> }
>
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-05-23 11:58 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-09 15:02 [PATCH 1/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Consolidate setting of source buffer addresses Andri Yngvason
2023-05-09 15:02 ` [PATCH 2/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Add data_offset to source addresses Andri Yngvason
2023-05-09 16:20 ` Andri Yngvason
2023-05-23 11:57 ` [PATCH 1/2] media: verisilicon: rockchip_vpu2_hw_jpeg_enc: Consolidate setting of source buffer addresses Hans Verkuil
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).