[PATCH v4 4/4] media: dw100: Merge dw100_device_run and dw100_start
From: Stefan Klug
Date: Wed Feb 25 2026 - 11:03:00 EST
The dw100_start() function is only called from dw100_device_run(). As
both functions are not too big, move the code directly into
dw100_device_run() and drop dw100_start() to improve readability.
This patch contains no functional changes.
Signed-off-by: Stefan Klug <stefan.klug@xxxxxxxxxxxxxxxx>
Reviewed-by: Xavier Roumegue <xavier.roumegue@xxxxxxxxxxx>
Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
---
Changes in v4:
- Collected tags
Changes in v3:
- Added this patch as proposed in the review of v1
---
drivers/media/platform/nxp/dw100/dw100.c | 77 +++++++++++++++-----------------
1 file changed, 35 insertions(+), 42 deletions(-)
diff --git a/drivers/media/platform/nxp/dw100/dw100.c b/drivers/media/platform/nxp/dw100/dw100.c
index a80139427f19942cdc61838afdccb8ef45bcda34..e59361aeeec73ee0df0b86159c3b3c19f2eb8b5f 100644
--- a/drivers/media/platform/nxp/dw100/dw100.c
+++ b/drivers/media/platform/nxp/dw100/dw100.c
@@ -1442,49 +1442,10 @@ static irqreturn_t dw100_irq_thread_fn(int irq, void *dev_id)
return IRQ_HANDLED;
}
-static void dw100_start(struct dw100_ctx *ctx, struct vb2_v4l2_buffer *in_vb,
- struct vb2_v4l2_buffer *out_vb)
-{
- struct dw100_device *dw_dev = ctx->dw_dev;
-
- out_vb->sequence =
- dw100_get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)->sequence++;
- in_vb->sequence =
- dw100_get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)->sequence++;
-
- dev_dbg(&ctx->dw_dev->pdev->dev,
- "Starting queues %p->%p, sequence %u->%u\n",
- v4l2_m2m_get_vq(ctx->fh.m2m_ctx,
- V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE),
- v4l2_m2m_get_vq(ctx->fh.m2m_ctx,
- V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE),
- in_vb->sequence, out_vb->sequence);
-
- v4l2_m2m_buf_copy_metadata(in_vb, out_vb);
-
- /* Now, let's deal with hardware ... */
- dw100_hw_master_bus_disable(dw_dev);
- dw100_hw_init_ctrl(dw_dev);
- dw100_hw_set_pixel_boundary(dw_dev);
- dw100_hw_set_src_crop(dw_dev, &ctx->q_data[DW100_QUEUE_SRC],
- &ctx->q_data[DW100_QUEUE_DST]);
- dw100_hw_set_source(dw_dev, &ctx->q_data[DW100_QUEUE_SRC],
- &in_vb->vb2_buf);
- dw100_hw_set_destination(dw_dev, &ctx->q_data[DW100_QUEUE_DST],
- ctx->q_data[DW100_QUEUE_SRC].fmt,
- &out_vb->vb2_buf);
- dw100_hw_set_mapping(dw_dev, ctx->map_dma,
- ctx->map_width, ctx->map_height);
- dw100_hw_enable_irq(dw_dev);
- dw100_hw_dewarp_start(dw_dev);
-
- /* Enable Bus */
- dw100_hw_master_bus_enable(dw_dev);
-}
-
static void dw100_device_run(void *priv)
{
struct dw100_ctx *ctx = priv;
+ struct dw100_device *dw_dev = ctx->dw_dev;
struct vb2_v4l2_buffer *src_buf, *dst_buf;
src_buf = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
@@ -1496,7 +1457,7 @@ static void dw100_device_run(void *priv)
if (src_buf->vb2_buf.req_obj.req)
dw100_update_mapping(ctx);
else if (ctx->user_map_is_dirty)
- dev_warn_once(&ctx->dw_dev->pdev->dev,
+ dev_warn_once(&dw_dev->pdev->dev,
"V4L2 requests are required to update the vertex map dynamically\n");
/*
@@ -1506,7 +1467,39 @@ static void dw100_device_run(void *priv)
v4l2_ctrl_request_complete(src_buf->vb2_buf.req_obj.req,
&ctx->hdl);
- dw100_start(ctx, src_buf, dst_buf);
+ src_buf->sequence =
+ dw100_get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)->sequence++;
+ dst_buf->sequence =
+ dw100_get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)->sequence++;
+
+ dev_dbg(&dw_dev->pdev->dev,
+ "Starting queues %p->%p, sequence %u->%u\n",
+ v4l2_m2m_get_vq(ctx->fh.m2m_ctx,
+ V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE),
+ v4l2_m2m_get_vq(ctx->fh.m2m_ctx,
+ V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE),
+ src_buf->sequence, dst_buf->sequence);
+
+ v4l2_m2m_buf_copy_metadata(src_buf, dst_buf);
+
+ /* Now, let's deal with hardware ... */
+ dw100_hw_master_bus_disable(dw_dev);
+ dw100_hw_init_ctrl(dw_dev);
+ dw100_hw_set_pixel_boundary(dw_dev);
+ dw100_hw_set_src_crop(dw_dev, &ctx->q_data[DW100_QUEUE_SRC],
+ &ctx->q_data[DW100_QUEUE_DST]);
+ dw100_hw_set_source(dw_dev, &ctx->q_data[DW100_QUEUE_SRC],
+ &src_buf->vb2_buf);
+ dw100_hw_set_destination(dw_dev, &ctx->q_data[DW100_QUEUE_DST],
+ ctx->q_data[DW100_QUEUE_SRC].fmt,
+ &dst_buf->vb2_buf);
+ dw100_hw_set_mapping(dw_dev, ctx->map_dma,
+ ctx->map_width, ctx->map_height);
+ dw100_hw_enable_irq(dw_dev);
+ dw100_hw_dewarp_start(dw_dev);
+
+ /* Enable Bus */
+ dw100_hw_master_bus_enable(dw_dev);
}
static const struct v4l2_m2m_ops dw100_m2m_ops = {
--
2.51.0