Merge tag 'nfs-for-3.20-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
[linux-2.6-block.git] / drivers / media / i2c / mt9m032.c
index 45b3fca188ca2406540bb12bb3db116c36fd0190..76431223f0ff3b0fe8d47ce4e0afd6c707604ddd 100644 (file)
@@ -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 = {