aboutsummaryrefslogtreecommitdiffstats
path: root/include/media
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>2009-12-11 09:14:46 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-12-16 06:27:13 -0500
commit325361088b73269f4cc96256276a142addbf3454 (patch)
tree6a18f4b10d1df53bfae4a773480fdadfad587b62 /include/media
parent11e3d1adbe0246fc8d6c06f7e42aff5bead25670 (diff)
V4L/DVB (13644): v4l: add new v4l2-subdev sensor operations, use g_skip_top_lines in soc-camera
Introduce new v4l2-subdev sensor operations, move .enum_framesizes() and .enum_frameintervals() methods to it, add a new .g_skip_top_lines() method and switch soc-camera to use it instead of .y_skip_top soc_camera_device member, which can now be removed. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Reviewed-by: Hans Verkuil <hverkuil@xs4all.nl> Reviewed-by: Sergio Aguirre <saaguirre@ti.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'include/media')
-rw-r--r--include/media/soc_camera.h1
-rw-r--r--include/media/v4l2-subdev.h22
2 files changed, 17 insertions, 6 deletions
diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
index c5afc8cf8e1a..218639f133d3 100644
--- a/include/media/soc_camera.h
+++ b/include/media/soc_camera.h
@@ -24,7 +24,6 @@ struct soc_camera_device {
24 struct device *pdev; /* Platform device */ 24 struct device *pdev; /* Platform device */
25 s32 user_width; 25 s32 user_width;
26 s32 user_height; 26 s32 user_height;
27 unsigned short y_skip_top; /* Lines to skip at the top */
28 unsigned char iface; /* Host number */ 27 unsigned char iface; /* Host number */
29 unsigned char devnum; /* Device number per host */ 28 unsigned char devnum; /* Device number per host */
30 unsigned char buswidth; /* See comment in .c */ 29 unsigned char buswidth; /* See comment in .c */
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
index 7a3408f9d0f2..a128458dc9eb 100644
--- a/include/media/v4l2-subdev.h
+++ b/include/media/v4l2-subdev.h
@@ -263,6 +263,17 @@ struct v4l2_subdev_video_ops {
263 struct v4l2_dv_timings *timings); 263 struct v4l2_dv_timings *timings);
264}; 264};
265 265
266/**
267 * struct v4l2_subdev_sensor_ops - v4l2-subdev sensor operations
268 * @g_skip_top_lines: number of lines at the top of the image to be skipped.
269 * This is needed for some sensors, which always corrupt
270 * several top lines of the output image, or which send their
271 * metadata in them.
272 */
273struct v4l2_subdev_sensor_ops {
274 int (*g_skip_top_lines)(struct v4l2_subdev *sd, u32 *lines);
275};
276
266/* 277/*
267 interrupt_service_routine: Called by the bridge chip's interrupt service 278 interrupt_service_routine: Called by the bridge chip's interrupt service
268 handler, when an IR interrupt status has be raised due to this subdev, 279 handler, when an IR interrupt status has be raised due to this subdev,
@@ -347,11 +358,12 @@ struct v4l2_subdev_ir_ops {
347}; 358};
348 359
349struct v4l2_subdev_ops { 360struct v4l2_subdev_ops {
350 const struct v4l2_subdev_core_ops *core; 361 const struct v4l2_subdev_core_ops *core;
351 const struct v4l2_subdev_tuner_ops *tuner; 362 const struct v4l2_subdev_tuner_ops *tuner;
352 const struct v4l2_subdev_audio_ops *audio; 363 const struct v4l2_subdev_audio_ops *audio;
353 const struct v4l2_subdev_video_ops *video; 364 const struct v4l2_subdev_video_ops *video;
354 const struct v4l2_subdev_ir_ops *ir; 365 const struct v4l2_subdev_ir_ops *ir;
366 const struct v4l2_subdev_sensor_ops *sensor;
355}; 367};
356 368
357#define V4L2_SUBDEV_NAME_SIZE 32 369#define V4L2_SUBDEV_NAME_SIZE 32