[media] v4l2 subdevs: replace get/set_crop by get/set_selection
The crop and selection pad ops are duplicates. Replace all uses of get/set_crop by get/set_selection. This will make it possible to drop get/set_crop altogether. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Prabhakar Lad <prabhakar.csengg@gmail.com> Cc: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:

committato da
Mauro Carvalho Chehab

parent
215cedec37
commit
1a023feb9c
@@ -422,22 +422,25 @@ done:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int mt9m032_get_pad_crop(struct v4l2_subdev *subdev,
|
||||
struct v4l2_subdev_fh *fh,
|
||||
struct v4l2_subdev_crop *crop)
|
||||
static int mt9m032_get_pad_selection(struct v4l2_subdev *subdev,
|
||||
struct v4l2_subdev_fh *fh,
|
||||
struct v4l2_subdev_selection *sel)
|
||||
{
|
||||
struct mt9m032 *sensor = to_mt9m032(subdev);
|
||||
|
||||
if (sel->target != V4L2_SEL_TGT_CROP)
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&sensor->lock);
|
||||
crop->rect = *__mt9m032_get_pad_crop(sensor, fh, crop->which);
|
||||
sel->r = *__mt9m032_get_pad_crop(sensor, fh, sel->which);
|
||||
mutex_unlock(&sensor->lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mt9m032_set_pad_crop(struct v4l2_subdev *subdev,
|
||||
struct v4l2_subdev_fh *fh,
|
||||
struct v4l2_subdev_crop *crop)
|
||||
static int mt9m032_set_pad_selection(struct v4l2_subdev *subdev,
|
||||
struct v4l2_subdev_fh *fh,
|
||||
struct v4l2_subdev_selection *sel)
|
||||
{
|
||||
struct mt9m032 *sensor = to_mt9m032(subdev);
|
||||
struct v4l2_mbus_framefmt *format;
|
||||
@@ -445,9 +448,12 @@ static int mt9m032_set_pad_crop(struct v4l2_subdev *subdev,
|
||||
struct v4l2_rect rect;
|
||||
int ret = 0;
|
||||
|
||||
if (sel->target != V4L2_SEL_TGT_CROP)
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&sensor->lock);
|
||||
|
||||
if (sensor->streaming && crop->which == V4L2_SUBDEV_FORMAT_ACTIVE) {
|
||||
if (sensor->streaming && sel->which == V4L2_SUBDEV_FORMAT_ACTIVE) {
|
||||
ret = -EBUSY;
|
||||
goto done;
|
||||
}
|
||||
@@ -455,13 +461,13 @@ static int mt9m032_set_pad_crop(struct v4l2_subdev *subdev,
|
||||
/* Clamp the crop rectangle boundaries and align them to a multiple of 2
|
||||
* pixels to ensure a GRBG Bayer pattern.
|
||||
*/
|
||||
rect.left = clamp(ALIGN(crop->rect.left, 2), MT9M032_COLUMN_START_MIN,
|
||||
rect.left = clamp(ALIGN(sel->r.left, 2), MT9M032_COLUMN_START_MIN,
|
||||
MT9M032_COLUMN_START_MAX);
|
||||
rect.top = clamp(ALIGN(crop->rect.top, 2), MT9M032_ROW_START_MIN,
|
||||
rect.top = clamp(ALIGN(sel->r.top, 2), MT9M032_ROW_START_MIN,
|
||||
MT9M032_ROW_START_MAX);
|
||||
rect.width = clamp_t(unsigned int, ALIGN(crop->rect.width, 2),
|
||||
rect.width = clamp_t(unsigned int, ALIGN(sel->r.width, 2),
|
||||
MT9M032_COLUMN_SIZE_MIN, MT9M032_COLUMN_SIZE_MAX);
|
||||
rect.height = clamp_t(unsigned int, ALIGN(crop->rect.height, 2),
|
||||
rect.height = clamp_t(unsigned int, ALIGN(sel->r.height, 2),
|
||||
MT9M032_ROW_SIZE_MIN, MT9M032_ROW_SIZE_MAX);
|
||||
|
||||
rect.width = min_t(unsigned int, rect.width,
|
||||
@@ -469,21 +475,21 @@ static int mt9m032_set_pad_crop(struct v4l2_subdev *subdev,
|
||||
rect.height = min_t(unsigned int, rect.height,
|
||||
MT9M032_PIXEL_ARRAY_HEIGHT - rect.top);
|
||||
|
||||
__crop = __mt9m032_get_pad_crop(sensor, fh, crop->which);
|
||||
__crop = __mt9m032_get_pad_crop(sensor, fh, sel->which);
|
||||
|
||||
if (rect.width != __crop->width || rect.height != __crop->height) {
|
||||
/* Reset the output image size if the crop rectangle size has
|
||||
* been modified.
|
||||
*/
|
||||
format = __mt9m032_get_pad_format(sensor, fh, crop->which);
|
||||
format = __mt9m032_get_pad_format(sensor, fh, sel->which);
|
||||
format->width = rect.width;
|
||||
format->height = rect.height;
|
||||
}
|
||||
|
||||
*__crop = rect;
|
||||
crop->rect = rect;
|
||||
sel->r = rect;
|
||||
|
||||
if (crop->which == V4L2_SUBDEV_FORMAT_ACTIVE)
|
||||
if (sel->which == V4L2_SUBDEV_FORMAT_ACTIVE)
|
||||
ret = mt9m032_update_geom_timing(sensor);
|
||||
|
||||
done:
|
||||
@@ -690,8 +696,8 @@ static const struct v4l2_subdev_pad_ops mt9m032_pad_ops = {
|
||||
.enum_frame_size = mt9m032_enum_frame_size,
|
||||
.get_fmt = mt9m032_get_pad_format,
|
||||
.set_fmt = mt9m032_set_pad_format,
|
||||
.set_crop = mt9m032_set_pad_crop,
|
||||
.get_crop = mt9m032_get_pad_crop,
|
||||
.set_selection = mt9m032_set_pad_selection,
|
||||
.get_selection = mt9m032_get_pad_selection,
|
||||
};
|
||||
|
||||
static const struct v4l2_subdev_ops mt9m032_ops = {
|
||||
|
Fai riferimento in un nuovo problema
Block a user