[media] s5p-fimc: Fix FIMC.n subdev set_selection ioctl handler
authorSylwester Nawrocki <s.nawrocki@samsung.com>
Wed, 30 Jan 2013 12:55:46 +0000 (09:55 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 5 Feb 2013 19:53:25 +0000 (17:53 -0200)
The V4L2_SEL_TGT_CROP_BOUNDS, V4L2_SEL_TGT_COMPOSE_BOUNDS selection
targets are not supposed to be handled in the set_selection ioctl.
Remove the code that doesn't do anything sensible now and make sure
ctx->state is modified with the spinlock held.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/platform/s5p-fimc/fimc-capture.c

index 5ec2f48f7db5e9065246d0e81397cd7f5d2c5da5..f553cc2a8ee8df146f8e300c7ace7171feb81ecc 100644 (file)
@@ -1688,16 +1688,6 @@ static int fimc_subdev_set_selection(struct v4l2_subdev *sd,
        fimc_capture_try_selection(ctx, r, V4L2_SEL_TGT_CROP);
 
        switch (sel->target) {
-       case V4L2_SEL_TGT_COMPOSE_BOUNDS:
-               f = &ctx->d_frame;
-       case V4L2_SEL_TGT_CROP_BOUNDS:
-               r->width = f->o_width;
-               r->height = f->o_height;
-               r->left = 0;
-               r->top = 0;
-               mutex_unlock(&fimc->lock);
-               return 0;
-
        case V4L2_SEL_TGT_CROP:
                try_sel = v4l2_subdev_get_try_crop(fh, sel->pad);
                break;
@@ -1716,9 +1706,9 @@ static int fimc_subdev_set_selection(struct v4l2_subdev *sd,
                spin_lock_irqsave(&fimc->slock, flags);
                set_frame_crop(f, r->left, r->top, r->width, r->height);
                set_bit(ST_CAPT_APPLY_CFG, &fimc->state);
-               spin_unlock_irqrestore(&fimc->slock, flags);
                if (sel->target == V4L2_SEL_TGT_COMPOSE)
                        ctx->state |= FIMC_COMPOSE;
+               spin_unlock_irqrestore(&fimc->slock, flags);
        }
 
        dbg("target %#x: (%d,%d)/%dx%d", sel->target, r->left, r->top,