14 #include <linux/module.h>
15 #include <linux/slab.h>
18 #include <linux/videodev2.h>
39 static int soc_camera_platform_fill_fmt(
struct v4l2_subdev *sd,
40 struct v4l2_mbus_framefmt *mf)
44 mf->width = p->
format.width;
45 mf->height = p->
format.height;
47 mf->colorspace = p->
format.colorspace;
48 mf->field = p->
format.field;
53 static int soc_camera_platform_s_power(
struct v4l2_subdev *sd,
int on)
57 return soc_camera_set_power(p->
icd->control, p->
icd->link, on);
61 .s_power = soc_camera_platform_s_power,
64 static int soc_camera_platform_enum_fmt(
struct v4l2_subdev *sd,
unsigned int index,
76 static int soc_camera_platform_g_crop(
struct v4l2_subdev *sd,
90 static int soc_camera_platform_cropcap(
struct v4l2_subdev *sd,
107 static int soc_camera_platform_g_mbus_config(
struct v4l2_subdev *sd,
119 .s_stream = soc_camera_platform_s_stream,
120 .enum_mbus_fmt = soc_camera_platform_enum_fmt,
121 .cropcap = soc_camera_platform_cropcap,
122 .g_crop = soc_camera_platform_g_crop,
123 .try_mbus_fmt = soc_camera_platform_fill_fmt,
124 .g_mbus_fmt = soc_camera_platform_fill_fmt,
125 .s_mbus_fmt = soc_camera_platform_fill_fmt,
126 .g_mbus_config = soc_camera_platform_g_mbus_config,
130 .core = &platform_subdev_core_ops,
131 .video = &platform_subdev_video_ops,
147 "Platform has not set soc_camera_device pointer!\n");
158 platform_set_drvdata(pdev, &priv->
subdev);
162 ici = to_soc_camera_host(icd->
parent);
165 v4l2_set_subdevdata(&priv->
subdev, p);
175 platform_set_drvdata(pdev,
NULL);
187 platform_set_drvdata(pdev,
NULL);
194 .name =
"soc_camera_platform",
197 .probe = soc_camera_platform_probe,
198 .remove = soc_camera_platform_remove,