[media] s5p-fimc: Fix FIMC.n subdev set_selection ioctl handler
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>
This commit is contained in:
parent
81619ce193
commit
8b164105d8
|
@ -1688,16 +1688,6 @@ static int fimc_subdev_set_selection(struct v4l2_subdev *sd,
|
||||||
fimc_capture_try_selection(ctx, r, V4L2_SEL_TGT_CROP);
|
fimc_capture_try_selection(ctx, r, V4L2_SEL_TGT_CROP);
|
||||||
|
|
||||||
switch (sel->target) {
|
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:
|
case V4L2_SEL_TGT_CROP:
|
||||||
try_sel = v4l2_subdev_get_try_crop(fh, sel->pad);
|
try_sel = v4l2_subdev_get_try_crop(fh, sel->pad);
|
||||||
break;
|
break;
|
||||||
|
@ -1716,9 +1706,9 @@ static int fimc_subdev_set_selection(struct v4l2_subdev *sd,
|
||||||
spin_lock_irqsave(&fimc->slock, flags);
|
spin_lock_irqsave(&fimc->slock, flags);
|
||||||
set_frame_crop(f, r->left, r->top, r->width, r->height);
|
set_frame_crop(f, r->left, r->top, r->width, r->height);
|
||||||
set_bit(ST_CAPT_APPLY_CFG, &fimc->state);
|
set_bit(ST_CAPT_APPLY_CFG, &fimc->state);
|
||||||
spin_unlock_irqrestore(&fimc->slock, flags);
|
|
||||||
if (sel->target == V4L2_SEL_TGT_COMPOSE)
|
if (sel->target == V4L2_SEL_TGT_COMPOSE)
|
||||||
ctx->state |= FIMC_COMPOSE;
|
ctx->state |= FIMC_COMPOSE;
|
||||||
|
spin_unlock_irqrestore(&fimc->slock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
dbg("target %#x: (%d,%d)/%dx%d", sel->target, r->left, r->top,
|
dbg("target %#x: (%d,%d)/%dx%d", sel->target, r->left, r->top,
|
||||||
|
|
Loading…
Reference in New Issue