[PATCH] [Trivial] staging: go7007: Framesizes features

From: my84
Date: Sat Apr 21 2012 - 09:11:34 EST



Correct framesizes

Signed-off-by Volokh Konstantin <my84@xxxxx>
---
drivers/staging/media/go7007/go7007-v4l2.c | 79 +++++++++++++++++++++++++++-
1 files changed, 77 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/media/go7007/go7007-v4l2.c b/drivers/staging/media/go7007/go7007-v4l2.c
index 3ef4cd8..4759441 100644
--- a/drivers/staging/media/go7007/go7007-v4l2.c
+++ b/drivers/staging/media/go7007/go7007-v4l2.c
@@ -1065,10 +1065,85 @@ static int vidioc_enum_framesizes(struct file *filp, void *priv,
struct go7007 *go = ((struct go7007_file *) priv)->go;

/* Return -EINVAL, if it is a TV board */
- if ((go->board_info->flags & GO7007_BOARD_HAS_TUNER) ||
- (go->board_info->sensor_flags & GO7007_SENSOR_TV))
+ if (go->board_info->flags & GO7007_BOARD_HAS_TUNER)
return -EINVAL;

+ if (go->board_info->sensor_flags & GO7007_SENSOR_TV) {
+ switch (go->standard) {
+ case GO7007_STD_NTSC:
+ switch (fsize->pixel_format) {
+ case V4L2_PIX_FMT_MJPEG:
+ case V4L2_PIX_FMT_MPEG:
+ case V4L2_PIX_FMT_H263:
+ switch (fsize->index) {
+ case 0:
+ fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+ fsize->discrete.width = 720;
+ fsize->discrete.height = 480;
+ break;
+ case 1:
+ fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+ fsize->discrete.width = 640;
+ fsize->discrete.height = 480;
+ break;
+ case 2:
+ fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+ fsize->discrete.width = 352;
+ fsize->discrete.height = 240;
+ break;
+ case 3:
+ fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+ fsize->discrete.width = 320;
+ fsize->discrete.height = 240;
+ break;
+ case 4:
+ fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+ fsize->discrete.width = 176;
+ fsize->discrete.height = 112;
+ break;
+ default:
+ return -EINVAL;
+ }
+ break;
+ default:
+ return -EINVAL;
+ }
+ break;
+ case GO7007_STD_PAL:
+ switch (fsize->pixel_format) {
+ case V4L2_PIX_FMT_MJPEG:
+ case V4L2_PIX_FMT_MPEG:
+ case V4L2_PIX_FMT_H263:
+ switch (fsize->index) {
+ case 0:
+ fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+ fsize->discrete.width = 720;
+ fsize->discrete.height = 576;
+ break;
+ case 1:
+ fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+ fsize->discrete.width = 352;
+ fsize->discrete.height = 288;
+ break;
+ case 2:
+ fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+ fsize->discrete.width = 176;
+ fsize->discrete.height = 144;
+ break;
+ default:
+ return -EINVAL;
+ }
+ break;
+ default:
+ return -EINVAL;
+ }
+ break;
+ default:
+ return -EINVAL;
+ }
+ return 0;
+ }
+
if (fsize->index > 0)
return -EINVAL;

--
1.7.7.6

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/