mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-15 10:06:52 +07:00
media: rcar-vin: Centralize black listing of pixel formats
Instead of scattering black listing of pixel formats who are not supported on particular platforms move it to a central location. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
0bd465765f
commit
21a816e7ee
@ -794,7 +794,7 @@ static void rvin_set_slot_addr(struct rvin_dev *vin, int slot, dma_addr_t addr)
|
|||||||
int offsetx, offsety;
|
int offsetx, offsety;
|
||||||
dma_addr_t offset;
|
dma_addr_t offset;
|
||||||
|
|
||||||
fmt = rvin_format_from_pixel(vin->format.pixelformat);
|
fmt = rvin_format_from_pixel(vin, vin->format.pixelformat);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* There is no HW support for composition do the beast we can
|
* There is no HW support for composition do the beast we can
|
||||||
|
@ -56,10 +56,14 @@ static const struct rvin_video_format rvin_formats[] = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct rvin_video_format *rvin_format_from_pixel(u32 pixelformat)
|
const struct rvin_video_format *rvin_format_from_pixel(struct rvin_dev *vin,
|
||||||
|
u32 pixelformat)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (vin->info->model == RCAR_M1 && pixelformat == V4L2_PIX_FMT_XBGR32)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(rvin_formats); i++)
|
for (i = 0; i < ARRAY_SIZE(rvin_formats); i++)
|
||||||
if (rvin_formats[i].fourcc == pixelformat)
|
if (rvin_formats[i].fourcc == pixelformat)
|
||||||
return rvin_formats + i;
|
return rvin_formats + i;
|
||||||
@ -67,11 +71,12 @@ const struct rvin_video_format *rvin_format_from_pixel(u32 pixelformat)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 rvin_format_bytesperline(struct v4l2_pix_format *pix)
|
static u32 rvin_format_bytesperline(struct rvin_dev *vin,
|
||||||
|
struct v4l2_pix_format *pix)
|
||||||
{
|
{
|
||||||
const struct rvin_video_format *fmt;
|
const struct rvin_video_format *fmt;
|
||||||
|
|
||||||
fmt = rvin_format_from_pixel(pix->pixelformat);
|
fmt = rvin_format_from_pixel(vin, pix->pixelformat);
|
||||||
|
|
||||||
if (WARN_ON(!fmt))
|
if (WARN_ON(!fmt))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -91,9 +96,7 @@ static void rvin_format_align(struct rvin_dev *vin, struct v4l2_pix_format *pix)
|
|||||||
{
|
{
|
||||||
u32 walign;
|
u32 walign;
|
||||||
|
|
||||||
if (!rvin_format_from_pixel(pix->pixelformat) ||
|
if (!rvin_format_from_pixel(vin, pix->pixelformat))
|
||||||
(vin->info->model == RCAR_M1 &&
|
|
||||||
pix->pixelformat == V4L2_PIX_FMT_XBGR32))
|
|
||||||
pix->pixelformat = RVIN_DEFAULT_FORMAT;
|
pix->pixelformat = RVIN_DEFAULT_FORMAT;
|
||||||
|
|
||||||
switch (pix->field) {
|
switch (pix->field) {
|
||||||
@ -125,7 +128,7 @@ static void rvin_format_align(struct rvin_dev *vin, struct v4l2_pix_format *pix)
|
|||||||
v4l_bound_align_image(&pix->width, 2, vin->info->max_width, walign,
|
v4l_bound_align_image(&pix->width, 2, vin->info->max_width, walign,
|
||||||
&pix->height, 4, vin->info->max_height, 2, 0);
|
&pix->height, 4, vin->info->max_height, 2, 0);
|
||||||
|
|
||||||
pix->bytesperline = rvin_format_bytesperline(pix);
|
pix->bytesperline = rvin_format_bytesperline(vin, pix);
|
||||||
pix->sizeimage = rvin_format_sizeimage(pix);
|
pix->sizeimage = rvin_format_sizeimage(pix);
|
||||||
|
|
||||||
vin_dbg(vin, "Format %ux%u bpl: %u size: %u\n",
|
vin_dbg(vin, "Format %ux%u bpl: %u size: %u\n",
|
||||||
@ -181,9 +184,7 @@ static int rvin_try_format(struct rvin_dev *vin, u32 which,
|
|||||||
if (pad_cfg == NULL)
|
if (pad_cfg == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
if (!rvin_format_from_pixel(pix->pixelformat) ||
|
if (!rvin_format_from_pixel(vin, pix->pixelformat))
|
||||||
(vin->info->model == RCAR_M1 &&
|
|
||||||
pix->pixelformat == V4L2_PIX_FMT_XBGR32))
|
|
||||||
pix->pixelformat = RVIN_DEFAULT_FORMAT;
|
pix->pixelformat = RVIN_DEFAULT_FORMAT;
|
||||||
|
|
||||||
v4l2_fill_mbus_format(&format.format, pix, vin->mbus_code);
|
v4l2_fill_mbus_format(&format.format, pix, vin->mbus_code);
|
||||||
@ -384,7 +385,7 @@ static int rvin_s_selection(struct file *file, void *fh,
|
|||||||
while ((r.top * vin->format.bytesperline) & HW_BUFFER_MASK)
|
while ((r.top * vin->format.bytesperline) & HW_BUFFER_MASK)
|
||||||
r.top--;
|
r.top--;
|
||||||
|
|
||||||
fmt = rvin_format_from_pixel(vin->format.pixelformat);
|
fmt = rvin_format_from_pixel(vin, vin->format.pixelformat);
|
||||||
while ((r.left * fmt->bpp) & HW_BUFFER_MASK)
|
while ((r.left * fmt->bpp) & HW_BUFFER_MASK)
|
||||||
r.left--;
|
r.left--;
|
||||||
|
|
||||||
|
@ -260,7 +260,9 @@ void rvin_dma_unregister(struct rvin_dev *vin);
|
|||||||
int rvin_v4l2_register(struct rvin_dev *vin);
|
int rvin_v4l2_register(struct rvin_dev *vin);
|
||||||
void rvin_v4l2_unregister(struct rvin_dev *vin);
|
void rvin_v4l2_unregister(struct rvin_dev *vin);
|
||||||
|
|
||||||
const struct rvin_video_format *rvin_format_from_pixel(u32 pixelformat);
|
const struct rvin_video_format *rvin_format_from_pixel(struct rvin_dev *vin,
|
||||||
|
u32 pixelformat);
|
||||||
|
|
||||||
|
|
||||||
/* Cropping, composing and scaling */
|
/* Cropping, composing and scaling */
|
||||||
void rvin_crop_scale_comp(struct rvin_dev *vin);
|
void rvin_crop_scale_comp(struct rvin_dev *vin);
|
||||||
|
Loading…
Reference in New Issue
Block a user