lkml.org 
[lkml]   [2020]   [May]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 07/14] videobuf2: factor out planes prepare/finish functions
    Date
    From: Sergey Senozhatsky <senozhatsky@chromium.org>

    Factor out the code, no functional changes.

    Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
    ---
    .../media/common/videobuf2/videobuf2-core.c | 52 +++++++++++--------
    1 file changed, 31 insertions(+), 21 deletions(-)

    diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c
    index 6efac531006f..6a95663afcd1 100644
    --- a/drivers/media/common/videobuf2/videobuf2-core.c
    +++ b/drivers/media/common/videobuf2/videobuf2-core.c
    @@ -296,6 +296,32 @@ static void __vb2_buf_dmabuf_put(struct vb2_buffer *vb)
    __vb2_plane_dmabuf_put(vb, &vb->planes[plane]);
    }

    +/*
    + * __vb2_buf_mem_prepare() - call ->prepare() on buffer's private memory
    + * to sync caches
    + */
    +static void __vb2_buf_mem_prepare(struct vb2_buffer *vb)
    +{
    + unsigned int plane;
    +
    + for (plane = 0; plane < vb->num_planes; ++plane)
    + call_void_memop(vb, prepare, vb->planes[plane].mem_priv);
    + vb->synced = 1;
    +}
    +
    +/*
    + * __vb2_buf_mem_finish() - call ->finish on buffer's private memory
    + * to sync caches
    + */
    +static void __vb2_buf_mem_finish(struct vb2_buffer *vb)
    +{
    + unsigned int plane;
    +
    + for (plane = 0; plane < vb->num_planes; ++plane)
    + call_void_memop(vb, finish, vb->planes[plane].mem_priv);
    + vb->synced = 0;
    +}
    +
    /*
    * __setup_offsets() - setup unique offsets ("cookies") for every plane in
    * the buffer.
    @@ -960,7 +986,6 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state)
    {
    struct vb2_queue *q = vb->vb2_queue;
    unsigned long flags;
    - unsigned int plane;

    if (WARN_ON(vb->state != VB2_BUF_STATE_ACTIVE))
    return;
    @@ -980,12 +1005,8 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state)
    dprintk(4, "done processing on buffer %d, state: %d\n",
    vb->index, state);

    - if (state != VB2_BUF_STATE_QUEUED) {
    - /* sync buffers */
    - for (plane = 0; plane < vb->num_planes; ++plane)
    - call_void_memop(vb, finish, vb->planes[plane].mem_priv);
    - vb->synced = 0;
    - }
    + if (state != VB2_BUF_STATE_QUEUED)
    + __vb2_buf_mem_finish(vb);

    spin_lock_irqsave(&q->done_lock, flags);
    if (state == VB2_BUF_STATE_QUEUED) {
    @@ -1310,7 +1331,6 @@ static int __buf_prepare(struct vb2_buffer *vb)
    {
    struct vb2_queue *q = vb->vb2_queue;
    enum vb2_buffer_state orig_state = vb->state;
    - unsigned int plane;
    int ret;

    if (q->error) {
    @@ -1354,11 +1374,7 @@ static int __buf_prepare(struct vb2_buffer *vb)
    return ret;
    }

    - /* sync buffers */
    - for (plane = 0; plane < vb->num_planes; ++plane)
    - call_void_memop(vb, prepare, vb->planes[plane].mem_priv);
    -
    - vb->synced = 1;
    + __vb2_buf_mem_prepare(vb);
    vb->prepared = 1;
    vb->state = orig_state;

    @@ -1978,14 +1994,8 @@ static void __vb2_queue_cancel(struct vb2_queue *q)
    call_void_vb_qop(vb, buf_request_complete, vb);
    }

    - if (vb->synced) {
    - unsigned int plane;
    -
    - for (plane = 0; plane < vb->num_planes; ++plane)
    - call_void_memop(vb, finish,
    - vb->planes[plane].mem_priv);
    - vb->synced = 0;
    - }
    + if (vb->synced)
    + __vb2_buf_mem_finish(vb);

    if (vb->prepared) {
    call_void_vb_qop(vb, buf_finish, vb);
    --
    2.26.2
    \
     
     \ /
      Last update: 2020-05-14 18:03    [W:3.711 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site