media: i2c: imx219: Fix colorspace info
authorJacopo Mondi <jacopo.mondi@ideasonboard.com>
Mon, 10 Jul 2023 15:52:00 +0000 (17:52 +0200)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Thu, 10 Aug 2023 05:58:39 +0000 (07:58 +0200)
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>
drivers/media/i2c/imx219.c

index cd43a89..6963e24 100644 (file)
@@ -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,