media: v4l2-subdev: add subdev-wide state struct
[linux-2.6-microblaze.git] / drivers / media / i2c / ov7740.c
index 47a9003..2539cfe 100644 (file)
@@ -624,11 +624,9 @@ static int ov7740_set_stream(struct v4l2_subdev *sd, int enable)
        }
 
        if (enable) {
-               ret = pm_runtime_get_sync(&client->dev);
-               if (ret < 0) {
-                       pm_runtime_put_noidle(&client->dev);
+               ret = pm_runtime_resume_and_get(&client->dev);
+               if (ret < 0)
                        goto err_unlock;
-               }
 
                ret = ov7740_start_streaming(ov7740);
                if (ret)
@@ -709,7 +707,7 @@ static const struct ov7740_pixfmt ov7740_formats[] = {
 #define N_OV7740_FMTS ARRAY_SIZE(ov7740_formats)
 
 static int ov7740_enum_mbus_code(struct v4l2_subdev *sd,
-                                struct v4l2_subdev_pad_config *cfg,
+                                struct v4l2_subdev_state *sd_state,
                                 struct v4l2_subdev_mbus_code_enum *code)
 {
        if (code->pad || code->index >= N_OV7740_FMTS)
@@ -721,7 +719,7 @@ static int ov7740_enum_mbus_code(struct v4l2_subdev *sd,
 }
 
 static int ov7740_enum_frame_interval(struct v4l2_subdev *sd,
-                               struct v4l2_subdev_pad_config *cfg,
+                               struct v4l2_subdev_state *sd_state,
                                struct v4l2_subdev_frame_interval_enum *fie)
 {
        if (fie->pad)
@@ -740,7 +738,7 @@ static int ov7740_enum_frame_interval(struct v4l2_subdev *sd,
 }
 
 static int ov7740_enum_frame_size(struct v4l2_subdev *sd,
-                                 struct v4l2_subdev_pad_config *cfg,
+                                 struct v4l2_subdev_state *sd_state,
                                  struct v4l2_subdev_frame_size_enum *fse)
 {
        if (fse->pad)
@@ -803,7 +801,7 @@ static int ov7740_try_fmt_internal(struct v4l2_subdev *sd,
 }
 
 static int ov7740_set_fmt(struct v4l2_subdev *sd,
-                         struct v4l2_subdev_pad_config *cfg,
+                         struct v4l2_subdev_state *sd_state,
                          struct v4l2_subdev_format *format)
 {
        struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
@@ -825,7 +823,8 @@ static int ov7740_set_fmt(struct v4l2_subdev *sd,
                if (ret)
                        goto error;
 #ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
-               mbus_fmt = v4l2_subdev_get_try_format(sd, cfg, format->pad);
+               mbus_fmt = v4l2_subdev_get_try_format(sd, sd_state,
+                                                     format->pad);
                *mbus_fmt = format->format;
 #endif
                mutex_unlock(&ov7740->mutex);
@@ -848,7 +847,7 @@ error:
 }
 
 static int ov7740_get_fmt(struct v4l2_subdev *sd,
-                         struct v4l2_subdev_pad_config *cfg,
+                         struct v4l2_subdev_state *sd_state,
                          struct v4l2_subdev_format *format)
 {
        struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
@@ -860,7 +859,7 @@ static int ov7740_get_fmt(struct v4l2_subdev *sd,
        mutex_lock(&ov7740->mutex);
        if (format->which == V4L2_SUBDEV_FORMAT_TRY) {
 #ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
-               mbus_fmt = v4l2_subdev_get_try_format(sd, cfg, 0);
+               mbus_fmt = v4l2_subdev_get_try_format(sd, sd_state, 0);
                format->format = *mbus_fmt;
                ret = 0;
 #else
@@ -905,7 +904,7 @@ static int ov7740_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
 {
        struct ov7740 *ov7740 = container_of(sd, struct ov7740, subdev);
        struct v4l2_mbus_framefmt *format =
-                               v4l2_subdev_get_try_format(sd, fh->pad, 0);
+                               v4l2_subdev_get_try_format(sd, fh->state, 0);
 
        mutex_lock(&ov7740->mutex);
        ov7740_get_default_format(sd, format);