|
@@ -90,15 +90,35 @@ MODULE_PARM_DESC(video_debug, "enable debug messages [video]");
|
|
|
/* supported video standards */
|
|
|
static struct em28xx_fmt format[] = {
|
|
|
{
|
|
|
- .name = "16bpp YUY2, 4:2:2, packed",
|
|
|
+ .name = "16 bpp YUY2, 4:2:2, packed",
|
|
|
.fourcc = V4L2_PIX_FMT_YUYV,
|
|
|
.depth = 16,
|
|
|
.reg = EM28XX_OUTFMT_YUV422_Y0UY1V,
|
|
|
}, {
|
|
|
- .name = "16 bpp RGB, le",
|
|
|
+ .name = "16 bpp RGB 565, LE",
|
|
|
.fourcc = V4L2_PIX_FMT_RGB565,
|
|
|
.depth = 16,
|
|
|
- .reg = EM28XX_OUTFMT_YUV211,
|
|
|
+ .reg = EM28XX_OUTFMT_RGB_16_656,
|
|
|
+ }, {
|
|
|
+ .name = "8 bpp Bayer BGBG..GRGR",
|
|
|
+ .fourcc = V4L2_PIX_FMT_SBGGR8,
|
|
|
+ .depth = 8,
|
|
|
+ .reg = EM28XX_OUTFMT_RGB_8_BGBG,
|
|
|
+ }, {
|
|
|
+ .name = "8 bpp Bayer GRGR..BGBG",
|
|
|
+ .fourcc = V4L2_PIX_FMT_SGRBG8,
|
|
|
+ .depth = 8,
|
|
|
+ .reg = EM28XX_OUTFMT_RGB_8_GRGR,
|
|
|
+ }, {
|
|
|
+ .name = "8 bpp Bayer GBGB..RGRG",
|
|
|
+ .fourcc = V4L2_PIX_FMT_SGBRG8,
|
|
|
+ .depth = 8,
|
|
|
+ .reg = EM28XX_OUTFMT_RGB_8_GBGB,
|
|
|
+ }, {
|
|
|
+ .name = "12 bpp YUV411",
|
|
|
+ .fourcc = V4L2_PIX_FMT_YUV411P,
|
|
|
+ .depth = 12,
|
|
|
+ .reg = EM28XX_OUTFMT_YUV411,
|
|
|
},
|
|
|
};
|
|
|
|
|
@@ -699,10 +719,6 @@ 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",
|
|
@@ -753,7 +769,6 @@ static int em28xx_set_video_format(struct em28xx *dev, unsigned int fourcc,
|
|
|
|
|
|
/* FIXME: This is the only supported fmt */
|
|
|
if (dev->board.is_27xx) {
|
|
|
- fourcc = V4L2_PIX_FMT_RGB565;
|
|
|
width = 640;
|
|
|
height = 480;
|
|
|
}
|
|
@@ -1387,24 +1402,9 @@ static int vidioc_querycap(struct file *file, void *priv,
|
|
|
static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
|
|
|
struct v4l2_fmtdesc *f)
|
|
|
{
|
|
|
- struct em28xx_fh *fh = priv;
|
|
|
- struct em28xx *dev = fh->dev;
|
|
|
-
|
|
|
if (unlikely(f->index >= ARRAY_SIZE(format)))
|
|
|
return -EINVAL;
|
|
|
|
|
|
- if (dev->board.is_27xx) {
|
|
|
- struct em28xx_fmt *fmt;
|
|
|
- if (f->index)
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- f->pixelformat = V4L2_PIX_FMT_RGB565;
|
|
|
- fmt = format_by_fourcc(f->pixelformat);
|
|
|
- strlcpy(f->description, fmt->name, sizeof(f->description));
|
|
|
-
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
strlcpy(f->description, format[f->index].name, sizeof(f->description));
|
|
|
f->pixelformat = format[f->index].fourcc;
|
|
|
|