lkml.org 
[lkml]   [2014]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.13 068/120] [media] media: s5p_mfc: remove s5p_mfc_get_node_type() function
    Date
    3.13-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Marek Szyprowski <m.szyprowski@samsung.com>

    commit b80cb8dc4162bc954cc71efec192ed89f2061573 upstream.

    s5p_mfc_get_node_type() relies on get_index() helper function, which in
    turn relies on video_device index numbers assigned on driver
    registration. All this code is not really needed, because there is
    already access to respective video_device structures via common
    s5p_mfc_dev structure. This fixes the issues introduced by patch
    1056e4388b0454917a512618c8416a98628fc9ce ("v4l2-dev: Fix race condition
    on __video_register_device"), which has been merged in v3.12-rc1.

    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Kamil Debski <k.debski@samsung.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/media/platform/s5p-mfc/s5p_mfc.c | 28 ++++++------------------
    drivers/media/platform/s5p-mfc/s5p_mfc_common.h | 9 -------
    2 files changed, 7 insertions(+), 30 deletions(-)

    --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c
    +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c
    @@ -177,21 +177,6 @@ unlock:
    mutex_unlock(&dev->mfc_mutex);
    }

    -static enum s5p_mfc_node_type s5p_mfc_get_node_type(struct file *file)
    -{
    - struct video_device *vdev = video_devdata(file);
    -
    - if (!vdev) {
    - mfc_err("failed to get video_device");
    - return MFCNODE_INVALID;
    - }
    - if (vdev->index == 0)
    - return MFCNODE_DECODER;
    - else if (vdev->index == 1)
    - return MFCNODE_ENCODER;
    - return MFCNODE_INVALID;
    -}
    -
    static void s5p_mfc_clear_int_flags(struct s5p_mfc_dev *dev)
    {
    mfc_write(dev, 0, S5P_FIMV_RISC_HOST_INT);
    @@ -705,6 +690,7 @@ irq_cleanup_hw:
    /* Open an MFC node */
    static int s5p_mfc_open(struct file *file)
    {
    + struct video_device *vdev = video_devdata(file);
    struct s5p_mfc_dev *dev = video_drvdata(file);
    struct s5p_mfc_ctx *ctx = NULL;
    struct vb2_queue *q;
    @@ -742,7 +728,7 @@ static int s5p_mfc_open(struct file *fil
    /* Mark context as idle */
    clear_work_bit_irqsave(ctx);
    dev->ctx[ctx->num] = ctx;
    - if (s5p_mfc_get_node_type(file) == MFCNODE_DECODER) {
    + if (vdev == dev->vfd_dec) {
    ctx->type = MFCINST_DECODER;
    ctx->c_ops = get_dec_codec_ops();
    s5p_mfc_dec_init(ctx);
    @@ -752,7 +738,7 @@ static int s5p_mfc_open(struct file *fil
    mfc_err("Failed to setup mfc controls\n");
    goto err_ctrls_setup;
    }
    - } else if (s5p_mfc_get_node_type(file) == MFCNODE_ENCODER) {
    + } else if (vdev == dev->vfd_enc) {
    ctx->type = MFCINST_ENCODER;
    ctx->c_ops = get_enc_codec_ops();
    /* only for encoder */
    @@ -797,10 +783,10 @@ static int s5p_mfc_open(struct file *fil
    q = &ctx->vq_dst;
    q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
    q->drv_priv = &ctx->fh;
    - if (s5p_mfc_get_node_type(file) == MFCNODE_DECODER) {
    + if (vdev == dev->vfd_dec) {
    q->io_modes = VB2_MMAP;
    q->ops = get_dec_queue_ops();
    - } else if (s5p_mfc_get_node_type(file) == MFCNODE_ENCODER) {
    + } else if (vdev == dev->vfd_enc) {
    q->io_modes = VB2_MMAP | VB2_USERPTR;
    q->ops = get_enc_queue_ops();
    } else {
    @@ -819,10 +805,10 @@ static int s5p_mfc_open(struct file *fil
    q->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
    q->io_modes = VB2_MMAP;
    q->drv_priv = &ctx->fh;
    - if (s5p_mfc_get_node_type(file) == MFCNODE_DECODER) {
    + if (vdev == dev->vfd_dec) {
    q->io_modes = VB2_MMAP;
    q->ops = get_dec_queue_ops();
    - } else if (s5p_mfc_get_node_type(file) == MFCNODE_ENCODER) {
    + } else if (vdev == dev->vfd_enc) {
    q->io_modes = VB2_MMAP | VB2_USERPTR;
    q->ops = get_enc_queue_ops();
    } else {
    --- a/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
    +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
    @@ -115,15 +115,6 @@ enum s5p_mfc_fmt_type {
    };

    /**
    - * enum s5p_mfc_node_type - The type of an MFC device node.
    - */
    -enum s5p_mfc_node_type {
    - MFCNODE_INVALID = -1,
    - MFCNODE_DECODER = 0,
    - MFCNODE_ENCODER = 1,
    -};
    -
    -/**
    * enum s5p_mfc_inst_type - The type of an MFC instance.
    */
    enum s5p_mfc_inst_type {



    \
     
     \ /
      Last update: 2014-02-11 22:41    [W:4.170 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site