This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: ti-vpe: cal: Don't pass format to cal_ctx_wr_dma_config()
Author:  Laurent Pinchart <[email protected]>
Date:    Mon Dec 7 00:53:38 2020 +0100

The cal_ctx_wr_dma_config() function has access to the context, there's
no need to give it format-related values retrieved from the context.
Access the values internally, and reword internal comments. The comment
regarding the CAL_WR_DMA_OFST register not being well understood is
dropped, as the datasheet explicitly documents it as "Offset between two
consecutive line starts".

Signed-off-by: Laurent Pinchart <[email protected]>
Reviewed-by: Benoit Parrot <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 drivers/media/platform/ti-vpe/cal-video.c |  3 +--
 drivers/media/platform/ti-vpe/cal.c       | 25 ++++++++++---------------
 drivers/media/platform/ti-vpe/cal.h       |  3 +--
 3 files changed, 12 insertions(+), 19 deletions(-)

---

diff --git a/drivers/media/platform/ti-vpe/cal-video.c 
b/drivers/media/platform/ti-vpe/cal-video.c
index 1ada27d42da1..083389635269 100644
--- a/drivers/media/platform/ti-vpe/cal-video.c
+++ b/drivers/media/platform/ti-vpe/cal-video.c
@@ -516,8 +516,7 @@ static int cal_start_streaming(struct vb2_queue *vq, 
unsigned int count)
 
        cal_ctx_csi2_config(ctx);
        cal_ctx_pix_proc_config(ctx);
-       cal_ctx_wr_dma_config(ctx, ctx->v_fmt.fmt.pix.bytesperline,
-                             ctx->v_fmt.fmt.pix.height);
+       cal_ctx_wr_dma_config(ctx);
 
        cal_camerarx_enable_irqs(ctx->phy);
 
diff --git a/drivers/media/platform/ti-vpe/cal.c 
b/drivers/media/platform/ti-vpe/cal.c
index 5d073d9cd8b5..4c938ca1f1a9 100644
--- a/drivers/media/platform/ti-vpe/cal.c
+++ b/drivers/media/platform/ti-vpe/cal.c
@@ -356,14 +356,15 @@ void cal_ctx_pix_proc_config(struct cal_ctx *ctx)
                cal_read(ctx->cal, CAL_PIX_PROC(ctx->index)));
 }
 
-void cal_ctx_wr_dma_config(struct cal_ctx *ctx, unsigned int width,
-                           unsigned int height)
+void cal_ctx_wr_dma_config(struct cal_ctx *ctx)
 {
+       unsigned int stride = ctx->v_fmt.fmt.pix.bytesperline;
        u32 val;
 
        val = cal_read(ctx->cal, CAL_WR_DMA_CTRL(ctx->index));
        cal_set_field(&val, ctx->cport, CAL_WR_DMA_CTRL_CPORT_MASK);
-       cal_set_field(&val, height, CAL_WR_DMA_CTRL_YSIZE_MASK);
+       cal_set_field(&val, ctx->v_fmt.fmt.pix.height,
+                     CAL_WR_DMA_CTRL_YSIZE_MASK);
        cal_set_field(&val, CAL_WR_DMA_CTRL_DTAG_PIX_DAT,
                      CAL_WR_DMA_CTRL_DTAG_MASK);
        cal_set_field(&val, CAL_WR_DMA_CTRL_MODE_CONST,
@@ -375,14 +376,8 @@ void cal_ctx_wr_dma_config(struct cal_ctx *ctx, unsigned 
int width,
        ctx_dbg(3, ctx, "CAL_WR_DMA_CTRL(%d) = 0x%08x\n", ctx->index,
                cal_read(ctx->cal, CAL_WR_DMA_CTRL(ctx->index)));
 
-       /*
-        * width/16 not sure but giving it a whirl.
-        * zero does not work right
-        */
-       cal_write_field(ctx->cal,
-                       CAL_WR_DMA_OFST(ctx->index),
-                       (width / 16),
-                       CAL_WR_DMA_OFST_MASK);
+       cal_write_field(ctx->cal, CAL_WR_DMA_OFST(ctx->index),
+                       stride / 16, CAL_WR_DMA_OFST_MASK);
        ctx_dbg(3, ctx, "CAL_WR_DMA_OFST(%d) = 0x%08x\n", ctx->index,
                cal_read(ctx->cal, CAL_WR_DMA_OFST(ctx->index)));
 
@@ -390,11 +385,11 @@ void cal_ctx_wr_dma_config(struct cal_ctx *ctx, unsigned 
int width,
        /* 64 bit word means no skipping */
        cal_set_field(&val, 0, CAL_WR_DMA_XSIZE_XSKIP_MASK);
        /*
-        * (width*8)/64 this should be size of an entire line
-        * in 64bit word but 0 means all data until the end
-        * is detected automagically
+        * The XSIZE field is expressed in 64-bit units and prevents overflows
+        * in case of synchronization issues by limiting the number of bytes
+        * written per line.
         */
-       cal_set_field(&val, (width / 8), CAL_WR_DMA_XSIZE_MASK);
+       cal_set_field(&val, stride / 8, CAL_WR_DMA_XSIZE_MASK);
        cal_write(ctx->cal, CAL_WR_DMA_XSIZE(ctx->index), val);
        ctx_dbg(3, ctx, "CAL_WR_DMA_XSIZE(%d) = 0x%08x\n", ctx->index,
                cal_read(ctx->cal, CAL_WR_DMA_XSIZE(ctx->index)));
diff --git a/drivers/media/platform/ti-vpe/cal.h 
b/drivers/media/platform/ti-vpe/cal.h
index 45f65ebf7aa9..d8e7f0c586f6 100644
--- a/drivers/media/platform/ti-vpe/cal.h
+++ b/drivers/media/platform/ti-vpe/cal.h
@@ -273,8 +273,7 @@ void cal_camerarx_destroy(struct cal_camerarx *phy);
 
 void cal_ctx_csi2_config(struct cal_ctx *ctx);
 void cal_ctx_pix_proc_config(struct cal_ctx *ctx);
-void cal_ctx_wr_dma_config(struct cal_ctx *ctx, unsigned int width,
-                          unsigned int height);
+void cal_ctx_wr_dma_config(struct cal_ctx *ctx);
 void cal_ctx_wr_dma_addr(struct cal_ctx *ctx, unsigned int dmaaddr);
 
 int cal_ctx_v4l2_register(struct cal_ctx *ctx);

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to