aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Drake <dsd@laptop.org>2008-06-30 19:57:39 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-07-20 06:24:41 -0400
commitcd257a6f4dd908d94e504d2431710f0fcfe62036 (patch)
treeeda961f673cf6fb31536b01465192ff3b30aac10
parent3f8d6f73da4332b4ff4150b9bae8e5f680bcbbde (diff)
V4L/DVB (8318): OV7670: don't reject unsupported settings
For VIDIOC_G_FMT/VIDIOC_TRY_FMT, the V4L2 API spec states: "Drivers should not return an error code unless the input is ambiguous" "Very simple, inflexible devices may even ignore all input and always return the default parameters." "When the requested buffer type is not supported drivers return an EINVAL error code." i.e. returning errors for unsupported fields is bad, and it's ok to unconditionally overwrite user-requested settings This patch makes ov7670 meet that behaviour, and brings it in line with other drivers e.g. stk-webcam. It also fixes compatibility with (unpatched) gstreamer. Signed-off-by: Daniel Drake <dsd@laptop.org> Acked-by: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r--drivers/media/video/ov7670.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/media/video/ov7670.c b/drivers/media/video/ov7670.c
index d7bfd30f74a9..5e0d4e2ee510 100644
--- a/drivers/media/video/ov7670.c
+++ b/drivers/media/video/ov7670.c
@@ -682,17 +682,17 @@ static int ov7670_try_fmt(struct i2c_client *c, struct v4l2_format *fmt,
682 for (index = 0; index < N_OV7670_FMTS; index++) 682 for (index = 0; index < N_OV7670_FMTS; index++)
683 if (ov7670_formats[index].pixelformat == pix->pixelformat) 683 if (ov7670_formats[index].pixelformat == pix->pixelformat)
684 break; 684 break;
685 if (index >= N_OV7670_FMTS) 685 if (index >= N_OV7670_FMTS) {
686 return -EINVAL; 686 /* default to first format */
687 index = 0;
688 pix->pixelformat = ov7670_formats[0].pixelformat;
689 }
687 if (ret_fmt != NULL) 690 if (ret_fmt != NULL)
688 *ret_fmt = ov7670_formats + index; 691 *ret_fmt = ov7670_formats + index;
689 /* 692 /*
690 * Fields: the OV devices claim to be progressive. 693 * Fields: the OV devices claim to be progressive.
691 */ 694 */
692 if (pix->field == V4L2_FIELD_ANY) 695 pix->field = V4L2_FIELD_NONE;
693 pix->field = V4L2_FIELD_NONE;
694 else if (pix->field != V4L2_FIELD_NONE)
695 return -EINVAL;
696 /* 696 /*
697 * Round requested image size down to the nearest 697 * Round requested image size down to the nearest
698 * we support, but not below the smallest. 698 * we support, but not below the smallest.