[media] v4l2: replace try_mbus_fmt by set_fmt
[deliverable/linux.git] / drivers / media / i2c / soc_camera / mt9t112.c
index 889e98ee8c6203620ff53ef2ea58f9aa00b9993e..de10a76ba6dfb8e00e95706dfedf0c016f5fd3ec 100644 (file)
@@ -945,14 +945,19 @@ static int mt9t112_s_fmt(struct v4l2_subdev *sd,
        return ret;
 }
 
-static int mt9t112_try_fmt(struct v4l2_subdev *sd,
-                          struct v4l2_mbus_framefmt *mf)
+static int mt9t112_set_fmt(struct v4l2_subdev *sd,
+               struct v4l2_subdev_pad_config *cfg,
+               struct v4l2_subdev_format *format)
 {
+       struct v4l2_mbus_framefmt *mf = &format->format;
        struct i2c_client *client = v4l2_get_subdevdata(sd);
        struct mt9t112_priv *priv = to_mt9t112(client);
        unsigned int top, left;
        int i;
 
+       if (format->pad)
+               return -EINVAL;
+
        for (i = 0; i < priv->num_formats; i++)
                if (mt9t112_cfmts[i].code == mf->code)
                        break;
@@ -968,6 +973,9 @@ static int mt9t112_try_fmt(struct v4l2_subdev *sd,
 
        mf->field = V4L2_FIELD_NONE;
 
+       if (format->which == V4L2_SUBDEV_FORMAT_ACTIVE)
+               return mt9t112_s_fmt(sd, mf);
+       cfg->try_fmt = *mf;
        return 0;
 }
 
@@ -1016,8 +1024,6 @@ static int mt9t112_s_mbus_config(struct v4l2_subdev *sd,
 
 static struct v4l2_subdev_video_ops mt9t112_subdev_video_ops = {
        .s_stream       = mt9t112_s_stream,
-       .s_mbus_fmt     = mt9t112_s_fmt,
-       .try_mbus_fmt   = mt9t112_try_fmt,
        .cropcap        = mt9t112_cropcap,
        .g_crop         = mt9t112_g_crop,
        .s_crop         = mt9t112_s_crop,
@@ -1028,6 +1034,7 @@ static struct v4l2_subdev_video_ops mt9t112_subdev_video_ops = {
 static const struct v4l2_subdev_pad_ops mt9t112_subdev_pad_ops = {
        .enum_mbus_code = mt9t112_enum_mbus_code,
        .get_fmt        = mt9t112_get_fmt,
+       .set_fmt        = mt9t112_set_fmt,
 };
 
 /************************************************************************
This page took 0.05923 seconds and 5 git commands to generate.