V4L/DVB (12529): soc-camera: switch to s_crop v4l2-subdev video operation
[cascardo/linux.git] / drivers / media / video / mt9v022.c
index d2b0981..e609ff5 100644 (file)
@@ -248,10 +248,11 @@ static unsigned long mt9v022_query_bus_param(struct soc_camera_device *icd)
                width_flag;
 }
 
-static int mt9v022_set_crop(struct soc_camera_device *icd,
-                           struct v4l2_rect *rect)
+static int mt9v022_s_crop(struct v4l2_subdev *sd, struct v4l2_crop *a)
 {
-       struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
+       struct v4l2_rect *rect = &a->c;
+       struct i2c_client *client = sd->priv;
+       struct soc_camera_device *icd = client->dev.platform_data;
        int ret;
 
        /* Like in example app. Contradicts the datasheet though */
@@ -297,11 +298,13 @@ static int mt9v022_s_fmt(struct v4l2_subdev *sd, struct v4l2_format *f)
        struct mt9v022 *mt9v022 = to_mt9v022(client);
        struct soc_camera_device *icd = client->dev.platform_data;
        struct v4l2_pix_format *pix = &f->fmt.pix;
-       struct v4l2_rect rect = {
-               .left   = icd->rect_current.left,
-               .top    = icd->rect_current.top,
-               .width  = pix->width,
-               .height = pix->height,
+       struct v4l2_crop a = {
+               .c = {
+                       .left   = icd->rect_current.left,
+                       .top    = icd->rect_current.top,
+                       .width  = pix->width,
+                       .height = pix->height,
+               },
        };
 
        /* The caller provides a supported format, as verified per call to
@@ -325,7 +328,7 @@ static int mt9v022_s_fmt(struct v4l2_subdev *sd, struct v4l2_format *f)
        }
 
        /* No support for scaling on this camera, just crop. */
-       return mt9v022_set_crop(icd, &rect);
+       return mt9v022_s_crop(sd, &a);
 }
 
 static int mt9v022_try_fmt(struct v4l2_subdev *sd, struct v4l2_format *f)
@@ -454,7 +457,6 @@ static const struct v4l2_queryctrl mt9v022_controls[] = {
 
 static struct soc_camera_ops mt9v022_ops = {
        .init                   = mt9v022_init,
-       .set_crop               = mt9v022_set_crop,
        .set_bus_param          = mt9v022_set_bus_param,
        .query_bus_param        = mt9v022_query_bus_param,
        .controls               = mt9v022_controls,
@@ -700,6 +702,7 @@ static struct v4l2_subdev_video_ops mt9v022_subdev_video_ops = {
        .s_stream       = mt9v022_s_stream,
        .s_fmt          = mt9v022_s_fmt,
        .try_fmt        = mt9v022_try_fmt,
+       .s_crop         = mt9v022_s_crop,
 };
 
 static struct v4l2_subdev_ops mt9v022_subdev_ops = {