diff mbox series

[1/7] media: rkisp1: Initialize color space on sink and source pads

Message ID 20220815065235.23797-2-laurent.pinchart@ideasonboard.com
State Superseded
Headers show
Series media: rkisp1: Fix and improve color space support | expand

Commit Message

Laurent Pinchart Aug. 15, 2022, 6:52 a.m. UTC
Initialize the four color space fields on the sink and source
video pads in the .init_cfg() operation. As the main use case for the
ISP is to convert Bayer data to YUV, select a raw color space on the
sink pad and a limited range quantization of SYCC on the source pad by
default.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Dafna Hirschfeld Aug. 18, 2022, 3:48 a.m. UTC | #1
On 15.08.2022 09:52, Laurent Pinchart wrote:
>Initialize the four color space fields on the sink and source
>video pads in the .init_cfg() operation. As the main use case for the
>ISP is to convert Bayer data to YUV, select a raw color space on the
>sink pad and a limited range quantization of SYCC on the source pad by
>default.
>
>Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Reviewed-by: Dafna Hirschfeld <dafna@fastmail.com>

>---
> drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
>diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c
>index a3c7d4d88387..a52b22824739 100644
>--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c
>+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c
>@@ -553,12 +553,17 @@ static int rkisp1_isp_init_config(struct v4l2_subdev *sd,
> 	struct v4l2_mbus_framefmt *sink_fmt, *src_fmt;
> 	struct v4l2_rect *sink_crop, *src_crop;
>
>+	/* Video. */
> 	sink_fmt = v4l2_subdev_get_try_format(sd, sd_state,
> 					      RKISP1_ISP_PAD_SINK_VIDEO);
> 	sink_fmt->width = RKISP1_DEFAULT_WIDTH;
> 	sink_fmt->height = RKISP1_DEFAULT_HEIGHT;
> 	sink_fmt->field = V4L2_FIELD_NONE;
> 	sink_fmt->code = RKISP1_DEF_SINK_PAD_FMT;
>+	sink_fmt->colorspace = V4L2_COLORSPACE_RAW;
>+	sink_fmt->xfer_func = V4L2_XFER_FUNC_NONE;
>+	sink_fmt->ycbcr_enc = V4L2_YCBCR_ENC_601;
>+	sink_fmt->quantization = V4L2_QUANTIZATION_FULL_RANGE;
>
> 	sink_crop = v4l2_subdev_get_try_crop(sd, sd_state,
> 					     RKISP1_ISP_PAD_SINK_VIDEO);
>@@ -571,11 +576,16 @@ static int rkisp1_isp_init_config(struct v4l2_subdev *sd,
> 					     RKISP1_ISP_PAD_SOURCE_VIDEO);
> 	*src_fmt = *sink_fmt;
> 	src_fmt->code = RKISP1_DEF_SRC_PAD_FMT;
>+	src_fmt->colorspace = V4L2_COLORSPACE_SRGB;
>+	src_fmt->xfer_func = V4L2_XFER_FUNC_SRGB;
>+	src_fmt->ycbcr_enc = V4L2_YCBCR_ENC_601;
>+	src_fmt->quantization = V4L2_QUANTIZATION_LIM_RANGE;
>
> 	src_crop = v4l2_subdev_get_try_crop(sd, sd_state,
> 					    RKISP1_ISP_PAD_SOURCE_VIDEO);
> 	*src_crop = *sink_crop;
>
>+	/* Parameters and statistics. */
> 	sink_fmt = v4l2_subdev_get_try_format(sd, sd_state,
> 					      RKISP1_ISP_PAD_SINK_PARAMS);
> 	src_fmt = v4l2_subdev_get_try_format(sd, sd_state,
>-- 
>Regards,
>
>Laurent Pinchart
>
diff mbox series

Patch

diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c
index a3c7d4d88387..a52b22824739 100644
--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c
+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c
@@ -553,12 +553,17 @@  static int rkisp1_isp_init_config(struct v4l2_subdev *sd,
 	struct v4l2_mbus_framefmt *sink_fmt, *src_fmt;
 	struct v4l2_rect *sink_crop, *src_crop;
 
+	/* Video. */
 	sink_fmt = v4l2_subdev_get_try_format(sd, sd_state,
 					      RKISP1_ISP_PAD_SINK_VIDEO);
 	sink_fmt->width = RKISP1_DEFAULT_WIDTH;
 	sink_fmt->height = RKISP1_DEFAULT_HEIGHT;
 	sink_fmt->field = V4L2_FIELD_NONE;
 	sink_fmt->code = RKISP1_DEF_SINK_PAD_FMT;
+	sink_fmt->colorspace = V4L2_COLORSPACE_RAW;
+	sink_fmt->xfer_func = V4L2_XFER_FUNC_NONE;
+	sink_fmt->ycbcr_enc = V4L2_YCBCR_ENC_601;
+	sink_fmt->quantization = V4L2_QUANTIZATION_FULL_RANGE;
 
 	sink_crop = v4l2_subdev_get_try_crop(sd, sd_state,
 					     RKISP1_ISP_PAD_SINK_VIDEO);
@@ -571,11 +576,16 @@  static int rkisp1_isp_init_config(struct v4l2_subdev *sd,
 					     RKISP1_ISP_PAD_SOURCE_VIDEO);
 	*src_fmt = *sink_fmt;
 	src_fmt->code = RKISP1_DEF_SRC_PAD_FMT;
+	src_fmt->colorspace = V4L2_COLORSPACE_SRGB;
+	src_fmt->xfer_func = V4L2_XFER_FUNC_SRGB;
+	src_fmt->ycbcr_enc = V4L2_YCBCR_ENC_601;
+	src_fmt->quantization = V4L2_QUANTIZATION_LIM_RANGE;
 
 	src_crop = v4l2_subdev_get_try_crop(sd, sd_state,
 					    RKISP1_ISP_PAD_SOURCE_VIDEO);
 	*src_crop = *sink_crop;
 
+	/* Parameters and statistics. */
 	sink_fmt = v4l2_subdev_get_try_format(sd, sd_state,
 					      RKISP1_ISP_PAD_SINK_PARAMS);
 	src_fmt = v4l2_subdev_get_try_format(sd, sd_state,