From 794357b217c88b7cf7e5806fdabae85187359ded Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Fri, 19 Feb 2021 10:30:49 +0000 Subject: [PATCH] media: i2c: imx477: Remove internal v4l2_mbus_framefmt from the state raspberrypi inclusion category: feature bugzilla: 50432 -------------------------------- 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 Signed-off-by: Fang Yafen Signed-off-by: Zheng Zengkai --- 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 0c552b9d54c5..f43c86407d97 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 { -- GitLab