aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/video/em28xx/em28xx-core.c1
-rw-r--r--drivers/media/video/em28xx/em28xx-video.c46
2 files changed, 23 insertions, 24 deletions
diff --git a/drivers/media/video/em28xx/em28xx-core.c b/drivers/media/video/em28xx/em28xx-core.c
index dda2721ee5b0..079ab4d563a6 100644
--- a/drivers/media/video/em28xx/em28xx-core.c
+++ b/drivers/media/video/em28xx/em28xx-core.c
@@ -655,7 +655,6 @@ int em28xx_set_outfmt(struct em28xx *dev)
655 if (dev->board.is_27xx) { 655 if (dev->board.is_27xx) {
656 vinmode = 0x0d; 656 vinmode = 0x0d;
657 vinctl = 0x00; 657 vinctl = 0x00;
658 outfmt = 0x24;
659 } else { 658 } else {
660 vinmode = 0x10; 659 vinmode = 0x10;
661 vinctl = 0x11; 660 vinctl = 0x11;
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
index 702fe8d6742e..14316c912179 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/drivers/media/video/em28xx/em28xx-video.c
@@ -90,15 +90,35 @@ MODULE_PARM_DESC(video_debug, "enable debug messages [video]");
90/* supported video standards */ 90/* supported video standards */
91static struct em28xx_fmt format[] = { 91static struct em28xx_fmt format[] = {
92 { 92 {
93 .name = "16bpp YUY2, 4:2:2, packed", 93 .name = "16 bpp YUY2, 4:2:2, packed",
94 .fourcc = V4L2_PIX_FMT_YUYV, 94 .fourcc = V4L2_PIX_FMT_YUYV,
95 .depth = 16, 95 .depth = 16,
96 .reg = EM28XX_OUTFMT_YUV422_Y0UY1V, 96 .reg = EM28XX_OUTFMT_YUV422_Y0UY1V,
97 }, { 97 }, {
98 .name = "16 bpp RGB, le", 98 .name = "16 bpp RGB 565, LE",
99 .fourcc = V4L2_PIX_FMT_RGB565, 99 .fourcc = V4L2_PIX_FMT_RGB565,
100 .depth = 16, 100 .depth = 16,
101 .reg = EM28XX_OUTFMT_YUV211, 101 .reg = EM28XX_OUTFMT_RGB_16_656,
102 }, {
103 .name = "8 bpp Bayer BGBG..GRGR",
104 .fourcc = V4L2_PIX_FMT_SBGGR8,
105 .depth = 8,
106 .reg = EM28XX_OUTFMT_RGB_8_BGBG,
107 }, {
108 .name = "8 bpp Bayer GRGR..BGBG",
109 .fourcc = V4L2_PIX_FMT_SGRBG8,
110 .depth = 8,
111 .reg = EM28XX_OUTFMT_RGB_8_GRGR,
112 }, {
113 .name = "8 bpp Bayer GBGB..RGRG",
114 .fourcc = V4L2_PIX_FMT_SGBRG8,
115 .depth = 8,
116 .reg = EM28XX_OUTFMT_RGB_8_GBGB,
117 }, {
118 .name = "12 bpp YUV411",
119 .fourcc = V4L2_PIX_FMT_YUV411P,
120 .depth = 12,
121 .reg = EM28XX_OUTFMT_YUV411,
102 }, 122 },
103}; 123};
104 124
@@ -699,10 +719,6 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
699 unsigned int hscale, vscale; 719 unsigned int hscale, vscale;
700 struct em28xx_fmt *fmt; 720 struct em28xx_fmt *fmt;
701 721
702 /* FIXME: This is the only supported fmt */
703 if (dev->board.is_27xx)
704 f->fmt.pix.pixelformat = V4L2_PIX_FMT_RGB565;
705
706 fmt = format_by_fourcc(f->fmt.pix.pixelformat); 722 fmt = format_by_fourcc(f->fmt.pix.pixelformat);
707 if (!fmt) { 723 if (!fmt) {
708 em28xx_videodbg("Fourcc format (%08x) invalid.\n", 724 em28xx_videodbg("Fourcc format (%08x) invalid.\n",
@@ -753,7 +769,6 @@ static int em28xx_set_video_format(struct em28xx *dev, unsigned int fourcc,
753 769
754 /* FIXME: This is the only supported fmt */ 770 /* FIXME: This is the only supported fmt */
755 if (dev->board.is_27xx) { 771 if (dev->board.is_27xx) {
756 fourcc = V4L2_PIX_FMT_RGB565;
757 width = 640; 772 width = 640;
758 height = 480; 773 height = 480;
759 } 774 }
@@ -1387,24 +1402,9 @@ static int vidioc_querycap(struct file *file, void *priv,
1387static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv, 1402static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
1388 struct v4l2_fmtdesc *f) 1403 struct v4l2_fmtdesc *f)
1389{ 1404{
1390 struct em28xx_fh *fh = priv;
1391 struct em28xx *dev = fh->dev;
1392
1393 if (unlikely(f->index >= ARRAY_SIZE(format))) 1405 if (unlikely(f->index >= ARRAY_SIZE(format)))
1394 return -EINVAL; 1406 return -EINVAL;
1395 1407
1396 if (dev->board.is_27xx) {
1397 struct em28xx_fmt *fmt;
1398 if (f->index)
1399 return -EINVAL;
1400
1401 f->pixelformat = V4L2_PIX_FMT_RGB565;
1402 fmt = format_by_fourcc(f->pixelformat);
1403 strlcpy(f->description, fmt->name, sizeof(f->description));
1404
1405 return 0;
1406 }
1407
1408 strlcpy(f->description, format[f->index].name, sizeof(f->description)); 1408 strlcpy(f->description, format[f->index].name, sizeof(f->description));
1409 f->pixelformat = format[f->index].fourcc; 1409 f->pixelformat = format[f->index].fourcc;
1410 1410