1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-02-13 20:01:55 +00:00
openmptcprouter/root/target/linux/bcm27xx/patches-5.14/0348-media-i2c-imx477-Remove-internal-v4l2_mbus_framefmt-.patch
Ycarus (Yannick Chabanois) 5c593832cc Add 5.14 patches for RPI
2021-10-01 16:58:58 +02:00

75 lines
2.5 KiB
Diff

From f23fd66ace0095f00a1e934eaa9fa2bb36d5c37c Mon Sep 17 00:00:00 2001
From: Naushir Patuck <naush@raspberrypi.com>
Date: Fri, 19 Feb 2021 10:30:49 +0000
Subject: [PATCH 348/552] media: i2c: imx477: Remove internal
v4l2_mbus_framefmt from the state
The only field in this struct that is used is the format code, so
replace the struct with this single field.
Save the format code in imx477_set_pad_format() when setting up a new
mode so that imx477_get_pad_format() performs the right lookup.
Otherwise, this caused a bug where the mode lookup occurred on the
12-bit table rather than the 10-bit table.
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
---
drivers/media/i2c/imx477.c | 19 ++++---------------
1 file changed, 4 insertions(+), 15 deletions(-)
diff --git a/drivers/media/i2c/imx477.c b/drivers/media/i2c/imx477.c
index 178ddc43bb73..74e8d892d4a6 100644
--- a/drivers/media/i2c/imx477.c
+++ b/drivers/media/i2c/imx477.c
@@ -1073,7 +1073,7 @@ struct imx477 {
struct v4l2_subdev sd;
struct media_pad pad[NUM_PADS];
- struct v4l2_mbus_framefmt fmt;
+ unsigned int fmt_code;
struct clk *xclk;
u32 xclk_freq;
@@ -1235,21 +1235,9 @@ static u32 imx477_get_format_code(struct imx477 *imx477, u32 code)
static void imx477_set_default_format(struct imx477 *imx477)
{
- struct v4l2_mbus_framefmt *fmt = &imx477->fmt;
-
/* Set default mode to max resolution */
imx477->mode = &supported_modes_12bit[0];
-
- fmt->code = MEDIA_BUS_FMT_SRGGB12_1X12;
- fmt->colorspace = V4L2_COLORSPACE_SRGB;
- fmt->ycbcr_enc = V4L2_MAP_YCBCR_ENC_DEFAULT(fmt->colorspace);
- fmt->quantization = V4L2_MAP_QUANTIZATION_DEFAULT(true,
- fmt->colorspace,
- fmt->ycbcr_enc);
- fmt->xfer_func = V4L2_MAP_XFER_FUNC_DEFAULT(fmt->colorspace);
- fmt->width = imx477->mode->width;
- fmt->height = imx477->mode->height;
- fmt->field = V4L2_FIELD_NONE;
+ imx477->fmt_code = MEDIA_BUS_FMT_SRGGB12_1X12;
}
static int imx477_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
@@ -1520,7 +1508,7 @@ static int imx477_get_pad_format(struct v4l2_subdev *sd,
imx477_update_image_pad_format(imx477, imx477->mode,
fmt);
fmt->format.code =
- imx477_get_format_code(imx477, imx477->fmt.code);
+ imx477_get_format_code(imx477, imx477->fmt_code);
} else {
imx477_update_metadata_pad_format(fmt);
}
@@ -1611,6 +1599,7 @@ static int imx477_set_pad_format(struct v4l2_subdev *sd,
*framefmt = fmt->format;
} else {
imx477->mode = mode;
+ imx477->fmt_code = fmt->format.code;
imx477_set_framing_limits(imx477);
}
} else {
--
2.33.0