[media] soc_camera: remove the now obsolete struct soc_camera_ops
[pandora-kernel.git] / drivers / media / video / soc_camera_platform.c
index 8069cd6..4402a8a 100644 (file)
@@ -30,32 +30,12 @@ static struct soc_camera_platform_priv *get_priv(struct platform_device *pdev)
        return container_of(subdev, struct soc_camera_platform_priv, subdev);
 }
 
-static struct soc_camera_platform_info *get_info(struct soc_camera_device *icd)
-{
-       struct platform_device *pdev =
-               to_platform_device(to_soc_camera_control(icd));
-       return pdev->dev.platform_data;
-}
-
 static int soc_camera_platform_s_stream(struct v4l2_subdev *sd, int enable)
 {
        struct soc_camera_platform_info *p = v4l2_get_subdevdata(sd);
        return p->set_capture(p, enable);
 }
 
-static int soc_camera_platform_set_bus_param(struct soc_camera_device *icd,
-                                            unsigned long flags)
-{
-       return 0;
-}
-
-static unsigned long
-soc_camera_platform_query_bus_param(struct soc_camera_device *icd)
-{
-       struct soc_camera_platform_info *p = get_info(icd);
-       return p->bus_param;
-}
-
 static int soc_camera_platform_fill_fmt(struct v4l2_subdev *sd,
                                        struct v4l2_mbus_framefmt *mf)
 {
@@ -115,6 +95,17 @@ static int soc_camera_platform_cropcap(struct v4l2_subdev *sd,
        return 0;
 }
 
+static int soc_camera_platform_g_mbus_config(struct v4l2_subdev *sd,
+                                            struct v4l2_mbus_config *cfg)
+{
+       struct soc_camera_platform_info *p = v4l2_get_subdevdata(sd);
+
+       cfg->flags = p->mbus_param;
+       cfg->type = p->mbus_type;
+
+       return 0;
+}
+
 static struct v4l2_subdev_video_ops platform_subdev_video_ops = {
        .s_stream       = soc_camera_platform_s_stream,
        .enum_mbus_fmt  = soc_camera_platform_enum_fmt,
@@ -123,6 +114,7 @@ static struct v4l2_subdev_video_ops platform_subdev_video_ops = {
        .try_mbus_fmt   = soc_camera_platform_fill_fmt,
        .g_mbus_fmt     = soc_camera_platform_fill_fmt,
        .s_mbus_fmt     = soc_camera_platform_fill_fmt,
+       .g_mbus_config  = soc_camera_platform_g_mbus_config,
 };
 
 static struct v4l2_subdev_ops platform_subdev_ops = {
@@ -130,11 +122,6 @@ static struct v4l2_subdev_ops platform_subdev_ops = {
        .video  = &platform_subdev_video_ops,
 };
 
-static struct soc_camera_ops soc_camera_platform_ops = {
-       .set_bus_param          = soc_camera_platform_set_bus_param,
-       .query_bus_param        = soc_camera_platform_query_bus_param,
-};
-
 static int soc_camera_platform_probe(struct platform_device *pdev)
 {
        struct soc_camera_host *ici;
@@ -163,8 +150,6 @@ static int soc_camera_platform_probe(struct platform_device *pdev)
        /* Set the control device reference */
        icd->control = &pdev->dev;
 
-       icd->ops = &soc_camera_platform_ops;
-
        ici = to_soc_camera_host(icd->parent);
 
        v4l2_subdev_init(&priv->subdev, &platform_subdev_ops);
@@ -178,7 +163,6 @@ static int soc_camera_platform_probe(struct platform_device *pdev)
        return ret;
 
 evdrs:
-       icd->ops = NULL;
        platform_set_drvdata(pdev, NULL);
        kfree(priv);
        return ret;
@@ -187,11 +171,10 @@ evdrs:
 static int soc_camera_platform_remove(struct platform_device *pdev)
 {
        struct soc_camera_platform_priv *priv = get_priv(pdev);
-       struct soc_camera_platform_info *p = pdev->dev.platform_data;
-       struct soc_camera_device *icd = p->icd;
+       struct soc_camera_platform_info *p = v4l2_get_subdevdata(&priv->subdev);
 
+       p->icd->control = NULL;
        v4l2_device_unregister_subdev(&priv->subdev);
-       icd->ops = NULL;
        platform_set_drvdata(pdev, NULL);
        kfree(priv);
        return 0;