diff options
author | Jacopo Mondi <jacopo.mondi@ideasonboard.com> | 2023-07-10 18:52:00 +0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@kernel.org> | 2023-08-10 08:58:39 +0300 |
commit | b2fe7aeebe7fb1c05c64bd528403250e09502086 (patch) | |
tree | e28b7ca93f6f854e4e6da4457b8b0e22839e2409 /drivers/media | |
parent | a267c23ac9f665f95cc6d35422fe33af4d2343fa (diff) | |
download | linux-b2fe7aeebe7fb1c05c64bd528403250e09502086.tar.xz |
media: i2c: imx219: Fix colorspace info
The IMX219 is a RAW sensor. Fix the colorspace configuration by
using V4L2_COLORSPACE_RAW and adjust the quantization and transfer
function values. Drop ycbcr_enc as it doesn't apply to RAW sensors.
Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/i2c/imx219.c | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c index cd43a897391c..6963e24e1bc2 100644 --- a/drivers/media/i2c/imx219.c +++ b/drivers/media/i2c/imx219.c @@ -597,15 +597,12 @@ static void imx219_set_default_format(struct imx219 *imx219) fmt = &imx219->fmt; fmt->code = MEDIA_BUS_FMT_SRGGB10_1X10; - 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->colorspace = V4L2_COLORSPACE_RAW; + fmt->quantization = V4L2_QUANTIZATION_FULL_RANGE; fmt->width = supported_modes[0].width; fmt->height = supported_modes[0].height; fmt->field = V4L2_FIELD_NONE; + fmt->xfer_func = V4L2_XFER_FUNC_NONE; } static int imx219_set_ctrl(struct v4l2_ctrl *ctrl) @@ -714,12 +711,10 @@ static int imx219_init_cfg(struct v4l2_subdev *sd, format->code = imx219_get_format_code(imx219, MEDIA_BUS_FMT_SRGGB10_1X10); format->field = V4L2_FIELD_NONE; - format->colorspace = V4L2_COLORSPACE_SRGB; + format->colorspace = V4L2_COLORSPACE_RAW; format->ycbcr_enc = V4L2_MAP_YCBCR_ENC_DEFAULT(format->colorspace); - format->quantization = V4L2_MAP_QUANTIZATION_DEFAULT(true, - format->colorspace, - format->ycbcr_enc); - format->xfer_func = V4L2_MAP_XFER_FUNC_DEFAULT(format->colorspace); + format->quantization = V4L2_QUANTIZATION_FULL_RANGE; + format->xfer_func = V4L2_XFER_FUNC_NONE; /* Initialize crop rectangle. */ crop = v4l2_subdev_get_pad_crop(sd, state, 0); @@ -775,12 +770,9 @@ static int imx219_enum_frame_size(struct v4l2_subdev *sd, static void imx219_reset_colorspace(struct v4l2_mbus_framefmt *fmt) { - 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->colorspace = V4L2_COLORSPACE_RAW; + fmt->quantization = V4L2_QUANTIZATION_FULL_RANGE; + fmt->xfer_func = V4L2_XFER_FUNC_NONE; } static void imx219_update_pad_format(struct imx219 *imx219, |