media: am437x-vpfe: Remove per bus width static data
authorBenoit Parrot <bparrot@ti.com>
Fri, 20 Sep 2019 17:05:52 +0000 (14:05 -0300)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Tue, 1 Oct 2019 19:15:12 +0000 (16:15 -0300)
The bus related static data included in the vpfe_fmt
static table can be derived dynamically instead.
This simplify the table and it's use.

We instead replace the per bus data info with just
the usual bit per pixel value for each supported
pixel format.

Signed-off-by: Benoit Parrot <bparrot@ti.com>
Acked-by: Lad Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/am437x/am437x-vpfe.c
drivers/media/platform/am437x/am437x-vpfe.h

index e5ce9c8431eef6e0210f2a5a908c3b7edd9f70f2..ff507501057e85f6ec523980d72b88f2378b851f 100644 (file)
@@ -73,73 +73,43 @@ static struct vpfe_fmt formats[VPFE_NUM_FORMATS] = {
        {
                .fourcc         = V4L2_PIX_FMT_YUYV,
                .code           = MEDIA_BUS_FMT_YUYV8_2X8,
-               .l.width        = 10,
-               .l.bpp          = 4,
-               .s.width        = 8,
-               .s.bpp          = 2,
+               .bitsperpixel   = 16,
        }, {
                .fourcc         = V4L2_PIX_FMT_UYVY,
                .code           = MEDIA_BUS_FMT_UYVY8_2X8,
-               .l.width        = 10,
-               .l.bpp          = 4,
-               .s.width        = 8,
-               .s.bpp          = 2,
+               .bitsperpixel   = 16,
        }, {
                .fourcc         = V4L2_PIX_FMT_YVYU,
                .code           = MEDIA_BUS_FMT_YVYU8_2X8,
-               .l.width        = 10,
-               .l.bpp          = 4,
-               .s.width        = 8,
-               .s.bpp          = 2,
+               .bitsperpixel   = 16,
        }, {
                .fourcc         = V4L2_PIX_FMT_VYUY,
                .code           = MEDIA_BUS_FMT_VYUY8_2X8,
-               .l.width        = 10,
-               .l.bpp          = 4,
-               .s.width        = 8,
-               .s.bpp          = 2,
+               .bitsperpixel   = 16,
        }, {
                .fourcc         = V4L2_PIX_FMT_SBGGR8,
                .code           = MEDIA_BUS_FMT_SBGGR8_1X8,
-               .l.width        = 10,
-               .l.bpp          = 2,
-               .s.width        = 8,
-               .s.bpp          = 1,
+               .bitsperpixel   = 8,
        }, {
                .fourcc         = V4L2_PIX_FMT_SGBRG8,
                .code           = MEDIA_BUS_FMT_SGBRG8_1X8,
-               .l.width        = 10,
-               .l.bpp          = 2,
-               .s.width        = 8,
-               .s.bpp          = 1,
+               .bitsperpixel   = 8,
        }, {
                .fourcc         = V4L2_PIX_FMT_SGRBG8,
                .code           = MEDIA_BUS_FMT_SGRBG8_1X8,
-               .l.width        = 10,
-               .l.bpp          = 2,
-               .s.width        = 8,
-               .s.bpp          = 1,
+               .bitsperpixel   = 8,
        }, {
                .fourcc         = V4L2_PIX_FMT_SRGGB8,
                .code           = MEDIA_BUS_FMT_SRGGB8_1X8,
-               .l.width        = 10,
-               .l.bpp          = 2,
-               .s.width        = 8,
-               .s.bpp          = 1,
+               .bitsperpixel   = 8,
        }, {
                .fourcc         = V4L2_PIX_FMT_RGB565,
                .code           = MEDIA_BUS_FMT_RGB565_2X8_LE,
-               .l.width        = 10,
-               .l.bpp          = 4,
-               .s.width        = 8,
-               .s.bpp          = 2,
+               .bitsperpixel   = 16,
        }, {
                .fourcc         = V4L2_PIX_FMT_RGB565X,
                .code           = MEDIA_BUS_FMT_RGB565_2X8_BE,
-               .l.width        = 10,
-               .l.bpp          = 4,
-               .s.width        = 8,
-               .s.bpp          = 2,
+               .bitsperpixel   = 16,
        },
 };
 
@@ -184,9 +154,11 @@ static unsigned int __get_bytesperpixel(struct vpfe_device *vpfe,
 {
        struct vpfe_subdev_info *sdinfo = vpfe->current_subdev;
        unsigned int bus_width = sdinfo->vpfe_param.bus_width;
-       u32 bpp;
+       u32 bpp, bus_width_bytes, clocksperpixel;
 
-       bpp = (bus_width == 10) ? fmt->l.bpp : fmt->s.bpp;
+       bus_width_bytes = ALIGN(bus_width, 8) >> 3;
+       clocksperpixel = DIV_ROUND_UP(fmt->bitsperpixel, bus_width);
+       bpp = clocksperpixel * bus_width_bytes;
 
        return bpp;
 }
index b08b8e19c46b2b729bf85d3eaedf4ea81a69085c..77ebffeec160355878d68248895aff49bdd13e4e 100644 (file)
@@ -215,28 +215,16 @@ struct vpfe_ccdc {
        u32 ccdc_ctx[VPFE_REG_END / sizeof(u32)];
 };
 
-/*
- * struct bus_format - VPFE bus format information
- * width: Bits per pixel (when transferred over a bus)
- * bpp: Bytes per pixel (when stored in memory)
- */
-struct bus_format {
-       unsigned int width;
-       unsigned int bpp;
-};
-
 /*
  * struct vpfe_fmt - VPFE media bus format information
  * fourcc: V4L2 pixel format code
  * code: V4L2 media bus format code
- * l: 10 bit bus format info
- * s: 8 bit bus format info
+ * bitsperpixel: Bits per pixel over the bus
  */
 struct vpfe_fmt {
        u32 fourcc;
        u32 code;
-       struct bus_format l;
-       struct bus_format s;
+       u32 bitsperpixel;
 };
 
 /*