[media] rcar-vin: move chip check for pixelformat support
authorNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Mon, 15 Aug 2016 15:06:33 +0000 (12:06 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 23 Aug 2016 17:49:08 +0000 (14:49 -0300)
The check for if the specific pixelformat is supported on the current
chip should happen in VIDIOC_S_FMT and VIDIOC_TRY_FMT and not when we
try to setup the hardware for streaming.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/rcar-vin/rcar-dma.c
drivers/media/platform/rcar-vin/rcar-v4l2.c

index 496aa97b64008b3e3e52406a7fda4abd319cda63..3df3f0c70758efc35a6bc02baf08e38ad13eaff9 100644 (file)
@@ -225,11 +225,9 @@ static int rvin_setup(struct rvin_dev *vin)
                dmr = 0;
                break;
        case V4L2_PIX_FMT_XBGR32:
-               if (vin->chip == RCAR_GEN2 || vin->chip == RCAR_H1) {
-                       dmr = VNDMR_EXRGB;
-                       break;
-               }
-               /* fall through */
+               /* Note: not supported on M1 */
+               dmr = VNDMR_EXRGB;
+               break;
        default:
                vin_err(vin, "Invalid pixelformat (0x%x)\n",
                        vin->format.pixelformat);
index 09df3963d32ff6e6c3a3cb6183035d65d8a204c2..ef3464d10cfb7810c4fc74b4af033a1a40986d7d 100644 (file)
@@ -192,6 +192,11 @@ static int __rvin_try_format(struct rvin_dev *vin,
        pix->sizeimage = max_t(u32, pix->sizeimage,
                               rvin_format_sizeimage(pix));
 
+       if (vin->chip == RCAR_M1 && pix->pixelformat == V4L2_PIX_FMT_XBGR32) {
+               vin_err(vin, "pixel format XBGR32 not supported on M1\n");
+               return -EINVAL;
+       }
+
        vin_dbg(vin, "Requested %ux%u Got %ux%u bpl: %d size: %d\n",
                rwidth, rheight, pix->width, pix->height,
                pix->bytesperline, pix->sizeimage);