diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-30 16:36:08 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-30 16:36:08 -0300 |
commit | 2fbea57afdd3fb8da843ee44c1859b54d08433ad (patch) | |
tree | 4140c56526d11596b0c2d5c8176c7ff31eedec50 /linux/drivers/media/video/em28xx/em28xx-video.c | |
parent | 2e3dbe38af11659dad7ec398a503f64125c2617e (diff) | |
parent | b0b50913254709734afb1bcc907788c1beb15e62 (diff) | |
download | mediapointer-dvb-s2-2fbea57afdd3fb8da843ee44c1859b54d08433ad.tar.gz mediapointer-dvb-s2-2fbea57afdd3fb8da843ee44c1859b54d08433ad.tar.bz2 |
merge: http://www.kernellabs.com/hg/~dheitmueller/em28xx-terratec-zl10353/
From: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'linux/drivers/media/video/em28xx/em28xx-video.c')
-rw-r--r-- | linux/drivers/media/video/em28xx/em28xx-video.c | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/linux/drivers/media/video/em28xx/em28xx-video.c b/linux/drivers/media/video/em28xx/em28xx-video.c index 63d21698c..3c47acee3 100644 --- a/linux/drivers/media/video/em28xx/em28xx-video.c +++ b/linux/drivers/media/video/em28xx/em28xx-video.c @@ -94,6 +94,49 @@ static struct em28xx_fmt format[] = { .fourcc = V4L2_PIX_FMT_YUYV, .depth = 16, .reg = EM28XX_OUTFMT_YUV422_Y0UY1V, + }, { + .name = "16 bpp RGB, le", + .fourcc = V4L2_PIX_FMT_RGB565, + .depth = 16, + .reg = EM28XX_OUTFMT_YUV211, +#if 0 + /* TODO: need tests and newer definitions */ + }, { + .name = "Y1-U-Y0-V, 16 bpp", + .fourcc = 0, + .depth = 16, + .reg = EM28XX_OUTFMT_YUV422_Y1UY0V + }, { + .name = "YUV211, 8 bpp", + .fourcc = 0, + .depth = 8, + .reg = EM28XX_OUTFMT_YUV211, + }, { + .name = "YUV411, 12 bpp", + .fourcc = 0, + .depth = 12, + .reg = EM28XX_OUTFMT_YUV411, + }, { + .name = "RGB, 8bit RGRG", + .fourcc = 0, + .depth = 8, + .reg = EM28XX_OUTFMT_YUV211, + }, { + .name = "RGB, 8bit GRGR", + .fourcc = 0, + .depth = 8, + .reg = EM28XX_OUTFMT_YUV211, + }, { + .name = "RGB, 8bit GBGB", + .fourcc = 0, + .depth = 8, + .reg = EM28XX_OUTFMT_YUV211, + }, { + .name = "RGB, 8bit BGBG", + .fourcc = 0, + .depth = 8, + .reg = EM28XX_OUTFMT_RGB_8_BGBG, +#endif }, }; @@ -698,6 +741,10 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv, unsigned int hscale, vscale; struct em28xx_fmt *fmt; + /* FIXME: This is the only supported fmt */ + if (dev->board.is_27xx) + f->fmt.pix.pixelformat = V4L2_PIX_FMT_RGB565; + fmt = format_by_fourcc(f->fmt.pix.pixelformat); if (!fmt) { em28xx_videodbg("Fourcc format (%08x) invalid.\n", @@ -705,7 +752,11 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv, return -EINVAL; } - if (dev->board.is_em2800) { + if (dev->board.is_27xx) { + /* FIXME: This is the only supported fmt */ + width = 640; + height = 480; + } else if (dev->board.is_em2800) { /* the em2800 can only scale down to 50% */ height = height > (3 * maxh / 4) ? maxh : maxh / 2; width = width > (3 * maxw / 4) ? maxw : maxw / 2; @@ -751,6 +802,10 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv, mutex_lock(&dev->lock); + /* FIXME: This is the only supported fmt */ + if (dev->board.is_27xx) + f->fmt.pix.pixelformat = V4L2_PIX_FMT_RGB565; + vidioc_try_fmt_vid_cap(file, priv, f); fmt = format_by_fourcc(f->fmt.pix.pixelformat); |