|
@@ -56,8 +56,8 @@ soc_camera_platform_query_bus_param(struct soc_camera_device *icd)
|
|
|
return p->bus_param;
|
|
|
}
|
|
|
|
|
|
-static int soc_camera_platform_try_fmt(struct v4l2_subdev *sd,
|
|
|
- struct v4l2_mbus_framefmt *mf)
|
|
|
+static int soc_camera_platform_fill_fmt(struct v4l2_subdev *sd,
|
|
|
+ struct v4l2_mbus_framefmt *mf)
|
|
|
{
|
|
|
struct soc_camera_platform_info *p = v4l2_get_subdevdata(sd);
|
|
|
|
|
@@ -65,6 +65,7 @@ static int soc_camera_platform_try_fmt(struct v4l2_subdev *sd,
|
|
|
mf->height = p->format.height;
|
|
|
mf->code = p->format.code;
|
|
|
mf->colorspace = p->format.colorspace;
|
|
|
+ mf->field = p->format.field;
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -83,10 +84,45 @@ static int soc_camera_platform_enum_fmt(struct v4l2_subdev *sd, unsigned int ind
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int soc_camera_platform_g_crop(struct v4l2_subdev *sd,
|
|
|
+ struct v4l2_crop *a)
|
|
|
+{
|
|
|
+ struct soc_camera_platform_info *p = v4l2_get_subdevdata(sd);
|
|
|
+
|
|
|
+ a->c.left = 0;
|
|
|
+ a->c.top = 0;
|
|
|
+ a->c.width = p->format.width;
|
|
|
+ a->c.height = p->format.height;
|
|
|
+ a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static int soc_camera_platform_cropcap(struct v4l2_subdev *sd,
|
|
|
+ struct v4l2_cropcap *a)
|
|
|
+{
|
|
|
+ struct soc_camera_platform_info *p = v4l2_get_subdevdata(sd);
|
|
|
+
|
|
|
+ a->bounds.left = 0;
|
|
|
+ a->bounds.top = 0;
|
|
|
+ a->bounds.width = p->format.width;
|
|
|
+ a->bounds.height = p->format.height;
|
|
|
+ a->defrect = a->bounds;
|
|
|
+ a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
|
|
+ a->pixelaspect.numerator = 1;
|
|
|
+ a->pixelaspect.denominator = 1;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static struct v4l2_subdev_video_ops platform_subdev_video_ops = {
|
|
|
.s_stream = soc_camera_platform_s_stream,
|
|
|
- .try_mbus_fmt = soc_camera_platform_try_fmt,
|
|
|
.enum_mbus_fmt = soc_camera_platform_enum_fmt,
|
|
|
+ .cropcap = soc_camera_platform_cropcap,
|
|
|
+ .g_crop = soc_camera_platform_g_crop,
|
|
|
+ .try_mbus_fmt = soc_camera_platform_fill_fmt,
|
|
|
+ .g_mbus_fmt = soc_camera_platform_fill_fmt,
|
|
|
+ .s_mbus_fmt = soc_camera_platform_fill_fmt,
|
|
|
};
|
|
|
|
|
|
static struct v4l2_subdev_ops platform_subdev_ops = {
|