Commit ea169d2d authored by Benoit Parrot's avatar Benoit Parrot Committed by Mauro Carvalho Chehab

media: am437x-vpfe: Remove per bus width static data

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: default avatarBenoit Parrot <bparrot@ti.com>
Acked-by: default avatarLad Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 750ef54b
...@@ -73,73 +73,43 @@ static struct vpfe_fmt formats[VPFE_NUM_FORMATS] = { ...@@ -73,73 +73,43 @@ static struct vpfe_fmt formats[VPFE_NUM_FORMATS] = {
{ {
.fourcc = V4L2_PIX_FMT_YUYV, .fourcc = V4L2_PIX_FMT_YUYV,
.code = MEDIA_BUS_FMT_YUYV8_2X8, .code = MEDIA_BUS_FMT_YUYV8_2X8,
.l.width = 10, .bitsperpixel = 16,
.l.bpp = 4,
.s.width = 8,
.s.bpp = 2,
}, { }, {
.fourcc = V4L2_PIX_FMT_UYVY, .fourcc = V4L2_PIX_FMT_UYVY,
.code = MEDIA_BUS_FMT_UYVY8_2X8, .code = MEDIA_BUS_FMT_UYVY8_2X8,
.l.width = 10, .bitsperpixel = 16,
.l.bpp = 4,
.s.width = 8,
.s.bpp = 2,
}, { }, {
.fourcc = V4L2_PIX_FMT_YVYU, .fourcc = V4L2_PIX_FMT_YVYU,
.code = MEDIA_BUS_FMT_YVYU8_2X8, .code = MEDIA_BUS_FMT_YVYU8_2X8,
.l.width = 10, .bitsperpixel = 16,
.l.bpp = 4,
.s.width = 8,
.s.bpp = 2,
}, { }, {
.fourcc = V4L2_PIX_FMT_VYUY, .fourcc = V4L2_PIX_FMT_VYUY,
.code = MEDIA_BUS_FMT_VYUY8_2X8, .code = MEDIA_BUS_FMT_VYUY8_2X8,
.l.width = 10, .bitsperpixel = 16,
.l.bpp = 4,
.s.width = 8,
.s.bpp = 2,
}, { }, {
.fourcc = V4L2_PIX_FMT_SBGGR8, .fourcc = V4L2_PIX_FMT_SBGGR8,
.code = MEDIA_BUS_FMT_SBGGR8_1X8, .code = MEDIA_BUS_FMT_SBGGR8_1X8,
.l.width = 10, .bitsperpixel = 8,
.l.bpp = 2,
.s.width = 8,
.s.bpp = 1,
}, { }, {
.fourcc = V4L2_PIX_FMT_SGBRG8, .fourcc = V4L2_PIX_FMT_SGBRG8,
.code = MEDIA_BUS_FMT_SGBRG8_1X8, .code = MEDIA_BUS_FMT_SGBRG8_1X8,
.l.width = 10, .bitsperpixel = 8,
.l.bpp = 2,
.s.width = 8,
.s.bpp = 1,
}, { }, {
.fourcc = V4L2_PIX_FMT_SGRBG8, .fourcc = V4L2_PIX_FMT_SGRBG8,
.code = MEDIA_BUS_FMT_SGRBG8_1X8, .code = MEDIA_BUS_FMT_SGRBG8_1X8,
.l.width = 10, .bitsperpixel = 8,
.l.bpp = 2,
.s.width = 8,
.s.bpp = 1,
}, { }, {
.fourcc = V4L2_PIX_FMT_SRGGB8, .fourcc = V4L2_PIX_FMT_SRGGB8,
.code = MEDIA_BUS_FMT_SRGGB8_1X8, .code = MEDIA_BUS_FMT_SRGGB8_1X8,
.l.width = 10, .bitsperpixel = 8,
.l.bpp = 2,
.s.width = 8,
.s.bpp = 1,
}, { }, {
.fourcc = V4L2_PIX_FMT_RGB565, .fourcc = V4L2_PIX_FMT_RGB565,
.code = MEDIA_BUS_FMT_RGB565_2X8_LE, .code = MEDIA_BUS_FMT_RGB565_2X8_LE,
.l.width = 10, .bitsperpixel = 16,
.l.bpp = 4,
.s.width = 8,
.s.bpp = 2,
}, { }, {
.fourcc = V4L2_PIX_FMT_RGB565X, .fourcc = V4L2_PIX_FMT_RGB565X,
.code = MEDIA_BUS_FMT_RGB565_2X8_BE, .code = MEDIA_BUS_FMT_RGB565_2X8_BE,
.l.width = 10, .bitsperpixel = 16,
.l.bpp = 4,
.s.width = 8,
.s.bpp = 2,
}, },
}; };
...@@ -184,9 +154,11 @@ static unsigned int __get_bytesperpixel(struct vpfe_device *vpfe, ...@@ -184,9 +154,11 @@ static unsigned int __get_bytesperpixel(struct vpfe_device *vpfe,
{ {
struct vpfe_subdev_info *sdinfo = vpfe->current_subdev; struct vpfe_subdev_info *sdinfo = vpfe->current_subdev;
unsigned int bus_width = sdinfo->vpfe_param.bus_width; 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; return bpp;
} }
......
...@@ -215,28 +215,16 @@ struct vpfe_ccdc { ...@@ -215,28 +215,16 @@ struct vpfe_ccdc {
u32 ccdc_ctx[VPFE_REG_END / sizeof(u32)]; 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 * struct vpfe_fmt - VPFE media bus format information
* fourcc: V4L2 pixel format code * fourcc: V4L2 pixel format code
* code: V4L2 media bus format code * code: V4L2 media bus format code
* l: 10 bit bus format info * bitsperpixel: Bits per pixel over the bus
* s: 8 bit bus format info
*/ */
struct vpfe_fmt { struct vpfe_fmt {
u32 fourcc; u32 fourcc;
u32 code; u32 code;
struct bus_format l; u32 bitsperpixel;
struct bus_format s;
}; };
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment