mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 22:26:55 +00:00
media: rockchip: rga: use pixelformat to find format
Use the pixelformat instead of the v4l2_format to find the rga_fmt. This avoids knowing the structure and type of v4l2_format in rga_fmt_find and simplifies the function. Also cleanup the users of the function. In try_fmt always return the found pixel format to make sure that the pixel format is always set. Thus, we can be sure that we will find the rga_fmt in s_fmt and can drop the check if a given format has been found. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
60faf2b82b
commit
012602c560
1 changed files with 7 additions and 11 deletions
|
@ -320,12 +320,12 @@ static struct rga_fmt formats[] = {
|
|||
|
||||
#define NUM_FORMATS ARRAY_SIZE(formats)
|
||||
|
||||
static struct rga_fmt *rga_fmt_find(struct v4l2_format *f)
|
||||
static struct rga_fmt *rga_fmt_find(u32 pixelformat)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < NUM_FORMATS; i++) {
|
||||
if (formats[i].fourcc == f->fmt.pix.pixelformat)
|
||||
if (formats[i].fourcc == pixelformat)
|
||||
return &formats[i];
|
||||
}
|
||||
return NULL;
|
||||
|
@ -474,11 +474,11 @@ static int vidioc_try_fmt(struct file *file, void *prv, struct v4l2_format *f)
|
|||
{
|
||||
struct rga_fmt *fmt;
|
||||
|
||||
fmt = rga_fmt_find(f);
|
||||
if (!fmt) {
|
||||
fmt = rga_fmt_find(f->fmt.pix.pixelformat);
|
||||
if (!fmt)
|
||||
fmt = &formats[0];
|
||||
|
||||
f->fmt.pix.pixelformat = fmt->fourcc;
|
||||
}
|
||||
|
||||
f->fmt.pix.field = V4L2_FIELD_NONE;
|
||||
|
||||
|
@ -504,7 +504,6 @@ static int vidioc_s_fmt(struct file *file, void *prv, struct v4l2_format *f)
|
|||
struct rockchip_rga *rga = ctx->rga;
|
||||
struct vb2_queue *vq;
|
||||
struct rga_frame *frm;
|
||||
struct rga_fmt *fmt;
|
||||
int ret = 0;
|
||||
|
||||
/* Adjust all values accordingly to the hardware capabilities
|
||||
|
@ -521,13 +520,10 @@ static int vidioc_s_fmt(struct file *file, void *prv, struct v4l2_format *f)
|
|||
frm = rga_get_frame(ctx, f->type);
|
||||
if (IS_ERR(frm))
|
||||
return PTR_ERR(frm);
|
||||
fmt = rga_fmt_find(f);
|
||||
if (!fmt)
|
||||
return -EINVAL;
|
||||
frm->width = f->fmt.pix.width;
|
||||
frm->height = f->fmt.pix.height;
|
||||
frm->size = f->fmt.pix.sizeimage;
|
||||
frm->fmt = fmt;
|
||||
frm->fmt = rga_fmt_find(f->fmt.pix.pixelformat);
|
||||
frm->stride = f->fmt.pix.bytesperline;
|
||||
frm->colorspace = f->fmt.pix.colorspace;
|
||||
|
||||
|
|
Loading…
Reference in a new issue