/* 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,
        },
 };
 
        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",
 
        /* FIXME: This is the only supported fmt */
        if (dev->board.is_27xx) {
-               fourcc = V4L2_PIX_FMT_RGB565;
                width  = 640;
                height = 480;
        }
 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;