]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: dw100: Merge dw100_device_run and dw100_start
authorStefan Klug <stefan.klug@ideasonboard.com>
Wed, 4 Mar 2026 15:50:25 +0000 (16:50 +0100)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Tue, 24 Mar 2026 21:14:44 +0000 (22:14 +0100)
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@ideasonboard.com>
Reviewed-by: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Link: https://patch.msgid.link/20260304-sklug-v6-16-topic-dw100-v3-1-dev-v5-4-1a7e1f721b50@ideasonboard.com
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/platform/nxp/dw100/dw100.c

index 42748d0f04839318077b78bc69a43a95f76eeebf..7787fdcdc67ce353efb0aed18ebb345bdf1fc6ba 100644 (file)
@@ -1440,25 +1440,45 @@ 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)
+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;
 
-       out_vb->sequence =
-               dw100_get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)->sequence++;
-       in_vb->sequence =
+       src_buf = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
+       dst_buf = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx);
+
+       v4l2_ctrl_request_setup(src_buf->vb2_buf.req_obj.req,
+                               &ctx->hdl);
+
+       if (src_buf->vb2_buf.req_obj.req)
+               dw100_update_mapping(ctx);
+       else if (ctx->user_map_is_dirty)
+               dev_warn_once(&dw_dev->pdev->dev,
+                             "V4L2 requests are required to update the vertex map dynamically\n");
+
+       /*
+        * As the hardware does not update any volatile controls, we can
+        * complete control handling before starting the dewarper.
+        */
+       v4l2_ctrl_request_complete(src_buf->vb2_buf.req_obj.req,
+                                  &ctx->hdl);
+
+       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(&ctx->dw_dev->pdev->dev,
+       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),
-               in_vb->sequence, out_vb->sequence);
+               src_buf->sequence, dst_buf->sequence);
 
-       v4l2_m2m_buf_copy_metadata(in_vb, out_vb);
+       v4l2_m2m_buf_copy_metadata(src_buf, dst_buf);
 
        /* Now, let's deal with hardware ... */
        dw100_hw_master_bus_disable(dw_dev);
@@ -1467,10 +1487,10 @@ static void dw100_start(struct dw100_ctx *ctx, struct vb2_v4l2_buffer *in_vb,
        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);
+                           &src_buf->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);
+                                &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);
@@ -1480,33 +1500,6 @@ static void dw100_start(struct dw100_ctx *ctx, struct vb2_v4l2_buffer *in_vb,
        dw100_hw_master_bus_enable(dw_dev);
 }
 
-static void dw100_device_run(void *priv)
-{
-       struct dw100_ctx *ctx = priv;
-       struct vb2_v4l2_buffer *src_buf, *dst_buf;
-
-       src_buf = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
-       dst_buf = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx);
-
-       v4l2_ctrl_request_setup(src_buf->vb2_buf.req_obj.req,
-                               &ctx->hdl);
-
-       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,
-                             "V4L2 requests are required to update the vertex map dynamically\n");
-
-       /*
-        * As the hardware does not update any volatile controls, we can
-        * complete control handling before starting the dewarper.
-        */
-       v4l2_ctrl_request_complete(src_buf->vb2_buf.req_obj.req,
-                                  &ctx->hdl);
-
-       dw100_start(ctx, src_buf, dst_buf);
-}
-
 static const struct v4l2_m2m_ops dw100_m2m_ops = {
        .device_run     = dw100_device_run,
 };