diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2009-12-11 09:14:46 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-12-16 06:27:13 -0500 |
commit | 325361088b73269f4cc96256276a142addbf3454 (patch) | |
tree | 6a18f4b10d1df53bfae4a773480fdadfad587b62 /include/media | |
parent | 11e3d1adbe0246fc8d6c06f7e42aff5bead25670 (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.h | 1 | ||||
-rw-r--r-- | include/media/v4l2-subdev.h | 22 |
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 | */ | ||
273 | struct 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 | ||
349 | struct v4l2_subdev_ops { | 360 | struct 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 |