aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/mt9m001.c
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>2009-03-13 05:08:20 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-03-30 11:43:21 -0400
commit09e231b35173313cd92e27532e5028f2042dcee4 (patch)
tree3ecda063aa52f954d2f797921bdce131d7f1cc28 /drivers/media/video/mt9m001.c
parent1cd3c0fa927084549005fc22e54d99684b314f14 (diff)
V4L/DVB (11024): soc-camera: separate S_FMT and S_CROP operations
As host and camera drivers become more complex, differences between S_FMT and S_CROP functionality grow, this patch separates them. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/mt9m001.c')
-rw-r--r--drivers/media/video/mt9m001.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/media/video/mt9m001.c b/drivers/media/video/mt9m001.c
index 2d1034dad495..a6703d25227f 100644
--- a/drivers/media/video/mt9m001.c
+++ b/drivers/media/video/mt9m001.c
@@ -284,8 +284,8 @@ static unsigned long mt9m001_query_bus_param(struct soc_camera_device *icd)
284 return soc_camera_apply_sensor_flags(icl, flags); 284 return soc_camera_apply_sensor_flags(icl, flags);
285} 285}
286 286
287static int mt9m001_set_fmt(struct soc_camera_device *icd, 287static int mt9m001_set_crop(struct soc_camera_device *icd,
288 __u32 pixfmt, struct v4l2_rect *rect) 288 struct v4l2_rect *rect)
289{ 289{
290 struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd); 290 struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
291 int ret; 291 int ret;
@@ -324,6 +324,20 @@ static int mt9m001_set_fmt(struct soc_camera_device *icd,
324 return ret; 324 return ret;
325} 325}
326 326
327static int mt9m001_set_fmt(struct soc_camera_device *icd,
328 struct v4l2_format *f)
329{
330 struct v4l2_rect rect = {
331 .left = icd->x_current,
332 .top = icd->y_current,
333 .width = f->fmt.pix.width,
334 .height = f->fmt.pix.height,
335 };
336
337 /* No support for scaling so far, just crop. TODO: use skipping */
338 return mt9m001_set_crop(icd, &rect);
339}
340
327static int mt9m001_try_fmt(struct soc_camera_device *icd, 341static int mt9m001_try_fmt(struct soc_camera_device *icd,
328 struct v4l2_format *f) 342 struct v4l2_format *f)
329{ 343{
@@ -449,6 +463,7 @@ static struct soc_camera_ops mt9m001_ops = {
449 .release = mt9m001_release, 463 .release = mt9m001_release,
450 .start_capture = mt9m001_start_capture, 464 .start_capture = mt9m001_start_capture,
451 .stop_capture = mt9m001_stop_capture, 465 .stop_capture = mt9m001_stop_capture,
466 .set_crop = mt9m001_set_crop,
452 .set_fmt = mt9m001_set_fmt, 467 .set_fmt = mt9m001_set_fmt,
453 .try_fmt = mt9m001_try_fmt, 468 .try_fmt = mt9m001_try_fmt,
454 .set_bus_param = mt9m001_set_bus_param, 469 .set_bus_param = mt9m001_set_bus_param,