lkml.org 
[lkml]   [2019]   [Dec]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 281/434] media: cedrus: Use helpers to access capture queue
    Date
    From: Jernej Skrabec <jernej.skrabec@siol.net>

    [ Upstream commit 1fd50a2c294457508f06b8b631d01a58de81cdd2 ]

    Accessing capture queue structue directly is not safe. Use helpers for
    that.

    Acked-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
    Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/staging/media/sunxi/cedrus/cedrus.h | 8 ++++++--
    drivers/staging/media/sunxi/cedrus/cedrus_h264.c | 8 ++++++--
    2 files changed, 12 insertions(+), 4 deletions(-)

    diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.h b/drivers/staging/media/sunxi/cedrus/cedrus.h
    index 2f017a651848..3758a1c4e2d0 100644
    --- a/drivers/staging/media/sunxi/cedrus/cedrus.h
    +++ b/drivers/staging/media/sunxi/cedrus/cedrus.h
    @@ -179,12 +179,16 @@ static inline dma_addr_t cedrus_buf_addr(struct vb2_buffer *buf,
    static inline dma_addr_t cedrus_dst_buf_addr(struct cedrus_ctx *ctx,
    int index, unsigned int plane)
    {
    - struct vb2_buffer *buf;
    + struct vb2_buffer *buf = NULL;
    + struct vb2_queue *vq;

    if (index < 0)
    return 0;

    - buf = ctx->fh.m2m_ctx->cap_q_ctx.q.bufs[index];
    + vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE);
    + if (vq)
    + buf = vb2_get_buffer(vq, index);
    +
    return buf ? cedrus_buf_addr(buf, &ctx->dst_fmt, plane) : 0;
    }

    diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
    index d6a782703c9b..08c6c9c410cc 100644
    --- a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
    +++ b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
    @@ -96,7 +96,7 @@ static void cedrus_write_frame_list(struct cedrus_ctx *ctx,
    const struct v4l2_ctrl_h264_decode_params *decode = run->h264.decode_params;
    const struct v4l2_ctrl_h264_slice_params *slice = run->h264.slice_params;
    const struct v4l2_ctrl_h264_sps *sps = run->h264.sps;
    - struct vb2_queue *cap_q = &ctx->fh.m2m_ctx->cap_q_ctx.q;
    + struct vb2_queue *cap_q;
    struct cedrus_buffer *output_buf;
    struct cedrus_dev *dev = ctx->dev;
    unsigned long used_dpbs = 0;
    @@ -104,6 +104,8 @@ static void cedrus_write_frame_list(struct cedrus_ctx *ctx,
    unsigned int output = 0;
    unsigned int i;

    + cap_q = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE);
    +
    memset(pic_list, 0, sizeof(pic_list));

    for (i = 0; i < ARRAY_SIZE(decode->dpb); i++) {
    @@ -167,12 +169,14 @@ static void _cedrus_write_ref_list(struct cedrus_ctx *ctx,
    enum cedrus_h264_sram_off sram)
    {
    const struct v4l2_ctrl_h264_decode_params *decode = run->h264.decode_params;
    - struct vb2_queue *cap_q = &ctx->fh.m2m_ctx->cap_q_ctx.q;
    + struct vb2_queue *cap_q;
    struct cedrus_dev *dev = ctx->dev;
    u8 sram_array[CEDRUS_MAX_REF_IDX];
    unsigned int i;
    size_t size;

    + cap_q = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE);
    +
    memset(sram_array, 0, sizeof(sram_array));

    for (i = 0; i < num_ref; i++) {
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-12-29 19:03    [W:4.384 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site